(57)【要約】      （修正有）【課題】トレーニングに要する時間を短縮する記憶装置及び制御方法を提供する。【解決手段】記憶装置１は、第１サイズのバッファ４１を含む不揮発性メモリ４と、不揮発性メモリを制御するコントローラ３とを具備する。コントローラは、リードコマンドを含む制御コマンドを不揮発性メモリに送信した後、コントローラに入力されるデータに同期する第１の信号の位相を変更して不揮発性メモリから第１サイズより小さい第２サイズのデータをリードする処理を所定回数繰り返すリードアクセスを実行するか又はライトコマンドを含む制御コマンドを不揮発性メモリに送信した後、コントローラから出力するデータに同期する第２の信号の位相を変更して不揮発性メモリに対し第１サイズより小さい第３サイズのデータをライトする処理を所定回数繰り返すライトアクセスを実行する。【選択図】図１
2020046918.tif 000002
【特許請求の範囲】
【請求項１】
第１サイズのバッファを含む不揮発性メモリと、
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
リードコマンドを含む制御コマンドを前記不揮発性メモリに送信した後、前記コントローラに入力されるデータに同期する第１の信号の位相を変更して前記不揮発性メモリから前記第１サイズより小さい第２サイズのデータをリードする処理を所定回数繰り返すリードアクセスを実行するように構成され、又は、
ライトコマンドを含む制御コマンドを前記不揮発性メモリに送信した後、前記コントローラから出力するデータに同期する第２の信号の位相を変更して前記不揮発性メモリに対し前記第１サイズより小さい第３サイズのデータをライトする処理を所定回数繰り返すライトアクセスを実行するように構成される
記憶装置。
【請求項２】
前記コントローラは、
前記リードアクセスの際に、前記不揮発性メモリより前記第２サイズのデータが入力されるごとに前記第１の信号の位相を変更し、
前記ライトアクセスの際に、前記不揮発性メモリに対し前記第３サイズのデータを出力するごとに前記第２の信号の位相を変更するように構成される
請求項１に記載の記憶装置。
【請求項３】
前記所定回数は、前記第２サイズと、前記第２サイズ又は前記第３サイズと、に基づいて決定される
請求項２に記載の記憶装置。
【請求項４】
前記コントローラは、
前記リードアクセス又は前記ライトアクセスの際に、前記第１の信号又は前記第２の信号の位相を第１の調整幅ずつ変更する毎に、それぞれデータのリード又はライトの成否を判定する第１の探索処理を実行した後に、前記第１の信号又は前記第２の信号の位相を前記第１の探索処理により得られる値を初期値として前記第１の調整幅よりも小さい第２の調整幅ずつ変更する毎に、それぞれデータのリード又はライトの成否を判定する第２の探索処理を実行するように構成される
請求項１に記載の記憶装置。
【請求項５】
前記コントローラは、前記第２の探索処理において得られる、データのリード又はライトの成否の境界となる前記第１の信号又は前記第２の信号の位相に基づき、前記コントローラにおける遅延調整値を算出する
請求項４に記載の記憶装置。
【請求項６】
前記第１の調整幅は、１８０［ｄｅｇ］を前記所定回数で除算した値に基づいて設定される
請求項４又は請求項５に記載の記憶装置。
【請求項７】
第１サイズのバッファを含む不揮発性メモリを制御する制御方法であって、
リードコマンドを含む制御コマンドを前記不揮発性メモリに送信した後、前記不揮発性メモリを制御するコントローラに入力されるデータに同期する第１の信号の位相を変更して前記不揮発性メモリから前記第１サイズより小さい第２サイズのデータをリードする処理を所定回数繰り返すこと、又は、
ライトコマンドを含む制御コマンドを前記不揮発性メモリに送信した後、前記コントローラから出力するデータに同期する第２の信号の位相を変更して前記不揮発性メモリに対し前記第１サイズより小さい第３サイズのデータをライトする処理を所定回数繰り返すこと
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、記憶装置及び制御方法に関する。
【背景技術】
【０００２】
ＳＳＤ（Solid State Drive）などの記憶装置の内部では、例えばメモリアクセス回路から各種信号線を経由して、メモリデバイスに対してデータのリード又はライトなどのアクセスが行われる。メモリアクセス回路は、メモリデバイスとの間で確実なタイミングでデータのリード又はライトを行えるよう、各信号の遅延量を調整する機構（遅延調整回路）を有する。この機構（回路）による遅延量の調整はトレーニングと称されることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１９６５７４号公報
【特許文献２】特開２０１０−１４６２５２号公報
【特許文献３】特開２０１４−１５７６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、メモリデバイスに対するアクセスに要する時間を短縮することができる記憶装置及び制御方法を提供する。
【課題を解決するための手段】
【０００５】
本実施形態に係る記憶装置は、第１サイズのバッファを含む不揮発性メモリと、前記不揮発性メモリを制御するコントローラとを具備する。前記コントローラは、リードコマンドを含む制御コマンドを前記不揮発性メモリに送信した後、前記コントローラに入力されるデータに同期する第１の信号の位相を変更して前記不揮発性メモリから前記第１サイズより小さい第２サイズのデータをリードする処理を所定回数繰り返すリードアクセスを実行するように構成され、又は、ライトコマンドを含む制御コマンドを前記不揮発性メモリに送信した後、前記コントローラから出力するデータに同期する第２の信号の位相を変更して前記不揮発性メモリに対し前記第１サイズより小さい第３サイズのデータをライトする処理を所定回数繰り返すライトアクセスを実行するように構成される。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係る記憶装置の構成の一例を示すブロック図。
【図２】実施形態に係る記憶装置のメモリアクセス回路の構成の一例を示すブロック図。
【図３】実施形態に係る記憶装置におけるデータ信号とストローブ信号との関係を例示する図。
【図４】記憶装置のトレーニングにおけるメモリアクセスの一例を示すタイミングチャート。
【図５】実施形態に係る記憶装置のトレーニングにおけるメモリアクセスの一例を示すタイミングチャート。
【図６】実施形態に係るリードトレーニング処理の一例を示すフローチャート。
【図７】実施形態に係るリードトレーニング処理における第１の探索処理の一例を示すフローチャート。
【図８】実施形態に係るリードトレーニング処理における第２の探索処理の一例を示すフローチャート。
【図９】実施形態に係るライトトレーニング処理の一例を示すフローチャート。
【図１０】実施形態に係るライトトレーニング処理における第１のライト処理及び第１の探索処理の一例を示すフローチャート。
【図１１】実施形態に係るライトトレーニング処理における第２のライト処理及び第２の探索処理の一例を示すフローチャート。
【図１２】実施形態に係る第１の探索処理及び第２の探索処理の第１の例を示す図。
【図１３】実施形態に係る第１の探索処理及び第２の探索処理の第２の例を示す図。
【発明を実施するための形態】
【０００７】
従来の遅延調整回路は、信号ごとに複数の遅延量の調整値を用いて、各信号の遅延調整を行う。この調整値を決定する際、メモリアクセス回路からメモリデバイスへのリードアクセス又はライトアクセスが繰り返し行われる。そして、より正しくデータがリード又はライトすることが可能な最適な遅延量を示す調整値が算出される。以下では、この調整値を算出することをトレーニングと呼ぶ。
【０００８】
複数ビット幅のデータバスを有するパラレル方式のメモリアクセス回路は、上記トレーニングの際、ＮＡＮＤデバイスに対して個別にリードアクセス又はライトアクセスを繰り返し、データバスのビットごとにデータのリード又はライトが成功（ｐａｓｓ）する遅延量と、失敗（ｆａｉｌ）する遅延量の分布を取得する。
【０００９】
従来、メモリアクセス回路がＮＡＮＤデバイスへアクセスする際、コマンドフェーズに時間を要するため、データのリード又はライトを実施していない時間が長い。これは、ＮＡＮＤデバイスへのランダムアクセス性能が低いことの一因である。
【００１０】
以下、図面を参照しながら本実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【００１１】
図１は、本実施形態に係る記憶装置１の構成の一例を示すブロック図である。
【００１２】
記憶装置１は、例えばＳＳＤ（Solid State Drive）などの記憶装置である。記憶装置１は、ＲＡＭ（Random Access Memory）２、コントローラ３、ＮＡＮＤデバイス４などを含む。ＲＡＭ２、ＮＡＮＤデバイス４は、それぞれコントローラ３と電気的に接続される。コントローラ３には、複数のＮＡＮＤデバイス４が電気的に接続される。
【００１３】
ＲＡＭ２は、コントローラ３の作業領域として使用される。ＲＡＭ２は、例えば、一時的にデータを格納するキャッシュメモリとして用いられてもよい。ＲＡＭ２は、例えばＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性メモリである。ＲＡＭ２は、コントローラ３内に配置されてもよい。
【００１４】
コントローラ３は、例えば、記憶装置１全体の動作を制御する集積回路（ＩＣ）であり、全て又はその一部は、例えばＳｏＣ（System On Chip）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）として構成される。コントローラ３は、メモリアクセス回路３１を含む。
【００１５】
メモリアクセス回路３１は、ＮＡＮＤデバイス４に対し、例えばリードアクセス、ライトアクセスなどのメモリアクセスを行う。
【００１６】
メモリアクセス回路３１及びＮＡＮＤデバイス４は、メモリアクセスのためのアドレスを指定するアドレスバス、リードデータもしくはライトデータを送受信するためのデータバス、その他制御信号を送受信するためのコントロールバスなどにより接続される。なお、以下の説明において、アドレスバスの記載及び説明は省略する。
【００１７】
コントロールバスで伝送される信号は、例えば、アクセス対象として選択されているＮＡＮＤデバイス４内のチップを指定するチップイネーブル信号ＣＥＢ、コマンド・アドレス取り込みタイミングを通知するライトイネーブル信号ＷＥＢ、複数ビットのパラレルのデータ信号ＤＱに対してデータを取得するタイミングを示すストローブ信号（クロック信号とも呼ぶ）ＤＱＳなどを含む。
【００１８】
なお、上記各信号は、他の名称により表現されてもよい。例えば、チップイネーブル信号ＣＥＢは、チップセレクト信号、デバイスセレクト信号など、同様の機能を持ち他の名称により表現される信号でもよい。
【００１９】
データバスで伝送される信号は、例えば、ライトデータ又はリードデータを含むデータ信号ＤＱなどを含む。なお、本実施形態は、データバスのビット幅は限定されないが、以下では便宜的にデータバスは複数ビット幅を有するとして説明する。
【００２０】
データ信号ＤＱ及びストローブ信号ＤＱＳは、双方向に送受信可能な信号である。なお、データバス及びコントロールバスを用いて、上述以外の信号が送信又は受信されてもよい。メモリアクセス回路３１の詳細は、図２を用いて後述する。
【００２１】
コントローラ３は、メモリアクセス回路３１の他に、例えば、記憶装置１と接続されるホスト装置とのインタフェース（Ｉ／Ｆ）、記憶装置１の制御を実行するＣＰＵ（Central Processing Unit）、ＲＡＭ２のコントローラなどを含んでいてもよい。また、コントローラ３は、ＲＯＭ、他のＲＡＭなどの記憶領域を含んでいてもよい。
【００２２】
ＮＡＮＤデバイス４は、記憶装置１の記憶領域を構成する不揮発性メモリである。ＮＡＮＤデバイス４は、例えばＮＡＮＤ型フラッシュメモリとするが、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory：磁気抵抗メモリ）、ＰＲＡＭ（Phasechange Random Access Memory：相変化メモリ）、ＲｅＲＡＭ（Resistive Random Access Memory：抵抗変化型メモリ）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、磁気メモリなど他の不揮発性の半導体メモリでもよい。例えば、ＮＡＮＤデバイス４は、記憶素子の配置が平面構造のメモリ、又は３次元構造のメモリでもよい。
【００２３】
ＮＡＮＤデバイス４は、少なくとも１つ以上のＮＡＮＤ型フラッシュメモリチップ（複数のＮＡＮＤ型フラッシュメモリダイ）を含む。
【００２４】
各チップは、メモリセルアレイを含む。このメモリセルアレイは、複数のＮＡＮＤブロック（ブロック）Ｂ０〜Ｂｍ−１（ｍは１以上の整数）を含む。ブロックＢ０〜Ｂｍ−１は、データの消去単位として機能する。ブロックは「物理ブロック」又は「消去ブロック」と称されることもある。
【００２５】
ブロックＢ０〜Ｂｍ−１は複数のページ（物理ページ）を含む。つまり、ブロックＢ０〜Ｂｍ−１の各々は、ページＰ０〜Ｐｎ−１（ｎは１以上の整数）を含む。不揮発性メモリにおいては、データの読み出し及びデータの書き込みはページ単位で実行され、データの消去はブロック単位で実行される。
【００２６】
また、ＮＡＮＤデバイス４は、バッファ４１を含む。バッファ４１は、メモリアクセス回路３１より受信したライトデータ、又は、各ブロックＢ０〜Ｂｍ−１より読み出したリードデータを一時的に格納する記憶領域である。ＮＡＮＤデバイス４は、例えば、ＲＡＭ２と同様に揮発性メモリで構成される。バッファ４１の容量は、ページサイズに対応し、例えば、１６Ｋバイト程度である。
【００２７】
本実施形態において、データバスの１ビット分のバスをトレーニングする際、メモリアクセス回路３１は、上述の遅延量を複数回変化させてＮＡＮＤデバイス４に対してライトアクセス又はリードアクセスを実行する。この遅延量を１回変化させる毎のリード又はライトするデータの容量（サイズ）を、例えば１Ｋバイトとすると、バッファ４１は、おおよそ１６回分のトレーニングデータを格納可能である。すなわち、遅延調整回路のトレーニングが実行される際、バッファ４１は、複数のトレーニングデータを格納可能である。
【００２８】
図２は、本実施形態に係る記憶装置１のメモリアクセス回路３１の構成の一例を示すブロック図である。
【００２９】
メモリアクセス回路３１は、メモリライト回路Ｗ、メモリリード回路Ｒ、遅延調整回路Ｄ１，Ｄ２、双方向Ｉ／Ｏ Ｈ１，Ｈ２、遅延調整値Ｖ１，Ｖ２を記憶する回路などを含む。
【００３０】
双方向Ｉ／Ｏ Ｈ１，Ｈ２は、例えば、ＮＡＮＤデバイス４に対するメモリアクセスがライトアクセス又はリードアクセスのいずれかであるかに応じて、信号の送受信方向を切り替える回路である。
【００３１】
以下では、メモリアクセス回路３１からＮＡＮＤデバイス４へデータを書き込む（ライトする）場合のメモリアクセス回路３１の動作について説明する。
【００３２】
コントローラ３は、例えば記憶装置１に接続されるホスト装置などから、ライトコマンド、ライト先の論理アドレス、ライトデータなどを受信する。
【００３３】
コントローラ３は、ライト先の論理アドレスを、物理アドレスに変換する。物理アドレスは、アドレスバスを経由してメモリアクセス回路３１からＮＡＮＤデバイス４へ出力される。
【００３４】
ライトデータは、メモリライト回路Ｗ及び双方向Ｉ／Ｏ Ｈ１を経由して、データ信号ＤＱとしてＮＡＮＤデバイス４へ出力される。本実施形態において、データ信号ＤＱは、例えば８ビットのパラレル信号（ＤＱ０〜ＤＱ７）であるとして説明する。
【００３５】
メモリライト回路Ｗは、ライトストローブ信号を生成する。ライトストローブ信号は、遅延調整回路Ｄ１により遅延調整される。遅延調整されたライトストローブ信号は、ストローブ信号ＤＱＳとして双方向Ｉ／Ｏ Ｈ２を経由してＮＡＮＤデバイス４へ出力される。
【００３６】
また、メモリライト回路Ｗは、ライトイネーブル信号ＷＥＢ、及び、アクセス対象のＮＡＮＤデバイス４を示すチップイネーブル信号ＣＥＢを生成する。生成されたライトイネーブル信号ＷＥＢ及びチップイネーブル信号ＣＥＢは、ＮＡＮＤデバイス４へ出力される。
【００３７】
なお、本実施形態においては、メモリアクセス回路３１に接続されるＮＡＮＤデバイス４の数は１つであり、チップイネーブル信号ＣＥＢは１ビットの信号であるとして説明する。しかしながら、メモリアクセス回路３１には複数のＮＡＮＤデバイス４が接続されてもよく、これに伴いチップイネーブル信号は複数ビットの信号であってもよい。
【００３８】
以下では、ＮＡＮＤデバイス４からメモリアクセス回路３１へデータを読み出す（リードする）場合のメモリアクセス回路３１の動作について説明する。
【００３９】
コントローラ３は、例えば記憶装置１に接続されるホスト装置などから、リードコマンド、リード先の論理アドレス、などを受信する。
【００４０】
コントローラ３は、リード先の論理アドレスを、物理アドレスに変換する。物理アドレスは、アドレスバスを経由してメモリアクセス回路３１からＮＡＮＤデバイス４へ出力される。
【００４１】
メモリリード回路Ｒは、リード先のＮＡＮＤデバイス４を示すチップイネーブル信号ＣＥＢを生成し、メモリライト回路Ｗ経由でＮＡＮＤデバイス４へ出力する。
【００４２】
ＮＡＮＤデバイス４は、当該アドレスに基づくリードデータをメモリアクセス回路３１へ送信する。リードデータは、データ信号ＤＱとしてメモリアクセス回路３１へ入力され、双方向Ｉ／Ｏ Ｈ１及びメモリリード回路Ｒを経由して、例えば記憶装置１に接続されるホスト装置などへ送信される。
【００４３】
また、メモリリード回路Ｒは、図示しないリードイネーブル（ＲＥＢ）信号をＮＡＮＤデバイス４に出力する。リードイネーブル信号は、リード転送期間であることの通知及びリードデータを取得するタイミングを示す信号（クロック信号）として利用される。
【００４４】
ＮＡＮＤデバイス４は、リードイネーブル信号を受信すると、リードデータとともにリードストローブ信号をメモリアクセス回路３１へ出力する。リードストローブ信号は、（ストローブ信号ＤＱＳとして）メモリアクセス回路３１へ入力され、双方向Ｉ／Ｏ Ｈ２を経由して、遅延調整回路Ｄ２により遅延調整される。遅延調整されたリードストローブ信号は、メモリリード回路Ｒへ入力される。
【００４５】
また、トレーニングにおいては、メモリリード回路Ｒは、ＮＡＮＤデバイス４よりリードしたデータを、ＮＡＮＤデバイス４にライトしたデータ（期待値）と比較する。メモリアクセス回路３１は、この比較結果に基づき、ライトしたデータが正しくリードできたか否かを判定する。
【００４６】
遅延調整回路Ｄ１，Ｄ２は、それぞれ遅延調整値Ｖ１，Ｖ２に基づいて各信号のタイミングを調整する。遅延調整回路Ｄ１は、送信用の遅延調整回路であり、遅延調整回路Ｄ２は、受信用の遅延調整回路である。
【００４７】
なお、遅延調整値Ｖ１，Ｖ２は、メモリアクセス回路３１内に保持されていても、コントローラ３内部であってメモリアクセス回路３１外の記憶領域に格納されていてもよい。
【００４８】
また、本実施形態においては、メモリアクセス回路３１から出力又は入力されるストローブ信号ＤＱＳに対して遅延調整回路Ｄ１，Ｄ２が接続される構成を説明する。しかし、他の信号（チップイネーブル信号ＣＥＢ、ライトイネーブル信号ＷＥＢ、データ信号ＤＱなど）に対しても同様の構成の遅延調整回路が接続されることにより、遅延調整が行われてもよい。
【００４９】
図３は、本実施形態に係る記憶装置１におけるデータ信号ＤＱとストローブ信号ＤＱＳとの関係を例示する図である。
【００５０】
上述のように、ＮＡＮＤデバイス４に対してリードアクセス又はライトアクセスが行われる際に、ストローブ信号ＤＱＳに基づくタイミング（例えば、ストローブ信号ＤＱＳ立ち上がり又は立ち下りエッジ）でデータ信号ＤＱのデータが取得される。
【００５１】
しかしながら、このストローブ信号ＤＱＳに基づいて生成されるデータ取得のタイミングと、データ信号ＤＱにおいてデータが安定して存在するタイミングがずれると、データの取得に失敗する場合がある。したがって、上述のトレーニングにより、ストローブ信号ＤＱＳの最適な遅延量（位相）を示す調整値が算出され、当該調整値によりストローブ信号が遅延調整される。
【００５２】
トレーニングにおいては、ストローブ信号ＤＱＳの遅延量を所定の値ずつ変化させ、データ信号ＤＱ０〜ＤＱ７の取得が成功するか否かを判定し、この成否の境界となる値を得る。
【００５３】
グラフＧ１は、データ信号ＤＱ０〜ＤＱ７ごとに、ストローブ信号ＤＱＳの遅延量の変化に応じて正しくデータ取得が行えるか否かの分布を例示したグラフ（以下、ｐａｓｓ／ｆａｉｌ分布と呼ぶ）である。グラフＧ１の横軸は、ストローブ信号ＤＱＳの遅延量（位相：単位［ｄｅｇ］）を示す。
【００５４】
例えば、データ信号ＤＱ０に対しストローブ信号ＤＱＳの位相を０〜Ａ［ｄｅｇ］の間で遅延させた場合は、データ信号ＤＱ０の取得は失敗（ｆａｉｌ）し、ストローブ信号ＤＱＳの位相をＡ〜Ｂ［ｄｅｇ］の間で遅延させた場合は、データ信号ＤＱ０の取得は成功（ｐａｓｓ）し、さらに遅延量を大きくしてストローブ信号ＤＱＳの位相をＢ［ｄｅｇ］以上遅延させた場合、データ信号ＤＱ０の取得は失敗（ｆａｉｌ）することを示す。
【００５５】
なお、上記の手順により、他のデータ信号ＤＱ１〜ＤＱ７についても同様の分布が得られる。
【００５６】
グラフＧ２は、ストローブ信号ＤＱＳの最適な遅延量を示すグラフである。グラフＧ２においては、０〜１８０［ｄｅｇ］の範囲に立ち上がりエッジＲＥが含まれ、図示しない１８０〜３６０［ｄｅｇ］の範囲に立ち下がりエッジＦＥが含まれるとする。なお、０〜１８０［ｄｅｇ］の範囲に立ち下がりエッジＦＥが含まれ、図示しない１８０〜３６０［ｄｅｇ］の範囲に立ち上がりエッジＲＥが含まれてもよい。例えば、ストローブ信号ＤＱＳの立ち上がりエッジＲＥ及び立ち下りエッジＦＥの両方でデータ信号ＤＱを取得する場合、これら両方のエッジで全てのデータ信号ＤＱ０〜ＤＱ７を取得可能なように、ストローブ信号ＤＱＳの遅延量が調整されることが好ましい。グラフＧ１に示すデータ信号ＤＱ０〜ＤＱ７の分布の例においては、全てのデータ信号ＤＱ０〜ＤＱ７の取得が成功（ｐａｓｓ）するストローブ信号ＤＱＳの遅延量は、Ｃ〜Ｄ［ｄｅｇ］の間であることが分かる。したがって、グラフＧ２の範囲では、立ち上がりエッジＲＥの遅延量がＣ〜Ｄ［ｄｅｇ］に含まれるように、ストローブ信号ＤＱＳの遅延量が調整される。立ち上がりエッジＲＥの遅延量は、Ｃ〜Ｄ［ｄｅｇ］の略中央であることが好ましい。
【００５７】
このように、ストローブ信号ＤＱＳの調整値を得るためには、ＮＡＮＤデバイス４に対してリードアクセス又はライトアクセスを繰り返し行い、全てのデータ信号ＤＱ０〜ＤＱ７のｐａｓｓ／ｆａｉｌ分布を得る必要がある。したがって、リードアクセス又はライトアクセスにかかる時間が短いほど、効率良くトレーニングを行うことができる。
【００５８】
なお、以下では、０〜１８０［ｄｅｇ］の範囲でｐａｓｓ／ｆａｉｌ分布を生成し、遅延調整値を算出する処理について説明する。以下で説明する処理は、１８０〜３６０［ｄｅｇ］の範囲で遅延調整値を算出する場合にも同様に適用可能である。
【００５９】
図４は、比較例にかかる記憶装置１のトレーニングにおけるメモリアクセスの一例を示すタイミングチャートである。なお、図４においては、データバス及びアドレスバスに含まれる信号のタイミングチャートは省略する。
【００６０】
まず、メモリアクセス回路３１は、ＮＡＮＤデバイス４に対しアクセスを開始するため、チップイネーブル信号ＣＥＢをアクティブ（Ｌレベル）にする。そして、ＮＡＮＤデバイス４に対するコマンドフェーズＰ１を開始する。なお、コマンドフェーズＰ１には、リードコマンド又はライトコマンドなどの制御コマンドの送信、及び、アクセス先（すなわち、リード先又はライト先）のアドレスの送信などが含まれる。なお、例えば、ライトイネーブル信号ＷＥＢの立ち上がりに応じて、コマンド及びアドレスがＮＡＮＤデバイス４へ取り込まれる。
【００６１】
コマンドフェーズＰ１が完了した後、メモリアクセス回路３１は、位相調整フェーズＰ２を開始する。位相調整フェーズＰ２において、メモリアクセス回路３１は、例えばストローブ信号ＤＱＳの位相を所定量だけ変化させる。
【００６２】
その後、メモリアクセス回路３１は、ＮＡＮＤデバイス４に対するリード（又はライト）フェーズＰ３を開始する。リード（又はライト）フェーズＰ３においては、メモリアクセス回路３１及びＮＡＮＤデバイス４との間で、リードデータ（もしくはライトデータ）の送受信が行われる。
【００６３】
比較例にかかるトレーニングにおいては、このようにコマンドフェーズＰ１、位相調整フェーズＰ２、リード（又はライト）フェーズＰ３がこの順に繰り返される。具体的には、ストローブ信号ＤＱＳの位相を少しずつ変化させる毎に、コマンドの送信及びデータ信号ＤＱのリード（又はライト）を実行することを繰り返し、その成否を判定することで、上述のｐａｓｓ／ｆａｉｌ分布が得られる。
【００６４】
図５は、本実施形態に係る記憶装置１のトレーニングにおけるメモリアクセスの一例を示すタイミングチャートである。なお、図５においても、図４と同様に、データバス及びアドレスバスに含まれる信号のタイミングチャートは省略する。
【００６５】
トレーニングにおいては、例えばＮＡＮＤデバイス４それぞれの特性の差異を明確にするため、各ＮＡＮＤデバイス４の同じアドレスに対し同じデータをライトし、各ＮＡＮＤデバイス４の同じアドレスから同じデータをリードする。すなわち、トレーニングにおけるリードアクセス及びライトアクセスにおいては、ＮＡＮＤデバイス４ごとのコマンドフェーズＰ１に含まれる設定値及びリード（又はライト）フェーズＰ３に含まれるデータは同じとなる。
【００６６】
したがって、１つのＮＡＮＤデバイス４に対するトレーニングにおいては、位相調整フェーズＰ２及びリード（又はライト）フェーズＰ３に対するコマンドフェーズＰ１は共通化することができる。換言すれば、１つのＮＡＮＤデバイス４に対して、コマンドフェーズＰ１を１回実行した後、複数回の位相調整フェーズＰ２及びリード（又はライト）フェーズＰ３を実行することができる。
【００６７】
また、複数回のリード（又はライト）フェーズＰ３によりリード（又はライト）されるデータは、それぞれバッファ４１の所定のアドレスに格納されることで、連続した複数回のリード（又はライト）を実現できる。
【００６８】
上記のことを踏まえ、本実施形態においては、メモリアクセス回路３１は、コマンドフェーズＰ１、位相調整フェーズＰ２、及びリード（又はライト）フェーズＰ３を完了した後、さらに位相調整フェーズＰ２及びリード（又はライト）フェーズＰ３を少なくとも１以上の複数回繰り返す。換言すれば、メモリアクセス回路３１は、コマンドフェーズＰ１を実行した後、所定数のデータをリード（又は）ライトするごとにストローブ信号ＤＱＳの位相を変更することを繰り返す。位相調整フェーズＰ２においては、メモリアクセス回路３１は、毎回所定量だけストローブ信号ＤＱＳの位相を変化させる。
【００６９】
これにより、１回のコマンドフェーズＰ１で、ストローブ信号ＤＱＳの遅延量（位相）を変化させながら、データ信号ＤＱを複数回連続してリード（又はライト）することができるため、トレーニング時間を短縮できる。
【００７０】
なお、１回のリード（又はライト）フェーズＰ３でリード（又はライト）されるデータ数は、トレーニングの１単位としてあらかじめ定められることが好ましい。
【００７１】
また、位相調整フェーズＰ２及びリード（又はライト）フェーズＰ３の繰り返し回数は、１回にリード（又はライト）するデータ信号ＤＱのデータ量とデータを格納するバッファ４１の容量との関係、又は、トレーニングのアルゴリズムなどから柔軟に決定される。
【００７２】
図６は、実施形態に係るリードトレーニング処理の一例を示すフローチャートである。
【００７３】
Ｓ１０１において、メモリアクセス回路３１は、処理対象のＮＡＮＤデバイス４のチップイネーブル信号ＣＥＢをアクティブにする。
【００７４】
Ｓ１０２において、メモリアクセス回路３１は、ＮＡＮＤデバイス４に対しライトコマンドを送信する。
【００７５】
Ｓ１０３において、メモリアクセス回路３１は、ＮＡＮＤデバイス４に対しライトデータを送信する。
【００７６】
なお、このＳ１０２，Ｓ１０３の処理により、リードトレーニングにおいてメモリアクセス回路３１がＮＡＮＤデバイス４よりリードするデータが、ＮＡＮＤデバイス４にライトされる。
【００７７】
Ｓ１０４以降の処理において、メモリアクセス回路３１は、Ｓ１０３までの処理でＮＡＮＤデバイス４にライト済のデータを、ストローブ信号ＤＱＳの遅延量を変化させながらリードする。これにより、リードアクセスにおけるｐａｓｓ／ｆａｉｌ分布及びおおよそのｐａｓｓとｆａｉｌの境界値が算出される。
【００７８】
Ｓ１０４において、メモリアクセス回路３１は、ストローブ信号ＤＱＳの遅延量の初期設定値を０［ｄｅｇ］に設定し、設定値を１８０［ｄｅｇ］まで粗く増加させて調整しながら複数回連続してライトデータをリードする第１の探索処理を実行する。設定値の調整幅（ここでは増加幅）は、例えば複数回連続して実行されるリード処理の回数により決定される。例えば、１６回連続してリード処理が実行される場合、設定値の調整幅は、１８０／１６＝１１．２５［ｄｅｇ］となる。
【００７９】
メモリアクセス回路３１は、この第１の探索処理の結果、遅延設定値の仮の下限値及び仮の上限値を算出する。第１の探索処理の詳細は、図７を用いて後述する。
【００８０】
ここで、遅延設定値の下限値とは、ｐａｓｓ／ｆａｉｌ分布におけるｐａｓｓの領域の下端付近の設定値で、ｆａｉｌとなる設定値を含まない値である。同様に、遅延設定値の上限値とは、ｐａｓｓの領域の上端付近の設定値で、ｆａｉｌとなる設定値を含まない値である。
【００８１】
Ｓ１０５において、メモリアクセス回路３１は、ストローブ信号ＤＱＳの遅延量の初期値を第１の探索処理により得られた仮の下限値の近傍の値に設定する。そして、メモリアクセス回路３１は、第１の探索処理における設定値の調整幅よりも細かい調整幅（ここでは増加幅）で設定値を増加させながら複数回連続してライトデータをリードする第２の探索処理を実行する。
【００８２】
Ｓ１０６において、メモリアクセス回路３１は、仮の下限値に基づく第２の探索処理による探索結果を、遅延設定値の下限値として格納する。
【００８３】
Ｓ１０７において、メモリアクセス回路３１は、ストローブ信号ＤＱＳの遅延量の初期値を第１の探索処理により得られた仮の上限値の近傍の値に設定する。そして、メモリアクセス回路３１は、Ｓ１０５と同様に第１の探索処理における設定値の調整幅よりも細かい調整幅（ここでは減少幅）で設定値を減少させながら複数回連続してライトデータをリードする第２の探索処理を実行する。
【００８４】
なお、Ｓ１０５における仮の下限値からの第２の探索処理、及び、Ｓ１０７における仮の上限値からの第２の探索処理の詳細は、図８を用いて後述する。
【００８５】
Ｓ１０８において、メモリアクセス回路３１は、仮の上限値からの第２の探索処理による探索結果を、遅延設定値の上限値として格納する。
【００８６】
Ｓ１０９において、メモリアクセス回路３１は、Ｓ１０６及びＳ１０８により得られた遅延設定値の上限値及び下限値から、メモリリード回路Ｒ側の遅延調整回路Ｄ２の遅延調整値Ｖ２を算出及び更新する。以上の手順により、リードトレーニングが完了する。
【００８７】
図７は、本実施形態に係るリードトレーニング処理における第１の探索処理の一例を示すフローチャートである。なお、図７は、図６のＳ１０４の処理を詳細に説明する図である。
【００８８】
第１の探索処理においては、ｐａｓｓ／ｆａｉｌ分布のうち、ｆａｉｌからｐａｓｓに変化する境界及びｐａｓｓからｆａｉｌに変化する境界の両方のおおよその位置（仮の下限値及び仮の上限値）を検出することを目的とする。より具体的には、第１の探索処理においては、例えばデータ信号ＤＱ０を探索対象とする場合、図３のＡ，Ｂ両方の近傍の値が検出される。
【００８９】
Ｓ２０１において、メモリアクセス回路３１は、Ｓ１０３でＮＡＮＤデバイス４にライトされたデータをリードするためのコマンド・アドレス送信（コマンドフェーズＰ１）を実行する。
【００９０】
Ｓ２０２において、メモリアクセス回路３１は、位相調整フェーズＰ２を実行し、メモリリード回路Ｒ側の遅延調整回路Ｄ２の遅延設定を変更（更新）する。第１の探索処理における遅延量の初期値は、０［ｄｅｇ］に設定される。
【００９１】
Ｓ２０３において、メモリアクセス回路３１は、リードフェーズＰ３を実行し、ＮＡＮＤデバイス４よりデータを受信する。
【００９２】
Ｓ２０４において、メモリアクセス回路３１は、Ｓ２０３でＮＡＮＤデバイス４より受信したデータと、Ｓ１０３でＮＡＮＤデバイス４にライトしたデータ（期待値）とを比較する。メモリアクセス回路３１は、この比較結果が一致した場合に、当該遅延設定によるリード処理はｐａｓｓであり、この比較結果が一致しない場合に、当該遅延設定によるリード処理はｆａｉｌであると判定する。メモリアクセス回路３１は、この判定結果に基づいて、ｐａｓｓ／ｆａｉｌ分布を生成する。
【００９３】
Ｓ２０５において、メモリアクセス回路３１は、Ｓ２０２〜Ｓ２０４の処理が所定回数繰り返されたか否かを判定する。Ｓ２０２〜Ｓ２０４の繰り返し回数が所定回数未満であると判定された場合（Ｓ２０５のＮＯ）は、処理はＳ２０２に戻る。所定回数とは、Ｓ１０４で上述したように、例えば１６回などである。一方、Ｓ２０２〜Ｓ２０４の繰り返し回数が所定回数未満でないと判定された場合（Ｓ２０５のＹＥＳ）は、処理はＳ２０６に進む。
【００９４】
なお、Ｓ２０５において、メモリアクセス回路３１は、Ｓ２０２〜Ｓ２０４の繰り返し回数が所定回数未満であっても、ｐａｓｓ／ｆａｉｌ境界のおおよその位置（仮の下限値又は仮の上限値）が検出されたと判定した場合に、処理をＳ２０２へ戻さずにＳ２０６に進めてもよい。これにより、第１の探索処理にかかる時間を短縮することができる。
【００９５】
Ｓ２０２においては、メモリリード回路Ｒ側の遅延調整回路Ｄ２の遅延設定が更新される。例えば、設定値の調整幅を１１．２５［ｄｅｇ］とすると、２回目の設定値は１１．２５［ｄｅｇ］となり、３回目の設定値は２２．５［ｄｅｇ］となる。同様に、４回目以降の設定値も１１．２５［ｄｅｇ］ずつ増加する。
【００９６】
Ｓ２０６において、メモリアクセス回路３１は、Ｓ２０５までの処理により生成されたｐａｓｓ／ｆａｉｌ分布に基づき、遅延設定値の仮の下限値（例えば、図３のＡの近傍の値）及び仮の上限値（例えば、図３のＢの近傍の値）を算出する。
【００９７】
具体的には、メモリアクセス回路３１は、Ｓ２０１〜Ｓ２０５の処理に従って０［ｄｅｇ］から設定値を増加していき、ｆａｉｌからｐａｓｓとなる境界を越えて最初にｐａｓｓとなった設定値を遅延設定値の仮の下限値とする。同様に、メモリアクセス回路３１は、０［ｄｅｇ］から設定値を増加していき、ｐａｓｓからｆａｉｌとなる境界を越えた場合に、最後にｐａｓｓであった設定値を仮の上限値とする。
【００９８】
なお、第１の探索処理において、遅延量は０［ｄｅｇ］より増加方向に更新されるとして説明したが、１８０［ｄｅｇ］より減少方向に更新されてもよい。すなわち、Ｓ２０２において、遅延量は１８０［ｄｅｇ］に初期設定され、１８０［ｄｅｇ］から上記の調整幅（この場合は減少幅）ずつ減少された値で遅延設定が更新されてもよい。また、例えば０［ｄｅｇ］からの増加方向の探索が行われてｐａｓｓ／ｆａｉｌ境界が検出されたことに応じて、探索方向を切り替えて、１８０［ｄｅｇ］からの減少方向の探索が行われてもよい。これにより、ｐａｓｓ／ｆａｉｌ境界をより効率的に探索可能である。
【００９９】
図８は、本実施形態に係るリードトレーニング処理における第２の探索処理の一例を示すフローチャートである。なお、図８は、図６のＳ１０５，Ｓ１０７の処理を詳細に説明する図である。
【０１００】
第２の探索処理は、第１の探索処理において得られた遅延設定値の仮の下限値及び仮の上限値から、より正確な下限値及び上限値を算出するための処理である。
【０１０１】
Ｓ３０１において、メモリアクセス回路３１は、ＮＡＮＤデバイス４にライトされたデータをリードするためのコマンド・アドレス送信（コマンドフェーズＰ１）を実行する。
【０１０２】
Ｓ３０２において、メモリアクセス回路３１は、位相調整フェーズＰ２を実行し、メモリリード回路Ｒ側の遅延調整回路Ｄ２の遅延設定を変更（更新）する。図６のＳ１０５の処理における遅延量の初期値は、第１の探索処理により得られた仮の下限値から第１の探索処理における設定値の調整幅を減算した値に設定される。その後、当該遅延量が所定の調整幅ずつ繰り返し更新（この場合は加算）されながら、遅延設定値の下限値が探索される。図６のＳ１０７の処理における遅延量の初期値は、第１の探索処理により得られた仮の上限値に第１の探索処理における設定値の調整幅を加算した値に設定される。その後、当該遅延量が所定の調整幅ずつ繰り返し更新（この場合は減算）されながら、遅延設定値の上限値が探索される。なお、第２の探索処理においては、設定値の調整幅は、第１の探索処理のそれよりも小さい。
【０１０３】
Ｓ３０３，Ｓ３０４の処理は、Ｓ２０３，Ｓ２０４の処理と同様であるため、説明を省略する。なお、Ｓ３０４において、メモリアクセス回路３１は、Ｓ２０４で生成したｐａｓｓ／ｆａｉｌ分布よりも遅延量の刻み幅が小さい（細かい）ｐａｓｓ／ｆａｉｌ分布を生成することができる。
【０１０４】
Ｓ３０５において、メモリアクセス回路３１は、生成したｐａｓｓ／ｆａｉｌ分布におけるｐａｓｓとｆａｉｌとの境界（ｐａｓｓ／ｆａｉｌ境界）が検出されたか否かを判定する。ｐａｓｓ／ｆａｉｌ境界が検出されない場合（Ｓ３０５のＮＯ）は、処理はＳ３０２に戻り、メモリリード回路Ｒ側の遅延調整回路Ｄ２の遅延設定が更新される。
【０１０５】
Ｓ３０２において、例えば、第２の探索処理における設定値の調整幅を第１の探索処理における設定値の調整幅の１／４とした場合、当該調整幅は１１．２５／４＝２．８１２５［ｄｅｇ］となる。したがって、Ｓ１０５における遅延量の２回目の設定値は、（初期値＋２．８１２５）［ｄｅｇ］となる。また、Ｓ１０７における遅延量の２回目の設定値は、（初期値−２．８１２５）［ｄｅｇ］となる。すなわち、Ｓ１０５における２回目以降の設定値は２．８１２５［ｄｅｇ］ずつ増加し、Ｓ１０７における２回目以降の設定値は２．８１２５［ｄｅｇ］ずつ減少する。
【０１０６】
一方、Ｓ３０５において、ｐａｓｓ／ｆａｉｌ境界が検出された場合（Ｓ３０５のＹＥＳ）は、処理を終了する。
【０１０７】
図９は、実施形態に係るライトトレーニング処理の一例を示すフローチャートである。
【０１０８】
Ｓ５０１において、メモリアクセス回路３１は、処理対象のＮＡＮＤデバイス４のチップイネーブル信号ＣＥＢをアクティブにする。
【０１０９】
Ｓ５０２において、メモリアクセス回路３１は、ストローブ信号ＤＱＳの遅延量の初期設定値を０［ｄｅｇ］に設定し、設定値を１８０［ｄｅｇ］まで粗く増加させながら複数回連続してデータをライトし、ライトデータを所定の遅延設定値でリードする第１の探索処理を実行する。これにより、ライトアクセスにおけるｐａｓｓ／ｆａｉｌ分布及びおおよそのｐａｓｓとｆａｉｌの境界値が算出される。
【０１１０】
なお、ライトトレーニングの第１の探索処理における設定値の調整幅は、リードトレーニングの第１の探索処理における設定値の調整幅と同様であってもよい。
【０１１１】
メモリアクセス回路３１は、この第１の探索処理の結果、遅延設定値の仮の下限値及び仮の上限値を算出する。第１の探索処理の詳細は、図１０を用いて後述する。なお、ライトトレーニングにおける遅延設定値の下限値及び上限値は、リードトレーニングにおける遅延設定値の下限値及び上限値（Ｓ１０４参照）と同義である。
【０１１２】
Ｓ５０３において、メモリアクセス回路３１は、ストローブ信号ＤＱＳの遅延量の初期値を第１の探索処理により得られた仮の下限値の近傍の値に設定する。そして、メモリアクセス回路３１は、第１の探索処理における設定値の調整幅よりも細かい調整幅（ここでは増加幅）で設定値を増加させながら複数回連続してデータをライトし、ライトデータをリードする第２の探索処理を実行する。
【０１１３】
Ｓ５０４において、メモリアクセス回路３１は、仮の下限値に基づく第２の探索処理による探索結果を、遅延設定値の下限値として格納する。
【０１１４】
Ｓ５０５において、メモリアクセス回路３１は、ストローブ信号ＤＱＳの遅延量の初期値を第１の探索処理により得られた仮の上限値の近傍の値に設定する。そして、メモリアクセス回路３１は、Ｓ５０３と同様に第１の探索処理における設定値の調整幅よりも細かい調整幅（ここでは減少幅）で設定値を減少させながら複数回連続してデータをライトし、ライトデータをリードする第２の探索処理を実行する。
【０１１５】
なお、Ｓ５０３における仮の下限値からの第２の探索処理、及び、Ｓ５０５における仮の上限値からの第２の探索処理の詳細は、図１１を用いて後述する。
【０１１６】
Ｓ５０６において、メモリアクセス回路３１は、仮の上限値に基づく第２の探索処理による探索結果を、遅延設定値の上限値として格納する。
【０１１７】
Ｓ５０７において、メモリアクセス回路３１は、Ｓ５０３及びＳ５０５により得られた遅延設定値の上限値及び下限値から、メモリライト回路Ｗ側の遅延調整回路Ｄ１の遅延調整値Ｖ１を算出及び更新する。以上の手順により、ライトトレーニングが完了する。
【０１１８】
図１０は、本実施形態に係るライトトレーニング処理における第１の探索処理の一例を示すフローチャートである。なお、図１０は、図９のＳ５０２の処理を詳細に説明する図である。
【０１１９】
ライトトレーニングの第１の探索処理は、リードトレーニングの第１の探索処理と同様に、ｐａｓｓ／ｆａｉｌ分布のうち、ｆａｉｌからｐａｓｓに変化する境界及びｐａｓｓからｆａｉｌに変化する境界の両方のおおよその位置（仮の下限値及び仮の上限値）を検出することを目的とする。
【０１２０】
Ｓ６０１〜Ｓ６０４は複数回連続してデータをライトする処理であり、Ｓ６０５〜Ｓ６０８は、ライトデータをリードする処理である。
【０１２１】
Ｓ６０１において、メモリアクセス回路３１は、ＮＡＮＤデバイス４にデータをライトするためのコマンド・アドレス送信（コマンドフェーズＰ１）を実行する。
【０１２２】
Ｓ６０２において、メモリアクセス回路３１は、位相調整フェーズＰ２を実行し、メモリライト回路Ｗ側の遅延調整回路Ｄ１の遅延設定を変更（更新）する。第１の探索処理における遅延量の初期値は、０［ｄｅｇ］に設定される。
【０１２３】
Ｓ６０３において、メモリアクセス回路３１は、ライトフェーズＰ３を実行し、ＮＡＮＤデバイス４へデータを送信する。
【０１２４】
Ｓ６０４において、メモリアクセス回路３１は、Ｓ６０２，Ｓ６０３の処理が所定回数繰り返されたか否かを判定する。Ｓ６０２，Ｓ６０３の繰り返し回数が所定回数未満であると判定された場合（Ｓ６０４のＮＯ）は、処理はＳ６０２に戻る。なお、所定回数とは、リードトレーニング処理の場合と同様に、例えば１６回などである。一方、Ｓ６０２，Ｓ６０３の繰り返し回数が所定回数未満でないと判定された場合（Ｓ６０４のＹＥＳ）は、処理はＳ６０５に進む。
【０１２５】
Ｓ６０２においては、メモリライト回路Ｗ側の遅延調整回路Ｄ１の遅延設定が更新される。この更新処理は、Ｓ２０２と同様であるため、説明を省略する。
【０１２６】
Ｓ６０５〜Ｓ６０７のリード処理においては、遅延設定値は、ライトデータを確実にリードできる値に設定されることが好ましい。例えば、この遅延設定値は、リードトレーニングにおいて算出されたメモリリード回路Ｒ側の遅延調整回路Ｄ２の遅延調整値Ｖ２に基づいて設定されてもよい。
【０１２７】
Ｓ６０５〜Ｓ６０７のリード処理における遅延設定以外の処理は、リードトレーニングにおけるＳ２０１，Ｓ２０３，Ｓ２０４の処理と同様であるため、説明を省略する。
【０１２８】
Ｓ６０８において、メモリアクセス回路３１は、生成したｐａｓｓ／ｆａｉｌ分布におけるｐａｓｓとｆａｉｌとの境界（ｐａｓｓ／ｆａｉｌ境界）が検出されたか否かを判定する。ｐａｓｓ／ｆａｉｌ境界が検出されない場合（Ｓ６０８のＮＯ）は、処理はＳ６０６に戻る。Ｓ６０６においては、再びリード処理が実行される。この再度のリード処理においては、前回のＳ６０６におけるリード処理で用いられた遅延設定値とは異なる遅延設定値が設定されてもよい。一方、ｐａｓｓ／ｆａｉｌ境界が検出された場合（Ｓ６０８のＹＥＳ）は、処理はＳ６０９に進む。
【０１２９】
Ｓ６０９において、メモリアクセス回路３１は、Ｓ６０８までの処理により生成されたｐａｓｓ／ｆａｉｌ分布に基づき、遅延設定値の仮の下限値及び仮の上限値を算出する。
【０１３０】
具体的には、メモリアクセス回路３１は、ｆａｉｌからｐａｓｓとなる境界を越えて最初にｐａｓｓとなった設定値を遅延設定値の仮の下限値とする。同様に、メモリアクセス回路３１は、ｐａｓｓからｆａｉｌとなる境界を越えた場合に、最後にｐａｓｓであった設定値を仮の上限値とする。
【０１３１】
図１１は、本実施形態に係るライトトレーニング処理における第２の探索処理の一例を示すフローチャートである。なお、図１１は、図９のＳ５０３，Ｓ５０５の処理を詳細に説明する図である。
【０１３２】
リードトレーニングと同様に、第２の探索処理は、第１の探索処理において得られた遅延設定値の仮の下限値及び仮の上限値から、より正確な下限値及び上限値を算出するための処理である。
【０１３３】
Ｓ７０１において、メモリアクセス回路３１は、ＮＡＮＤデバイス４にデータをライトするためのコマンド・アドレス送信（コマンドフェーズＰ１）を実行する。
【０１３４】
Ｓ７０２において、メモリアクセス回路３１は、位相調整フェーズＰ２を実行し、メモリライト回路Ｗ側の遅延調整回路Ｄ１の遅延設定を変更（更新）する。図９のＳ５０３の処理における遅延量の初期値は、第１の探索処理により得られた仮の下限値から第１の探索処理における設定値の調整幅を減算した値に設定される。その後、当該遅延量が所定の調整幅ずつ繰り返し更新（この場合は加算）されながら、遅延設定値の下限値が探索される。図９のＳ５０５の処理における遅延量の初期値は、第１の探索処理により得られた仮の上限値に第１の探索処理における設定値の調整幅を加算した値に設定される。その後、当該遅延量が所定の調整幅ずつ繰り返し更新（この場合は減算）されながら、遅延設定値の上限値が探索される。なお、リードトレーニングと同様に、第２の探索処理においては、設定値の調整幅は、第１の探索処理のそれよりも小さい。
【０１３５】
Ｓ７０３，Ｓ７０４の処理は、Ｓ６０３，Ｓ６０４の処理と同様であるため、説明を省略する。
【０１３６】
Ｓ７０５〜Ｓ７０８のリード処理における遅延設定値は、Ｓ６０５〜Ｓ６０８のリード処理と同様に、ライトデータを確実にリードできる値に設定されることが好ましい。Ｓ７０５〜Ｓ７０８のリード処理における遅延設定以外の処理は、リードトレーニングにおけるＳ３０１，Ｓ３０３〜Ｓ３０５の処理と同様であるため、説明を省略する。なお、図Ｓ７０８でｐａｓｓ／ｆａｉｌ境界が検出されない場合（Ｓ７０８のＮＯ）は、処理はＳ７０６に戻る。Ｓ７０６においては、図１０のＳ６０６と同様に、再びリード処理が実行される。
【０１３７】
図１２は、実施形態に係る第１の探索処理及び第２の探索処理の第１の例を示す図である。
【０１３８】
以下では、例えばデータ信号ＤＱ（図３のデータ信号ＤＱ０）に対し、リードトレーニングを行うことによりｐａｓｓ／ｆａｉｌ分布を生成し、ｐａｓｓ／ｆａｉｌ境界であるＡ［ｄｅｇ］を算出する場合の処理について、図６〜図８を参照して説明する。
【０１３９】
まず、メモリアクセス回路３１は、第１の探索処理を実行する（Ｓ１０４）。
【０１４０】
メモリアクセス回路３１は、コマンドフェーズＰ１を開始し（Ｓ２０１）、その後の位相調整フェーズＰ２においてストローブ信号ＤＱＳの遅延設定値を０［ｄｅｇ］とする（Ｓ２０２）。メモリアクセス回路３１は、リードアクセスを実行し（Ｓ２０３）、データの期待値を比較してｐａｓｓ／ｆａｉｌ分布を生成する（Ｓ２０４）。設定値の調整幅（探索粒度）は例えば１１．２５［ｄｅｇ］であり、メモリアクセス回路３１は、当該設定値が１８０［ｄｅｇ］となるまで１６回これを繰り返す（Ｓ２０５）。
【０１４１】
この結果、１１．２５［ｄｅｇ］はｆａｉｌであり、２２．５０［ｄｅｇ］はｐａｓｓであるため、遅延設定値の仮の下限値は２２．５０［ｄｅｇ］であると算出される（Ｓ２０６）。すなわち、第１の探索処理の結果、１１．２５［ｄｅｇ］から２２．５０［ｄｅｇ］の間にｐａｓｓ／ｆａｉｌ境界が存在することが分かる。
【０１４２】
次に、メモリアクセス回路３１は、第２の探索処理を実行する（Ｓ１０５）。設定値の調整幅（探索粒度）は例えば２．８１２５［ｄｅｇ］であるとする。
【０１４３】
メモリアクセス回路３１は、コマンドフェーズＰ１を開始し（Ｓ３０１）、その後の位相調整フェーズＰ２においてストローブ信号ＤＱＳの遅延設定値を、遅延設定値の仮の下限値（２２．５０［ｄｅｇ）から第１の探索処理における設定値の調整幅（１１．２５［ｄｅｇ］）を減算した値である１１．２５［ｄｅｇ］と算出し、設定する（Ｓ３０２）。メモリアクセス回路３１は、この遅延設定値でリードアクセスを実行し（Ｓ３０３）、データの期待値を比較してｐａｓｓ／ｆａｉｌ分布を生成する（Ｓ３０４）。
【０１４４】
さらに、メモリアクセス回路３１は、第２の探索処理における設定値の調整幅（２．８１２５［ｄｅｇ］）ずつ遅延設定値を増加させる（Ｓ３０２）。
【０１４５】
遅延設定値を増加させながら上記処理を繰り返した結果、１４．０６２５［ｄｅｇ］はｆａｉｌであり、次の遅延設定値である１６．８７５［ｄｅｇ］はｐａｓｓであるため、遅延設定値の下限値は１６．８７５［ｄｅｇ］であると算出される（Ｓ１０６）。すなわち、第２の探索処理の結果、第１の探索処理よりも正確な遅延設定値が算出される。
【０１４６】
なお、ライトトレーニングにおいてライトデータをリードする場合にも、上述のように第１の処理及び第２の処理が実行される。
【０１４７】
図１３は、実施形態に係る第１の探索処理及び第２の探索処理の第２の例を示す図である。
【０１４８】
以下では、例えばデータ信号ＤＱ（図３のデータ信号ＤＱ０）に対し、リードトレーニングを行うことによりｐａｓｓ／ｆａｉｌ分布を生成し、ｐａｓｓ／ｆａｉｌ境界であるＢ［ｄｅｇ］を算出する場合の処理について、図９〜図１１を参照して説明する。
【０１４９】
まず、メモリアクセス回路３１は、第１の探索処理を実行する（Ｓ１０４）。第１の探索処理については、図１２の例と同様であるため、説明を省略する。なお、図１３においては、メモリアクセス回路３１は、１８０［ｄｅｇ］から設定値を１１．２５［ｄｅｇ］ずつ減少させている。しかしながら、メモリアクセス回路３１は、図１２と同様に０［ｄｅｇ］から設定値を増加させることによりｐａｓｓ／ｆａｉｌ境界を算出してもよい。
【０１５０】
この結果、１８０．００［ｄｅｇ］はｆａｉｌであり、１６８．７５［ｄｅｇ］はｐａｓｓであるため、遅延設定値の仮の上限値は１６８．７５［ｄｅｇ］であると算出される（Ｓ２０６）。すなわち、第１の探索処理の結果、１６８．７５［ｄｅｇ］から１８０．００［ｄｅｇ］の間にｐａｓｓ／ｆａｉｌ境界が存在することが分かる。
【０１５１】
次に、メモリアクセス回路３１は、第２の探索処理を実行する（Ｓ１０７）。第２の探索処理における設定値の調整幅（探索粒度）は、図１２の場合と同様、例えば２．８１２５［ｄｅｇ］であるとする。
【０１５２】
メモリアクセス回路３１は、コマンドフェーズＰ１を開始し（Ｓ３０１）、その後の位相調整フェーズＰ２においてストローブ信号ＤＱＳの遅延設定値を、遅延設定値の仮の上限値（１６８．７５［ｄｅｇ］）に第１の探索処理における設定値の調整幅（１１．２５［ｄｅｇ］）を加算した値である１８０．００［ｄｅｇ］と算出し、設定する（Ｓ３０２）。メモリアクセス回路３１は、この遅延設定値でリードアクセスを実行し（Ｓ３０３）、データの期待値を比較してｐａｓｓ／ｆａｉｌ分布を生成する（Ｓ３０４）。
【０１５３】
さらに、メモリアクセス回路３１は、第２の探索処理における設定値の調整幅（２．８１２５［ｄｅｇ］）ずつ遅延設定値を減少させる（Ｓ３０２）。
【０１５４】
遅延設定値を減少させながら上記処理を繰り返した結果、１７７．１８７５［ｄｅｇ］はｆａｉｌであり、次の遅延設定値である１７４．３７５［ｄｅｇ］はｐａｓｓであるため、遅延設定値の上限値は１７４．３７５［ｄｅｇ］であると算出される（Ｓ１０８）。すなわち、第２の探索処理の結果、第１の探索処理よりも正確な遅延設定値が算出される。
【０１５５】
なお、ライトトレーニングにおいてライトデータをリードする場合にも、上述のように第１の処理及び第２の処理が実行される。
【０１５６】
以上説明した本実施形態において、メモリアクセス回路３１は、ＮＡＮＤデバイス４に対して遅延調整回路のリードトレーニング又はライトトレーニングを実行する際に、１回のコマンドフェーズＰ１に対して、遅延量の設定を変化させながら連続してリード（又はライト）フェーズＰ３を実行することを複数回繰り返す。これにより、ＮＡＮＤデバイスに対するリードアクセス又はライトアクセスに要する時間が短縮されるため、遅延調整回路のトレーニングを短時間で完了させることができる。
【０１５７】
本実施形態において、メモリアクセス回路３１は、複数回のリード（又はライト）フェーズＰ３によりリード（又はライト）されるデータを、それぞれバッファ４１の所定のアドレスに格納する。これにより、１回のコマンドフェーズＰ１における連続したリード（又はライト）を実現できるとともに、バッファ４１の容量を有効に利用できる。
【０１５８】
本実施形態において、メモリアクセス回路３１は、リードトレーニング又はライトトレーニングにおいて、ストローブ信号ＤＱＳの遅延量を変化させてｐａｓｓ／ｆａｉｌ分布を生成する第１の探索処理を実行した後に、第１の探索処理よりも細かくストローブ信号ＤＱＳの遅延量を変化させてｐａｓｓ／ｆａｉｌ分布を生成する第２の探索処理を実行する。これにより、ｐａｓｓ／ｆａｉｌ境界を効率的に探索できる。
【０１５９】
なお、本実施形態においては、コントローラ３は、ストローブ信号ＤＱＳの位相を調整するとして説明したが、同様にデータ信号ＤＱの位相を調整してもよい。データ信号ＤＱの位相が調整される場合、データ信号ＤＱにも遅延調整回路Ｄ１，Ｄ２と同様の遅延調整回路が設けられる。
【０１６０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６１】
１…記憶装置、２…ＲＡＭ、３…コントローラ、４…ＮＡＮＤデバイス、３１…メモリアクセス回路、４１…バッファ、ＣＥＢ…チップイネーブル信号、ＷＥＢ…ライトイネーブル信号、ＤＱ…データ信号、ＤＱＳ…ストローブ信号、Ｂ０〜Ｂｍ−１…ブロック、Ｐ０〜Ｐｎ−１…ページ。
【図１】
2020046918.tif 000003
【図２】
2020046918.tif 000004
【図３】
2020046918.tif 000005
【図４】
2020046918.tif 000006
【図５】
2020046918.tif 000007
【図６】
2020046918.tif 000008
【図７】
2020046918.tif 000009
【図８】
2020046918.tif 000010
【図９】
2020046918.tif 000011
【図１０】
2020046918.tif 000012
【図１１】
2020046918.tif 000013
【図１２】
2020046918.tif 000014
【図１３】
2020046918.tif 000015