(57)【要約】【課題】転送データの任意部分にメモリインタリーブ制御データ部を設け、メモリインタリーブアクセス制御をデータ転送中に行うことにより、インタリーブ制御に必要なコマンド／アドレス発行時間を削減でき、メモリアクセス効率が向上する。【解決手段】複数の区域に分けられているメモリと、前記複数の区域のデータ転送に共通に用いられるデータバスとを具備するメモリシステムのインタリーブ制御装置であって、前記メモリの或る区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する手段と、前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始する手段とを具備する。【選択図】図１
2011018222.tif 000002
【特許請求の範囲】
【請求項１】
複数の区域に分けられているメモリと、前記複数の区域のデータ転送に共通に用いられるデータバスとを具備するメモリシステムのインタリーブ制御装置であって、
前記メモリの或る区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する手段と、
前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始する手段と、
を具備するインタリーブ制御装置。
【請求項２】
前記検出手段は所定サイズを示すデータがセットされるレジスタと、転送された前記書込みデータあるいは読出しデータのサイズを測るカウンタと、前記レジスタの記憶値と前記カウンタのカウント値とを比較し、一致するとスタート信号を出力する比較器とを具備し、
前記開始手段は前記スタート信号に応答してインタリーブ制御データの転送を開始することを特徴とする請求項１記載のインタリーブ制御装置。
【請求項３】
前記検出手段は複数の所定サイズのデータの転送を検出し、
前記開始手段は前記検出手段が前記複数の所定サイズのデータの転送を検出する毎に前記インタリーブ制御データの転送を開始することを特徴とする請求項１記載のインタリーブ制御装置。
【請求項４】
前記メモリは３つ以上の区域に分けられており、
前記インタリーブ制御データはインタリーブ制御の対象となる区域を選択するデータを含むことを特徴とする請求項１記載のインタリーブ制御装置。
【請求項５】
複数の区域に分けられているメモリと、前記複数の区域のデータ転送に共通に用いられるデータバスとを具備するメモリシステムのインタリーブ制御方法であって、
前記メモリの或る区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出することと、
前記所定サイズのデータの転送が検出されると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始することと、
を具備するインタリーブ制御方法。
【請求項６】
前記検出することは所定サイズを示すデータをレジスタにセットすることと、転送された前記書込みデータあるいは読出しデータのサイズをカウンタにより測ることと、前記レジスタの記憶値と前記カウンタのカウント値とを比較器により比較し、一致するとスタート信号を出力することとを具備し、
前記開始することは前記スタート信号に応答してインタリーブ制御データの転送を開始することを特徴とする請求項５記載のインタリーブ制御方法。
【請求項７】
前記検出することは複数の所定サイズのデータの転送を検出し、
前記開始することは前記複数の所定サイズのデータの転送が検出される毎に前記インタリーブ制御データの転送を開始することを特徴とする請求項５記載のインタリーブ制御方法。
【請求項８】
前記メモリは３つ以上の区域に分けられており、
前記インタリーブ制御データはインタリーブ制御の対象となる区域を選択するデータを含むことを特徴とする請求項５記載のインタリーブ制御方法。
【請求項９】
ホストシステムに接続されるメモリシステムであって、
複数の不揮発性半導体メモリと、
前記複数の不揮発性半導体メモリに共通に接続されるデータバスと、
前記ホストシステムに接続されるとともに、前記複数の不揮発性半導体メモリに接続され、前記データバス上のデータ転送を制御するメモリコントローラとを具備し、
前記メモリコントローラは
いずれかの不揮発性メモリへの書込みデータあるいは該不揮発性メモリからの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する手段と、
前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えて他の不揮発性メモリのインタリーブ制御データの転送を開始する手段と、
を具備することを特徴とするメモリシステム。
【請求項１０】
前記検出手段は所定サイズを示すデータがセットされるレジスタと、転送された前記書込みデータあるいは読出しデータのサイズを測るカウンタと、前記レジスタの記憶値と前記カウンタのカウント値とを比較し、一致するとスタート信号を出力する比較器とを具備し、
前記開始手段は前記スタート信号に応答してインタリーブ制御データの転送を開始することを特徴とする請求項９記載のメモリシステム。
【請求項１１】
前記検出手段は複数の所定サイズのデータの転送を検出し、
前記開始手段は前記検出手段が前記複数の所定サイズのデータの転送を検出する毎に前記インタリーブ制御データの転送を開始することを特徴とする請求項９記載のメモリシステム。
【請求項１２】
前記不揮発性メモリは３つ以上であり、
前記インタリーブ制御データはインタリーブ制御の対象となる不揮発性メモリを選択するデータを含むことを特徴とする請求項９記載のメモリシステム。
【請求項１３】
前記インタリーブ制御データは不揮発性メモリのアドレスと、コマンドを含むことを特徴とする請求項９記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＳＳＤ(Solid State Drive or Solid State Disk)と呼ばれる不揮発性の半導体記憶素子であるフラッシュメモリを用いた記憶装置において、メモリアクセスの高速化を図るインタリーブ制御装置、インタリーブ制御方法及びメモリシステムに関する。
【背景技術】
【０００２】
記憶装置には、メモリアクセスの動作を高速なプロセッサの速度に近づけるためのメモリインタリーブと呼ばれる機能を有するものがある。メモリインタリーブ機能は、メモリをバンクと呼ばれる複数（例えば２つ）の区域に分け、各々のバンクは独立に動作できるようにし、同時または交互に読出し／書込みを行なうものである。
【０００３】
特許文献１記載の記憶装置では、バンク０、バンク１にそれぞれ設けた並行に動作できる起動回路１−０、１−１は、読出しか書込みかを指示するコマンド並びにそのコマンド用のバンク、アドレスおよびデータ長を指定するアクセス要求信号Ｒ１を受けて、指定されたバンク０またはバンク１のアクセス動作を起動する起動要求信号Ｓ０、Ｓ１を出力するとともに、し呈されたアドレスおよびデータ長が次のバンク１またはバンク０にまでまたがるときには、所定の時間間隔で次のバンク１またはバンク０のための読出しか書込みかを指示するコマンド並びにそのコマンド用の次のバンク、続くアドレスおよび残りのデータ長を指定したアクセス要求信号Ｒ２、Ｒ３を送出する。
【０００４】
また、バンク０、バンク１ごとのアドレス発生回路２−０、２−１は、起動回路１−０、１−１からの起動要求信号Ｓ０、Ｓ１を受けて、指定されたバンク内で指定されたアドレスから順々に、そのバンクの境界のアドレスまたは指定されたデータ長の最後のアドレスに至るまで、データアドレス単位であるワードごとにそれぞれのアドレスを選択する信号を発生して、それらを４個のデータアクセス単位ごとのアドレス選択信号Ａ０、Ａ１、Ａ２、Ａ３としてそれぞれ振り分けて出力する。
【０００５】
特許文献１記載の記憶装置によれば、アクセス要求信号の内容により、ブロック転送を高速に行なうことも、インタリーブ転送を高速に行なうこともできる。これにより、連続するアドレスを有するデータも、連続していないアドレスを有するデータも高い処理速度で動作することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第２６８９４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１記載の装置では、メモリインタリーブをアクセスするためのメモリアドレスを直前の要求アドレスから生成している。そのため、インタリーブ制御するアドレス間にはアドレス生成回路による繋がりが必要であり、任意のアドレス指定ができない。
【０００８】
また、インタリーブ制御データはライトデータあるいはリードデータの一転送単位（例えば５１２バイト）の転送が完了してから送っている。そのため、インタリーブ制御データの転送時間だけ全体のデータ転送時間が延長されてしまう。
【課題を解決するための手段】
【０００９】
本発明の一実施態様によれば、複数の区域に分けられているメモリと、前記複数の区域のデータ転送に共通に用いられるデータバスとを具備するメモリシステムのインタリーブ制御装置は、前記メモリの或る区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する手段と、前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始する手段とを具備する。
【００１０】
本発明の他の実施態様によれば、複数の区域に分けられているメモリと、前記複数の区域のデータ転送に共通に用いられるデータバスとを具備するメモリシステムのインタリーブ制御方法は、前記メモリの或る区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出することと、前記所定サイズのデータの転送が検出されると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始することとを具備する。
【００１１】
本発明のさらに他の実施態様によれば、ホストシステムに接続されるメモリシステムは、複数の不揮発性半導体メモリと、前記複数の不揮発性半導体メモリに共通に接続されるデータバスと、前記ホストシステムに接続されるとともに、前記複数の不揮発性半導体メモリに接続され、前記データバス上のデータ転送を制御するメモリコントローラとを具備し、前記メモリコントローラは、いずれかの不揮発性メモリへの書込みデータあるいは該不揮発性メモリからの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する手段と、前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えて他の不揮発性メモリのインタリーブ制御データの転送を開始する手段とを具備する。
【発明の効果】
【００１２】
本発明によれば、メモリインタリーブアクセス制御を事前のデータ転送中に行うことで、高速なメモリインタリーブ制御を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本発明によるインタリーブ制御装置の一実施形態のシステム構成例を示すブロック図である。
【図２】不揮発性メモリコントローラ１０６の内部構成例を示すブロック図である。
【図３】コマンド／アドレス制御スタートレジスタ２０５の内部構成例を示す図である。
【図４】インタリーブコマンド／アドレス制御イネーブルレジスタ２１１の内部構成例を示す図である。
【図５】ページデータ５０１の内部構成例を示す図である。
【図６】コマンド／アドレス発行シーケンサ２５１の処理フロー例を示す図である。
【図７】データ転送シーケンサ２５３の処理フロー例を示す図である。
【図８】ステータスリードシーケンサ２５２の処理フロー例を示す図である。
【図９】インタリーブコマンド／アドレス発行シーケンサ２５４の処理フロー例を示す図である。
【図１０】リードデータ転送中にメモリインタリーブ制御を行う場合のプログラム１０４の制御フロー例を示す図である。
【図１１】図１０のメモリインタリーブ制御フローを行った場合の不揮発性メモリＩ／Ｆ信号を示す図である。
【図１２】図１０のメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイスの状態図の一例である。
【図１３】図１０のメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイスの状態図の他の例である。
【図１４】図１０のメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイスの状態図のさらに他の例である。
【図１５】ライトデータ転送中にメモリインタリーブ制御を行う場合のプログラム１０４の制御フロー例を示す図である。
【図１６】図１５のメモリインタリーブ制御フローを行った場合の不揮発性メモリＩ／Ｆ信号を示す図である。
【図１７】図１５のメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイスの状態図の一例である。
【図１８】図１５のメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイスの状態図の他の例である。
【図１９】図１５のメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイスの状態図のさらに他の例である。
【図２０】メモリインタリーブ制御データ部の変形例を示す図である。
【図２１】インタリーブコマンド／アドレス発行シーケンサ処理フローの変形例を示す図である。
【図２２】図２１に示すメモリインタリーブ制御データ部におけるインタリーブコマンド／アドレス発行シーケンサの処理フローを示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１５】
図１は本発明によるインタリーブ制御回路の実施形態のシステム構成の一例を示す。実施形態は、メモリデバイスは不揮発性のＮＡＮＤ型フラッシュメモリを例にとって説明するが、記憶媒体はこれに限らず、何でも良い。
【００１６】
ホストＩ／Ｆ１０１、ＭＰＵ１０２、ＲＡＭ１０３、不揮発性メモリコントローラ１０６、スタートバイトレジスタ１１１がシステムバス１００に接続される。ホストＩ／Ｆ１０１はパーソナルコンピュータ等のホストシステムに接続される。
【００１７】
不揮発性メモリコントローラ１０６はＩ／Ｏバス２６１（Ｉ／Ｏ１〜Ｉ／Ｏ８からなる）を介してＮＡＮＤ型フラッシュメモリ等の不揮発性メモリデバイス１０７、１０８にデータを転送する。不揮発性メモリコントローラ１０６はチップセレクト信号ＣＥ等の各種制御信号を不揮発性メモリデバイス１０７、１０８に直接供給する。不揮発性メモリデバイス１０７、１０８の数は複数であれば良く、２つに限らない。また、メモリデバイス１０７、１０８は物理的に異なるデバイスである必要は無く、１つのメモリデバイスを論理的に区分したもの（この区分はバンクと称されている）であっても良い。
【００１８】
ＲＡＭ１０３はプログラム領域１０４とバッファメモリ１０５とを含む。プログラム領域１０４には、ホストＩ／Ｆ１０１からのデータ転送要求に対して、不揮発性メモリコントローラ１０６を介して不揮発性メモリデバイス１０７、１０８に格納されているデータをアクセスして、データ転送制御を行うためのプログラムが格納されている。ＭＰＵ１０２は該プログラムを実行する。バッファメモリ１０５は、その際の１次的なデータバッファとしてページデータ毎に使用される。
【００１９】
スタートバイトレジスタ１１１は、メモリインタリーブ制御を行う場合に、プログラム（ファームウェア）により適当な値が予め設定され、その値は不揮発性メモリコントローラ１０６からのカウンターリセット信号２１４、カウントアップ信号２１５（図２参照）に基づき動作するデータバイトカウンタ１１０の値と比較器１１２で比較される。比較器１１２は、両者の値が同じになると、不揮発性メモリコントローラ１０６にインタリーブコマンド制御スタート信号２１３（図２参照）を送る。
【００２０】
図２は不揮発性メモリコントローラ１０６の内部構成例を示す。
【００２１】
不揮発性メモリコントローラ１０６は、制御信号については不揮発性メモリデバイス毎に不揮発メモリ制御信号群２６０を介して接続され、データについて各不揮発性メモリデバイスに対してＩ／Ｏバス２６１を介して共通に接続される。
【００２２】
不揮発性メモリデバイス毎のメモリ制御信号群２６０は不揮発性メモリコントロールシーケンサ部２５０によって制御され、Ｉ／Ｏバス２６１上のデータ転送制御については、不揮発性メモリコントロールシーケンサ部２５０が各種レジスタ上のデータをＩ／Ｏコントローラ２３２を介して出力したり、または各種レジスタへ入力したりする。ＲＹ／ｎＢＹ信号はメモリＢＵＳＹステータスレジスタ２３１に各不揮発性メモリデバイスのＲＹ／ｎＢＹ（レディ／ノットビジィ）信号状態を伝える。各種レジスタは内部バスインタフェース２３０を介してＭＰＵ１０２からアクセス可能である。
【００２３】
不揮発性メモリコントロールシーケンサ部２５０はコマンド／アドレス発行シーケンサ２５１、ステータスリードシーケンサ２５２、データ転送シーケンサ２５３、インタリーブコマンド／アドレス発行シーケンサ２５４を含む。
【００２４】
コマンド／アドレス発行シーケンサ２５１は、コマンド／アドレス制御スタートレジスタ２０５への書込みと同時にスタートし、コマンドデータレジスタ２０１、アドレスデータレジスタ２０２、サブコマンドデータレジスタ２０３の値をコマンド／アドレス制御スタートレジスタ２０５の値に応じて、Ｉ／Ｏバス２６１上に出力すると共にコマンド／アドレス制御チップ選択レジスタ２００で選択された不揮発性メモリデバイスに対するメモリ制御信号群２６０をコントロールする。その制御処理の終了と共にコマンド／アドレス制御スタートレジスタ２０５への書込みデータはクリアされる。
【００２５】
データ転送シーケンサ２５３は、データ転送スタートレジスタ２２４への何らかのデータ書込みでスタートし、データ転送チップ選択レジスタ２２０で選択された不揮発性メモリデバイスに対して、Ｉ／Ｏコントローラ２３２を介したＩ／Ｏバス２６１におけるデータ入出力方向を決定するライト／リード転送方向選択レジスタ２２２、データ転送バイト数レジスタ２２１、ＦＩＦＯバッファレジスタ２３３の各レジスタに応じて不揮発性メモリデバイスのメモリ制御信号２６０を制御しながらデータ転送処理を行う。その処理の際にカウントトアップ信号２１５とカウンターリセット信号２１４を適時出力する。ＦＩＦＯステータスレジスタ２２３はＦＩＦＯバッファレジスタ２３３のデータフルまたはエンプティ状態を示すことが可能なレジスタである。データ転送バイト数レジスタ２２１は残りの転送すべきデータバイト数を示す。その制御処理の終了と共に、データ転送スタートレジスタ２２４への書込みデータはクリアされる。
【００２６】
ステータスリードシーケンサ２５２は、ステータスリード制御スタートレジスタ２４３への何らかのデータ書込みによりスタートし、ステータスリード制御チップ選択レジスタ２４０で選択された不揮発性メモリデバイスに対して、ステータスリードコマンドデータレジスタ２４１の値を、Ｉ／Ｏバス２６１上にメモリ制御信号２６０を制御しながら出力して、不揮発性メモリデバイスからのデータをステータスデータレジスタ２４２にラッチする。その制御処理の終了と共に、ステータスリード制御スタートレジスタ２４３のデータはクリアされる。
【００２７】
インタリーブコマンド／アドレス発行シーケンサ２５４は、インタリーブコマンド／アドレス制御イネーブルレジスタ２１１の各有効ビットのいずれかがイネーブル状態の場合、インタリーブコマンド／アドレス制御スタート信号２１３を受け取ると、データ転送シーケンサ２５３のデータ入出力動作の同期信号２１６と、インタリーブコマンド／アドレス制御イネーブルレジスタ２１１の値とに応じて、インタリーブコマンド／アドレス制御チップ選択レジスタ２１０で選択された不揮発性メモリデバイスに対するメモリ制御信号群２６０をコントロールする。チップ選択データラッチレジスタ２１２は、インタリーブコマンド／アドレス発行シーケンサ２５４が動作後の最初のＩ／Ｏバス２６１上のデータをラッチし、インタリーブコマンド／アドレス制御チップ選択レジスタ２１０の代用として動作する。この動作は図２１を参照して後述するメモリインタリーブ制御データ部２１０１にチップ選択データｃｅを設けたことを特徴とするメモリインタリーブ制御を行なう場合に必要となる。
【００２８】
図３は、コマンド／アドレス制御スタートレジスタ２０５の内部構成を示す。コマンドデータ出力スタートビット３０１はコマンドデータレジスタ２０１の値を、ＨＩアドレスデータ出力スタートビット３０２はアドレスデータレジスタ２０２の上位アドレスバイト群の値を、ＬＯＷアドレスデータ出力スタートビット３０３はアドレスデータレジスタ２０２の下位アドレスバイト群の値を、サブコマンドデータ出力スタートビット３０４はサブコマンドデータレジスタ２０３の値を、不揮発性メモリデバイスへのメモリ制御信号群２６０のいずれかの信号の出力と共に出力するか否かを決定する。
【００２９】
図４は、インタリーブコマンド／アドレス制御イネーブルレジスタ２１１の内部構成を示す。コマンドデータ制御イネーブルビット４０１と、ＨＩアドレスデータ制御イネーブルビット４０２と、ＬＯＷアドレスデータ制御イネーブルビット４０３と、コマンドデータ制御イネーブルビット４０４は、それぞれ不揮発性メモリデバイスへのメモリ制御信号群２６０のいずれかの信号の出力を行うか否かを決定する。
【００３０】
図５は、データ転送シーケンサ２５３が取り扱うデータ単位を示す。１単位はページデータ５０１であり、メモリインタリーブ制御データ部５０４の位置によって、ユーザデータ部５０２、５０３が分割される場合がある。図５の（ａ）ではユーザデータ部５０２、５０３が分割されている場合を示すが、メモリインタリーブ制御データ部５０４がユーザデータ部の先頭、あるいは末尾に配置されていても良い。各ページの分割位置やメモリインタリーブ制御データの有効性の有無情報については、ＲＡＭ１０３上でテーブル管理する、若しくは一元的に固定するなど各種管理方法があるが、本発明ではこの方法は特に限定されない。
【００３１】
ユーザデータ部５０２、５０３は、図５の（ｂ）に示すように、結合して１つのユーザページデータ５０５としてホストＩ／Ｆ１０１から取り扱うことができるものである。メモリインタリーブ制御データ部５０４は、図５の（ｃ）に示すように、不揮発性メモリデバイスをコントロールするのに必要なデータ群であるコマンドデータｃ０、ＨＩアドレスデータａ０，ａ１，ａ２、ＬＯＷアドレスデータａ３，ａ４、サブコマンドデータｃ１から構成される。また、メモリインタリーブ制御データ部５０４はインタリーブコマンド／アドレス発行シーケンサ２５４を該ページデータ５０１の転送中に動作させないのであれば、その値は無視される。メモリインタリーブ制御データ部５０４はファームウェアによってライトデータ転送時ではプログラミング時に容易に変更可能であり、リードデータ転送時においては、予めインタリーブ制御の組み合わせアドレスを書換えておくことで容易に変更可能である。このため、メモリインタリーブをアクセスするためのメモリアドレスを任意に設定可能である。
【００３２】
図６は、コマンド／アドレス発行シーケンサ２５１の処理フローを示す。コマンド／アドレス発行シーケンサ２５１は、コマンド／アドレス制御スタートレジスタ２０５への何らかのデータ書込みと同時に動作開始する。
【００３３】
ステップ＃６０１で、コマンド／アドレス制御チップ選択レジスタ２００で選択された不揮発性メモリデバイスに対するメモリ制御信号群２６０のｎＣＥ信号のアサート（ｎＣＥ信号はＬｏｗレベル）を行う。ステップ＃６０２でコマンド／アドレス制御スタートレジスタ２０５内のコマンドデータ出力スタートビット３０１が有効であるか否かを判定する。
【００３４】
コマンドデータ出力スタートビット３０１が有効であれば、ステップ＃６０３で該メモリ制御信号群２６０のＣＬＥ信号のアサート（Ｈｉｇｈレベル）を行い、ステップ＃６０４でコマンドデータレジスタ２０１のデータ出力をｎＷＥ信号の制御と共に行い、ステップ＃６０５でＣＬＥ信号のデアサート（Ｌｏｗレベル）を行う。
【００３５】
コマンドデータ出力スタートビット３０１が有効でない場合、あるいはステップ＃６０５の次に、ステップ＃６０６でコマンド／アドレス制御スタートレジスタ２０５内のＨＩアドレスデータ出力スタートビット３０２が有効であるか否かを判定する。ＨＩアドレスデータ出力スタートビット３０２が有効であれば、ステップ＃６０７で該メモリ制御信号群２６０のＡＬＥ信号のアサート（Ｈｉｇｈレベル）を行い、ステップ＃６０８でアドレスデータレジスタ２０２のＨＩアドレスデータ出力をＷＥ信号の制御と共に行う。
【００３６】
ＨＩアドレスデータ出力スタートビット３０２が有効でない場合、あるいはステップ＃６０８の次に、ステップ＃６０９でコマンド／アドレス制御スタートレジスタ２０５内のＬＯＷアドレスデータ出力スタートビット３０３が有効であるか否かを判定する。ＬＯＷアドレスデータ出力スタートビット３０３が有効であれば、ステップ＃６１０でアドレスデータレジスタ２０２のＬＯＷアドレスデータ出力をｎＷＥ信号の制御と共に行う。
【００３７】
ＬＯＷアドレスデータ出力スタートビット３０３が有効でない場合、あるいはステップ＃６１０の次に、ステップ＃６１１で該メモリ制御信号群２６０のＡＬＥ信号のデアサート（ＡＬＥ信号はＬｏｗレベル）を行う。
【００３８】
ステップ＃６１２でコマンド／アドレス制御スタートレジスタ２０５内のサブコマンドデータ出力スタートビット３０４が有効であるか否かを判定する。サブコマンドデータ出力スタートビット３０４が有効であれば、ステップ＃６１３で該メモリ制御信号群２６０のＣＬＥ信号のアサート（Ｈｉｇｈレベル）を行い、ステップ＃６１４でサブコマンドデータレジスタ２０３のデータ出力をｎＷＥ信号の制御と共に行い、ステップ＃６１５でＣＬＥ信号のデアサート（Ｌｏｗレベル）を行う。
【００３９】
サブコマンドデータ出力スタートビット３０４が有効でない場合、あるいはステップ＃６１５の次に、ステップ＃６１６で該メモリ制御信号群２６０のｎＣＥ信号のデアサート（ｎＣＥ信号はＨＩＧＨレベル）を行い、ステップ＃６１７でコマンド／アドレス制御スタートレジスタ２０５の書込みデータをクリアし、該シーケンサ処理を終了する。
【００４０】
図７は、データ転送シーケンサ２５３の処理フローを示す。データ転送シーケンサ２５３は、データ転送スタートレジスタ２２４への何らかのデータ書込みと同時に動作開始する。
【００４１】
ステップ＃７０１でデータ転送制御チップ選択レジスタ２２０により選択された不揮発性メモリデバイスデバイスに対するメモリ制御信号群２６０のｎＣＥ信号のアサート（ｎＣＥ信号はＬｏｗレベル）を行う。ステップ＃７０２でライト／リード転送方向選択レジスタ２２２がリード転送を示すか否かを判定する。
【００４２】
ライト／リード転送方向選択レジスタ２２２がリード転送を示す場合は、ステップ＃７０３でＦＩＦＯバッファレジスタ２３３がＦＵＬＬの状態でなくなるまで待つ。ライト／リード転送方向選択レジスタ２２２がリード転送を示すものでなければ、ステップ＃７０６でＦＩＦＯバッファレジスタ２３３がＥＭＰＴＹで無くなる状態まで待つ。
【００４３】
ステップ＃７０３、またはステップ＃７０６の待機状態が解消すると、ステップ＃７０７でカウントアップ信号２１５を出力する。ステップ＃７０７ａでデータバイトカウンタ１１０がカウントアップ信号２１５を１バイトカウントアップする。比較器１１２はステップ＃７０７ｂでデータバイトカウンタ１１０の値とスタートバイトレジスタ１１１の値が等しいか否かを判定する。両者の値が等しい場合は、比較器１１２はステップ＃７０７ｃでインタリーブコマンド制御スタート信号２１３を発行する。
【００４４】
この後、ステップ＃７０２ａでライト／リード転送方向選択レジスタ２２２がリード転送を示すか否かを判定する。ライト／リード転送方向選択レジスタ２２２がリード転送を示す場合は、ステップ＃７０５で該メモリ制御信号群２６０のｎＲＥ信号制御と共にＩ／Ｏバス２６１上のバイトデータをＦＩＦＯバッファレジスタ２３３にＩ／Ｏコントローラ２３２を介して入力する。ライト／リード転送方向選択レジスタ２２２がリード転送を示すものでなければ、ステップ＃７０８で該メモリ制御信号群２６０のｎＷＥ信号制御と共Ｉ／Ｏバス２６１上にバイトデータをＦＩＦＯバッファレジスタ２３３からＩ／Ｏコントローラ２３２を介して出力する。
【００４５】
ステップ＃７０５、またはステップ＃７０８の次に、ステップ＃７０９でデータ転送バイト数レジスタ２２１の値を１バイト減算する。ステップ＃７１０でデータ転送バイト数レジスタ２２１の値が０であるか否か判定する。データ転送バイト数レジスタ２２１の値が０でなければ、ステップ＃７０２に戻り再度データ転送を繰り返す。データ転送バイト数レジスタ２２１の値が０であれば、ステップ＃７１１でカウンターリセット信号２１４を出力する。ステップ＃７１１ａでデータバイトカウンタ１１０の値を０にリセットする。ステップ＃７１２で該メモリ制御信号群２６０のｎＣＥ信号のデアサート（ｎＣＥ信号はＨＩＧＨレベル）を行い、ステップ＃７１３でデータ転送スタートレジスタ２２４への書込みデータをクリアし、該シーケンサ処理を終了する。
【００４６】
図８は、ステータスリードシーケンサ２５２の処理フローを示す。ステータスリードシーケンサ２５２は、ステータスリード制御スタートレジスタ２４２への何らかのデータ書込みと同時に動作開始する。
【００４７】
ステップ＃８０１でステータスリード制御チップ選択レジスタ２４０により選択された不揮発性メモリデバイスに対するメモリ制御信号群２６０のｎＣＥ信号のアサート（ｎＣＥ信号はＬｏｗレベル）を行う。ステップ＃８０２で該メモリ制御信号群２６０のＣＬＥ信号のアサート（Ｈｉｇｈレベル）を行う。ステップ＃８０３でステータスリードコマンドデータレジスタ２４１のデータ出力をＷＥ信号の制御と共に行う。ステップ＃８０４でＣＬＥ信号のデアサート（Ｌｏｗレベル）を行う。
【００４８】
ステップ＃８０５で該メモリ制御信号群２６０のｎＲＥ信号制御と共にＩ／Ｏバス２６１上のバイトデータをステータスデータレジスタ２４２にＩ／Ｏコントローラ２３２を介して入力する。ステップ＃８０６で該メモリ制御信号群２６０のｎＣＥ信号のデアサート（ｎＣＥ信号はＨＩＧＨレベル）を行う。ステップ＃８０６でステータスリード制御スタートレジスタ２４３への書込みデータをクリアし、該シーケンサ処理を終了する。
【００４９】
図９は、インタリーブコマンド／アドレス発行シーケンサ２５４の処理フローを示す。インタリーブコマンド／アドレス発行シーケンサ２５４は、インタリーブコマンド／アドレス制御イネーブルレジスタ２１１の各有効ビットのいずれかがイネーブル状態で、インタリーブコマンド制御スタート信号２１３を受け取ると動作開始する。
【００５０】
ステップ＃９０１でインタリーブコマンド／アドレス制御チップ選択レジスタ２１０により選択された不揮発性メモリデバイスに対するメモリ制御信号群２６０のｎＣＥ信号のアサート（ｎＣＥ信号はＬｏｗレベル）を行う。ステップ＃９０２でインタリーブコマンド／アドレス制御イネーブルレジスタ２１１のコマンドデータ制御イネーブルビット４０１が有効であるか否か判定する。
【００５１】
コマンドデータ制御イネーブルビット４０１が有効である場合は、ステップ＃９０３で該メモリ制御信号群２６０のＣＬＥ信号のアサート（Ｈｉｇｈレベル）を行う。ステップ＃９０４でデータ転送シーケンサ２５３のデータ入出力動作の同期信号２１６に合わせてｎＷＥ信号の制御を行う。ステップ＃９０５でＣＬＥ信号のデアサート（Ｌｏｗレベル）を行い、ステップ＃９０６の処理に進む。
【００５２】
コマンドデータ制御イネーブルビット４０１が有効でない場合は、ステップ＃９０４ｂでＩ／Ｏバス２６１上のデータ転送をコマンドデータ分待ち、ステップ＃９０６の処理に進む。
【００５３】
ステップ＃９０６でインタリーブコマンド／アドレス制御イネーブルレジスタ２１１のＨＩアドレスデータ制御イネーブルビット４０２が有効であるか否か判定する。
【００５４】
ＨＩアドレスデータ制御イネーブルビット４０２が有効である場合は、ステップ＃９０７で該メモリ制御信号群２６０のＡＬＥ信号のアサート（Ｈｉｇｈレベル）を行う。ステップ＃９０８で該同期信号２１６に合わせてｎＷＥ信号の制御を行い、ステップ＃９０９の処理に進む。
【００５５】
ＨＩアドレスデータ制御イネーブルビット４０２が有効でない場合は、ステップ＃９０８ｂでＩ／Ｏバス２６１上のデータ転送をＨＩアドレスドデータ分待ち、ステップ＃９０９の処理に進む。
【００５６】
ステップ＃９０９でインタリーブコマンド／アドレス制御イネーブルレジスタ２１１のＬＯＷアドレスデータ制御イネーブルビット４０３が有効であるか否か判定する。ＬＯＷアドレスデータ制御イネーブルビット４０３が有効である場合は、ステップ＃９１０で該同期信号２１６に合わせてｎＷＥ信号の制御を行う。ステップ＃９１１で該メモリ制御信号群２６０のＡＬＥ信号のデアサート（ＡＬＥ信号はＬｏｗレベル）を行い、ステップ＃９１２の処理に進む。
【００５７】
ＬＯＷアドレスデータ制御イネーブルビット４０３が有効でない場合は、ステップ＃９１１ｂで該メモリ制御信号群２６０のＡＬＥ信号のデアサート（ＡＬＥ信号はＬｏｗレベル）を行う。ステップ＃９１０ｂでＩ／Ｏバス２６１上のデータ転送をＬＯＷアドレスドデータ分待ち、ステップ＃９１２の処理に進む。
【００５８】
ステップ＃９１２でインタリーブコマンド／アドレス制御イネーブルレジスタ２１１のサブコマンドデータ制御イネーブルビット４０４が有効であるか否か判定する。サブコマンドデータ制御イネーブルビット４０４が有効である場合は、ステップ＃９１３で該メモリ制御信号群２６０のＣＬＥ信号のアサート（Ｈｉｇｈレベル）を行う。ステップ＃９１４で該同期信号２１６に合わせてｎＷＥ信号の制御を行う。ステップ＃９１５でＣＬＥ信号のデアサート（Ｌｏｗレベル）を行い、ステップ＃９１６の処理に進む。
【００５９】
サブコマンドデータ制御イネーブルビット４０４が有効でない場合は、ステップ＃９１４ｂでＩ／Ｏバス２１６上のデータ転送をサブコマンドデータ分待ち、ステップ＃９１６の処理に進む。
【００６０】
ステップ＃９１６で該メモリ制御信号群２６０のｎＣＥ信号のデアサート（ｎＣＥ信号はＨＩＧＨレベル）を行い、該シーケンサ処理を終了する。
【００６１】
図１０は、不揮発性メモリデバイスからのページデータのリード転送中にメモリインタリーブ制御を行う場合のプログラム１０４の制御フローの一例を示す。例えば、あるページデータ５０１群は不揮発性メモリデバイス１０７，１０８上にメモリインタリーブ制御で読み出し可能な状態で予めライトされており、このユーザページデータ５０５群に対して読み出し処理が発生した場合、図１０のフローが開始する。
【００６２】
最初のページデータ５０１を読み出すべく、コマンド／アドレス発行シーケンサ２５１を動作させるために、ステップ＃１００１でコマンドデータレジスタ２０１、アドレスデータレジスタ２０２、サブコマンドデータレジスタ２０３、コマンド／アドレス制御チップ選択レジスタ２００に適当な値を設定する。
【００６３】
ステップ＃１００２で全てのビットがイネーブル状態としたコマンド／アドレス制御スタートレジスタ２０５への書込みによりページリードに必要なコマンド／アドレス発行シーケンサ２５１を動作させる。
【００６４】
メモリインタリーブ制御を行うべく、ステップ＃１００３でメモリインタリーブ制御データが格納されているページデータ５０１上のデータバイトオフセットアドレスをスタートバイトレジスタ１１１に設定する。
【００６５】
ステップ＃１００４でメモリインタリーブ制御すべき不揮発性メモリデバイスを選択するデータをインタリーブコマンド／アドレス制御チップ選択レジスタ２１０に設定する。
【００６６】
ステップ＃１００５で全てのビットがイネーブル状態としたインタリーブコマンド／アドレス制御イネーブルレジスタ２１１への書込みにより次のページリードに必要なインタリーブコマンド／アドレス発行シーケンサ２５４を動作させる前準備を行う。
【００６７】
ステップ＃１００５ｂでコマンド／アドレス制御スタートレジスタ２０５がクリア状態になるまで監視し、ステップ＃１００６でデータ転送対象の不揮発性メモリデバイスのＢＵＳＹ状態をメモリＢＵＳＹステータスレジスタ２３１で監視する。メモリＢＵＳＹ状態でなければデータ転送をすべく、データ転送シーケンサ２５３を動作させるために、ステップ＃１００７でデータ転送チップ選択レジスタ２２０、ライト／リード転送方向選択レジスタ２２２、データ転送バイト数レジスタ２２１に適当な値を設定する。ステップ＃１００８でデータ転送スタートレジスタ２２４への書込みによりデータ転送シーケンサ２５３を動作させる。
【００６８】
ステップ＃１００９でＦＩＦＯステータスレジスタ２２３を監視しＦＩＦＯバッファレジスタ２３３がＥＭＰＴＹであるか否か判定する。ＦＩＦＯバッファレジスタ２３３がＥＭＰＴＹでなければ、ページデータが格納されているので、ステップ＃１０１０でこれを読み出す。
【００６９】
ステップ＃１０１１で当該読み出したデータがユーザページデータ５０５であるか否かを判定する。この判定の一例はＦＩＦＯバッファレジスタ２３３から読み出したバイト数を数える方法がある。ユーザページデータ５０５であれば、ステップ＃１０１２でバッファメモリ１０５の適当なアドレスに格納する。
【００７０】
ステップ＃１０１３でデータ転送バイト数レジスタ２２１が０であり、かつＦＩＦＯステータスレジスタ２２３がＥＭＰＴＹであるか否かを判定する。データ転送バイト数レジスタ２２１が０であり、かつＦＩＦＯステータスレジスタ２２３がＥＭＰＴＹである場合は、全てのページデータ５０１のデータ転送が終了したことを意味するので、ステップ＃１０１４でインタリーブコマンド／アドレス制御イネーブルレジスタ２１１の全イネーブル状態をクリアして、データ転送処理を終了する。
【００７１】
データ転送バイト数レジスタ２２１が０であり、かつＦＩＦＯステータスレジスタ２２３がＥＭＰＴＹであるかの判定がノーである場合は、ステップ＃１００９の処理から繰り返す。
【００７２】
図１１は、図１０におけるメモリインタリーブ制御フローを行った場合のメモリ制御信号群２６０とＩ／Ｏバス２６１のデータを示す（以降、メモリ制御信号群２６０とＩ／Ｏバス２６１を併せて不揮発性メモリＩ／Ｆ信号と称する）。
【００７３】
１１０１で囲まれた部分は、図１０においてコマンド／アドレス発行シーケンサ２５１を動作させた場合のデータを示す。１１０２は、図１０におけるデータ転送シーケンサ２５３を動作させた場合のデータを示す。この場合、スタートバイトレジスタ１１１に設定したデータバイトオフセットアドレスは１０である。このため、Ｉ／Ｏバス２６１上で１０バイトの第１のユーザデータ部５０２が転送されると、メモリインタリーブ制御データ部５０４が転送され、その後第２のユーザデータ部５０３の転送に戻る。１１０３は、図１０におけるインタリーブコマンド／アドレス発行シーケンサ２５４を動作させた場合のデータを示す。１１０４は、図１０における次のページデータへのデータ転送シーケンサ２５３を動作させた場合のデータの一部を示す。
【００７４】
図１２は、図１０の説明におけるメモリインタリーブ制御フロー（メモリデバイス１０７とのデータ転送中にメモリデバイス１０８のインタリーブ制御データを転送する）を行った場合の不揮発性メモリデバイスの状態図の一例を示す。図１２の（ａ）はメモリインタリーブ制御しない不揮発性メモリデバイス１０７のメモリデバイス状態図を示し、同図の（ｂ）はメモリインタリーブ制御の対象となる不揮発性メモリデバイス１０８のメモリデバイス状態図を示す。ＩＤＬＥ期間１はいずれのコマンドも受け付けていない状態であり、ＩＤＬＥ期間２はリードコマンドを受け付けてデータ転送が即座に可能な状態を示す。
【００７５】
図１３は、図１０の説明におけるメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイス１０７、１０８の状態図の他の例を示す。図１３は１つのコマンド／アドレス発行シーケンサ２５１の処理フローと複数のデータ転送シーケンサ２５３の処理フローと複数のインタリーブコマンド／アドレス発行シーケンサ２５４の処理フローを組み合わせることにより、不揮発性メモリデバイス１０７と１０８との間で、効率の良いリードデータ転送を行った場合の一例である。
【００７６】
この場合の制御フローは、図１０の制御フローにおいて、必要に応じてステップ＃１０１４からステップ＃１００３へ繰り返すことを行えばよい。また、この制御フローは、例えば、ホストＩ／Ｆ１０１から指定される２ページ以上のユーザページデータ５０５群の読み出し命令を受けたプログラム１０４が、不揮発性メモリコントローラ１０６を介してメモリインタリーブ制御により、該ユーザページデータ５０５を含むページデータ５０１群を不揮発性メモリデバイス１０７，１０８から読み出し、バッファメモリ１０５を介してホストＩ／Ｆ１０１にユーザデータを転送する際になどに用いられる。
【００７７】
図１４は、図１０の説明におけるメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイス１０７、１０８の状態図のさらに他の例を示す。図１４は、適当なデータバイトオフセットアドレスをスタートバイトレジスタ１１１に設定したことにより、次のページリードに必要なインタリーブコマンド／アドレス発行シーケンサ２５４の動作を可能な限り遅らせ、図１３に示すＩＤＥＬ期間１を長くとり、かつその期間を低消費電力モード状態にした場合の状態図を示す。この低消費電力モードは、不揮発性メモリデバイスへの電源遮断などによる外的手段や不揮発性メモリデバイスへの何らかの信号伝達、またはコマンド発行などによる内的手段で実装されるものであり、この様なインタリーブ制御により、効率的な低消費電力と高速なデータ転送を実現できる。
【００７８】
上述の説明は不揮発性メモリデバイスからのページデータのリードデータ転送中にインタリーブ制御を行なう場合である。以下、不揮発性メモリデバイスのページデータのライトデータ転送中にインタリーブ制御を行なう場合を説明する。
【００７９】
図１５は、不揮発性メモリデバイスへのページデータのライトデータ転送中にインタリーブ制御を行う場合のプログラム１０４の制御フローの一例を示す。例えば、一対の不揮発性メモリデバイスに対して、片方にユーザページデータ５０５をライトする際にもう片方の不揮発性メモリに対しては任意消去ブロックを消去しようとする場合、該消去ブロックを消去すべき適当なインタリーブ制御データ５０４を予めバッファメモリ１０５上に用意し、また、書き込むべきユーザページデータ５０５がバッファメモリ１０５上にあるものとし、該インタリーブ制御データ５０４と該ユーザページデータ５０５から不揮発性メモリデバイスに書き込むべきページデータがメモリ−メモリコピー等の方法により、バッファメモリ１０５上に作成してあるものと仮定すると、該ページデータ５０１の書込み処理の発生により図１５のフローが開始する。
【００８０】
該ページデータ５０１を書き込むべく、コマンド／アドレス発行シーケンサ２５１を動作させるために、ステップ＃１５０１でコマンドデータレジスタ２０１、アドレスデータレジスタ２０２、サブコマンドデータレジスタ２０３、コマンド／アドレス制御チップ選択レジスタ２００に適当な値を設定する。
【００８１】
ステップ＃１５０２でサブコマンドを除く全てのビットがイネーブル状態としたコマンド／アドレス制御スタートレジスタ２０５への書込みによりページライトに必要なコマンド／アドレス発行シーケンサ２５１を動作させる。
【００８２】
メモリインタリーブ制御を行うべく、ステップ＃１５０３でメモリインタリーブ制御データが格納されているページデータ５０１上のデータバイトオフセットアドレスをスタートバイトレジスタ１１１に設定する。
【００８３】
ステップ＃１５０４でメモリインタリーブ制御すべき不揮発性メモリデバイスを選択するデータをインタリーブコマンド／アドレス制御チップ選択レジスタ２１０に設定する。
【００８４】
ステップ＃１５０５でＬＯＷアドレスデータ制御イネーブルビット４０３以外の全てのビットがイネーブル状態としたインタリーブコマンド／アドレス制御イネーブルレジスタ２１１への書込みにより、該消去すべきブロックの消去処理を行うインタリーブコマンド／アドレス発行シーケンサ２５４を動作させる前準備を行う。
【００８５】
ステップ＃１５０６でコマンド／アドレス制御スタートレジスタ２０５がクリア状態になるまで監視し、データ転送をすべくデータ転送シーケンサ２５３を動作させるために、ステップ＃１５０７でデータ転送チップ選択レジスタ２２０、ライト／リード転送方向選択レジスタ２２２、データ転送バイト数レジスタ２２１に適当な値を設定する。ステップ＃１５０８でデータ転送スタートレジスタ２２４への書込みによりデータ転送シーケンサ２５３を動作させる。
【００８６】
ステップ＃１５０９でＦＩＦＯステータスレジスタ２２３を監視してＦＩＦＯバッファレジスタ２３３がＦＵＬＬであるか否か判定する。ＦＩＦＯバッファレジスタ２３３がＦＵＬＬでなければ、ステップ＃１５１０でバッファメモリ１０５上のページデータ５０１から適当なデータを１バイト読み出し、ステップ＃１５１１でＦＩＦＯバッファレジスタ２３３に書込む。
【００８７】
ステップ＃１５１２でデータ転送バイト数レジスタ２２１が０であるか否か判定する。０でなければ、ステップ＃１５０９の処理から繰り返し、０であれば、データ転送制御対象の不揮発性メモリデバイスに対して、ステップ＃１５１３でサブコマンド発行のためにコマンドデータレジスタ２０１、アドレスデータレジスタ２０２、サブコマンドデータレジスタ２０３、コマンド／アドレス制御チップ選択レジスタ２００に適当な値を設定する。
【００８８】
ステップ＃１５１４でサブコマンドがイネーブル状態としたコマンド／アドレス制御スタートレジスタ２０５への書込みによりコマンド／アドレス発行シーケンサ２５１を動作させる。ステップ＃１５１５でインタリーブ制御対象の不揮発性メモリデバイスのＢＵＳＹ状態をメモリＢＵＳＹステータスレジスタ２３１で監視し、インタリーブ制御対象の不揮発性メモリデバイスのイレーズ制御の成功の有無を確認するために、ステップ＃１５１６でステータスリード制御チップ選択レジスタ２４０と、ステータスリードコマンドデータレジスタ２４１に適当な値を設定する。ステップ＃１５１７でステータスリード制御スタートレジスタ２４３への書込みによりステータスリードシーケンサ２５２を動作させる。ステップ＃１５１８でステータスリード制御スタートレジスタ２４３がクリア状態になることを監視し、ステップ＃１５１９でステータスデータレジスタ２４２からステータスデータをリードする。
【００８９】
ステップ＃１５２０でデータ転送対象の不揮発性メモリデバイスのＢＵＳＹ状態をメモリＢＵＳＹステータスレジスタ２３１で監視し、データ転送対象の不揮発性メモリデバイスのデータライト制御の成功の有無を確認するために、ステップ＃１５２１でステータスリード制御チップ選択レジスタ２４０と、ステータスリードコマンドデータレジスタ２４１に適当な値を設定する。ステップ＃１５２２でステータスリード制御スタートレジスタ２４３への書込みによりステータスリードシーケンサ２５２を動作させる。
【００９０】
ステップ＃１５２３でステータスリード制御スタートレジスタ２４３がクリア状態になることを監視し、ステップ＃１５２４でステータスデータレジスタ２４２からステータスデータをリードし、ステップ＃１５２５でインタリーブコマンド／アドレス制御イネーブルレジスタ２１１の全イネーブル状態をクリアして、データ転送処理を終了する。
【００９１】
上記処理フローにおいて、ステップ＃１５１５から＃１５１９と、ステップ＃１５２０から＃１５２４とが、適時入れ替わってもよい。また、ステップ＃１５１９、または＃１５２５のステータスデータレジスタ２４２からステータスデータをリードした際に、ステータスデータがエラーを示す場合は、不良消去ブロック発生などを意味するので、該ブロックの代替置き換えなどのリトライ処理を行うなどの方法が考えられるが、本発明と直接関係がないので、その処理方法は問わない。また、消去ブロックは、少なくとも１つのページから構成されるものとする。
【００９２】
図１６は、図１５におけるメモリインタリーブ制御フローを行った場合の不揮発性メモリＩ／Ｆ信号を示す。
【００９３】
１６０１で囲まれた部分は、図１５におけるコマンドとアドレス発行のためにコマンド／アドレス発行シーケンサ２５１を動作させた場合のデータを示す。１６０２は、図１５におけるデータ転送シーケンサ２５３を動作させた場合のデータを示す。この場合、スタートバイトレジスタ１１１に設定したデータバイトオフセットアドレスは１である。このため、Ｉ／Ｏバス２６１上でユーザページデータ５０５の転送前に、メモリインタリーブ制御データ部５０４が転送され、その後ユーザページデータ５０５の転送が開始する。すなわち、ユーザページデータ５０５は分割されない。１６０３は、図１５におけるインタリーブコマンド／アドレス発行シーケンサ２５４を動作させた場合のデータを示す。１６０４は、図１５におけるサブコマンド発行のためにコマンド／アドレス発行シーケンサ２５１を動作させた場合のデータを示す。１６０５は、図１５におけるインタリーブ制御対象の不揮発性メモリデバイスへのステータスリードシーケンサ２５２を動作させた場合のデータを示す。１６０６は、図１５におけるデータ転送対象の不揮発性メモリデバイスへのステータスリードシーケンサ２５２を動作させた場合のデータを示す。
【００９４】
図１７は、図１５の説明におけるインタリーブ制御フロー（メモリデバイス１０７とのデータ転送中にメモリデバイス１０８のインタリーブ制御データを転送する）を行った場合の不揮発性メモリデバイスの状態図の一例を示す。図１７の（ａ）はメモリインタリーブ制御しない不揮発性メモリデバイス１０７のメモリデバイス状態図を示し、同図の（ｂ）はメモリインタリーブ制御の対象となる不揮発性メモリデバイス１０８のメモリデバイス状態図を示す。ＩＤＬＥ期間１はいずれのコマンドも受け付けていない状態であり、ＩＤＬＥ期間２はライトコマンドを受け付けてデータ転送が終了、もしくはイレーズコマンドを受けてイレーズ処理が終了し、該コマンド処理のステータスデータ転送が即座に可能な状態を示す。
【００９５】
図１８は、図１５の説明におけるメモリインタリーブ制御フローを行った場合の不揮発性メモリデバイス１０７、１０８の状態図の他の例を示す。図１８は、１つのコマンド／アドレス発行シーケンサ２５１の処理フローと複数のデータ転送シーケンサ２５３の処理フローと複数のインタリーブコマンド／アドレス発行シーケンサ２５４の処理フローを組み合わせることにより、不揮発性メモリデバイス１０７と１０８との間で、効率の良いライトデータ転送を行った場合の一例である。
【００９６】
この場合の制御フローは、図１５の制御フローにおいて、必要に応じてステップ＃１５２５からステップ＃１５０３へ繰り返すことを行えばよい。また、この制御フローは、例えば、ホストＩ／Ｆ１０１から指定される２ページ以上のユーザページデータ５０５群の書込み命令を受けたプログラム１０４が、バッファメモリ１０５を介してホストＩ／Ｆ１０１からユーザデータ５０５を受け取り、不揮発性メモリデバイス１０７，１０８の任意ページデータ５０１部に逐次に書き込んで行く時に、書き込むべき任意ページデータ５０１部が消去されていない場合に、直前のページデータ５０１のメモリインタリーブ制御データ部５０４に好適なデータを組み込み、不揮発性メモリコントローラ１０６を介したメモリインタリーブ制御を行い、書き込むべき任意ページデータ５０１部を消去しておくことで、別途コマンド／アドレス発行シーケンサ２５１を動作して消去処理をすることなく、不揮発性メモリデバイス１０７，１０８にユーザデータ５０５を転送する際になどに用いられる。
【００９７】
図１９は、図１８に示すＩＤＥＬ期間１を低消費電力モード状態にした場合の状態図を示す。この低消費電力モードは、不揮発性メモリデバイスへの電源遮断などによる外的手段や不揮発性メモリデバイスへの何らかの信号伝達、またはコマンド発行などによる内的手段で実装されるものであり、この様なインタリーブ制御により、効率的な低消費電力と高速なデータ転送を実現できる。
【００９８】
以上説明したように、第１の実施の形態によれば、ページデータの任意部分にメモリインタリーブ制御データ部を設け、ページデータ転送時にメモリインタリーブアクセス制御に必要なデータを転送することにより、インタリーブ制御に必要なコマンド／アドレス発行時間を削減でき、任意タイミングでインタリーブ制御を行うことによりメモリアクセス効率が高くなる。また、メモリインタリーブ制御データ部５０４はファームウェアによってライトデータ転送時ではプログラミング時に容易に変更可能であり、リードデータ転送時においては、予めインタリーブ制御の組み合わせアドレスを書換えておくことで容易に変更可能であり、メモリインタリーブをアクセスするためのメモリアドレスを任意に設定可能である。
【００９９】
変形例
本発明は上述した実施の形態に限定されず、種々変形して実施可能である。例えば、上述の説明では、図５の（ａ）に示すように、ページデータ５０１の途中には１個のメモリインタリーブ制御データ部５０４しか設けていないが、複数のメモリインタリーブ制御データ部を設けても良い。
【０１００】
図２０は、ページデータ２００１に、複数のメモリインタリーブ制御データ部２００４、２００５を設けた例である。この場合、複数のメモリインタリーブ制御データ部２００４、２００５の位置によって、ユーザデータ部２００２、２００３が分割される場合がある。また、複数のメモリインタリーブ制御データ部２００４、２００５は、適当なデータバイトオフセットアドレスをスタートバイトレジスタ１１１に設定することにより、そのどちらを使ってインタリーブコマンド／アドレス発行シーケンサ２５４による処理を行うかを選択可能できる。また、複数のインタリーブコマンド／アドレス発行シーケンサ２５４を具備したり、１つのメモリインタリーブ制御データ部２００４を使ったインタリーブコマンド／アドレス発行シーケンサ２５４動作後に、次のメモリインタリーブ制御データ部２００５への適当なデータバイトオフセットアドレスをスタートバイトレジスタ１１１に設定することで、１つのページデータ転送中に複数のインタリーブコマンド／アドレス発行シーケンサ２５４を動作させることができる。
【０１０１】
メモリインタリーブ制御データ部５０４は図５の（ｃ）に示すような構成以外も可能である。
【０１０２】
図２１は、メモリインタリーブ制御データ部２１０１に、不揮発性メモリデバイスをコントロールするのに必要なデータ群であるコマンドデータｃ０、ＨＩアドレスデータａ０，ａ１，ａ２、ＬＯＷアドレスデータａ３，ａ４、サブコマンドデータｃ１に加え、チップ選択データｃｅを付加したものである。この場合は、インタリーブ対象のデバイスをチップ選択データｃｅで選択する必要がある。
【０１０３】
図２２は、図２１に示すメモリインタリーブ制御データ部２１０１におけるインタリーブコマンド／アドレス発行シーケンサ２５４の処理フローを示したものである。
【０１０４】
インタリーブコマンド／アドレス発行シーケンサ２５４は、インタリーブコマンド／アドレス制御イネーブルレジスタ２１１の各有効ビットのいずれかがイネーブル状態で、インタリーブコマンド制御スタート信号２１３を受け取ると動作開始し、データ転送シーケンサ２５３のデータ入出力動作の同期信号２１６に合わせて、チップ選択データｃｅをチップ選択データラッチレジスタ２１２にラッチし（ステップ＃２２０１）、チップ選択データラッチレジスタ２１２で選択された不揮発性メモリデバイスに対するメモリ制御信号群２６０のｎＣＥ信号のアサート（ｎＣＥ信号はＬｏｗレベル）を行い（ステップ＃２２０２）、図９の処理フローを経て、該処理を終了する。
【０１０５】
以上説明したように本発明によれば、転送データの任意部分にメモリインタリーブ制御データ部を設け、メモリインタリーブアクセス制御をデータ転送中に行うことにより、インタリーブ制御に必要なコマンド／アドレス発行時間を削減でき、メモリアクセス効率が向上する。
【０１０６】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１０７】
１０１…ホストＩ／Ｆ、１０２…ＭＰＵ、１０３…ＲＡＭ、１０４…プログラム、１０５…バッファメモリ、１０６…不揮発性メモリコントローラ、１０７，１０８…不揮発性メモリデバイス、１１０…データバイトカウンタ、１１１…スタートバイトレジスタ、１１２…比較器、２１３…インタリーブコマンド制御スタート信号、２１４…カウンターリセット信号、２１５…カウントアップ信号、２１６…同期信号。
【図１】
2011018222.tif 000003
【図２】
2011018222.tif 000004
【図３】
2011018222.tif 000005
【図４】
2011018222.tif 000006
【図５】
2011018222.tif 000007
【図６】
2011018222.tif 000008
【図７】
2011018222.tif 000009
【図８】
2011018222.tif 000010
【図９】
2011018222.tif 000011
【図１０】
2011018222.tif 000012
【図１１】
2011018222.tif 000013
【図１２】
2011018222.tif 000014
【図１３】
2011018222.tif 000015
【図１４】
2011018222.tif 000016
【図１５】
2011018222.tif 000017
【図１６】
2011018222.tif 000018
【図１７】
2011018222.tif 000019
【図１８】
2011018222.tif 000020
【図１９】
2011018222.tif 000021
【図２０】
2011018222.tif 000022
【図２１】
2011018222.tif 000023
【図２２】
2011018222.tif 000024
【手続補正書】
【提出日】平成22年8月23日(2010.8.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の区域を具備するメモリと、前記複数の区域間のデータ転送のためのデータバスとを具備するメモリシステムのインタリーブ制御装置であって、
前記メモリの区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する検出手段と、
前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始する開始手段と、
を具備するインタリーブ制御装置。
【請求項２】
前記検出手段は所定サイズを示すデータを格納するレジスタと、転送された前記書込みデータあるいは読出しデータのサイズを測るカウンタと、前記レジスタのデータと前記カウンタのカウント値とを比較し、前記レジスタのデータと前記カウント値との間で一致を検出するとスタート信号を出力する比較器とを具備し、
前記開始手段は前記スタート信号に応答してインタリーブ制御データの転送を開始する請求項１記載のインタリーブ制御装置。
【請求項３】
前記検出手段は複数の所定サイズのデータの転送を検出し、
前記開始手段は前記検出手段が前記複数の所定サイズのデータの転送を検出する毎に前記インタリーブ制御データの転送を開始する請求項１記載のインタリーブ制御装置。
【請求項４】
前記メモリは３つ以上の区域を具備し、
前記インタリーブ制御データはインタリーブ制御に関する区域を選択するデータを含む請求項１記載のインタリーブ制御装置。
【請求項５】
複数の区域を具備するメモリと、前記複数の区域間のデータ転送のためのデータバスとを具備するメモリシステムのインタリーブ制御方法であって、
前記メモリの区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出することと、
前記所定サイズのデータの転送が検出されると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始することと、
を具備するインタリーブ制御方法。
【請求項６】
前記検出することが、
所定サイズを示すデータをレジスタにセットすることと、
転送された前記書込みデータあるいは読出しデータのサイズを測ることと、
前記レジスタのデータとカウンタのカウント値とを比較し、
前記レジスタのデータと前記カウント値との間で一致を検出するとスタート信号を出力することと
を具備し、
前記開始することは前記スタート信号に応答してインタリーブ制御データの転送を開始することを具備する請求項５記載のインタリーブ制御方法。
【請求項７】
前記検出することは複数の所定サイズのデータの転送を検出し、
前記開始することは前記複数の所定サイズのデータの転送が検出される毎に前記インタリーブ制御データの転送を開始することを具備する請求項５記載のインタリーブ制御方法。
【請求項８】
前記メモリは３つ以上の区域を具備し、
前記インタリーブ制御データはインタリーブ制御に関する区域を選択するデータを含む請求項５記載のインタリーブ制御方法。
【請求項９】
ホストシステムに接続されるメモリシステムであって、
複数の不揮発性半導体メモリと、
前記複数の不揮発性半導体メモリに接続されるデータバスと、
前記ホストシステムに接続されるとともに、前記複数の不揮発性半導体メモリに接続され、前記データバス上のデータ転送を制御するメモリコントローラとを具備し、
前記メモリコントローラは
前記メモリの区域への書込みデータあるいは該区域からの読出しデータの前記データバス上での転送中に所定サイズのデータの転送を検出する検出手段と、
前記検出手段が所定サイズのデータの転送を検出すると、前記書込みデータあるいは読出しデータに代えてインタリーブ制御データの転送を開始する開始手段と、
を具備することを特徴とするメモリシステム。
【請求項１０】
前記検出手段は所定サイズを示すデータを格納するレジスタと、転送された前記書込みデータあるいは読出しデータのサイズを測るカウンタと、前記レジスタのデータと前記カウンタのカウント値とを比較し、前記レジスタのデータと前記カウント値との間で一致を検出するとスタート信号を出力する比較器とを具備し、
前記開始手段は前記スタート信号に応答してインタリーブ制御データの転送を開始する請求項９記載のメモリシステム。
【請求項１１】
前記検出手段は複数の所定サイズのデータの転送を検出し、
前記開始手段は前記検出手段が前記複数の所定サイズのデータの転送を検出する毎に前記インタリーブ制御データの転送を開始する請求項９記載のメモリシステム。
【請求項１２】
前記不揮発性メモリを３つ以上具備し、
前記インタリーブ制御データはインタリーブ制御に関する区域を選択するデータを含む請求項９記載のメモリシステム。
【請求項１３】
前記インタリーブ制御データは不揮発性メモリのアドレスと、コマンドを含む請求項９記載のメモリシステム。