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