(57)【要約】【課題】リードデータを論理アドレス順に効率よくホストに転送可能なバンク切替え制御をなし得るようにし、ランダムリード性能を向上させる。【解決手段】リードコマンドが指定する論理アドレス順および記憶位置にしたがった複数の記憶領域からの転送順を示す転送順情報を作成し、作成した転送順情報にしたがってメモリコントローラを制御して転送順情報にしたがった複数の記憶領域からのリードアウトを実行させる。【選択図】図１
2012068936.tif 000002
【特許請求の範囲】
【請求項１】
バスが共通接続され、夫々個別に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、
前記バスと接続され、前記バスの使用状態および前記複数のメモリ領域の使用状態に応じて前記複数のメモリ領域毎に展開されたメモリ領域単位リード命令を前記バスを介して前記複数のメモリ領域に出力することにより、前記バスを介して複数のメモリ領域からデータをリードアウトするメモリコントローラと、
前記メモリコントローラを管理するコントローラと、
を備え、
前記コントローラは、
リードコマンドをリードコマンドが指定するデータの記憶位置に応じて、リードコマンドが指定する論理アドレス順に、前記メモリコントローラでの読み出し単位以下のサイズに展開したリード命令列を作成し、作成したリード命令列をリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に応じて前記複数のメモリ領域毎のリード命令列に展開した前記メモリ領域単位リード命令列を作成し、作成したメモリ領域単位リード命令列を前記メモリコントローラに出力する第１のコントロールユニットと、
前記リード命令列およびリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に基づきリードコマンドが指定する論理アドレス順にしたがった前記複数の記憶領域からの転送順を示す転送順情報を作成し、作成した転送順情報にしたがって前記メモリコントローラを制御して転送順情報にしたがった前記複数の記憶領域からのリードアウトを実行させる第２のコントロールユニットと、
を備えることを特徴とするメモリシステム。
【請求項２】
バスが共通接続され、夫々個別に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、
前記バスと接続され、前記バスの使用状態および前記複数のメモリ領域の使用状態に応じて前記複数のメモリ領域毎に展開されたメモリ領域単位リード命令を前記バスを介して前記複数のメモリ領域に出力することにより、前記バスを介して複数のメモリ領域からデータをリードアウトするメモリコントローラと、
前記メモリコントローラを管理するコントローラと、
を備えるメモリシステムの制御方法であって、
前記コントローラは、
リードコマンドをリードコマンドが指定するデータの記憶位置に応じて、リードコマンドが指定する論理アドレス順に、前記メモリコントローラでの読み出し単位以下のサイズに展開したリード命令列を作成し、作成したリード命令列をリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に応じて前記複数のメモリ領域毎のリード命令列に展開した前記メモリ領域単位リード命令列を作成し、作成したメモリ領域単位リード命令列を前記メモリコントローラに出力し、
前記リード命令列およびリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に基づきリードコマンドが指定する論理アドレス順にしたがった前記複数の記憶領域からの転送順を示す転送順情報を作成し、作成した転送順情報にしたがって前記メモリコントローラを制御して転送順情報にしたがった前記複数の記憶領域からのリードアウトを実行させることを特徴とするメモリシステムの制御方法。
【請求項３】
バスが共通接続され、夫々個別に動作可能な複数のメモリ領域を有する不揮発性半導体メモリを制御するコントロールモジュールであって、
前記バスと接続され、前記バスの使用状態および前記複数のメモリ領域の使用状態に応じて前記複数のメモリ領域毎に展開されたメモリ領域単位リード命令を前記バスを介して前記複数のメモリ領域に出力することにより、前記バスを介して複数のメモリ領域からデータをリードアウトするメモリコントローラと、
前記メモリコントローラを管理するコントローラと、
を備え、
前記コントローラは、
リードコマンドをリードコマンドが指定するデータの記憶位置に応じて、リードコマンドが指定する論理アドレス順に、前記メモリコントローラでの読み出し単位以下のサイズに展開したリード命令列を作成し、作成したリード命令列をリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に応じて前記複数のメモリ領域毎のリード命令列に展開した前記メモリ領域単位リード命令列を作成し、作成したメモリ領域単位リード命令列を前記メモリコントローラに出力する第１のコントロールユニットと、
前記リード命令列およびリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に基づきリードコマンドが指定する論理アドレス順にしたがった前記複数の記憶領域からの転送順を示す転送順情報を作成し、作成した転送順情報にしたがって前記メモリコントローラを制御して転送順情報にしたがった前記複数の記憶領域からのリードアウトを実行させる第２のコントロールユニットと、
を備えることを特徴とするコントロールモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えたメモリシステムの制御方法に関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型フラッシュメモリ（以降、単にＮＡＮＤメモリという）などの不揮発性半導体メモリを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４１８２９９３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、リードデータを論理アドレス順に効率よくホストに転送可能なバンク切替え制御をなし得るようにし、ランダムリード性能が向上されるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、不揮発性半導体メモリは、バスが共通接続され、夫々個別に動作可能な複数のメモリ領域を有する。メモリコントローラは、前記バスと接続され、前記バスの使用状態および前記複数のメモリ領域の使用状態に応じて前記複数のメモリ領域毎に展開されたメモリ領域単位リード命令を前記バスを介して前記複数のメモリ領域に出力することにより、前記バスを介して複数のメモリ領域からデータをリードアウトする。メモリコントローラを管理するコントローラは、リードコマンドをリードコマンドが指定するデータの記憶位置に応じて、リードコマンドが指定する論理アドレス順に、メモリコントローラでの読み出し単位以下のサイズに展開したリード命令列を作成し、作成したリード命令列をリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に応じて前記複数のメモリ領域毎のリード命令列に展開した前記メモリ領域単位リード命令を作成し、作成したメモリ領域単位リード命令を前記メモリコントローラに出力する。また、コントローラは、リード命令列およびリード命令が指定するデータの前記複数のメモリ領域に関する記憶位置に基づきリードコマンドが指定する論理アドレス順にしたがった前記複数の記憶領域からの転送順を示す転送順情報を作成し、作成した転送順情報にしたがって前記メモリコントローラを制御して転送順情報にしたがった前記複数の記憶領域からのリードアウトを実行させる。
【図面の簡単な説明】
【０００６】
【図１】図１は、ＳＳＤの構成例を示すブロック図である。
【図２】図２は、ＮＡＮＤコントローラとＮＡＮＤメモリとの接続態様を示す図である。
【図３】図３は、バンクの内部構成例を示す図である。
【図４】図４は、比較例によるバンク切り替え方式を示すタイムチャートである。
【図５】図５は、比較例および本実施の形態によるバンク切り替え方式を示すタイムチャートである。
【図６】図６は、自動転送管理部の内部構成例を示すブロック図である。
【図７】図７は、リード命令キュー管理部の内部構成例を示すブロック図である。
【図８】図８は、リード命令キュー管理部での命令展開処理を示す図である。
【図９】図６は、転送順管理部の内部構成例を示す図である。
【図１０】図１０は、リード命令キュー管理部の動作手順を示すフローチャートである。
【図１１】図１１は、転送順管理部の動作手順を示すフローチャートである。
【図１２】図１２は、ＮＡＮＤコントロータの命令出力手順を示すフローチャートである。
【図１３】図１３は、ＮＡＮＤコントロータのデータ転送手順を示すフローチャートである。
【図１４】図１４は、比較例によるバンク切り替え方式を示すタイムチャートである。
【図１５】図１５は、本実施の形態によるバンク切り替え方式を示すタイムチャートである。
【図１６】図１６は、第２の実施形態のＮＡＮＤメモリの構成を示す図である。
【図１７】図１７は、パーソナルコンピュータの外観を示す斜視図である。
【図１８】図１８は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【０００７】
近年、転送効率を向上させるために、バンクインターリーブが採用されている。バンクインターリーブでは、ＳＳＤに搭載されているＮＡＮＤメモリを同時・並行的にデータ書き込み／読み出しを行うことが可能な複数のメモリ領域（バンク）に分け、ＮＡＮＤメモリに連続してデータ書き込みを行う際にデータ書き込み先のバンクを逐次切り替える。データ書き込みの場合は、ＮＡＮＤメモリに対して書き込みに要する時間が読み出しに比べ長く、書き込み先記憶位置は基本的にはＮＡＮＤメモリ上の任意の位置でよいので、バンクインターリーブを効率良く行うのは比較的容易である。しかし、読み出しの場合は、書き込みの場合とは異なり、読み出しに要する時間が短く、また読み出しデータはホストから入力された読み出しコマンドで指定された論理アドレス順にホストに出力しなくてはいけないので、バンク切替えを効率よく行うのは難しい。
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施の形態）
図１は、本発明の実施の形態にかかるメモリシステムの構成を示すブロック図である。ここでは、メモリシステムの一例としてＳＳＤを例に挙げて説明するが、本実施の形態の適用対象はＳＳＤに限定しない。
【００１０】
ＳＳＤ２００は、パーソナルコンピュータなどのホスト装置（以下ホストともいう）１００とＡＴＡ（Advanced  Technology  Attachment）規格の通信インターフェースで接続され、ホスト１００の外部記憶装置として機能する。ＳＳＤ２００は、ホスト１００からリード／ライトされるデータを記憶する不揮発性半導体メモリであるＮＡＮＤメモリ２と、ＳＳＤ２００のデータ転送制御を実行するデータ転送装置１と、データ転送装置１がデータ転送のための転送データを一次格納するためなどに使用される例えば揮発性メモリであるＲＡＭ３と、を備えている。ホスト１００から送信されてきたデータは、データ転送装置１の制御の基に、一旦ＲＡＭ３に格納され、その後、ＲＡＭ３から読み出されてＮＡＮＤメモリ２に書き込まれる。ＮＡＮＤメモリ２から読み出されたデータは、一旦ＲＡＭ３に格納され、その後、ＲＡＭ３から読み出されてホスト装置１００に転送される。
【００１１】
データ転送装置１は、ＡＴＡ  Ｉ／Ｆの制御およびホスト装置１００とＲＡＭ３との間のデータ転送の制御を実行するＡＴＡインターフェースコントローラ（ＡＴＡコントローラ）１０と、ＲＡＭ３に対するデータのリード／ライトを制御するＲＡＭコントローラ３０と、ＮＡＮＤメモリ２とＲＡＭ３との間のデータ転送の制御を実行するＮＡＮＤコントローラ２０と、ファームウェアに基づいてデータ転送装置１全体の制御を実行するＭＰＵ４５と、ＮＡＮＤメモリ２からのリード管理と、ＮＡＮＤメモリ２からリードしたデータをＲＡＭ３へデータ転送する際のデータ転送管理を行う自動転送管理部４０を備えている。ＭＰＵ４５、ＡＴＡコントローラ１０、ＲＡＭコントローラ３０、ＮＡＮＤコントローラ２０および自動転送管理部４０はバス接続されている。自動転送管理部４０は、ＮＡＮＤコントローラ２０の上位のコントローラであり、自動転送管理部４０は、ＭＰＵ４５の制御下で、ＮＡＮＤコントローラ２０によるＮＡＮＤメモリ２の読み出し制御を管理する。自動転送管理部４０からＮＡＮＤコントローラ２０へは、後述するように、リード命令と転送バンク指定が専用信号線を介して出力され、ＮＡＮＤコントローラ２０から自動転送管理部４０へは、後述するように、転送終了通知が出力されている。
【００１２】
ＮＡＮＤメモリ２は、ホスト１００によって指定されたユーザデータを記憶したり、ＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ２は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ２は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ２では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１３】
ＮＡＮＤメモリ２は、バンクインターリーブが可能な複数のバンク（図２では４バンク、バンク＃０〜バンク＃３）によって構成されており、各々のバンク＃０〜＃３は、例えば、複数のメモリチップによって構成されている。
【００１４】
ＲＡＭ３は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部（データ転送用バッファ）としては、ホスト１００から書込要求があったデータをＮＡＮＤメモリ２に書込む前に一時的に保存したり、ホスト１００から読出要求があったデータをＮＡＮＤメモリ２から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤメモリ２に記憶されるデータの格納位置とホストが指定する論理アドレスとの対応などを管理するための管理情報（ＮＡＮＤメモリ２に記憶されている各種管理テーブルが起動時などに展開された管理テーブル、これら管理テーブルの変更差分情報であるログなど）を格納するために使用される。
【００１５】
図２は、ＮＡＮＤコントローラ２０の内部構成、ＮＡＮＤコントローラ２０とＮＡＮＤメモリ２との接続態様を示すものである。ＮＡＮＤコントローラ２０は、コントロールＩ／Ｏ信号（ＣｔｒｌＩ／Ｏ）を共有する複数のバンク（Ｂａｎｋ＃０〜Ｂａｎｋ＃３）を４本のチップイネーブル信号（ＣＥ０−４）でバンク毎に個別に制御する。ＮＡＮＤメモリ２の各バンクからは、自身がビジー状態であるかレディ状態であるかを示すＲｙ／Ｂｙ信号（Ｒｙ／Ｂｙ０〜Ｒｙ／Ｂｙ３）がＮＡＮＤコントローラ２０へ出力されている。ここでは、Ｒｙ／Ｂｙ＝Ｌがビジー状態を示し、Ｒｙ／Ｂｙ＝Ｈがレディ状態を示すこととする。夫々のバンクが複数のメモリチップを有する場合、各メモリチップのＲｙ／Ｂｙ信号線、ＣＥ信号線は共通接続されている。
【００１６】
ＮＡＮＤコントローラ２０は、図２に示すように、ＮＡＮＤインタフェース（ＮＡＮＤＩ／Ｆ）２１、誤り訂正回路（ＥＣＣ）２２、ＲＡＭ３との間でＤＭＡ転送制御を行うＤＭＡコントローラ（ＤＭＡＣ）２３とを備える。ＮＡＮＤＩ／Ｆ２１には、４バンク分のチップイネーブル信号ＣＥ（ＣＥ０〜ＣＥ３）が接続され、アクセスするバンクに応じてＣＥ信号（ＣＥ０〜ＣＥ３）を制御する。また、４バンクを独立して動作させるために、バンク毎に接続されたＲｙＢｙ信号（Ｒｙ／Ｂｙ０〜Ｒｙ／Ｂｙ３）を監視してバンクの状態を管理するバンクコントローラ（ＢＡＮＫ−Ｃ）２４を４つ備える。ＢＡＮＫ−Ｃ２４は、それぞれのバンクに対する要求（命令）をキューイングする機能を備え、各バンクへの要求がある場合にコントロールＩ／Ｏ信号の使用権を確保し、自らが管理するバンクへの読み出し／書き込み／消去要求を実行する。調停部２５は、ＮＡＮＤＩ／Ｆ２１及びＢＡＮＫ−Ｃ２４を監視し、各バンクのコントロールＩ／Ｏバスの使用権を所定の規則に従って調停する。調停部２５には自動転送管理部４０からリード命令および転送バンク指定が入力され、調停部２５から自動転送管理部４０には転送終了通知が出力される。このように、ＮＡＮＤコントローラ２０では、コントロールＩ／Ｏバスの使用状態および複数のバンク＃０〜＃３の使用状態（Ｒｙ／Ｂｙ０〜Ｒｙ／Ｂｙ３）に応じてリード命令をコントロールＩ／Ｏバスを介して複数のバンク＃０〜＃３に逐次出力する。
【００１７】
図３に、１つのバンクの内部構成を示す。各バンクは、複数のメモリセルがマトリクス状に配列されたメモリセルアレイ２ａの他に、データキャッシュ２ｂおよびページバッファ２ｃを有している。バンクへの書き込みの際、ＮＡＮＤコントローラ２０からバンクに送信されるページサイズの転送データは、データキャッシュ２ｂに一時蓄積される。データキャッシュ２ｂに蓄積された転送データはページバッファ２ｃを経てメモリセルアレイ２ａにプログラムされる。プログラムされたデータは読み出され、ページバッファ２ｃに格納された転送データとの比較検証が行われる。バンクへの書き込みの際は、書き込みアドレス、書き込みデータを含むライト命令の転送フェーズが終了した時点で、ＲｙＢｙ信号がレディからビジーになり、その後比較検証が終了した時点でＲｙＢｙ信号がビジーからレディになる。
【００１８】
一方、バンクからの読み出しの際は、メモリセルアレイ２ａから読み出されたデータは、ページバッファ２ｃを経て、データキャッシュ２ｂに一時蓄積される。読み出しの際は、読み出しアドレスを含むリード命令の転送フェーズが終了した時点で、ＲｙＢｙ信号がレディからビジーになり、読み出しデータがメモリセルアレイ２ａからページバッファ２ｃを経てデータキャッシュ２ｂに一時蓄積されて、ＮＡＮＤコントローラ２０へのデータ転送の準備が整った時点で、Ｒｙ／Ｂｙ信号がビジーからレディになる。なお、読み出し処理時間は、書き込み処理時間に比べ、格段に短い。
【００１９】
ホスト１００はＳＳＤ２００に対し、リードまたはライトする際には、論理アドレスとしてのＬＢＡ（Logical  Block  Addressing）を入力する。ＬＢＡは、セクタ（サイズ：５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。ページサイズは、セクタサイズより大きい。ＳＳＤ２００では、セクタ、ページ、ブロックの他に、ＲＡＭ３およびＮＡＮＤメモリ２を管理するための管理単位を定義することも可能であるが、ここではその説明を省略する。
【００２０】
ＳＳＤ２００では、ブロックを、フリーブロックＦＢ、アクティブブロックＡＢとして区別して管理する。フリーブロックＦＢとは、内部に有効データを含まない、用途未割り当てのブロックのことである。アクティブブロックＡＢとは、内部に有効データを含み、用途が割り当てられたブロックのことである。ホスト１００との間で使用されるＬＢＡとしての論理アドレスと、実際のＮＡＮＤメモリ２上での記憶位置を示す物理アドレスとの関係が管理されている。ＳＳＤ２００では、論理アドレスと物理アドレスとの関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物変換方式が採用されている。
【００２１】
例えば、同じＬＢＡアドレス上のデータを上書きする場合は、つぎのようなブロック交換が行われる。論理アドレスＡ１に有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。ホスト１００から論理アドレスＡ１のデータ（サイズはブロックと同じとする）を上書きするコマンドを受信した場合、フリーブロックＦＢ（ブロックＢ２とする）を１個確保し、そのフリーブロックＦＢにホスト１００から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける。その結果、ブロックＢ２はアクティブブロックＡＢになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックＦＢとなる。このように、ＳＳＤ２００では、同じ論理アドレスＡ１のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。
【００２２】
つぎに、上記バンク構成を有するＮＡＮＤメモリ２からのリード処理（ＮＡＮＤメモリ２からＲＡＭ３へのデータ転送処理）に関して、複数の比較例と本実施の形態について図４および図５を用いて説明する。
【００２３】
まず、図４を用いて２つの比較例について説明する。図４においては、図４（ａ）に示すように、ホスト１００から論理アドレス（ＬＢＡ）が「Ｎ」、「Ｎ＋１」、「Ｎ＋２」、「Ｎ＋３」のデータを読み出すリードコマンドが入力されたとする。このようなリードコマンドが入力されると、ＳＳＤ２００は、リードコマンドで指定された「Ｎ」→「Ｎ＋１」→「Ｎ＋２」→「Ｎ＋３」の順にデータをホスト１００に出力しなくてはいけない。ここで、図４（ａ）に示すように、ＬＢＡが「Ｎ」のデータはバンク＃２に記憶され、ＬＢＡが「Ｎ＋１」のデータはバンク＃０に記憶され、ＬＢＡが「Ｎ＋２」のデータはバンク＃１に記憶され、ＬＢＡが「Ｎ＋３」のデータはバンク＃３に記憶されているとする。
【００２４】
図４（ｂ）に示す第１の比較例においては、バンクインターリーブを行うことなく、データのＬＢＡ順序に従ってリード命令をシーケンシャルに投入し、データ転送（ＮＡＮＤメモリ２→ＲＡＭ３）をリード命令の投入順序通りに実行する、シーケンシャル転送を行っている。第１の比較例においては、あるバンクについてのリード命令の投入およびデータ転送が終了すると、次のバンクに対するリード命令の投入およびデータ転送を行っている。なお、図４（ｂ）においては、リード命令として００ｈ−アドレス−３０ｈからなるコマンドシーケンスを例示しているが、これに限定されるものではない。
【００２５】
図４（ｃ）に示す第２の比較例においては、データのＬＢＡ順序に従ってリード命令を順次投入するが、該当バンクに対するリード命令の投入を、前のバンクがビジー中（メモリセルアレイ２ａからデータをリードし、リードしたデータをデータキャッシュ２ｂに格納している最中：図３参照）に実行するといったバンクインターリーブを行っている。
【００２６】
第１の比較例においては、命令投入およびデータ転送をシーケンシャルに行っているので、データ転送効率の向上は見込めない。第２の比較例においては、各バンクでのビジー時間がリード処理に比べ格段に長いライト処理の場合は、ビジー時間を十分に隠蔽することが可能であるが、リード処理の場合は、ビジー時間に対してデータ転送時間が短く、ビジー時間の隠蔽が十分に行えず、性能が低下してしまう要因となる。
【００２７】
つぎに、図５を用いて第３の比較例および本実施の形態での処理について説明する。図５（ａ）は図４（ａ）と同じであり、リードコマンドで指定されるＬＢＡおよびＬＢＡに対応するデータ格納先バンクを示している。第３の比較例においては、リード命令をＬＢＡ順序に従うことなく各バンクに並列的に投入し、Ｒｙ／Ｂｙ信号がビジーからレディになったバンクから、単純なラウンドロビン方式を用いた巡回の順番にしたがって、各バンクからＲＡＭ３へのデータ転送を行っている。図５（ｂ）では、最初にバンク＃１がビジー解除されているので、それ以降はラウンドロビンの巡回に従い、バンク＃２、バンク＃３、バンク＃０の順でデータ転送を行っている。なお、各バンクはコントロールＩ／Ｏバスを共有しているので、命令を完全に並列投入することは不可能であるが、コマンドフェーズはデータ転送フェーズに比べ格段に短いので、図５（ｂ）では、コマンドフェーズを便宜上並列に示している。この第３の比較例の場合、ビジー時間についてはリードコマンドを複数データ分まとめて並列的に発行する関係で隠蔽しやすくなるが、ＮＡＮＤメモリ２からＲＡＭ３へのデータ転送の順番が、ホスト１００から指定されたＬＢＡアドレス順にならない。このためこの方式では、順不同に転送されるデータの転送進捗を管理し、ＲＡＭ３上でデータの並べ替えを行い、並べ替え後のデータをホスト１００にシーケンシャルに転送する必要があり、ＲＡＭ３上とかに、データ並べ替えのための大きな記憶領域が必要になり、また並べ替えのための時間分データ転送速度が低下する。
【００２８】
そこで、本実施の形態においては、リードコマンドの投入は、図５（ｂ）に示す第３の比較例と同様、ＬＢＡ順序に従うことなく各バンクに対し並列的に実行するが、ＮＡＮＤメモリ２からＲＡＭ３へのデータ転送順は、ホスト１００から指定されたＬＢＡ順に行うようにする。図５（ｃ）は、本実施形態の処理を示すものであり、ＮＡＮＤメモリ２からＲＡＭ３へのデータ転送順は、図５（ａ）に示すＬＢＡ順と同じになるように行われている（バンク＃２→バンク＃０→バンク＃１→バンク＃３）。すなわち、図５（ｃ）においては、最初にバンク＃１がビジー解除されているが、このバンク＃１のデータは３番目にデータ転送すればよいのでこの時点ではデータ転送を待機させ、その後１番目にデータ転送を行うべきバンク＃２がビジー解除された時点で、バンク＃２によるデータ転送を行わせている。バンク＃２のデータ転送完了時点では、２番目にデータ転送を行わせるべきバンク＃０はビジー解除されているので、直ちにバンク＃０によるデータ転送を行わせている。同様にして、バンク＃１、バンク＃３のデータが順次転送されている。したがって、本実施の形態においては、データを並べ替えのための大きな記憶領域が不要になり、並べ替えを行わないので、その分データ転送速度の低下を抑制することが可能となる。
【００２９】
以下、本実施形態を詳述する。図６は、自動転送管理部４０の内部機能構成を示す図である。自動転送管理部４０は、前述したように、ＮＡＮＤコントローラ２０の上位の制御モジュールであり、リード命令キュー管理部５０と転送順管理部６０を有する。リード命令キュー管理部５０は、ＭＰＵ４５に搭載されるファームウェアから入力されたリードコマンドをＮＡＮＤコントローラ２０に与えるバンク単位のリード命令列に変換し、変換したバンク単位のリード命令列をＮＡＮＤコントローラ２０に出力する。転送順管理部６０は、ＮＡＮＤコントローラ２０によって行われるＮＡＮＤメモリ２からＲＡＭ３へのバンク毎のデータ転送が、ホスト１００から指定されたＬＢＡ順になるようＮＡＮＤコントローラ２０を管理する。
【００３０】
図７は、リード命令キュー管理部５０の内部機能構成を示す図である。リード命令キュー管理部５０は、コマンド受付部５１と、命令展開部５２と、バンク展開部５３と、転送順通知部５４を有する。コマンド受付部５１は、ＭＰＵ４５に搭載されるファームウェアから入力されたリードコマンドを受付け、受け付けたリードコマンドを命令展開部５２に順次出力する。ホスト１００から入力されるリードコマンドは、例えば、読み出しコマンドを示すコード、先頭論理アドレス、読み出しサイズ（セクタ数）を含んで構成されている。命令展開部５２は、入力されたリードコマンドをＮＡＮＤコントローラ２０で処理可能なリード命令列に変換する。ＮＡＮＤコントローラ２０では、最大サイズがページ単位のリード処理を行っており、命令展開部５２はコマンド受付部５１から入力されたリードコマンドをリードデータのＮＡＮＤメモリ２上の記憶位置に基づき、ページ単位以下のサイズに細分化したリード命令列に展開する。
【００３１】
前述したように、ＮＡＮＤメモリ２には、ＮＡＮＤメモリ２の管理のための管理テーブルが記憶されており、この管理テーブルは電源オン時にＲＡＭ３上に展開されて使用かつ更新される。この管理テーブルには、ホスト１００から供給される論理アドレス（ＬＢＡ）と、ＮＡＮＤメモリ２上でデータが記憶されている位置を示す物理アドレスの対応関係を表す論物変換テーブルが含まれている。命令展開部５２は、この論物変換テーブルを参照して、リードコマンドを、リードデータのＮＡＮＤメモリ２上の記憶位置に応じて、ページ単位以下のサイズに細分化した、ＬＢＡ論理アドレス順のリード命令列を作成する。１つのリード命令には、転送モード（リード、ライト、消去などの識別）、バンク番号、バンク内アドレス（またはバンク内アドレスを示しているテーブル内のエントリーへのポインタアドレス）が含まれる。
【００３２】
バンク展開部５３は、バンク＃０〜＃３毎の命令キューを有しており、命令展開部５２で展開されたリード命令列をバンク単位に命令キューに振り分ける。すなわち、各リード命令には、バンク番号を情報として有しており、このバンク番号に基づき命令列をバンク単位の命令キューに振り分ける。バンク展開部５３内の各命令キューは、各命令キューに登録されたリード命令をＮＡＮＤコントローラ２０に出力する。図２に示した、ＮＡＮＤコントローラ２０内のバンクコントローラ（Ｂａｎｋ−Ｃ０〜Ｂａｎｋ−Ｃ３）２４には、それぞれのバンクに対する命令をキューイングする命令キューを有しており、バンク展開部５３から出力されるバンク単位の命令列は対応するバンクを管理するバンクコントローラ２４に入力される。
【００３３】
転送順通知部５４は、命令展開部５２で展開されたリード命令列に基づき、ＮＡＮＤメモリ２からＲＡＭ３へのバンク毎のデータ転送がホスト１００から指定されたＬＢＡ順になるようにするためのバンク番号の順番（以下転送順情報という）を作成し、作成した転送順情報を転送順管理部６０に通知する。前述したように、ＬＢＡ論理アドレス順の各リード命令には、バンク番号を情報として有しており、このバンク番号に基づき転送順情報を作成する。
【００３４】
図８は、リード命令キュー管理部５０でのコマンドから命令列への変換を概念的に示す図である。図８において、コマンド受付部５１は、ファームウェアから３つのリードコマンド「Ｒｅａｄ＃１」、「Ｒｅａｄ＃２」、「Ｒｅａｄ＃３」を受信している。命令展開部５２は、リードコマンド「Ｒｅａｄ＃１」を８つのリード命令「Ｒ１−１」〜「Ｒ１−８」に展開し、リードコマンド「Ｒｅａｄ＃２」を４つのリード命令「Ｒ２−１」〜「Ｒ２−４」に展開し、リードコマンド「Ｒｅａｄ＃３」を４つのリード命令「Ｒ３−１」〜「Ｒ３−４」に展開している。「Ｒ１−１」〜「Ｒ１−８」はＬＢＡ論理アドレスに従った順序である。「Ｒ２−１」〜「Ｒ２−４」および「Ｒ３−１」〜「Ｒ３−４」もＬＢＡ論理アドレスに従った順序である。バンク展開部５３は、バンク毎に複数の命令キューを有し、命令展開部５２から入力される命令列を各バンクに対応する命令キューに振り分けている。各バンクの命令キューに振り分けられた命令列は、ＮＡＮＤコントローラ２０の各バンクコントローラ２４に設けられた各命令キューに入力される。ＮＡＮＤコントローラ２０の各バンクコントローラ２４は、命令キューに登録された命令列にしたがってリード命令列を、図５（ｃ）に示すように、ＮＡＮＤメモリ２に並列的に投入する。
【００３５】
図９は図６に示した転送順管理部６０の具体構成例を示すものである。転送順管理部６０は、前述したように、ＮＡＮＤコントローラ２０によって行われるＮＡＮＤメモリ２からＲＡＭ３へのバンク毎のデータ転送が、ホスト１００から指定されたＬＢＡ順になるようＮＡＮＤコントローラ２０を管理する。リード命令キュー管理部５０の転送順通知部５４は、前述したように、転送順情報を作成して転送順管理部６０に通知する。図８の場合、転送順通知部５４から転送順管理部６０に通知される転送順情報、すなわちバンク番号の順番は、「バンク＃０（Ｒ１−１）」、「バンク＃１（Ｒ１−２）」、「バンク＃０（Ｒ１−３）」、「バンク＃０（Ｒ１−４）」、「バンク＃３（Ｒ１−５）」、「バンク＃２（Ｒ１−６）」、「バンク＃２（Ｒ１−７）」、「バンク＃０（Ｒ１−８）」、「バンク＃０（Ｒ２−１）」、「バンク＃３（Ｒ２−２）」、「バンク＃３（Ｒ２−３）」、「バンク＃３（Ｒ２−４）」、「バンク＃１（Ｒ３−１）」、「バンク＃０（Ｒ３−２）」、「バンク＃２（Ｒ３−３）」、「バンク＃３（Ｒ３−４）」である。
【００３６】
図９に示す転送順管理部６０は、例えばＦＩＦＯ構造を有しており、転送順通知部５４から通知される転送順情報を通知された順にＦＩＦＯ内にエントリする。図８の例の場合は、転送順情報として、「バンク＃０」、「バンク＃１」、「バンク＃０」、「バンク＃０」、「バンク＃３）」、「バンク＃２」、「バンク＃２）」、「バンク＃０」、「バンク＃０」、「バンク＃３）」、「バンク＃３」、「バンク＃３」、「バンク＃１」、「バンク＃０」、「バンク＃２」、「バンク＃３」が通知されるので、転送順情報をこの順にＦＩＦＯに記憶する。ＦＩＦＯに記憶された転送順情報（バンク番号）は、転送バンク指定情報としてＮＡＮＤコントローラ２０に順次出力され、ＮＡＮＤコントローラ２０は転送順管理部６０から入力された転送バンク指定情報に従ってＲＡＭ３へ転送すべきバンクを逐次選択する。ＮＡＮＤコントローラ２０は１つのリード命令に対応するデータ転送が終了する度に、自動転送管理部４０に転送完了通知を送信しており、転送順管理部６０は、転送完了通知が入力される度に、出力用のポインタを＋１し、＋１したポインタが指し示すＦＩＦＯ内のエントリに記憶されたバンク番号を転送バンク指定情報としてＮＡＮＤコントローラ２０に出力する。
【００３７】
つぎに、図１０〜図１２に従って自動転送管理部４０およびＮＡＮＤコントローラ２０によって行われるリード処理について説明する。図１０は、自動転送管理部４０のリード命令キュー管理部５０の動作手順を示すものであり、図１１は、自動転送管理部４０の転送順管理部６０の動作手順を示すものであり、図１２はＮＡＮＤコントローラ２０のＮＡＮＤメモリ２へのリード命令出力処理の動作手順を示すものであり、図１３はＮＡＮＤコントローラ２０のＮＡＮＤメモリ２からＲＡＭ３へのデータ転送の動作手順を示すものである。
【００３８】
リード命令キュー管理部５０のコマンド受付部５１はファームウェアからリードコマンドを受信した場合、受信したリードコマンドを受け付け（図１０ステップＳ１１０）、受け付けたリードコマンドを命令展開部５２に出力する。命令展開部５２は、リードコマンドを受信すると、図８に示すように、論物変換テーブルを参照して、リードコマンドをリードデータのＮＡＮＤメモリ２上の記憶位置に応じてページ単位以下のサイズに細分化した、ホスト１００から指定されるＬＢＡ順のリード命令列を作成する（ステップＳ１２０）。リード命令には、前述したように、転送モード、バンク番号、バンク内アドレスが含まれる。命令展開部５２は、作成したリード命令列をバンク展開部５３および転送順通知部５４に入力する。バンク展開部５３は、図８に示すように、命令展開部５２から入力される命令列を各バンクに対応する命令キューに振り分ける（ステップＳ１３０）。また、転送順通知部５４は、展開されたリード命令列に基づき上述した転送順情報を作成する（ステップＳ１３０）。転送順通知部５４は、作成した転送順情報を転送順管理部６０に通知する（ステップＳ１４０）。また、バンク展開部５３は、各命令キューに振り分けたリード命令を、図８に示すように、ＮＡＮＤコントローラ２０に出力する（ステップＳ１５０）。
【００３９】
一方、転送順管理部６０は、リード命令キュー管理部５０から転送順情報が通知されると、通知された転送順情報をＦＩＦＯに登録する（図１１ステップＳ２００、Ｓ２１０）。次に、転送順管理部６０は、ポインタを初期化し、ポインタが指し示すＦＩＦＯの登録データを転送バンク指定としてＮＡＮＤコントローラ２０に出力する（ステップＳ２２０）。その後、転送順管理部６０は、ＮＡＮＤコントローラ２０から転送終了通知を受信するまで待機する。転送順管理部６０は、ＮＡＮＤコントローラ２０から転送終了通知を受信すると（ステップＳ２３０、ＹＥＳ）、ポインタを＋１し（ステップＳ２４０）、つぎに、ポインタ値が転送順情報に含まれるバンク番号の最終エントリ値を越えたか否かを判定する（ステップＳ２５０）。ポインタ値が最終エントリ値を越えていない場合は、ポインタが指し示すＦＩＦＯの登録データを転送バンク指定としてＮＡＮＤコントローラ２０に出力する（ステップＳ２２０）。このようにして、ポインタ値が最終エントリ値を越えるまでは、転送終了通知を受信する度に、ポインタを＋１して、ポインタが指し示すＦＩＦＯの登録データを転送バンク指定としてＮＡＮＤコントローラ２０に逐次出力する。ポインタが最終エントリ値を越えたときは、処理手順をスタートにリターンし、再度同様の処理を実行する。
【００４０】
なお、図１１の場合は、便宜上、転送順情報に含まれるエントリ分の処理が終了した後、次の転送順情報の入力があったか否かを判定し、次の転送順情報の入力があった場合、次の転送順情報をＦＩＦＯに登録するようにしたが、転送順情報に含まれるエントリ分の処理が終了する前に、次の転送順情報が入力された場合は、その時点で、入力された次の転送順情報をＦＩＦＯに登録するようにしてもよい。
【００４１】
つぎに、図１２に従ってＮＡＮＤコントローラ２０によるＮＡＮＤメモリ２へのリード命令出力処理を説明する。ＮＡＮＤコントローラ２０では、リード命令キュー管理部５０のバンク展開部５３からバンク単位に振り分けたリード命令列を受信すると（ステップＳ３００）、調停部２５がリード命令列内のバンク番号を参照することにより受信した命令列を対応するバンクコントローラ（Ｂａｎｋ−Ｃ０〜Ｂａｎｋ−Ｃ３）２４に振り分ける。勿論、調停部２５とバンク展開部５３との間に図８に示したようなバンク対応の複数の信号線を設け、このバンク毎の信号線を使用することでどのバンクに対応するリード命令列であるかを調停部２５が判定できるようにしてもよい。ステップＳ３００において、リード命令列の受信がない場合は、手順をステップＳ３２０に移行する。
【００４２】
各バンクコントローラ２４では、入力されたリード命令列を各バンクコントローラ２４内の命令キューにセットする（ステップＳ３１０）。各バンクコントローラ２４では、次に、命令キューに未実行のリード命令があるか否かを判定し（ステップＳ３２０）、未実行のリード命令がある場合は、命令キューの先頭にあるリード命令を取り出し、取り出したリード命令を調停部２５に出力する。調停部２５は、ＮＡＮＤＩ／Ｆ２１及び各バンクコントローラ２４を監視し、各バンクコントローラ２４から入力されたリード命令についてのコントロールＩ／Ｏバスの使用権を所定の規則に従って調停し、各バンクコントローラ２４から入力されたリード命令を並列的に（正確には図１３あるいは図１４の「Ｃ」で示す命令フェーズのように順次）ＮＡＮＤＩ／Ｆ２１、コントロールＩ／Ｏバスを介してＮＡＮＤメモリ２に出力する。このとき、ＮＡＮＤＩ／Ｆ２１は、コントロールＩ／Ｏバスの使用権を与えるバンクに対するチップイネーブル信号ＣＥをアサートにする。このようにして所要の１〜複数のバンクにリード命令が順次出力される（ステップＳ３３０）。リード命令の出力後、手順はステップＳ３００に復帰される。そして、リード命令列をＮＡＮＤコントローラ２０から受信しながら、各バンクコントローラ２４の命令キューに未実行のリード命令が存在しなくなるまで、リード命令をＮＡＮＤメモリ２に出力する。バンクコントローラ２４の命令キューに未実行のリード命令が存在しなくなると、処理を終了する。
【００４３】
つぎに、図１３に従ってＮＡＮＤコントローラ２０によるＮＡＮＤメモリ２からＲＡＭ３へのデータ転送の動作手順を説明する。調停部２５は自動転送管理部４０から転送バンク指示が入力されたか否かを判定し（ステップＳ３４０）、転送バンク指示の入力がない場合は、転送バンク指示の入力待ちの状態となる。調停部２５は自動転送管理部４０から転送バンク指示を受信すると、Ｒｙ／Ｂｙ信号を調べることで転送バンク指示で指定されたバンクがレディかビジーかを判定する（ステップＳ３５０）。そして、調停部は、転送バンク指示で指定されたバンクがレディになったことを検出すると、そのバンクからＲＡＭ３へのデータ転送を実行させる（ステップＳ３６０）。具体的には、転送バンク指示で指定されたバンクのチップイネーブルＣＥなどの制御信号をアサートにしてコントロールＩ／Ｏバスを介してそのバンクからのデータをＮＡＮＤＩ／Ｆ２１に取込み、ＥＣＣ２２、ＤＭＡＣ２３を介してＲＡＭ３に転送する。転送されたデータは、ＲＡＭコントローラ３０によってＲＡＭ３に書き込まれる。
【００４４】
調停部２５は、このデータ転送が終了したことを検出すると（ステップＳ３７０）、転送終了通知を自動転送管理部４０に出力する（ステップＳ３８０）。自動転送管理部４０では入力された転送終了通知を受信すると、転送終了通知を転送順管理部６０およびリード命令キュー管理部５０のバンク展開部５３に入力する。転送順管理部６０では転送終了通知を受信すると、転送順管理部６０のＦＩＦＯのポインタを＋１する（図１１ステップ２３０、２４０参照）。リード命令キュー管理部５０のバンク展開部５３は、転送終了通知を受信すると、つぎにＮＡＮＤコントローラ２０に与えるべきリード命令列を、ＮＡＮＤコントローラ２０に出力する。例えば、図８に示す状態においては、バンク＃１に関しては、リード命令「Ｒ１−１」、「Ｒ１−３」、「Ｒ１−４」は既にＮＡＮＤコントローラ２０に出力済みなので、つぎのリード命令「Ｒ１−８」をＮＡＮＤコントローラ２０に出力する。
【００４５】
図１４は、図５（ｂ）に示した比較例の方式を用いた場合の別の例を示すものである。図１４の場合も、図５（ｂ）と同様、リード命令をＬＢＡ順序に従うことなく各バンクにほぼ並列的に投入し、レディ状態になったバンクから単純なラウンドロビン方式を用いた巡回の順番にしたがってデータ転送を行っている。この場合、ホスト１００から指定されたリードデータのＬＢＡは、ＬＢＡ＃０、ＬＢＡ＃１、ＬＢＡ＃２、ＬＢＡ＃３、ＬＢＡ＃４、ＬＢＡ＃５、ＬＢＡ＃６であるとし、この順番にホスト１００にリードデータを転送する必要があるとする。また、ＬＢＡ＃０のデータはバンク＃０に格納され、ＬＢＡ＃１のデータはバンク＃０に格納され、ＬＢＡ＃２のデータはバンク＃１に格納され、ＬＢＡ＃３のデータはバンク＃２に格納され、ＬＢＡ＃４のデータはバンク＃０に格納され、ＬＢＡ＃５のデータはバンク＃３に格納され、ＬＢＡ＃６のデータはバンク＃１に格納されているとする。丸で囲まれたＣは、図５に示した命令フェーズを示している。
【００４６】
図１４に示す方式では、ＮＡＮＤメモリ２からＲＡＭ３に転送されるデータは、ＬＢＡ論理アドレス順になっていないので、ＲＡＭ３でデータの並び替えを行い、並べ替え後のデータをホスト１００に転送している。図１４において、バンク＃０に関しては、時点ｔ１でビジーが解除されレディとなっているが、ラウンドロビンの巡回方式に従うため、その後、バンク＃２でのＬＢＡ＃３のデータ転送と、バンク＃３でのＬＢＡ＃５のデータ転送を行った後、バンク＃０でのＬＢＡ＃１のデータ転送を行っており、本来不要な待ち時間Ｔｄが発生している。
【００４７】
図１５は、図５（ｃ）に示した本実施の形態の方式を用いた場合の別の例を示すものである。ＬＢＡとバンクとの対応は、図１４と同様である。図１５の上部に示すように、図２に示すＢａｎｋ−Ｃ０の命令キューには、ＬＢＡ＃０、ＬＢＡ＃１、ＬＢＡ＃４の各リード命令が格納され、Ｂａｎｋ−Ｃ１の命令キューには、ＬＢＡ＃２、ＬＢＡ＃６の各リード命令が格納され、Ｂａｎｋ−Ｃ２の命令キューには、ＬＢＡ＃３のリード命令が格納され、Ｂａｎｋ−Ｃ３の命令キューには、ＬＢＡ＃５のリード命令が格納されることになる。
【００４８】
本実施の形態の方式では、Ｂａｎｋ−Ｃ０〜Ｂａｎｋ−Ｃ３の各命令キューの先頭にセットされているリード命令（ＬＢＡ＃０、ＬＢＡ＃２、ＬＢＡ＃３、ＬＢＡ＃５）を順次取り出して、これらをＮＡＮＤメモリ２の各バンク＃０〜＃３に一斉に投入する。図１５の場合は、ＬＢＡにしたがったデータの転送順（バンク＃０→バンク＃１→バンク＃２→バンク＃３）に４つのバンクへリード命令を順次投入するようにしたが、この命令フェーズでの時間差はごく僅かであり、データの転送順に関係なく所定の順番で４つのバンクにリード命令を投入するようにしてもよい。
【００４９】
この場合、転送順管理部６０から最初に入力される転送バンク指定はバンク＃０であるので、調停部２５は、４つのバンクへリード命令の投入後、バンク＃０のビジーが解除されているか否かを判定し、ビジーが解除されていたらバンク＃０からＬＢＡ＃０のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。このデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ０に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ０に未実行命令があるのでつぎのリード命令（ＬＢＡ＃１）を取り出して、これをＮＡＮＤメモリ２のバンク＃０に投入する。また、転送順管理部６０から入力される転送バンク指定は再びバンク＃０であるので、調停部２５は、バンク＃０のビジーが解除されたか否かを判定し、ビジーが解除されたらバンク＃０からＬＢＡ＃１のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。そして、ＬＢＡ＃１のデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ０に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ０に未実行命令があるのでつぎのリード命令（ＬＢＡ＃４）を取り出して、これをＮＡＮＤメモリ２のバンク＃０に投入する。
【００５０】
つぎに転送順管理部６０から入力される転送バンク指定はバンク＃１であるので、調停部２５は、バンク＃１のビジーが解除されたか否かを判定し、ビジーが解除されたらバンク＃１からＬＢＡ＃２のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。このデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ１に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ１に未実行命令があるのでつぎのリード命令（ＬＢＡ＃６）を取り出して、これをＮＡＮＤメモリ２のバンク＃１に投入する。
【００５１】
つぎに転送順管理部６０から入力される転送バンク指定はバンク＃２であるので、調停部２５は、バンク＃２のビジーが解除されたか否かを判定し、ビジーが解除されたらバンク＃２からＬＢＡ＃３のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。このデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ２に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ２に未実行命令がないので、Ｂａｎｋ−Ｃ２からはリード命令を投入しない。
【００５２】
つぎに転送順管理部６０から入力される転送バンク指定はバンク＃０であるので、調停部２５は、バンク＃０のビジーが解除されたか否かを判定し、ビジーが解除されたらバンク＃０からＬＢＡ＃４のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。このデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ０に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ０に未実行命令がないので、Ｂａｎｋ−Ｃ０からはリード命令を投入しない。
【００５３】
つぎに転送順管理部６０から入力される転送バンク指定はバンク＃３であるので、調停部２５は、バンク＃３のビジーが解除されたか否かを判定し、ビジーが解除されたらバンク＃３からＬＢＡ＃５のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。このデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ３に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ３に未実行命令がないので、Ｂａｎｋ−Ｃ３からはリード命令を投入しない。
【００５４】
つぎに転送順管理部６０から入力される転送バンク指定はバンク＃１であるので、調停部２５は、バンク＃１のビジーが解除されたか否かを判定し、ビジーが解除されたらバンク＃１からＬＢＡ＃６のデータの転送を実行し、転送終了通知を自動転送管理部４０に出力する。このデータ転送の実行直後、調停部２５は、Ｂａｎｋ−Ｃ１に未実行命令があるか否かを判定する。この場合はＢａｎｋ−Ｃ１に未実行命令がないので、Ｂａｎｋ−Ｃ１からはリード命令を投入しない。
【００５５】
図１５に示す実施形態の方式では、ＬＢＡ論理アドレス順にデータ転送を行うので、図１５において、図１４と同様の時点ｔ１において、バンク＃０でのＬＢＡ＃１のデータ転送が発生しており、図１４の場合に発生した待ち時間Ｔｄは存在しない。このように、本実施の形態の方式では、ＮＡＮＤメモリ２からＲＡＭ３へのデータ転送をＬＢＡ論理アドレス順に行うことで、別バンクの処理によるオーバーヘッドを抑制して、特にランダムリードのデータ転送効率を向上させるとともに、ＲＡＭ３に並べ替えのための大きな記憶領域を確保する必要をなくしている。
【００５６】
本実施の形態では、前述したように、論理アドレスと物理アドレスとの関係がデータの書込み時に動的に関係付けられる論物変換方式が採用されており、データのＮＡＮＤメモリ２上の記憶位置は分散されていることが多い。したがって、ＮＡＮＤメモリ２からのデータリードは、分散された記憶位置から逐次データを読み出すランダムリードになることが多い。本実施形態の方式は、別バンクの処理によるオーバーヘッドが抑制されるので、ランダムリードの際に、図１４に示した比較例に比べ優れたデータ転送性能を得ることが可能となる。
【００５７】
以上説明したように第１の実施の形態においては、リードコマンドをリードコマンドが指定するデータの記憶位置に応じて、リードコマンドが指定する論理アドレス順に、ＮＡＮコントローラでの読み出し単位以下のサイズに展開したリード命令列を作成し、作成したリード命令列をリード命令が指定するデータの複数のバンクに関する記憶位置に応じてバンク毎のリード命令列に展開したバンク単位リード命令列を作成し、作成したバンク単位リード命令列をＮＡＮＤコントローラに出力するとともに、論理アドレス順のリード命令列およびリード命令が指定するデータの複数のバンクに関する記憶位置に基づきリードコマンドが指定する論理アドレス順にしたがったバンクからの転送順を示す転送順情報を作成し、作成した転送順情報にしたがってＮＡＮＤコントローラを制御して転送順情報にしたがった複数のバンクからのリードアウトを実行させるようにしているので、並べ替えのための大きな記憶領域を確保することなく、データリードの際の転送効率を向上させ、特にランダムリードの際の転送速度が向上する。
【００５８】
なお、上記ではバンクを切り替え制御の対象としたが、バスに共通に接続されて夫々独立に動作可能な複数の記憶領域であれば、バンクに限らず他の任意のメモリセルの集合単位を本実施の形態が適用される切り替え制御の対象としてもよい。また、本実施の形態の方式によれば、データ並べ替えのためのＲＡＭ３が不要になるので、データリードの際の中間バッファとしてのＲＡＭの存在をなくしてもよい。
【００５９】
（第２の実施の形態）
図１６は、第２の実施の形態にかかるメモリシステムに適用されるＮＡＮＤメモリ２の構成例を示すものである。この第２の実施の形態では、ＮＡＮＤメモリ２は複数個のチャネル並列動作要素２−０〜２−３によって構成されており、これら複数のチャネル並列動作要素２−０〜２−３とＮＡＮＤコントローラ２０とを複数のチャネルｃｈ０〜ｃｈ３によって接続している。各チャネルｃｈ０〜ｃｈ３毎に、コントロールＩ／Ｏとチップイネーブル信号ＣＥ０−３を各別に有している。各チャネル並列動作要素２−０〜２−３は、複数のバンク（図１６では４バンク、Ｂａｎｋ＃０〜Ｂａｎｋ＃３）によって構成されており、各チャネル並列動作要素２−０〜２−３内の各々のバンクは、複数のメモリチップ（図１６では、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。
【００６０】
図１６では、複数のチャネルを跨ってバンクを構成しており、各々のバンクは独立して書き込み／読み出し／消去動作を行うことが可能である。同一バンクはレディ／ビジー信号（ＲｙＢｙ）を共有し、レディ／ビジー信号（ＲｙＢｙ）を共有する各チャネルのメモリチップが同時に動作するように制御が行われている。このような複数のチャネルを有するＮＡＮＤメモリの場合でも、第１の実施の形態で説明したリード制御を適用するようにしてもよい。
【００６１】
（第３の実施の形態）
図１７は、ＳＳＤ２００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【００６２】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００６３】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００６４】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００６５】
図１８は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【００６６】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００６７】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００６８】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００６９】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス１３１４等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００７０】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【００７１】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００７２】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【００７３】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【００７４】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【００７５】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【００７６】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００７７】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【００７８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７９】
１  データ転送装置、２  ＮＡＮＤメモリ、３  ＲＡＭ、１０  ＡＴＡコントローラ、２０  ＮＡＮＤコントローラ、２４バンクコントローラ、２５  調停部、３０  ＲＡＭコントローラ、５０  リード命令キュー管理部、５１  コマンド受付部、５２  命令展開部、５３バンク展開部、５４  転送順通知部、６０  転送順管理部、１００  ホスト装置。
【図１】
2012068936.tif 000003
【図２】
2012068936.tif 000004
【図３】
2012068936.tif 000005
【図４】
2012068936.tif 000006
【図５】
2012068936.tif 000007
【図６】
2012068936.tif 000008
【図７】
2012068936.tif 000009
【図８】
2012068936.tif 000010
【図９】
2012068936.tif 000011
【図１０】
2012068936.tif 000012
【図１１】
2012068936.tif 000013
【図１２】
2012068936.tif 000014
【図１３】
2012068936.tif 000015
【図１４】
2012068936.tif 000016
【図１５】
2012068936.tif 000017
【図１６】
2012068936.tif 000018
【図１７】
2012068936.tif 000019
【図１８】
2012068936.tif 000020