(57)【要約】【課題】複数のフラッシュメモリチップに対して、物理ページ単位のデータを１回のアクセスで書き込む制御を実現することにより、書き込み時間の少ない動作性能の優れたデータ記憶装置を提供することにある。【解決手段】実施形態によれば、データ記憶装置は、所定のページサイズをアクセス単位とするフラッシュメモリチップを有するメモリモジュールと、コントローラとを具備する。前記メモリモジュールは、複数の前記フラッシュメモリチップを含むことが可能な構成である。前記コントローラは、前記メモリモジュールに対して前記所定のページサイズを超えるページサイズをアクセス単位としてデータを書き込む場合に、前記データ及びアドレスを含む共通信号に含まれない独立のメモリ制御信号を前記各フラッシュメモリチップのそれぞれに供給し、前記各フラッシュメモリチップの同一アドレスにデータを書き込むように制御する。【選択図】図１
2012230554.tif 000002
【特許請求の範囲】
【請求項１】
所定のページサイズをアクセス単位とするフラッシュメモリチップを有し、複数の前記フラッシュメモリチップを含むことが可能なメモリモジュールと、
前記メモリモジュールに対して前記所定のページサイズを超えるページサイズをアクセス単位としてデータを書き込む場合に、前記データ及びアドレスを含む共通信号に含まれない独立のメモリ制御信号を前記各フラッシュメモリチップのそれぞれに供給し、前記各フラッシュメモリチップの同一アドレスにデータを書き込むように制御するコントローラと
を具備するデータ記憶装置。
【請求項２】
前記コントローラは、
前記メモリ制御信号として前記各フラッシュメモリチップのそれぞれに対応する各データストローブ信号を生成し、前記各フラッシュメモリチップのそれぞれに供給するように構成されている請求項１に記載のデータ記憶装置。
【請求項３】
前記コントローラは、
前記メモリ制御信号として前記各フラッシュメモリチップのそれぞれに対応し、トグルサイクルの異なる各データストローブ信号を生成し、前記各フラッシュメモリチップのそれぞれに供給するように構成されている請求項１または請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記コントローラは、
前記メモリ制御信号として前記各フラッシュメモリチップのそれぞれに対応する各データストローブ信号を生成し、
前記データを前記フラッシュメモリチップのチップ数に応じて分割し、
前記分割されたデータ毎に対応する前記データストローブ信号を割り当てることで、前記各フラッシュメモリチップの同一アドレスに前記分割されたデータを書き込むように制御するように構成されている請求項１から請求項３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記コントローラは、
前記各フラッシュメモリチップのそれぞれに対して前記アクセス単位のデータを分割した分割データを書き込む場合に、前記メモリモジュールから前記アクセス単位でデータを読み出すことを前提とした前記分割データの書き込み順序を決定するように構成されている請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記コントローラは、
前記メモリ制御信号として前記各フラッシュメモリチップのそれぞれに対応する各チップイネーブル信号を生成し、前記各フラッシュメモリチップのそれぞれに供給するように構成されている請求項１に記載のデータ記憶装置。
【請求項７】
前記コントローラは、
前記所定のページサイズを超えるページサイズに基づいて、前記各フラッシュメモリチップのチップ数を決定し、
前記チップ数に基づいて前記独立のメモリ制御信号を生成するように構成されている請求項１から請求項６のいずれか１項に記載のデータ記憶装置。
【請求項８】
前記コントローラは、
前記各フラッシュメモリチップのそれぞれに対して前記アクセス単位のデータを分割した分割データを書き込む場合に、前記各フラッシュメモリチップのページ領域の空き領域には所定のデータを書き込むように構成されている請求項１から請求項７のいずれか１項に記載のデータ記憶装置。
【請求項９】
所定のページサイズをアクセス単位とするフラッシュメモリチップを有し、複数の前記フラッシュメモリチップを含むことが可能なメモリモジュールに対してデータを書き込み、読み出すデータ記憶装置に適用するメモリ制御装置であって、
前記メモリモジュールに対して前記所定のページサイズを超えるページサイズをアクセス単位としてデータを書き込む場合に、前記データ及びアドレスを含む共通信号に含まれない独立のメモリ制御信号を前記各フラッシュメモリチップのそれぞれに供給し、前記各フラッシュメモリチップの同一アドレスにデータを書き込むように制御するコントローラ
を具備するメモリ制御装置。
【請求項１０】
所定のページサイズをアクセス単位とするフラッシュメモリチップを有し、複数の前記フラッシュメモリチップを含むことが可能なメモリモジュールに対してデータを書き込み、読み出すデータ記憶装置に適用するメモリ制御方法であって、
前記メモリモジュールに対して前記所定のページサイズを超えるページサイズをアクセス単位としてデータを書き込む場合に、前記データ及びアドレスを含む共通信号に含まれない独立のメモリ制御信号を生成し、
前記各フラッシュメモリチップのそれぞれに前記各メモリ制御信号を供給し、前記各フラッシュメモリチップの同一アドレスにデータを書き込むように制御するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。
【背景技術】
【０００２】
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）の開発が推進されている。
【０００３】
一般的に、ＳＳＤでは、１個のフラッシュメモリチップに対して、物理ページと呼ばれるアクセス単位でデータの書き込み又は読み出しが実行される。物理ページサイズは、例えば４Ｋバイトであり、ホストコンピュータなどのファイル管理単位であるセクタのサイズ（例えば５１２バイト）より大きい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２１１２３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＳＳＤでは、１個のフラッシュメモリ（flash memory）チップに対して、物理ページと呼ばれるアクセス単位が採用されている。ここで、物理ページサイズに対して１個のフラッシュメモリチップのページ容量が小さい場合には、複数個のフラッシュメモリチップにデータを分散して書き込む制御が必要となる。
【０００６】
しかしながら、単に複数個のフラッシュメモリチップに対して、物理ページ単位のデータを書き込む場合に、チップ毎の書き込み制御が必要となるため書き込み時間が増大し、ＳＳＤの動作性能が低下することになる。
【０００７】
本発明の目的は、複数のフラッシュメモリチップに対して、物理ページ単位のデータを１回のアクセスで書き込む制御を実現することにより、書き込み時間の少ない動作性能の優れたデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、データ記憶装置は、所定のページサイズをアクセス単位とするフラッシュメモリチップを有するメモリモジュールと、コントローラとを具備する。前記メモリモジュールは、複数の前記フラッシュメモリチップを含むことが可能な構成である。前記コントローラは、前記メモリモジュールに対して前記所定のページサイズを超えるページサイズをアクセス単位としてデータを書き込む場合に、前記データ及びアドレスを含む共通信号に含まれない独立のメモリ制御信号を前記各フラッシュメモリチップのそれぞれに供給し、前記各フラッシュメモリチップの同一アドレスにデータを書き込むように制御する。
【図面の簡単な説明】
【０００９】
【図１】各実施形態に関するデータ記憶装置の構成を示すブロック図。
【図２】第１の実施形態に関するメモリアクセスコントローラの構成を示すブロック図。
【図３】第１の実施形態に関するメモリアクセスコントローラの動作を説明するためのフローチャート。
【図４】第１の実施形態に関するライト動作を説明するためのタイミングチャート。
【図５】第１の実施形態に関するリード動作を説明するためのタイミングチャート。
【図６】第２の実施形態に関するメモリアクセスコントローラの構成を示すブロック図。
【図７】第２の実施形態に関するライト動作時のアクセスの概要を説明するための図。
【図８】第２の実施形態に関するライト動作を説明するためのタイミングチャート。
【図９】第２の実施形態に関するリード動作を説明するためのタイミングチャート。
【図１０】各実施形態に関するフラッシュメモリチップの第１の使用方法を説明するための図。
【図１１】各実施形態に関するフラッシュメモリチップの第２の使用方法を説明するための図。
【図１２】各実施形態に関するフラッシュメモリチップの第３の使用方法を説明するための図。
【図１３】各実施形態に関するフラッシュメモリチップの第４の使用方法を説明するための図。
【図１４】各実施形態に関するフラッシュメモリチップの第５の使用方法を説明するための図。
【発明を実施するための形態】
【００１０】
以下図面を参照して、各実施形態を説明する。
【００１１】
［データ記憶装置の構成］
図１は、各実施形態に係るデータ記憶装置の構成を示すブロック図である。
【００１２】
図１に示すように、データ記憶装置はＳＳＤ（solid state drive）であり、ＳＳＤコントローラ１０と、NAND型フラッシュメモリモジュール（以下、フラッシュメモリモジュール）３０と、ブートＲＯＭ（read only memory）４０とを有する。
【００１３】
フラッシュメモリモジュール３０はＳＳＤのデータ記憶媒体であり、例えばチャネル単位またはパッケージ単位での外付け接続が可能である。フラッシュメモリモジュール３０は、本実施形態では便宜的に、図２に示すように、チャネル単位として２個のフラッシュメモリチップ３１、３２の接続が可能な構成である。各フラッシュメモリチップ３１、３２はそれぞれ、２プレーン（Plane 0, Plane 1）として論理的に分割されたメモリ領域３１０，３２０を有する。また、各フラッシュメモリチップ３１、３２はそれぞれ、キャッシュ領域（Data Cache）３１１，３２１を含む。
【００１４】
ブートＲＯＭ４０は、ＳＳＤの内部バス１１に外付け接続されて、ＳＳＤの電源起動時にマイクロプロセッサ（ＣＰＵ）１７の動作に必要なソフトウェアを供給する。ブートＲＯＭ４０からのソフトウェアは、ＣＰＵ１７の内部メモリまたはＤＲＡＭ（dynamic random access memory）１８に転送されて格納される。このブートＲＯＭ４０により、ＳＳＤは、ホストシステム（コンピュータ）によりアクセスが可能な状態となる。
【００１５】
ＳＳＤコントローラ１０は、内部バス１１、ＣＰＵ１７及びＤＲＡＭ１８以外に、ホストインターフェース（ホストＩ／Ｆ）１２と、バッファ管理モジュール１３と、フラッシュメモリコントローラ１４と、入出力インターフェース（入出力Ｉ／Ｆ）１９とを有する。
【００１６】
ＣＰＵ１７は、ＳＳＤコントローラ１０の全体的制御を実行する。ＤＲＡＭ１８は、バッファメモリまたはＣＰＵ１７がアクセスするメインメモリとして動作し、論理／物理変換テーブルやホストシステムから転送されるデータなどを保持する。ホストＩ／Ｆ１２は、ホストデバイス５０とＳＳＤコントローラ１０間でのデータ、コマンド、アドレスの転送を制御する。ホストデバイス５０からは、論理アドレス（ＬＢＡ：logic block address）によりアクセスされる。ホストデバイス５０は、ホストシステム（コンピュータ）に含まれる例えばＳＡＴＡ（Serial ATA）規格のインターフェースコントローラである。
【００１７】
バッファ管理モジュール１３はＤＲＡＭ１８を制御し、ホストＩ／Ｆ１２とバッファメモリ（ＤＲＡＭ１８）間のデータ転送を制御する。また、バッファ管理モジュール１３は、フラッシュメモリコントローラ１４とバッファメモリ（ＤＲＡＭ１８）間のデータ転送を制御する。
【００１８】
フラッシュメモリコントローラ１４は、コマンド管理モジュール１５と、フラッシュメモリアクセスコントローラ（以下、メモリアクセスコントローラと表記する）１６とを含む。コマンド管理モジュール１５は、ＣＰＵ１７により設定されるライトコマンドやリードコマンドの実行を管理するコマンド管理処理や、論物変換テーブルなどを管理するテーブル管理処理を実行する。コマンド管理モジュール１５は、データの書き込み動作時にはライトコマンドをメモリアクセスコントローラ１６に発行する。また、コマンド管理モジュール１５は、データの読み出し動作時にはリードコマンドをメモリアクセスコントローラ１６に発行する。
【００１９】
メモリアクセスコントローラ１６はチャネル毎に設けられており、フラッシュメモリモジュール３０に対してデータのリード／ライト動作の制御及びデータ転送制御を実行する。メモリアクセスコントローラ１６は、データフローコントローラ２０と、コマンドシーケンサ２１とを含む。データフローコントローラ２０は、フラッシュメモリモジュール３０とバッファメモリ（ＤＲＡＭ１８）とのデータ転送をバッファ管理モジュール１３とハンドシェークしながら制御するインターフェースコントローラである。データフローコントローラ２０は、データの書き込み動作時には、バッファ管理モジュール１３に対してライトデータの転送要求を行なう。バッファ管理モジュール１３は、当該転送要求に応じてＤＲＡＭ１８に格納されているデータをデータフローコントローラ２０に転送する。データフローコントローラ２０は、バッファ管理モジュール１３からのデータを入出力Ｉ／Ｆ１９のデータパス１００に出力する。
【００２０】
コマンドシーケンサ２１は、フラッシュメモリモジュール３０に含まれる複数のフラッシュメモリチップ（ここでは２つのチップ３１、３２）の選択や、フラッシュメモリチップをアクセスするためのコマンドを発行する。コマンドシーケンサ２１は、図２に示すように、フラッシュメモリチップ３１、３２をアクセスするための各種のメモリ制御信号を生成し、入出力Ｉ／Ｆ１９の制御信号パス１１０〜１１４に送出する。
【００２１】
［第１の実施形態］
以下、図２から図５を参照して、第１の実施形態に係るフラッシュメモリの制御動作を説明する。
【００２２】
図２は、本実施形態のメモリアクセスコントローラ１６の要部を示すブロック図である。メモリアクセスコントローラ１６において、データフローコントローラ２０は、ライト動作時にバッファ管理モジュール１３からのデータ（IOデータと表記する場合がある）を入出力Ｉ／Ｆ１９のデータパス１００に転送する。コマンドシーケンサ２１は、各種のメモリ制御信号を生成し、入出力Ｉ／Ｆ１９の制御信号パス１１０〜１１４に送出する。
【００２３】
メモリ制御信号には、コマンドラッチイネーブル（CLE: Command Latch Enable）、チップイネーブル（CE: Chip Enable）、ライトイネーブル（WE: Write Enable）、及びアドレスラッチイネーブル（ALE: Address Latch Enable）が含まれる。なお、メモリ制御信号には、レディ／ビジー（R/B: Ready or Busy）も含まれる（図５を参照）。
【００２４】
メモリ制御信号には、リード動作時に、第１のフラッシュメモリチップ３１に供給されるリードイネーブル（Read Enable、RE0_nとする）が含まれる。また、ライト動作時には、第１のフラッシュメモリチップ３１に供給されるデータストローブ（data strobe、DQS0とする）がある。データストローブ（DQS0）は、リード動作時には、第１のフラッシュメモリチップ３１から出力される。
【００２５】
また、メモリ制御信号には、リード動作時に、第２のフラッシュメモリチップ３２に供給されるリードイネーブル（Read Enable、RE1_nとする）が含まれる。ライト動作時には、第２のフラッシュメモリチップ３２に供給されるデータストローブ（data strobe、DQS1とする）がある。データストローブ（DQS1）は、リード動作時には、第２のフラッシュメモリチップ３２から出力される。
【００２６】
コマンドシーケンサ２１は、ＲＥ／ＤＱＳ生成器２１０、セレクタ２１１，２１２、レジスタ２１３及びＣＬＥ／ＡＬＥ／ＣＥ／ＷＥ生成器２１４を有する。ＲＥ／ＤＱＳ生成器２１０は、前述のリードイネーブル（RE0_n，RE1_n）を生成する。また、ＲＥ／ＤＱＳ生成器２１０は、前述のデータストローブ（DQS0，DQS1）を生成する。ＣＬＥ／ＡＬＥ／ＣＥ／ＷＥ生成器２１４は、前述したコマンドラッチイネーブル（CLE）、アドレスラッチイネーブル（ALE）、チップイネーブル（CE）、及びライトイネーブル（WE）を生成する。
【００２７】
レジスタ２１３は、ＣＰＵ１７から通知される接続チップ数を示す値が設定される。この接続チップ数は、後述するように、１回のアクセスでデータをフラッシュメモリモジュール３０に書き込む場合の物理ページのサイズ（Ｍ）に基づいて、ＣＰＵ１７により算出される値である。
【００２８】
コマンドシーケンサ２１は、ライト動作時に、レジスタ２１３に設定される接続チップ数（ここでは２）に応じて、セレクタ２１１，２１２により第１及び第２のフラッシュメモリチップ３１，３２のそれぞれに対して同時にデータストローブ（DQS0，DQS1）を供給する。また、コマンドシーケンサ２１は、リード動作時に、レジスタ２１３に設定される接続チップ数（２）に応じて、セレクタ２１１，２１２により第１及び第２のフラッシュメモリチップ３１，３２のそれぞれに対して同時にリードイネーブル（RE0_n，RE1_n）を供給する。
【００２９】
一方、ＳＳＤの基本動作では、ＣＰＵ１７は、接続チップ数（１）をレジスタ２１３に設定する。これにより、コマンドシーケンサ２１は、ライト動作時に、第１または第２のフラッシュメモリチップ３１，３２のいずれかに対して、データストローブ（DQS0，DQS1）のいずれかを供給する。また、コマンドシーケンサ２１は、リード動作時に、第１または第２のフラッシュメモリチップ３１，３２のいずれかに対して、リードイネーブル（RE0_n，RE1_n）のいずれかを供給する。
【００３０】
（メモリ制御動作）
次に、図３のフローチャート及び図４のタイミングチャートを参照して、ライト動作時のメモリアクセスコントローラ１６の動作を説明する。
【００３１】
ライト動作時には、コマンド管理モジュール１５はＣＰＵ１７からの命令に従って、ライトコマンドをメモリアクセスコントローラ１６に発行する。データフローコントローラ２０は、バッファメモリ（ＤＲＡＭ１８）のデータ（IOデータ）をバッファ管理モジュール１３を経由し、受領し、入出力Ｉ／Ｆ１９のデータパス１００に転送する。入出力Ｉ／Ｆ１９は、データパス１００を介してライトデータであるデータをフラッシュメモリモジュール３０に出力する。
【００３２】
フラッシュメモリモジュール３０は、コマンドシーケンサ２１から出力されて、入出力Ｉ／Ｆ１９の制御信号パス１１０〜１１４を介して供給されるメモリ制御信号によりデータを格納する。本実施形態では、図３に示すように、コマンドシーケンサ２１は、フラッシュメモリモジュール３０に含まれるフラッシュメモリチップのチップ数に応じてメモリ制御信号を切り替える制御を実行する（ブロック２０３）。
【００３３】
メモリアクセスコントローラ１６は、コマンドシーケンサ２１のレジスタ２１３に設定される接続チップ数が「１」の場合には、基本ライト動作を実行する（ブロック２００のＮＯ）。基本ライト動作の場合には、コマンドシーケンサ２１は、セレクタ２１２を制御してＲＥ／ＤＱＳ生成器２１０により生成されるデータストローブ（DQS0）を、１つのフラッシュメモリチップ３１に対して供給する（ブロック２０１）。また、コマンドシーケンサ２１は、データストローブ（DQS0）以外のメモリ制御信号（制御信号パス１１０）を、１つのフラッシュメモリチップ３１に対して供給する。
【００３４】
図４（Ｂ）〜（Ｄ）は、基本ライト動作のタイミングチャートである。なお、図４（Ａ）は、基本ライト動作および後述する本実施形態のライト動作のタイミング用のクロック信号ＣＬＫである。図４（Ｂ）はチップイネーブル（CE_n）である。また、図４（Ｄ）はデータフローコントローラ２０から出力されるライト用のデータ（IOデータ）１００である。IOデータには、ユーザデータ（１〜２Ｎ）以外にコマンド（CMD）及びアドレス（ADR）が含まれている。また、図４において、IOデータにおいて斜線で示す部分は無効なデータ期間であることを示す（後述する図５、８、９においても同様である）。
【００３５】
基本ライト動作では、図４（Ｃ），（Ｄ）に示すように、メモリアクセスコントローラ１６は、コマンドシーケンサ２１により生成されるデータストローブ（DQS0）の立ち上がり、立下りの両エッジが、データフローコントローラ２０から出力されるデータの真中に来るように調整する。データフローコントローラ２０から出力されるデータは、フラッシュメモリチップ３１のキャッシュ領域（Data Cache）３１１に送出される。
【００３６】
ここで、コマンド管理モジュール１５により発行されるライトコマンドの物理ページのサイズ（Ｍバイトとする）が、１つのフラッシュメモリチップ３１のＮバイトより大きい場合（例えばＭ＝２Ｎバイト）を想定する。即ち、フラッシュメモリチップ３１，３２はそれぞれ、ライト動作のアクセス単位である物理ページのサイズがＮバイトとする。
【００３７】
基本ライト動作では、図４（Ｄ）に示すように、メモリアクセスコントローラ１６は、コマンドフェーズ、アドレスフェーズ、及び書き込み時間（ＷＴ１）において、フラッシュメモリチップ３１の物理ページサイズ（Ｎバイト）単位で２単位分の制御を実行することになる（ブロック２０２）。要するに、基本ライト動作では、物理ページサイズがＮバイトより大きいサイズ（Ｍバイト）のデータの場合には、１つのフラッシュメモリチップ３１の異なるアドレスに分散されて書き込まれる。この場合、Ｎバイト単位で２単位分の書き込み時間（ＷＴ１）が必要となる。
【００３８】
一方、メモリアクセスコントローラ１６は、コマンドシーケンサ２１のレジスタ２１３に設定される接続チップ数が「２」の場合には、本実施形態のライト動作を実行する（ブロック２００のＹＥＳ，２０３）。コマンドシーケンサ２１は、セレクタ２１２を制御してＲＥ／ＤＱＳ生成器２１０により生成されるデータストローブ（DQS0，DQS1）を、２つのフラッシュメモリチップ３１，３２のそれぞれに対して供給する（ブロック２０４）。また、コマンドシーケンサ２１は、データストローブ（DQS0，DQS1）以外のメモリ制御信号（制御信号パス１１０）を、２つのフラッシュメモリチップ３１に対して供給する。
【００３９】
ここで、ＳＳＤとして接続すべきフラッシュメモリチップ数の決定方法について説明する。本実施形態のＳＳＤでは、ライト動作またはリード動作のアクセス単位である１物理ページのサイズとして、Ｍバイトが設定されているものとする。一方、フラッシュメモリモジュール３０として接続可能な１個のフラッシュメモリチップ（３１または３２）の１物理ページのサイズは、Ｎバイト（Ｎ＜Ｍ）とする。
【００４０】
ＣＰＵ１７は、接続チップ数をＺとして、式「Ｚ＝Ｍ／Ｎ」から接続チップ数Ｚを算出する。ＣＰＵ１７は、算出した接続チップ数Ｚ（ここではＺ＝２）をコマンドシーケンサ２１のレジスタ２１３に設定する。ＣＰＵ１７の算出決結果Ｚが整数値ではない場合やNバイトのチップが複数準備できない場合の実現方法については、後述の［物理ページサイズとフラッシュメモリチップの使用方法］で示す。
【００４１】
図４（Ｅ）〜（Ｈ）は、本実施形態のライト動作のタイミングチャートである。図４（Ｅ）はチップイネーブル（CE_n）である。また、図４（Ｈ）はデータフローコントローラ２０から出力されるライト用のデータ（IOデータ）である。
【００４２】
コマンドシーケンサ２１は、レジスタ２１３に設定された接続チップ数が２の場合に、セレクタ２１２を制御して、ＲＥ／ＤＱＳ生成器２１０により生成されるデータストローブ（DQS0，DQS1）を、２つのフラッシュメモリチップ３１，３２のそれぞれに対して供給する。また、コマンドシーケンサ２１は、データストローブ（DQS0，DQS1）以外のメモリ制御信号（制御信号パス１１０）を、２つのフラッシュメモリチップ３１，３２のそれぞれに対して供給する。
【００４３】
具体的には、図４（Ｆ），（Ｇ）に示すように、ＲＥ／ＤＱＳ生成器２１０は、基本ライト動作時と同様のトグルサイクルでデータストローブ（DQS0，DQS1）を生成する。コマンドシーケンサ２１は、トグル回数をカウントして、データストローブ（DQS0，DQS1）を前半と後半に分けて出力する。
【００４４】
従って、図４（Ｆ），（Ｈ）に示すように、フラッシュメモリチップ３１に対しては、１物理ページサイズ（Ｍバイト）の前半の物理ページ(Ｎ＝Ｍ／２)のデータが書き込まれる。一方、図４（Ｇ），（Ｈ）に示すように、フラッシュメモリチップ３２に対しては、１物理ページサイズ（Ｍバイト）の後半の物理ページ(Ｎ＝Ｍ／２)のデータが書き込まれる。この場合、データフローコントローラ２０は、基本ライト動作時と同様の処理で、書き込み用のデータ（IOデータ）をフラッシュメモリチップ３１，３２のそれぞれに対して供給する。
【００４５】
以上のようにして、フラッシュメモリチップの１物理ページサイズ（Ｎバイト）より大きい物理ページのサイズ（Ｍ＝２Ｎバイト）のデータを、１回のアクセスで、２つのフラッシュメモリチップ３１，３２に書き込む。この場合、メモリアクセスコントローラ１６は、フラッシュメモリチップ３１，３２の同一アドレスに、１物理ページサイズ（Ｍバイト）の前半と後半のデータを書き込むように制御する（ブロック２０５）。
【００４６】
従って、本実施形態のライト動作では、図４（Ｈ）に示すように、Ｎバイト単位で１単位分の書き込み時間（ＷＴ２）で、Ｎバイト単位で２単位分の物理ページサイズ（Ｍ＝２Ｎバイト）のデータを書き込むことができる。これに対して、前述したように、基本ライト動作では、Ｎバイト単位で２単位分の書き込み時間（ＷＴ１）が必要である（図４（Ｄ）を参照）。
【００４７】
図５は、リード動作時のメモリアクセスコントローラ１６の動作を説明するためのタイミングチャートである。リード動作時には、コマンド管理モジュール１５はＣＰＵ１７からの命令に従って、リードコマンドをメモリアクセスコントローラ１６に発行する。
【００４８】
図５（Ｂ）〜（Ｆ）は、基本リード動作のタイミングチャートである。なお、図５（Ａ）は、基本リード動作および後述する本実施形態のリード動作のタイミング用のクロック信号ＣＬＫである。図５（Ｂ）はチップイネーブル（CE_n）である。図５（Ｃ）はレディ／ビジー（R/B）である。図５（Ｄ）はリードイネーブル（RE0_n）である。図５（Ｅ）はデータストローブ（DQS0）であり、リード動作時には第１のフラッシュメモリチップ３１から出力される。図５（Ｆ）は第１のフラッシュメモリチップ３１から出力されるリードデータ（IOデータ）である。
【００４９】
メモリアクセスコントローラ１６は、コマンドシーケンサ２１のレジスタ２１３に設定される接続チップ数が「１」の場合には、基本リード動作を実行する。基本リード動作では、コマンドシーケンサ２１は、セレクタ２１１を制御してＲＥ／ＤＱＳ生成器２１０により生成されるリードイネーブル（RE0_n）を、１つのフラッシュメモリチップ３１に対して供給する。メモリアクセスコントローラ１６は、フラッシュメモリチップ３１からデータストローブ（DQS0）及びリードデータ（IOデータ）を受け取る。
【００５０】
即ち、基本リード動作では、図５（Ｆ）に示すように、メモリアクセスコントローラ１６は、コマンドフェーズ、アドレスフェーズ、及び読み出し時間（ＲＴ１）において、フラッシュメモリチップ３１の物理ページサイズ（Ｎバイト）単位で２単位分の制御を実行することになる。従って、基本リード動作では、物理ページサイズがフラッシュメモリチップ３１のＮバイトより大きいサイズ（Ｍバイト）のデータの場合には、Ｎバイト単位で２単位分の読み出し時間（ＲＴ１）が必要となる。
【００５１】
図５（Ｇ）〜（Ｍ）は、本実施形態のリード動作のタイミングチャートである。本実施形態のリード動作では、前述のライト動作と同様に、フラッシュメモリチップの１物理ページサイズ（Ｎバイト）より大きい物理ページのサイズ（Ｍ＝２Ｎバイト）のデータを、１回のアクセスで、２つのフラッシュメモリチップ３１，３２の同一アドレスから読み出す。この場合、コマンドシーケンサ２１は、トグル回数をカウントして、リードイネーブル（RE0_n，RE1_n）を前半と後半に分けて出力する。
【００５２】
以上のように本実施形態によれば、フラッシュメモリモジュール３０に含まれるフラッシュメモリチップの物理サイズに依存することなく、１物理ページのサイズが大きいデータを、複数のフラッシュメモリチップを使用して、１回のアクセスで書き込み、または読み出すことができる。換言すれば、複数のフラッシュメモリチップに対して１回のアクセスで書き込み動作および読み出し動作を実行できるため、アクセス性能が低下することなく、１物理ページサイズを増大させることができる。
【００５３】
（変形例）
図４（Ｉ）〜（Ｋ）は、本実施形態の変形例に関するライト動作のタイミングチャートである。本変形例のメモリアクセスコントローラ１６では、ＲＥ／ＤＱＳ生成器２１０は、トグルサイクルが異なるデータストローブ（DQS0，DQS1）を生成する。
【００５４】
具体的には、図４（Ｉ），（Ｊ）に示すように、ＲＥ／ＤＱＳ生成器２１０は、立上り、立下りのエッジを２サイクル間隔でトグルさせるデータストローブ（DQS0，DQS1）を生成する。コマンドシーケンサ２１は、レジスタ２１３に設定された接続チップ数が２の場合に、セレクタ２１２を制御して、ＲＥ／ＤＱＳ生成器２１０により生成されるデータストローブ（DQS0，DQS1）を出力する。入出力Ｉ／Ｆ１９は、制御信号パス１１２，１１４を介してデータストローブ（DQS0，DQS1）を、２つのフラッシュメモリチップ３１，３２のそれぞれに対して供給する。
【００５５】
一方、本変形例では、データフローコントローラ２０は、Ｍバイトの１物理ページサイズのデータ（IOデータ）１００をソート（sort）して、一定の順番に出力するように制御する。ここで、Ｍバイトのデータを、前半ページと後半ページに分けて、Ｎ(Ｎ＝Ｍ／２)バイトのフラッシュメモリチップを２つ利用して処理するとする。
【００５６】
このようなメモリアクセスコントローラ１６の制御により、図４（Ｋ）に示すように、第１のフラッシュメモリチップ３１には、前半ページの１つ目のデータ(0-1)、２つ目のデータ（0-2）、3つ目のデータ（0-3）、・・・という順番で書き込まれる。一方、第２のフラッシュメモリチップ３２には、後半ページの１つ目のデータ(1-1)、２つ目のデータ（1-2）、3つ目のデータ（1-3）、・・・という順番で書き込まれる。
【００５７】
即ち、データフローコントローラ２０は、ライト動作時には、入出力Ｉ／Ｆ１９のデータパス１００に対して、前半ページの1つ目のデータ(0-1)、後半ページの1つ目のデータ(1-1)、前半ページの2つ目のデータ(0-2)、後半ページの2つ目のデータ(1-2)、・・・、前半ページのＮ番目のデータ（0-N）、後半ページのＮ番目のデータ(1-N)という順番で出力するように制御する。
【００５８】
以上のようにして、本変形例の方法においても、フラッシュメモリチップの１物理ページサイズ（Ｎバイト）より大きい物理ページのサイズ（Ｍ＝２Ｎバイト）のデータを、１回のアクセスで、２つのフラッシュメモリチップ３１，３２に書き込むことができる。
【００５９】
一方、図５（Ｎ）〜（Ｒ）は、本変形例に関するリード動作のタイミングチャートである。本変形例のリード動作では、ＲＥ／ＤＱＳ生成器２１０により生成されるリードイネーブル（RE0_n，RE1_n）のタイミングは、本実施形態のリード動作時のタイミング（図５（Ｉ），（Ｋ）を参照）と同じである。
【００６０】
本変形例のリード動作においても、前述のライト動作と同様に、フラッシュメモリチップの１物理ページサイズ（Ｎバイト）より大きい物理ページのサイズ（Ｍ＝２Ｎバイト）のデータを、１回のアクセスで２つのフラッシュメモリチップ３１，３２の同一アドレスから読み出すことが可能である。また、本変形例のリード動作では、分割ページ単位でページ毎にデータを読み出すことも可能である。
【００６１】
なお、本実施形態及び変形例において、ライト動作時のタイミングは、データストローブ（DQS0，DQS1）の両エッジを使用するトグル制御方法が採用されているが、これに限ることなく、一般的なライトイネーブル（WE）を使用する制御方法も適用可能である。
【００６２】
［第２の実施形態］
図６は、第２の実施形態に関するメモリアクセスコントローラ１６の要部を示すブロック図である。なお、ＳＳＤ全体の構成は、前述の図１に示すものと同様であるため、機能や動作の説明を省略する。
【００６３】
前述したように、メモリアクセスコントローラ１６は、チャネル毎に設けられている。図６は、メモリアクセスコントローラ１６に含まれるチャネル毎のコマンドシーケンサ２１_ch（0）〜２１_ch（n）、入出力Ｉ／Ｆ１９、及びフラッシュメモリモジュール３０_ch（0）〜３０_ch（n）の周辺構成を示す図である。なお、各チャネルのメモリアクセスコントローラ１６の動作は同一であるため、本実施形態は、便宜的にチャネルch（n）のメモリアクセスコントローラ１６について説明する。
【００６４】
本実施形態のコマンドシーケンサ２１_ch（n）は、メモリ制御信号に含まれるチップ・イネーブル（CEn）を複数（ここでは２）のチップ・イネーブルCE0_n，CE1_nに分割して出力するチップ・イネーブル（ＣＥ）生成器６０を有する。さらに、コマンドシーケンサ２１_ch（n）は、メモリ制御信号として、コマンドラッチイネーブル（CLE）、アドレスラッチイネーブル（ALE）、リード・イネーブル（REn）、ライトイネーブル（WEn）、及びデータストローブ（DQS）を生成するＣＬＥ／ＡＬＥ／ＲＥ／ＷＥ／ＤＱＳ生成器６１を有する。
【００６５】
また、コマンドシーケンサ２１_ch（n）は、レディ／ビジー（R/B）を出力する。ここでは、便宜的に、コマンドシーケンサ２１_ch（n）は、入出力Ｉ／Ｆ１９の制御信号パス６００に、コマンドラッチイネーブル（CLE）、ライトイネーブル（WEn）及びアドレスラッチイネーブル（ALE）を出力する。また、コマンドシーケンサ２１_ch（n）は、リード・イネーブル（REn）を制御信号パス６１０に出力する。さらに、コマンドシーケンサ２１_ch（n）は、チップ・イネーブルCE0_n，CE1_nをそれぞれ、制御信号パス６２０，６２１に出力する。
【００６６】
（メモリ制御動作）
図１及び図２を参照して前述したように、ライト動作時には、コマンド管理モジュール１５はＣＰＵ１７からの命令に従って、ライトコマンドをメモリアクセスコントローラ１６に発行する。データフローコントローラ２０は、バッファ管理モジュール１３からのデータ（IOデータ）を、入出力Ｉ／Ｆ１９のデータパス１００に転送する。入出力Ｉ／Ｆ１９は、データパス１００を介してライトデータであるデータをフラッシュメモリモジュール３０_ch（n）に出力する。
【００６７】
図７は、本実施形態のＣＥ制御、及び２チップのフラッシュメモリチップ３１，３２に対するライト動作時におけるアクセスの概要を示す図である。
【００６８】
本実施形態のＳＳＤでは、ライト動作またはリード動作のアクセス単位である１物理ページのサイズとして、３２Ｋバイト（Ｍ＝３２Ｋバイト）が設定されているものとする。ここで、フラッシュメモリモジュール３０_ch（n）には、１物理ページのサイズが３２Ｋバイトのフラッシュメモリチップが接続されている場合を想定する。この場合には、メモリアクセスコントローラ１６が、図７（Ａ）〜（Ｄ）に示すように、チップ・イネーブル（CEn）、コマンドラッチイネーブル（CLE）などのメモリ制御信号、及び３２Ｋバイトのライトデータ（Wdat）を出力することにより、フラッシュメモリチップには３２Ｋバイトのデータ（Wdat）が格納される。
【００６９】
一方、フラッシュメモリモジュール３０_ch（n）に接続されるフラッシュメモリチップ（３１または３２）の１物理ページのサイズが１６Ｋバイト（Ｎ＝Ｍ／２）である場合には、そのままの状態ではライト動作は不可能となる。そこで、本実施形態では、１物理ページのサイズが１６Ｋバイトの各フラッシュメモリチップ３１，３２を使用し、コマンドシーケンサ２１_ch（n）は、チップ・イネーブル（CEn）を２分割したチップ・イネーブルCE0_n，CE1_nを出力する。このため、入出力Ｉ／Ｆ１９には、チップ・イネーブルCE1_nを転送するための制御信号パス６２１が追加となる。
【００７０】
即ち、図７（Ｅ）〜（Ｉ）に示すように、コマンドシーケンサ２１_ch（n）から出力されるチップ・イネーブルCE0_nが供給されるフラッシュメモリチップ３１には、３２Ｋバイトのライトデータ（Wdat）の前半部分である１６Ｋバイトのデータ（Ｗ１）が格納される。また、コマンドシーケンサ２１_ch（n）から出力されるチップ・イネーブルCE1_nが供給されるフラッシュメモリチップ３２には、３２Ｋバイトのライトデータ（Wdat）の後半部分である１６Ｋバイトのデータ（Ｗ２）が格納される。
【００７１】
以上のようにして本実施形態によれば、チップ・イネーブル（CEn）を２分割するＣＥ制御により、１６Ｋバイトのフラッシュメモリチップを２チップ分使用することで、３２Ｋバイトのライトアクセスが可能になる。換言すれば、チップ・イネーブルの制御信号パスを追加するだけで、チャネル毎のフラッシュメモリチップ数を増大した場合でも、１回のアクセスで各フラッシュメモリチップに対するライト動作を実行できる。即ち、フラッシュメモリチップ数を増大した場合でも、コマンド、アドレス・フェーズ、プログラム（program）のプロセスを追加する必要は無いため、ライト動作時間を大幅に短縮化できる。ここで、プログラムとは、フラッシュメモリ３０のチップ内部への書き込み動作中であることを示す。
【００７２】
図８は、図７（Ｅ）〜（Ｉ）に示すライト動作の制御を具体的に説明するためのタイミングチャートであり、特に図７のCmd=80hからの拡大図に相当する。ここでは、１物理ページ分（３２Ｋバイト）のデータを、フラッシュメモリチップ３１，３２に書き込む場合である。
【００７３】
図８（Ｈ）は、図６で図示していないが、コマンドシーケンサ２１_ch（n）に含まれる生成器６１により生成されるデータストローブ（DQS）の出力タイミングである。メモリアクセスコントローラ１６は、チップ・イネーブルCE0_n、ライトイネーブル（WEn）及びデータストローブ（DQS）に応じて、１物理ページ分（３２Ｋバイト）のデータの中で前半部分である１６Ｋバイトのデータ（Ｄ０−Ｄ（N-1））をフラッシュメモリチップ３１に格納する。
【００７４】
さらに、メモリアクセスコントローラ１６は、チップ・イネーブルCE1_n及びデータストローブ（DQS）に応じて、１物理ページ分（３２Ｋバイト）のデータの中で後半部分である１６Ｋバイトのデータ（Ｄ（N+1）−Ｄ（2N））をフラッシュメモリチップ３２に格納する。ここで、図８（Ｈ）に示すように、チップ・イネーブルCE0_n，CE1_nの切り替え時（８００）に、メモリアクセスコントローラ１６は、生成器６１により生成されるデータストローブ（DQS）の出力タイミングを調整する。これにより、特に周波数が高くなった場合でも、チップ・イネーブル（CE）とデータストローブ（DQS）とのセットアップ／ホールド（Setup/Hold）調整を実現することができる。なお、データストローブ（DQS）の出力タイミングの調整は特別の制御回路ではなく、コマンドシーケンサ２１_ch（n）によりチップ・イネーブルCE0_n，CE1_nの切り替え時に同期して実行するように制御する。
【００７５】
（リード動作）
図９（Ａ）〜（Ｊ）は、本実施形態のリード動作のタイミングチャートである。ここでは、前述のライト動作と同様に、１物理ページ分（３２Ｋバイト）のデータをフラッシュメモリチップ３１，３２から読み出す場合である。
【００７６】
リード動作の場合には、メモリアクセスコントローラ１６は、チップ・イネーブルCE0_n及びリードイネーブル（（REn））に応じて、１物理ページ分（３２Ｋバイト）のデータの中で前半部分である１６Ｋバイトのデータ（Ｄ０−Ｄ（N-1））をフラッシュメモリチップ３１から読み出す。また、メモリアクセスコントローラ１６は、チップ・イネーブルCE1_n及びリードイネーブル（（REn））に応じて、１物理ページ分（３２Ｋバイト）のデータの中で後半部分である１６Ｋバイトのデータ（Ｄ（N+1）−Ｄ（2N））をフラッシュメモリチップ３２から読み出す。
【００７７】
リード動作の場合には、図９（Ｈ）に示すように、チップ・イネーブルCE0_n，CE1_nの切り替え時（９００）に、フラッシュメモリチップ３１，３２から出力されるデータストローブ（DQS）の出力タイミングが調整されることになる。
【００７８】
なお、本実施形態において、チップ・イネーブル（CE）とデータストローブ（DQS）とのセットアップ／ホールド調整は、データストローブ（DQS）をデイレー（Delay）させる方法でなくてもよい。例えば、別の方法として、２つのチップ・イネーブルCE0_n，CE1_nとデータストローブ（DQS）間のタイミングを満たすように、チップ・イネーブル制御（ＣＥ制御）を行なう方法でもよい。具体的には、チップ・イネーブル（ＣＥ）生成器６０の内部回路において、倍速クロックを作成して反転クロックからチップ・イネーブルの出力を調整する。
【００７９】
［物理ページサイズとフラッシュメモリチップの使用方法］
第１及び第２の実施形態は、２つのフラッシュメモリチップを使用して、フラッシュメモリチップの１物理ページより大きいサイズの１物理ページのデータを書き込むアクセス方法について説明している。図１０〜図１４は、２つのフラッシュメモリチップ（便宜的にチップ１，２と表記する）を組み合わせて使用する使用方法の具体例を説明するための図である。
【００８０】
ここで、図１０（Ａ）〜図１４（Ａ）はそれぞれ、１回のアクセスで書き込むために必要な物理ページのサイズ（ここでは１６Ｋバイト）を意味している。以下、第１から第５の使用方法の具体例を説明する。
【００８１】
第１の使用方法は、図１０（Ｂ），（Ｃ）に示すように、チップ１，２の物理ページサイズはいずれも同じサイズ（ここでは１０Ｋバイト）の場合で、チップ１，２を順番に使用する方法である。具体的には、チップ１に１０Ｋバイトのデータを書き込み、チップ２に残りの６Ｋバイトのデータを書き込む。この場合、チップ２の未使用領域１０００には、４Ｋバイトのゼロ（０-pad）を書き込む。
【００８２】
第２の使用方法は、図１１（Ｂ），（Ｃ）に示すように、チップ１，２の物理ページサイズはいずれも同じサイズ（１０Ｋバイト）の場合で、チップ１，２の同容量を使用する方法である。具体的には、チップ１に８Ｋバイトのデータを書き込み、チップ２に残りの８Ｋバイトのデータを書き込む。この場合、チップ１，２の各未使用領域１００１には、２Ｋバイトのゼロ（０-pad）を書き込む。
【００８３】
第３の使用方法は、図１２（Ｂ），（Ｃ）に示すように、チップ１，２の物理ページサイズはいずれも同じサイズ（１０Ｋバイト）の場合で、チップ１，２の排他的使用を行なう方法である。具体的には、チップ１に１０Ｋバイトのデータを書き込み、チップ２にも１０Ｋバイトのデータを書き込む。この場合、チップ１，２の４Ｋバイト分のデータ１００２は、重複利用のデータとして書き込まれる。リード動作時には、チップ１のデータ１００２を利用する。
【００８４】
第４の使用方法は、図１３（Ｂ），（Ｃ）に示すように、チップ１，２の物理ページサイズが異なるサイズの場合で、必要な物理ページのサイズ（１６Ｋバイト）を確保する方法である。具体的には、チップ１に１０Ｋバイトのデータを書き込み、チップ２には６Ｋバイトのデータを書き込む。
【００８５】
第５の使用方法は、図１４（Ｂ），（Ｃ）に示すように、チップ１，２の物理ページサイズは同一サイズ（８Ｋバイト）の場合で、必要な物理ページのサイズ（１６Ｋバイト）を確保する方法である。具体的には、チップ１，２のいずれにも８Ｋバイトのデータを書き込む。
【００８６】
以上要するに、フラッシュメモリチップのサイズに依存しない物理ページ単位のアクセスが可能なメモリ制御を実現することができる。従って、ＳＳＤに使用するフラッシュメモリチップのサイズ的制限を緩和できるため、ＳＳＤコントローラ１０の設計上の制約をが緩和することが可能となる。
【００８７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８８】
１０…ＳＳＤコントローラ、１１…内部バス、
１２…ホストインターフェース（ホストＩ／Ｆ）、１３…バッファ管理モジュール、
１４…フラッシュメモリコントローラ、１５…コマンド管理モジュール、
１６…フラッシュメモリアクセスコントローラ、１７…マイクロプロセッサ（ＣＰＵ）、
１８…ＤＲＡＭ、１９…入出力インターフェース（入出力Ｉ／Ｆ）、
２０…データフローコントローラ、２１…コマンドシーケンサ、
３０…NAND型フラッシュメモリモジュール、３１、３２…フラッシュメモリチップ、
４０…ブートＲＯＭ、５０…ホストデバイス、６０…ＣＥ生成器、
２１０…ＲＥ／ＤＱＳ生成器、２１１，２１２…セレクタ、２１３…レジスタ。
【図１】
2012230554.tif 000003
【図２】
2012230554.tif 000004
【図３】
2012230554.tif 000005
【図４】
2012230554.tif 000006
【図５】
2012230554.tif 000007
【図６】
2012230554.tif 000008
【図７】
2012230554.tif 000009
【図８】
2012230554.tif 000010
【図９】
2012230554.tif 000011
【図１０】
2012230554.tif 000012
【図１１】
2012230554.tif 000013
【図１２】
2012230554.tif 000014
【図１３】
2012230554.tif 000015
【図１４】
2012230554.tif 000016