(57)【要約】【課題】効率よくバンクインターリーブ動作を実行するメモリシステムを提供すること。【解決手段】メモリコントローラは、バンク毎の選択優先度の順位を管理する優先順位管理手段を備え、動作指令を送信した後、レディ状態のバンクのうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を次回の動作指令の指令対象に変更するとともに、優先順位管理手段において選択したメモリ領域の次回の選択の際の選択優先度の順位を最下位に移動させる。【選択図】図７
2010176646.tif 000002
【特許請求の範囲】
【請求項１】
夫々個別に動作可能な不揮発性の複数のメモリ領域と、
前記複数のメモリ領域と夫々個別にレディ／ビジー信号で接続され、動作指令を送信する毎に指令対象のメモリ領域を変更することによって前記複数のメモリ領域の動作をインターリーブさせるメモリコントローラと、
を備え、
前記メモリコントローラは、メモリ領域毎の選択優先度の順位を管理する優先順位管理手段を備え、動作指令を送信した後、レディ状態のメモリ領域のうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を次回の動作指令の指令対象に変更するとともに、前記優先順位管理手段において前記選択したメモリ領域の次回の選択の際の選択優先度の順位を最下位に移動させる、
ことを特徴とするメモリシステム。
【請求項２】
夫々個別に動作可能な不揮発性の複数のメモリ領域と、
前記複数のメモリ領域と夫々個別にレディ／ビジー信号で接続され、複数の動作を実行させる動作指令を送信する毎に指令対象のメモリ領域を変更することによって前記複数のメモリ領域の動作をインターリーブさせるメモリコントローラと、
を備え、
前記メモリコントローラは、メモリ領域毎の選択優先度の順位を管理する優先順位管理手段と、前記レディ／ビジー信号に基づいて動作指令を実行中であるか否かをメモリ領域毎に認識する動作状態認識手段と、を備え、動作指令を送信した後、動作指令を実行中でないメモリ領域のうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を次回の動作指令の指令対象に変更するとともに、前記優先順位管理手段において前記選択したメモリ領域の次回の選択の際の選択優先度の順位を最下位に移動させる、
ことを特徴とするメモリシステム。
【請求項３】
前記優先順位管理手段は、メモリ領域毎の識別番号の配列を用いて前記選択優先順位を管理する、ことを特徴とする請求項１乃至請求項２に記載のメモリシステム。
【請求項４】
前記メモリ領域の動作は、データ書き込み、データ読み出し、またはデータ消去であって、前記メモリ領域は、前記動作を実行中にビジー状態となり、前記動作を非実行中にレディ状態となる、ことを特徴とする請求項１乃至請求項３のうちの何れか１項に記載のメモリシステム。
【請求項５】
夫々個別に動作可能かつ夫々個別にレディ／ビジー信号を出力可能な不揮発性の複数のメモリ領域に対して動作指令を送信する毎に指令対象のメモリ領域を変更することによって前記複数のメモリ領域の動作をインターリーブさせるメモリシステムのインターリーブ制御方法において、
予め設定されたメモリ領域毎の選択優先度の順位に基づいてレディ状態のメモリ領域のうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を動作指令の指令対象とするステップと、
前記指令対象のメモリ領域に前記動作指令を送信するステップと、
前記選択したメモリ領域の次回の選択の際の前記選択優先度の順位を最下位に移動させるステップと、
を含むことを特徴とするメモリシステムのインターリーブ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムおよびメモリシステムのインターリーブ制御方法に関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型フラッシュメモリ（以降、単にＮＡＮＤメモリという）などの不揮発性半導体メモリを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤなどのメモリシステムは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
近年、転送効率を向上させるために、バンクインターリーブを実行する機能が採用されている。具体的には、ＳＳＤに搭載されているＮＡＮＤメモリを同時・並行的にデータ書き込みを含むメモリ操作を行うことが可能な複数のメモリ領域（バンク）に分け、ＮＡＮＤメモリに連続してデータ書き込みを行う際にデータ書き込み先のバンクを逐次切り替える（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００６／０１５２９８１号明細書
【特許文献２】特開平８−３４８９６１号公報
【特許文献３】米国特許出願公開第２００７／０２０６４１９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、効率よくバンクインターリーブ動作を実行するメモリシステムおよびメモリシステムのインターリーブ制御方法を提供する。
【課題を解決するための手段】
【０００６】
本願発明の一態様によれば、夫々個別に動作可能な不揮発性の複数のメモリ領域と、
前記複数のメモリ領域と夫々個別にレディ／ビジー信号で接続され、動作指令を送信する毎に指令対象のメモリ領域を変更することによって前記複数のメモリ領域の動作をインターリーブさせるメモリコントローラと、を備え、前記メモリコントローラは、メモリ領域毎の選択優先度の順位を管理する優先順位管理手段を備え、動作指令を送信した後、レディ状態のメモリ領域のうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を次回の動作指令の指令対象に変更するとともに、前記優先順位管理手段において前記選択したメモリ領域の次回の選択の際の選択優先度の順位を最下位に移動させる、ことを特徴とするメモリシステムが提供される。
【０００７】
また、本願発明の一態様によれば、夫々個別に動作可能な不揮発性の複数のメモリ領域と、前記複数のメモリ領域と夫々個別にレディ／ビジー信号で接続され、複数の動作を実行させる動作指令を送信する毎に指令対象のメモリ領域を変更することによって前記複数のメモリ領域の動作をインターリーブさせるメモリコントローラと、を備え、前記メモリコントローラは、メモリ領域毎の選択優先度の順位を管理する優先順位管理手段と、前記レディ／ビジー信号に基づいて動作指令を実行中であるか否かをメモリ領域毎に認識する動作状態認識手段と、を備え、動作指令を送信した後、動作指令を実行中でないメモリ領域のうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を次回の動作指令の指令対象に変更するとともに、前記優先順位管理手段において前記選択したメモリ領域の次回の選択の際の選択優先度の順位を最下位に移動させる、ことを特徴とするメモリシステムが提供される。
【０００８】
また、本願発明の一態様によれば、夫々個別に動作可能かつ夫々個別にレディ／ビジー信号を出力可能な不揮発性の複数のメモリ領域に対して動作指令を送信する毎に指令対象のメモリ領域を変更することによって前記複数のメモリ領域の動作をインターリーブさせるメモリシステムのインターリーブ制御方法において、予め設定されたメモリ領域毎の選択優先度の順位に基づいてレディ状態のメモリ領域のうち最も選択優先度の順位が高いメモリ領域を選択して前記選択したメモリ領域を動作指令の指令対象とするステップと、前記指令対象のメモリ領域に前記動作指令を送信するステップと、前記選択したメモリ領域の次回の選択の際の前記選択優先度の順位を最下位に移動させるステップと、を含むことを特徴とするメモリシステムのインターリーブ制御方法が提供される。
【発明の効果】
【０００９】
本発明によれば、効率よくバンクインターリーブ動作を実行するメモリシステムおよびメモリシステムのインターリーブ制御方法を提供することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態のＳＳＤの構成を示す図である。
【図２】図２は、各バンク０〜３の動作履歴を説明する図である。
【図３】図３は、第１の実施の形態のＳＳＤのＮＡＮＤコントローラの機能構成および接続関係を説明する図である。
【図４】図４は、Ｃｏｎｔ．Ｉ／Ｏ信号線およびＲｙ／Ｂｙ信号線の状態を説明するタイミングチャートである。
【図５】図５は、第１の実施の形態のＳＳＤのバンクの動作を説明するフローチャートである。
【図６】図６は、第１の実施の形態のＳＳＤのｃｈ０コントローラの動作を説明するフローチャートである。
【図７】図７は、優先順位の配列の変化を説明する図である。
【図８】図８は、複数のプレーンを有するバンクの構成を説明する図である。
【図９】図９は、Ｃｏｎｔ．Ｉ／Ｏ信号線およびＲｙ／Ｂｙ信号線の状態を説明するタイミングチャートである。
【図１０】図１０は、第２の実施の形態のＳＳＤのＮＡＮＤコントローラの機能構成および接続関係を説明する図である。
【図１１】図１１は、第２の実施の形態のＳＳＤのバンクの動作を説明するフローチャートである。
【図１２】図１２は、バンクｉの動作状態の認識の変化を説明する図である。
【図１３】図１３は、第２の実施の形態のＳＳＤのｃｈ０コントローラの動作を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
ＮＡＮＤメモリに対するデータ書き込みを含むメモリ操作に要する時間は、製造ばらつき等に起因して、チップ間で異なる。従って、データの書き込み動作にかかる時間はバンク間でばらついてしまう可能性がある。バンクインターリーブを実行するようにしても、夫々のバンクに着目すると、この書き込み動作にかかる時間のばらつきに起因して、転送データの受信および書き込みのどちらの動作も行っていない空白時間が生じる。この空白時間が特定のバンクに偏って生じると、ＮＡＮＤメモリ全体に対するデータの転送速度が低下し、転送効率が低下してしまう、という問題が本願発明者によって見出された。特許文献１にはこの問題を解決する技術についての記述も開示もなされていない。
【００１２】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムおよびメモリシステムのインターリーブ制御方法を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１３】
（第１の実施の形態）
図１は、本発明の実施の形態にかかるメモリシステムの構成を示すブロック図である。ここでは、メモリシステムの一例としてＳＳＤを例に挙げて説明するが、本実施の形態の適用対象はＳＳＤに限定しない。
【００１４】
ＳＳＤは、パーソナルコンピュータなどのホスト装置とＡＴＡ（Advanced  Technology  Attachment）規格の通信インターフェースで接続され、ホスト装置の外部記憶装置として機能する。ＳＳＤは、ホスト装置からリード／ライトされるデータを記憶する不揮発性メモリであるＮＡＮＤメモリ２と、ＳＳＤのデータ転送制御を実行するデータ転送装置１と、データ転送装置１がデータ転送のための転送データを一次格納するための揮発性メモリであるＲＡＭ３と、を備えている。ホスト装置から送信されてきたデータは、データ転送装置１の制御の下、いったんＲＡＭ３に格納され、その後、ＲＡＭ３から読み出されてＮＡＮＤメモリ２に書き込まれる。
【００１５】
データ転送装置１は、ＡＴＡ  Ｉ／Ｆの制御およびホスト装置とＲＡＭ３との間のデータ転送の制御を実行するＡＴＡインターフェースコントローラ（ＡＴＡコントローラ）１０と、ＲＡＭ３に対するデータのリード／ライトを制御するＲＡＭコントローラ３０と、ＮＡＮＤメモリ２とＲＡＭ３との間のデータ転送の制御を実行するＮＡＮＤコントローラ２０と、ファームウェアに基づいてデータ転送装置１全体の制御を実行するＭＰＵ４０と、をさらに備えている。
【００１６】
ＮＡＮＤメモリ２は、夫々並列に動作する４つの並列動作要素２ａ〜２ｄを有し、並列動作要素２ａ〜２ｄは夫々独立に信号線群（チャネルｃｈ０〜ｃｈ３）を介してＮＡＮＤコントローラ２０に接続されている。並列動作要素２ａ〜２ｄは、夫々個別に動作可能な４つのメモリ領域であるバンク０〜バンク３に分割されている。夫々のバンクは、１以上のメモリチップ（ＮＡＮＤ型フラッシュメモリ）から構成されている。例えば、バンク毎に１チップ、２チップ、または４チップを備えた構成が考えられる。夫々のメモリチップは、独立してデータ消去可能な最小単位であるブロック（物理ブロック）を複数備えている。また、夫々のブロックは、一括して書き込み及び読み出し可能な単位であるページ（物理ページ）を複数備えている。
【００１７】
ＭＰＵ４０は、ＮＡＮＤメモリ２内の各並列動作要素２ａ〜２ｂから複数の物理ブロックを纏めて論理ブロックを構成することで４ｃｈ並列にデータ消去を行い、また、記憶領域の割り当てを論理ブロック単位で行ってもよい。論理ブロックは、例えば、同一バンクに属する物理ブロックを各チャネル（ｃｈ０〜ｃｈ３）から１つずつ選択して構成される。４ｃｈ構成の場合、１つの論理ブロックは４つの物理ブロックから構成される。また、論理ブロックを構成する各物理ブロックの物理ページ４つを組として論理ページを構成し、４ｃｈ並列に書き込み及び読み出しを行ってもよい。
【００１８】
一つのバンクに一度に書き込むことができるデータのサイズは予め決められており、以降、このサイズを単位書き込みサイズということとする。単位書き込みサイズは、本実施形態では上述したページ（物理ページ）サイズと等しい値である。夫々の並列動作要素２ａ〜２ｄとＮＡＮＤコントローラ２との接続については後ほど詳しく説明する。尚、ＮＡＮＤメモリへの独立したバスを複数持ち、各々のフラッシュメモリチップへの独立したイベント処理を可能とする不揮発性半導体記憶装置の一例が、同出願人による特許文献２に開示されている。
【００１９】
ＭＰＵ４０は、ＲＡＭ３に格納されているデータを読み出してＮＡＮＤメモリ２に書き込む場合、ＲＡＭ３からＮＡＮＤメモリ２へデータを転送する書き込み要求をＮＡＮＤコントローラ２０へ発行する。ＮＡＮＤコントローラ２０は、書き込み要求に基づいて、単位書き込みサイズ毎の転送データをＲＡＭ３から読み出し、読み出した単位書き込みサイズ毎の転送データを逐次ＮＡＮＤメモリ２へ転送する。ＮＡＮＤメモリ２の書き込み先（転送先）の並列動作要素の各バンクは、転送データを自身に書き込む。
【００２０】
ここで、各バンクは、データの書き込みを実行している間は次の転送データを受信することができない。また、ＮＡＮＤコントローラ２０は、一つのチャネルを介して同時に複数の転送データを転送することはできない。そこで、第１の実施の形態のＳＳＤはデータ書き込みの動作をバンクインターリーブさせる機能を備えている。以下に、データ書き込み動作のバンクインターリーブについて具体的に説明する。
【００２１】
まず、ある並列動作要素に複数の転送データを書き込む場合、ＭＰＵ４０は、転送データの書き込み先が、前記並列動作要素が備える複数のバンクに均等に分散するように転送データ毎の書き込み先のバンクを割り当てる。例えば、並列動作要素２ａへ１２個の転送データを書き込む場合、並列動作要素２ａのバンク０〜３は夫々３個の転送データの書き込み先となる。尚、ホスト装置が指定する論理アドレス（ＬＢＡ：Logical Block Addressing）とバンクが関連付けられている場合、ＭＰＵ４０は、バンクインターリーブが可能な複数の転送データを選択し、転送効率の向上を図る。
【００２２】
ＮＡＮＤコントローラ２０は、ＲＡＭ３から１２個の転送データを読み出してバンク０〜３に夫々３個の転送データを一つずつ順番に転送する。このとき、ＮＡＮＤコントローラ２０は、一つの転送データの転送を実行した後、データ書き込み動作を実行中ではないバンクを一つ選択し、選択したバンクを書き込み先とした別の転送データの転送動作を実行する。言い換えると、ＮＡＮＤコントローラ２０は、一つのデータを転送し終わる毎に書き込み先（転送先）のバンクを切り替える（変更する）。データ書き込み動作実行中ではないバンクがない場合、ＮＡＮＤコントローラ２０は、何れか一つのバンクがデータ書き込み動作を終了するまで待つ。
【００２３】
書き込み動作をバンクインターリーブさせることにより、ＮＡＮＤコントローラ２０が転送データを転送する動作を実行してから次の転送動作を実行するまでの時間が短縮され、結果としてバンクインターリーブさせない場合に比べて転送効率が向上する。なお、ＮＡＮＤコントローラ２０は、並列動作要素２ａと並列して動作する各並列動作要素２ｂ〜２ｄが夫々備えるバンク０〜３に対しても夫々個別にデータ書き込み動作をバンクインターリーブさせるように構成されている。また、上述したように、同一バンクに属する物理ブロックを各チャネル（ｃｈ０〜ｃｈ３）から１つずつ選択して論理ブロックを構成した場合、各並列動作要素２ａ〜２ｂが夫々備える同一番号のバンクに対して並列アクセスが行われる。
【００２４】
つぎに、上記バンクインターリーブ動作を実行する際に、転送先バンクを選択する方法について説明する。なお、以降の説明においては、データ書き込み動作実行中の状態であることをビジー状態、データ書き込み動作実行中ではない状態であることをレディ状態と表現することとする。
【００２５】
本実施形態と比較される方法として、バンク０〜３に優先順位を設定し、この優先順位を優先度が高いほうから例えばバンク０→バンク１→バンク２→バンク３のように固定する方法がある。この方法を、比較例に係る方法ということとする。すなわち、比較例に係る方法によれば、ＮＡＮＤコントローラ２０は、一つの転送データをあるバンクに転送し終えた後、レディ状態のバンクのうち、前記した固定された優先順位に基づいて一つのバンクを選択し、選択したバンクに転送先バンクを切り替える。
【００２６】
ところで、データ書き込みにかかる時間にはバンク毎にばらつきが生じ得る。このばらつきが原因となり、データ書き込み動作が完了してから次の転送データが転送されてくるまでに空白時間が生じることがある。この空白時間が特定のバンクに偏って生じると、全体としての転送効率が低下してしまう場合がある。上記した比較例に係る方法では、空白時間の偏りを防ぐことができない。これに対して、第１の実施の形態は、最後のデータ転送が実行されてからの経過時間が長い古いバンクほど優先度が高くなるように優先順位を逐次更新することによって空白時間が特定のバンクに偏ることを防止したことが主たる特徴となっている。以下に具体例を示して比較例に係る方法と第１の実施の形態の方法との動作の違いを概略的に説明する。
【００２７】
図２は、バンク０〜３へ夫々３つずつ転送データを書き込む場合において、比較例に係る方法および第１の実施の形態の方法によりバンク切り替えが行われたときの各バンク０〜３の動作履歴を説明する図である。図２の横軸は経過時間を表している。数字が付された白抜き矩形図形はＮＡＮＤコントローラ２０から各バンクへの単位書き込みサイズ毎のデータ転送の実行履歴を示し、矩形図形に付された数字は優先順位に基づいて決定されたデータ転送の順番を示している。また、ハッチングが施された矩形図形は、各バンクが自身へ転送されてきた単位書き込みサイズ毎のデータの書き込み動作の実行履歴を示している。
【００２８】
図２上段に示すように、比較例に係る方法によれば、まず、バンク０を転送先として１個目のデータが転送される（データ転送１）。その後、優先度が高いほうからバンク０、１、２、３の順に固定されている優先順位に従い、データ転送２、３、４、５、６、７が夫々バンク１、２、３、０、１、２を転送先として実行される。データ転送７が終了したとき、バンク３はデータ転送４により転送されてきたデータの書き込みが長びき、まだビジー状態であったとする。すると、データ転送７が終了した時点で唯一レディ状態であったバンク０が次のデータ転送８の転送先として選択される。データ転送８が終了した時点においては、バンク１およびバンク３がレディ状態となっているが、前記した固定の優先順位に従い、次の転送先としてバンク１が選択される。その後、データ転送１０および１１がバンク２、バンク３に対して実行され、最後にデータ転送１２がバンク３に対して実行される。
【００２９】
ここで、バンク３の動作履歴に着目すると、データ転送４による転送データの書き込みを完了してから次のデータ転送１１が開始されるまでに長い空白時間が生じている。この空白時間に起因して、バンク３の３個のデータの転送および書き込みにかかる時間が他のバンクに比べて突出して長くなり、結果として合計１２個のデータの転送が開始されてから全てのデータの書き込みが終了するまでにかかる時間が長くなっていることがわかる。
【００３０】
図２下段に示す第１の実施の形態の方法では、初期状態の優先順位がバンク０、１、２、３となっており、この優先順位は、最後のデータ転送が実行されてからの経過時間が最も古いバンクほど優先度（選択優先度）が高くなるように逐次更新される。結果として、データ転送８までの動作履歴は上記した比較例に係る方法の場合と同一の動作履歴となる。データ転送８が終了した時点においては、最後のデータ転送時刻は、古いほうからバンク３、１、２、０の順となっている。すなわち、データ転送９の転送先として、バンク１ではなくバンク３が選択される。データ転送９が終了した時点においては、最後のデータ転送時刻が古いほうからバンク１、２、０、３となっているので、データ転送１０の転送先としてバンク１が選択される。以降、同じ動作により、データ転送１１およびデータ転送１２が実行される。
【００３１】
第１の実施の形態の方法による動作履歴によれば、比較例に係る方法の動作履歴の例においてバンク３に生じていた空白時間がバンク１〜３に分散され、結果として１２個のデータの書き込みが全て終了するまでにかかるトータルの転送時間が比較例に係る方法に比べて短縮され、転送速度が向上しているのがわかる。すなわち、第１の実施の形態の方法を採用した場合、比較例に係る方法を採用した場合に比べて転送効率が向上する。
【００３２】
図３は、上記概略的に説明した第１の実施の形態の特徴を実現するための、ＮＡＮＤコントローラ２０が備える機能構成およびＮＡＮＤメモリ２とＮＡＮＤコントローラ２０との間の接続関係を説明する図である。図示するように、ＮＡＮＤコントローラ２０は並列動作要素２ａ〜２ｄへのデータ転送を夫々制御するメモリコントローラとしての４つのコントローラ（ｃｈ０コントローラ２１０、ｃｈ１コントローラ２２０、ｃｈ２コントローラ２３０およびｃｈ３コントローラ２４０）を備えている。ｃｈ０コントローラ２１０、ｃｈ１コントローラ２２０、ｃｈ２コントローラ２３０およびｃｈ３コントローラ２４０は夫々同じ機能を備えているので、以降は代表としてｃｈ０コントローラ２１０についてのみ説明する。また、図３においては、ｃｈ０コントローラ２１０によりデータ転送が制御される並列動作要素２ａのみ図示している。
【００３３】
並列動作要素２ａのバンク０〜３は、ｃｈ０コントローラ２１０との間で夫々個別にレディ／ビジー（Ｒｙ／Ｂｙ）信号線で接続されている（Ｒｙ／Ｂｙ０〜Ｒｙ／Ｂｙ３）。バンク０〜３は、自身がビジー状態であるかレディ状態であるかを夫々個別にＲｙ／Ｂｙ信号線を介してｃｈ０コントローラ２１０へ通知する。ここでは、一例として、Ｒｙ／Ｂｙ＝Ｌがビジー状態を示し、Ｒｙ／Ｂｙ＝Ｈがレディ状態を示すこととする。また、バンク０〜３は、チップを選択するためのチップイネーブル（ＣＥ）信号線でｃｈ０コントローラ２１０と夫々個別に接続されている（ＣＥ０〜ＣＥ３）。夫々のバンクが複数のメモリチップを有する場合、各メモリチップのＲｙ／Ｂｙ信号線、ＣＥ信号線は共通接続されている。
【００３４】
また、ｃｈ０コントローラ２１０には、コマンド、アドレスおよびデータを送受信するためのＣｏｎｔ．Ｉ／Ｏ信号線の一端が接続されている。Ｃｏｎｔ．Ｉ／Ｏ信号線の他端は４つに分岐し、分岐した４つのＣｏｎｔ．Ｉ／Ｏ信号線が夫々バンク０〜３に接続されている。ｃｈ０コントローラ（メモリコントローラ）２１０は、書き込みコマンド、書き込み先のアドレスおよびＲＡＭ３から読み出した単位書き込みサイズの転送データを含む書き込み指令をＣｏｎｔ．Ｉ／Ｏ信号線を介して４つのバンク０〜３へ一つずつ送信する。Ｃｏｎｔ．Ｉ／Ｏ信号線のＮＡＮＤメモリ２側は、４つに分岐してバンク０〜３に接続されているので、バンク０〜３は、同時に同一の書き込み指令を受信するが、夫々のバンク０〜３は、ＣＥ信号線のレベルに基づいてこの書き込み指令を実行するか否かを判断する。
【００３５】
図４は、あるバンク（バンクｉ（ｉ＝０〜３））を転送先とした書き込み指令が発行され、書き込み動作が行われたときのＣｏｎｔ．Ｉ／Ｏ信号線および転送先のバンクｉとｃｈ０コントローラ２１０とを接続するＲｙ／Ｂｙ信号線の状態を示すタイミングチャートである。図示するように、ｃｈ０コントローラ２１０からＣｏｎｔ．Ｉ／Ｏ信号線を介してデータ入力コマンド、バンクｉの書き込みアドレス、転送データ、およびデータ書き込みコマンドからなる書き込み指令が送信されると、この書き込み指令を受信完了したバンクｉは転送データの書き込みを開始してＲｙ／Ｂｙ＝Ｌとし、バンクｉは書き込みを完了するとＲｙ／Ｂｙ＝Ｈとする。
【００３６】
より詳しくは、バンクｉは、送信されてきた転送データを一時蓄積するバンク毎の１次バッファ（データキャッシュ）と、このデータキャッシュとＮＡＮＤメモリチップとの間に介在するバンク毎の２次バッファ（ページバッファ）と、を備える。ｃｈ０コントローラ２１０は、書き込み指令に含まれるバンクｉに書き込む単位書き込みサイズ（ページサイズ）の転送データをデータキャッシュに転送する。バンクｉは、転送データに続いてデータ書き込みコマンドを受信すると、Ｒｙ／Ｂｙ＝Ｌとし、データキャッシュに蓄積された転送データをページバッファに転送する。そして、バンクｉは、ページバッファに転送した転送データを、バンクｉの記憶領域であるメモリセルアレイにおける書き込みアドレスにプログラムする。バンクｉは、さらに、プログラムしたデータをメモリセルアレイから読み出して、読み出したデータとページバッファに保持されている転送データとを比較することによって転送データがメモリセルアレイに正しくプログラムされているかを検証する。この比較検証の結果、双方のデータが合致した場合、バンクｉは、転送データがメモリセルアレイに正しくプログラムされていると認識し、Ｒｙ／Ｂｙ＝Ｈとし、受信した書き込み指令にかかる書き込み動作を終了する。比較検証の結果、双方のデータが合致しなかった場合、バンクｉは、比較検証の結果が合致するまでページバッファの転送データのメモリセルアレイへのプログラムを試みる。プログラムを試みる回数は予め所望の値に設定されている。このように、バンクｉによる転送データの書き込み動作は、データキャッシュからページバッファへの転送データの転送と、転送データのメモリセルアレイへのプログラムと、プログラムしたデータの読み出しおよび検証とを含んでいるので、ｃｈ０コントローラ２１０からバンクｉへのデータ転送動作に比べて長い時間がかかることとなる。なお、この例においては、書き込み指令はデータ入力コマンド、書き込みアドレス、転送データ、およびデータ書き込みコマンドからなるとしているが、書き込み指令はこれらの他にさらに別の情報を送信するようにしてもよい。
【００３７】
図３に戻り、ｃｈ０コントローラ２１０は、優先順位管理部２１１および書き込み指令を並列動作要素２ａのバンク０〜３に送信するコマンド処理部２１２をさらに備えている。優先順位管理部２１１は転送先バンクの優先順位を書き込み指令が送信される毎に更新管理する。具体的には、優先順位管理部２１１は、バンクの識別番号（バンクナンバー、この場合は０〜３）を優先度が高い順に先頭から並べた配列で管理する。例えば優先順位管理部２１１が内部にレジスタや小規模なメモリなどの記憶領域を備え、この記憶領域に優先順位の配列が保持されるようにしてもよいし、その他の記憶領域に保持されるようにしてもよい。優先順位管理部２１１は、最後に書き込み指令の送信が実行されたとき、この書き込み指令の転送先のバンクの優先度を最下位に移動させることによって、最後にデータ転送が実行されてからの経過時間が長いバンクナンバーほど配列の先頭に近くなるように逐次更新する。なお、ここでは優先度が高い順にバンクナンバーを先頭から並べるとするが、優先度が低い順に先頭から並べるようにしてもよい。
【００３８】
コマンド処理部２１２は、ＭＰＵ４０から受信した書き込み要求に基づいて、ＲＡＭ３から転送データを読み出し、書き込み指令を生成する。例えばコマンド処理部２１２が内部にレジスタや小規模なメモリなどの記憶領域を備え、この記憶領域に、生成された書き込み指令が保持されるようにしてもよいし、その他の記憶領域に保持されるようにしてもよい。そして、コマンド処理部２１２は、Ｒｙ／Ｂｙ信号線を介して通知されるバンク０〜３の状態と優先順位管理部２１１により管理されている優先順位とに基づいてデータ転送先のバンク（書き込み指令の指令対象のバンク）を一つ選択し、選択したバンクを書き込み先とする書き込み指令をＣｏｎｔ．Ｉ／Ｏ信号線を介してバンク０〜３へ送信する。
【００３９】
次に、以上のように構成される第１の実施の形態のＳＳＤにおいて、ＮＡＮＤコントローラ２０からＮＡＮＤメモリ２へデータが転送される動作を図５および図６を参照しながら説明する。
【００４０】
図５は、並列動作要素２ａのバンクの動作を説明するフローチャートである。図示するように、バンクを構成するメモリチップは、自身が転送先となっている書き込み指令の受信を完了すると、自身とｃｈ０コントローラ２１０とを接続するＲｙ／Ｂｙ信号線の状態をＨからＬに変更し、書き込み指令に含まれている転送データの書き込みを開始する（ステップＳ１１）。バンクは、転送データの書き込みを完了すると、前記したＲｙ／Ｂｙ信号線の状態をＬからＨに変更し（ステップＳ１２）、リターンとなる。
【００４１】
図６は、ｃｈ０コントローラ２１０の動作を説明するフローチャートである。図示するように、ＭＰＵ４０から並列動作要素２ａにデータを転送する書き込み要求を受信すると、コマンド処理部２１２は、この書き込み要求に基づいてバンク０〜３を書き込み先とする単位書き込みサイズ毎の複数の書き込み指令を生成する（ステップＳ２１）。コマンド処理部２１２は、次に、Ｒｙ／Ｂｙ＝Ｈとなっているバンクを検索し（ステップＳ２２）、Ｒｙ／Ｂｙ＝Ｈとなっているバンクが無かった場合（ステップＳ２２、Ｎｏ）、Ｒｙ／Ｂｙ＝Ｈとなっているバンクを発見するまで検索を続行する。
【００４２】
Ｒｙ／Ｂｙ＝Ｈとなっているバンクがあった場合（ステップＳ２２、Ｙｅｓ）、コマンド処理部２１２は、優先順位管理部２１１にて管理されている配列を先頭から参照し、Ｒｙ／Ｂｙ＝Ｈとなっているバンクのうち優先度が最も高いバンクを一つ選択する（ステップＳ２３）。ここで、コマンド処理部２１２は、Ｒｙ／Ｂｙ＝Ｈとなっているバンクが一つしかない場合、このバンクを選択する。ステップＳ２３に続いて、コマンド処理部２１２は、生成した書き込み指令のうち、前記選択したバンクを書き込み先とする書き込み指令を選択して並列動作要素２ａのバンク０〜３へ送信する（ステップＳ２４）。
【００４３】
優先順位管理部２１１は、ステップＳ２４にて書き込み指令の送信が開始されたとき、送信された書き込み指令を実行するバンクのナンバー、すなわちステップＳ２３にて選択されたバンクのナンバーを優先順位の配列の最後尾に移動させるとともに、移動前においてこのバンクナンバーよりも配列の後ろにあったバンクナンバーの位置を夫々一つずつ配列の先頭に向かって繰り上げる（ステップＳ２５）。なお、ここでは、書き込み指令の送信が開始されたとき優先順位の配列の更新が行われるとしたが、書き込み指令が送信された直後に行われるようにしてもよいし、書き込み指令送信中に行われるようにしてもよい。これにより、次回ステップＳ２３に移行したとき、今回ステップＳ２３において選択されたバンクの優先度は最下位となっている。
【００４４】
コマンド処理部２１２は、生成した書き込み指令を全て送信したか否かを判定し（ステップＳ２６）、まだ未送信の書き込み指令が残っていた場合（ステップＳ２６、Ｎｏ）、ステップＳ２２へ移行する。書き込み指令を全て送信し終わった場合（ステップＳ２６、Ｙｅｓ）、動作を終了する。
【００４５】
このようにして、最後にデータ転送が実行されてからの経過時間が長いバンクほど優先的に転送先バンクとして選択されるようになる。図７は、図２下段に示した第１の実施の形態の動作履歴の例に、各バンク０〜３のＲｙ／Ｂｙ信号線の状態と、刻々と更新される優先順位の配列を表示した図である。なお、図７（および図２）において示している白抜き矩形図形（データ転送動作の履歴）は、書き込み指令を送信する動作の履歴の意で使用されている。最初に行われるデータ転送１の転送先は、優先順位が高いほうからバンク０、１、２、３となっているので、バンク０が選択される。そして、書き込み指令の転送開始後、バンク０の順位が最下位に移動、すなわちバンクナンバー０が配列の最後尾に移動し、優先順位がバンク１、２、３、０に変化する。優先順位の配列中の下線を記した番号は、次のデータ転送の転送先として選択されたバンクナンバーを示している。データ転送７が終了した時点では優先順位がバンク３、０、１、２となっており、唯一Ｒｙ／Ｂｙ信号線がＨとなっているバンク０がデータ転送８の転送先として選択され、優先順位がバンク３、１、２、０となる。そして、データ転送９の転送先は、データ転送８が終了した時点でＲｙ／Ｂｙ信号線がＨとなっているバンク１、３のうち、優先度が高いバンク３が選択されるようになる。
【００４６】
以上述べたように、第１の実施の形態によれば、ｃｈ０コントローラ２１０は、書き込み指令を送信した後、並列動作要素２ａが備えるバンクでレディ状態のバンクのうち最も選択優先度が高いバンクを選択し、選択したバンクを次回の書き込み指令の指令対象に変更するとともに、前記選択したバンクの次回の選択の際の選択優先度の順位を最下位に移動させるようにしたので、バンク毎の個々の動作履歴に生じる空白時間が複数のバンクに分散されるので、効率のよいバンクインターリーブ動作を実行できる。また、バンクの選択優先度をバンクナンバーの配列で管理するようにしたので、動作指令の送信時刻を記録して送信時刻を互いに比較するような複雑な機構を実装することなく、最後に動作指令が送信されてからの経過時間が長いバンクほど優先して選択できるようになる。
【００４７】
ところで、以上の説明においては、データ書き込みの動作をバンクインターリーブさせる場合について説明したが、バンクインターリーブさせることが可能な動作であればデータ書き込みを実行する場合以外であっても第１の実施の形態の方法を適用することができる。例えば、データ読み出し動作をバンクインターリーブさせる場合、読み出しコマンドと読み出し先のアドレスとを含む読み出し指令を送信した後、Ｒｙ／Ｂｙ信号と選択優先度の順位とに基づいてデータ読み出し先のバンクを変更するとともに、変更先のバンクの次回の選択の際の選択優先度の順位を最下位に移動させるようにするとよい。また、データ消去動作をバンクインターリーブさせる場合、データ消去コマンドとデータ消去対象アドレスとを含むデータ消去指令を送信した後、Ｒｙ／Ｂｙ信号と選択優先度の順位とに基づいてデータ消去指令の対象のバンクを変更するとともに、変更先のバンクの次回の選択の際の選択優先度の順位を最下位に移動させるようにするとよい。このとき、各バンクは、データ書き込み動作だけでなく、データ読み出し動作やデータ消去動作を実行中のとき、Ｒｙ／Ｂｙ＝Ｌ（ビジー状態）、データ書き込み動作、データ読み出し動作、およびデータ消去動作を実行中ではないとき、Ｒｙ／Ｂｙ＝Ｈ（レディ状態）を出力するようにしておく。また、各バンクは、レディ状態のときＲｙ／Ｂｙ＝Ｌとし、ビジー状態のときＲｙ／Ｂｙ＝Ｈを出力するようにしてもよい。
【００４８】
また、以上の説明においては、バンク間で同一の種類の動作（ここではデータ書き込み）をバンクインターリーブさせる場合について説明したが、バンク間で異なる種類の動作（データ書き込み、データ読み出し、およびデータ消去）をバンクインターリーブさせる場合においても第１の実施の形態の方法を適用することができる。すなわち、動作指令（書き込み指令、読み出し指令、およびデータ消去指令）の指令対象のバンク（転送先バンク、読み出し先のバンク、データ消去指令の対象のバンク）をＲｙ／Ｂｙ信号線および選択優先度に基づいて変更するとともに、前記指令対象のバンクの次回の選択の際の選択優先度を最下位に移動させるようにするとよい。
【００４９】
また、並列動作要素を４つ有し、各並列動作要素当たり４つのバンクに分割されているとして説明したが、並列動作要素および並列動作要素当たりのバンク数はこれらの数に限定しない。
【００５０】
（第２の実施の形態）
近年、各バンクを構成する各々のメモリチップ内部を夫々個別に周辺回路（ロウデコーダ、カラムデコーダなど）を有する複数の領域（プレーン）に分割しておき、一つのメモリ操作指令で複数のプレーンに夫々別のメモリ操作を実行させることによって高速メモリアクセスを実現する技術が開発されている。複数のプレーンを有する不揮発性半導体記憶装置の一例が、特許文献３に開示されている。この技術によれば、各プレーンは、夫々個別にデータキャッシュおよびページバッファを有している。
【００５１】
図８は、夫々のバンク（バンクｉ）の構成例を説明する図である。バンクｉは、図示するように、複数（ここでは二つ）のプレーン（プレーン０、プレーン１）に分割されており、プレーン０はデータキャッシュ０、ページバッファ０およびメモリセルアレイ０を備え、プレーン１は、データキャッシュ１、ページバッファ１およびメモリセルアレイ１を備えている。ＮＡＮＤコントローラからプレーン０、プレーン１に夫々送信されるページサイズの転送データは、夫々データキャッシュ０、データキャッシュ１に一時蓄積される。データキャッシュ０に蓄積された転送データはページバッファ０を経てメモリセルアレイ０にプログラムされる。データキャッシュ１に蓄積された転送データはページバッファ１を経てメモリセルアレイ１にプログラムされる。各プレーン０、１は、夫々個別に、データキャッシュ０、１からページバッファ０、１への転送データの転送と、ページバッファ０、１に転送した転送データのメモリセルアレイ０、１へのプログラムと、プログラムしたデータの読み出しおよび読み出したデータとページバッファ０、１に格納された転送データとの比較検証と、を含む転送データの書き込み動作を実行することができる。
【００５２】
図９は、複数のプレーンに夫々別の転送データを書き込ませる書き込み指令が送信されて実行されるときのＣｏｎｔ．Ｉ／Ｏ信号線およびＲｙ／Ｂｙ信号線の状態の一例を説明するタイミングチャートである。以降、この書き込み指令をマルチ書き込み指令ということとする。なお、図９以降の説明では、図８に示すように構成されている各バンクに対し、一つのマルチ書き込み指令で２つのページサイズの転送データが転送され、夫々プレーン０、プレーン１に書き込まれるとする。
【００５３】
図９に示すように、一つのマルチ書き込み指令は、データ入力コマンドと、バンクｉのプレーン０のアドレスである第１の書き込みアドレスと、第１の書き込みアドレスに書き込む第１の転送データと、ダミー書き込みコマンドと、データ入力コマンドと、バンクｉのプレーン１のアドレスである第２の書き込みアドレスと、第２の書き込みアドレスに書き込む第２の転送データと、データ書き込みコマンドとからなっている。バンクｉは、ダミー書き込みコマンドを受信した場合、一度Ｒｙ／Ｂｙ＝Ｌとし、すぐにＲｙ／Ｂｙ＝Ｈとする。また、バンクｉは、データ書き込みコマンドを受信した場合、データキャッシュ０、１に一時蓄積された夫々の転送データの書き込み動作を同時に開始し、どちらか一方のプレーンにおいて書き込み動作を実行中であるときにＲｙ／Ｂｙ＝Ｌとし、いずれのプレーンにおいても書き込み動作を実行中ではないとき、Ｒｙ／Ｂｙ＝Ｈとする。ダミー書き込みコマンドを受信してＲｙ／Ｂｙ＝Ｌに遷移してからＲｙ／Ｂｙ＝Ｈに回復するまでの時間は、書き込み動作を実行中にＲｙ／Ｂｙ＝Ｌの状態になっている時間に比べて短いものとする。
【００５４】
Ｃｏｎｔ．Ｉ／Ｏ信号線にデータ入力コマンド、第１の書き込みアドレス、第１の転送データおよびダミー書き込みコマンドが送信されると、バンクｉは、Ｒｙ／Ｂｙ信号線の状態をＨからＬに変更し、その後Ｒｙ／Ｂｙ信号線の状態をＬからＨに変更する。バンクｉは、送信されてきた第１の転送データをデータキャッシュ０に蓄積する。Ｒｙ／Ｂｙ信号線の状態がＨからＬに変更されたのを検知して、ｃｈ０コントローラは、Ｃｏｎｔ．Ｉ／Ｏ信号線にデータ入力コマンド、バンクｉのプレーン１のアドレスである第２の書き込みアドレス、第２の転送データ、およびデータ書込みコマンドを送信する動作を開始する。バンクｉは、送信されてきた第２の転送データをデータキャッシュ１に蓄積する。データ書込みコマンドが送信されてくると、バンクｉは、データキャッシュ０に蓄積された第１の転送データの書き込み動作と、データキャッシュ１に蓄積された第２の転送データの書き込み動作を同時に開始するとともに、Ｒｙ／Ｂｙ信号線の状態をＨからＬに変更する。バンクｉは、プレーン０およびプレーン１における書き込み動作を完了すると、Ｒｙ／Ｂｙ信号線の状態をＬからＨに変更する。このように、複数のプレーンのデータキャッシュが夫々転送データを蓄積し、一回のデータ書き込みコマンドで複数のプレーンにおける転送データの書き込み動作を一斉に開始するように構成されているので、第１の実施の形態にて説明した書き込み指令（以下、シングル書き込み指令という）を複数続けて送信する場合に比べて高速な書き込みが実現される。なお、ここでは一つのマルチ書き込み指令により２ページ分の転送データが夫々のバンクに書き込まれるので、２ページ分のサイズが単位書き込みサイズということになる。
【００５５】
ここで、Ｒｙ／Ｂｙ信号線に着目すると、マルチ書き込み終了時以外にＲｙ／Ｂｙ信号線の状態がＬからＨに遷移することがあるのがわかる。したがって、第１の実施の形態のように単にＲｙ／Ｂｙ信号がＨのバンクのうちから転送先を選択するようにすると、第１の転送データの書き込み動作完了と第２の転送データの受信開始との間がバンク切り替えのタイミングとなってしまい、このタイミングで転送先バンクに選択されてしまうと、このバンクに転送されようとしていた第２の転送データが転送されなくなってしまう不具合が生じる。この不具合を解消するために、第２の実施の形態では、マルチ書き込み指令に基づく全ての転送データの書き込みが完了したバンクから転送先バンクを選択するように構成されている。
【００５６】
図１０は、第２の実施の形態のＮＡＮＤコントローラの機能構成を説明する図である。ＮＡＮＤコントローラ５０以外の構成は第１の実施の形態と同様である。ただし、ＭＰＵ４０は、ファームウェアに基づいてＮＡＮＤコントローラ５０にマルチ書き込みをさせるためのマルチ書き込み要求を送信することが可能となっている。
【００５７】
ＮＡＮＤコントローラ５０は並列動作要素２ａ〜２ｄへのデータ転送を夫々制御するメモリコントローラとしての４つのコントローラ（ｃｈ０コントローラ５１０、ｃｈ１コントローラ５２０、ｃｈ２コントローラ５３０およびｃｈ３コントローラ５４０）を備えている。ｃｈ０コントローラ５１０、ｃｈ１コントローラ５２０、ｃｈ２コントローラ５３０およびｃｈ３コントローラ５４０は夫々同じ機能を備えているので、以降は代表としてｃｈ０コントローラ５１０についてのみ説明する。また、図１０においては、ｃｈ０コントローラ５１０によりデータ転送が制御される並列動作要素２ａのみ図示している。
【００５８】
並列動作要素２ａとｃｈ０コントローラ５１０との接続関係は、第１の実施の形態における並列動作要素２ａとｃｈ０コントローラ２ａとの接続関係と同じであるので、ここでは詳細な説明を省略する。
【００５９】
ｃｈ０コントローラ（メモリコントローラ）５１０は、優先順位管理部２１１、マルチ書き込み指令を並列動作要素２ａのバンク０〜３に送信するコマンド処理部５１２、および並列動作要素２ａのバンク０〜３の動作状態を認識する動作状態認識部５１３をさらに備えている。
【００６０】
優先順位管理部２１１は、第１の実施の形態と同様に、バンク０〜３の優先順位を逐次更新管理する。動作状態認識部５１３は、Ｒｙ／Ｂｙ信号線の状態に基づいて、バンク毎の動作状態、すなわちコマンド処理部５１２から送信されてきたマルチ書き込み指令を完了した状態であるか否かをバンク毎に認識しておく。コマンド処理部５１２は、動作状態認識部５１３が認識しているバンク毎の動作状態と優先順位管理部２１１により管理されている優先順位とに基づいて転送データの転送先バンクを一つ選択し、選択したバンクにマルチ書き込み指令を送信する。
【００６１】
次に、図１１、図１２、および図１３を参照して、第２の実施の形態のＳＳＤにおいて、ＮＡＮＤコントローラ５０からＮＡＮＤメモリ２へデータが転送される動作を説明する。図１１は、並列動作要素２ａが備えるバンク０〜３の動作を説明するフローチャートである。
【００６２】
図１１に示すように、バンクを構成するメモリチップは、自身が転送先となっているマルチ書き込み指令の受信が開始され、マルチ書き込み指令に含まれるダミー書き込みコマンドまでの受信を完了すると、自身とｃｈ０コントローラ５１０とを接続するＲｙ／Ｂｙ信号線の状態をＨからＬに変更する（ステップＳ３１）。ステップＳ３１の後、バンクは、Ｒｙ／Ｂｙ信号線の状態をＬからＨに変更する（ステップＳ３２）。続いて、データ書き込みコマンドまでの受信を完了すると、Ｒｙ／Ｂｙ信号線の状態を再度ＨからＬに変更し、プレーン０のデータキャッシュ０に蓄積されている第１の転送データ、およびプレーン１のデータキャッシュ１に蓄積されている第２の転送データの書き込みを開始する（ステップＳ３３）。そして、バンクは、プレーン０およびプレーン１における書き込みを完了すると、Ｒｙ／Ｂｙ信号線の状態をＬからＨに変更し（ステップＳ３４）、リターンとなる。
【００６３】
動作状態認識部５１３は、各バンク０〜３のＲｙ／Ｂｙ信号線の状態の監視し、ダミー書き込みコマンドに基づくＲｙ／Ｂｙ信号の変化と各プレーンの書き込み完了時のＲｙ／Ｂｙ信号の変化とに基づいて、バンク毎に動作状態が「マルチ書き込み指令実行中」状態であるか否かを認識する。すなわち、動作状態認識部５１３は、ステップＳ３１におけるＨ→Ｌの立ち下がりを検出したとき、このＨ→Ｌの立ち下がりが検出されたバンクの状態を「マルチ書き込み指令実行中」状態と認識する。また、動作状態認識部５１３は、ステップＳ３４におけるＬ→Ｈの立ち上がりを検出したとき、このＬ→Ｈの立ち上がりが検出されたバンクの状態を「マルチ書き込み指令実行完了」状態と認識する。なお、自身を転送先としたマルチ書き込み指令を一度も受信しておらず、マルチ書き込み指令を未実行の状態のバンクの状態は、「マルチ書き込み指令実行中」の状態ではなく、実質的に「マルチ書き込み指令実行完了」状態と同一の状態であるので、ここでは便宜的に「マルチ書き込み指令完了」状態として説明する。
【００６４】
図１２は、動作状態認識部５１３による認識の動作を説明するタイミングチャートである。図示するように、動作状態認識部５１３は、バンクｉにて、ダミー書き込みコマンドに基づいてＲｙ／Ｂｙ信号がビジーとなったとき、バンクｉを「マルチ書き込み指令実行中」状態であると認識し、バンクｉにてプレーン０およびプレーン１における書き込み動作が完了したとき、バンクｉを「マルチ書き込み指令実行完了」とする。これにより、バンクｉが第１の転送データの受信と第２の転送データの受信との間にレディ状態となっているときも「マルチ書き込み指令実行中」状態である、と認識されることになる。
【００６５】
図１３は、ｃｈ０コントローラ５１０の動作を説明するフローチャートである。図１３に示すように、ｃｈ０コントローラ５１０は並列動作要素２ａに対するデータを書き込むマルチ書き込み要求を受信すると、マルチ書き込み指令を生成する（ステップＳ４１）。そして、動作状態認識部５１３が図１２に示した動作状態認識の動作を開始する（ステップＳ４２）。
【００６６】
続いて、コマンド処理部５１２は、動作状態認識部５１３を参照し、「マルチ書き込み指令実行完了」となっているバンクを検索し（ステップＳ４３）、「マルチ書き込み指令実行完了」となっているバンクが無かった場合（ステップＳ４３、Ｎｏ）、「マルチ書き込み指令実行完了」となっているバンクを発見するまで検索を続行する。
【００６７】
「マルチ書き込み指令実行完了」となっているバンクがあった場合（ステップＳ４３、Ｙｅｓ）、コマンド処理部５１２は、優先順位管理部２１１にて管理されている配列を先頭から参照し、「マルチ書き込み指令実行完了」となっているバンクのうち優先度が最も高いバンクを一つ選択する（ステップＳ４４）。ここで、コマンド処理部５１２は、「マルチ書き込み指令実行完了」となっているバンクが一つしかない場合、このバンクを選択する。ステップＳ４４に続いて、コマンド処理部５１２は、生成したマルチ書き込み指令のうち、前記選択したバンクを書き込み先とするマルチ書き込み指令を選択して並列動作要素２ａのバンク０〜３へ送信する（ステップＳ４５）。
【００６８】
優先順位管理部２１１は、ステップＳ４５にて転送先とされたバンクのナンバーを優先順位の配列の最後尾に移動させるとともに、移動前においてこのバンクナンバーよりも配列の後ろにあったバンクナンバーの位置を夫々一つずつ配列の先頭に向かって繰り上げる（ステップＳ４６）。
【００６９】
コマンド処理部５１２は、生成したマルチ書き込み指令を全て送信したか否かを判定し（ステップＳ４７）、まだ未送信の書き込み指令が残っていた場合（ステップＳ４７、Ｎｏ）、ステップＳ４３へ移行する。書き込み指令を全て送信し終わった場合（ステップＳ４７、Ｙｅｓ）、動作を終了する。
【００７０】
以上述べたように、第２の実施の形態によれば、一つのバンクに複数の転送データを書き込む動作を実行させるマルチ書き込み動作をバンクインターリーブさせる場合、マルチ書き込み動作を実行させるマルチ書き込み指令を実行中であるか否かをＲｙ／Ｂｙ信号の変化に基づいてバンク毎に認識し、マルチ書き込み指令を実行中でないバンクのうち最も選択優先度が高いバンクを選択し、この選択したバンクを次のマルチ書き込み指令の指令対象に変更するとともに、この選択したバンクの次回の選択の際の選択優先度の順位を最下位に移動させるように構成したので、マルチ書き込み動作をバンクインターリーブさせることが可能なＳＳＤにおいても効率よくバンクインターリーブ動作を実行することができるようになる。
【００７１】
ところで、上記説明においては、一つのバンクが二つのプレーンに分割されており、一つのマルチ書き込み指令により２つのプレーンに夫々データが転送される、として説明したが、１つのバンクの分割数は２つに限定しない。すなわち、各バンクは３つ以上のプレーンに分割され、一つのマルチ書き込み指令によりプレーン分割数と同じ数のデータが転送されるようにしてもよい。
【００７２】
また、第２の実施の形態は、第１の実施の形態にて説明した書き込み要求（以下、シングル書き込み要求という）を受信したとき、第２の実施の形態のコマンド処理部は、第１の実施の形態と同様の動作をするように構成してもよい。具体的には、第２の実施の形態のコマンド処理部に、ＭＰＵから受信する書き込み要求がシングル書き込み要求であるかマルチ書き込み要求であるかを判定する手段を設け、シングル書き込み要求を受信したとき、第１の実施の形態にて説明した動作を実行し、マルチ書き込み要求を受信したとき、上記説明した第２の実施の形態の動作を実行するようにしてよい。
【００７３】
また、上記説明においては、データ書き込み動作をバンクインターリーブさせる場合について説明を行ったが、第１の実施の形態と同様に、データ読み出し動作やデータ消去動作をバンクインターリーブさせる場合においても第２の実施の形態を適用することができる。
【符号の説明】
【００７４】
１  データ転送装置、２  ＮＡＮＤメモリ、３  ＲＡＭ、２０  ＮＡＮＤコントローラ、５０  ＮＡＮＤコントローラ、２１０  ｃｈ０コントローラ、２１１  優先順位管理部、２１２  コマンド処理部、２２０  １ｃｈコントローラ、２３０  ２ｃｈコントローラ、２４０  ３ｃｈコントローラ、５１０  ｃｈ０コントローラ、５１２  コマンド処理部、５１３  動作状態認識部、５２０  １ｃｈコントローラ、５３０  ２ｃｈコントローラ、５４０  ３ｃｈコントローラ。
【図１】
2010176646.tif 000003
【図２】
2010176646.tif 000004
【図３】
2010176646.tif 000005
【図４】
2010176646.tif 000006
【図５】
2010176646.tif 000007
【図６】
2010176646.tif 000008
【図７】
2010176646.tif 000009
【図８】
2010176646.tif 000010
【図９】
2010176646.tif 000011
【図１０】
2010176646.tif 000012
【図１１】
2010176646.tif 000013
【図１２】
2010176646.tif 000014
【図１３】
2010176646.tif 000015
【手続補正書】
【提出日】平成21年7月16日(2009.7.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
【特許文献１】米国特許出願公開第２００６／０１５２９８１号明細書
【特許文献２】特開平１０−１８７３５９号公報
【特許文献３】米国特許出願公開第２００７／０２０６４１９号明細書