(57)【要約】【課題】ホスト装置からのリード要求に対する応答を効率的に実行すること。【解決手段】データ転送装置は、ホスト装置からリード要求されたデータを不揮発性メモリから読み出すための前記不揮発性メモリに対する命令を生成する第１命令生成部と、一時メモリと前記不揮発性メモリとを用いた内部処理にかかる、前記不揮発性メモリに対する命令を生成する第２命令生成部と、前記第１命令生成部が生成した命令を一時記憶するキュー構造の第１記憶部と、前記第２命令生成部が生成した命令を一時記憶するキュー構造の第２記憶部と、前記第１記憶部が記憶している命令を前記第２記憶部が記憶している命令よりも優先して読み出して、当該読み出した命令を前記不揮発性メモリに送信する不揮発性メモリ管理部と、を備えている。【選択図】図１２
2012234363.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
一時メモリと、
前記一時メモリをバッファとして用いてホスト装置と前記不揮発性メモリとの間のデータ転送を実行するデータ転送装置と、
を備え、
前記データ転送装置は、
前記ホスト装置からリード要求されたデータを前記不揮発性メモリから読み出すための前記不揮発性メモリに対する命令を生成する第１命令生成部と、
前記一時メモリと前記不揮発性メモリとを用いた内部処理にかかる、前記不揮発性メモリに対する命令を生成する第２命令生成部と、
前記第１命令生成部が生成した命令を一時記憶するキュー構造の第１記憶部と、
前記第２命令生成部が生成した命令を一時記憶するキュー構造の第２記憶部と、
前記第１記憶部が記憶している命令を前記第２記憶部が記憶している命令よりも優先して読み出して、当該読み出した命令を前記不揮発性メモリに送信する不揮発性メモリ管理部と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記内部処理は、前記一時メモリにバッファされている前記ホスト装置からライト要求されたデータを前記不揮発性メモリに書き込む処理である、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記内部処理は、前記一時メモリをワークエリアとして前記不揮発性メモリの記憶内容を整理する処理である、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記内部処理は、前記一時メモリに前記ホスト装置からリード／ライト要求される論理アドレスと前記不揮発性メモリの物理アドレスを対応付けるアドレス変換テーブルをロードする処理と、前記一時メモリにロードされているアドレス変換テーブルを前記不揮発性メモリにストアする処理と、である、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記第２命令生成部は、次の命令を連続して実行する必要があるか否かを示す連続実行情報を前記生成した命令の夫々に対応付けておき、
前記不揮発性メモリ管理部は、前記第２記憶部が記憶している命令を順次前記不揮発性メモリ管理部に送信している際に前記第１記憶部に命令が登録されたとき、前記不揮発性メモリに送信する命令の読み出し元を前記第２記憶部から前記第１記憶部に切り替えるタイミングを前記第２記憶部が記憶している命令に対応付けられた連続実行情報に基づいて決定する、
ことを特徴とする請求項１乃至請求項４のうちの何れか一項に記載のメモリシステム。
【請求項６】
前記第２命令生成部は、連続して生成した１以上の命令群に、当該命令群に含まれる命令の連続した実行を中断する際に所定の後処理を実行する必要があるか否かを示す中断処理情報を対応付けておき、
前記不揮発性メモリ管理部は、前記不揮発性メモリに送信する命令の読み出し元を前記第２記憶部から前記第１記憶部に切り替える際、連続した実行が当該切り替えによって中断される命令群に前記後処理を必要とする旨の中断処理情報が対応付けられているとき、前記第１記憶部が記憶している命令を送信する前に前記後処理を実行させる命令を送信する、
ことを特徴とする請求項５に記載のメモリシステム。
【請求項７】
前記不揮発性メモリ管理部は、前記第１記憶部が記憶している命令を全て実行完了した後、前記不揮発性メモリに送信する命令の読み出し元を前記第１記憶部から前記第２記憶部に切り替える、
ことを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記不揮発性メモリ管理部は、前記不揮発性メモリに送信する命令の読み出し元を前記第１記憶部から前記第２記憶部に切り替える際、所定の前処理を実行させる命令を前記不揮発性メモリに送信する、
ことを特徴とする請求項７に記載のメモリシステム。
【請求項９】
前記データ転送装置は、
前記不揮発性メモリに送信した命令の実行エラーを検出する実行エラー検出部と、
前記実行エラー検出部が実行エラーを検出したとき、前記検出された実行エラーに対応するエラー処理にかかる、前記不揮発性メモリに対する命令を生成する第３命令生成部と、
前記第３命令生成部が生成した命令を一時記憶するキュー構造の第３記憶部と、
をさらに備え、
前記不揮発性メモリ管理部は、前記第３記憶部に命令が格納されたとき、前記不揮発性メモリに送信する命令の読み出し元を前記第１記憶部または前記第２記憶部から前記第３記憶部に切り替える、
ことを特徴とする請求項１乃至請求項４のうちの何れか一項に記載のメモリシステム。
【請求項１０】
前記内部処理は、前記エラー処理にかかる前記不揮発性メモリへのライト処理またはリード処理である、
ことを特徴とする請求項９に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型フラッシュメモリ（以降、単にＮＡＮＤメモリという）などの不揮発性半導体メモリを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２６３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ホスト装置からのリード要求に対する応答を効率的に実行するメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、不揮発性メモリと、一時メモリと、前記一時メモリをバッファとして用いてホスト装置と前記不揮発性メモリとの間のデータ転送を実行するデータ転送装置と、を備えている。前記データ転送装置は、前記ホスト装置からリード要求されたデータを前記不揮発性メモリから読み出すための前記不揮発性メモリに対する命令を生成する第１命令生成部と、前記一時メモリと前記不揮発性メモリとを用いた内部処理にかかる、前記不揮発性メモリに対する命令を生成する第２命令生成部と、前記第１命令生成部が生成した命令を一時記憶するキュー構造の第１記憶部と、前記第２命令生成部が生成した命令を一時記憶するキュー構造の第２記憶部と、前記第１記憶部が記憶している命令を前記第２記憶部が記憶している命令よりも優先して読み出して、当該読み出した命令を前記不揮発性メモリに送信する不揮発性メモリ管理部と、を備えている。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態のメモリシステムを適用したＳＳＤの構成を説明する図である。
【図２】図２は、ＲＡＭのメモリ構造を説明する図である。
【図３】図３は、メモリチップの構成を説明する図である。
【図４−１】図４−１は、メモリチップへの連続ライト処理を説明するタイミングチャートである。
【図４−２】図４−２は、メモリチップへの連続ライト処理を説明するタイミングチャートである。
【図５】図５は、標準ライトにかかるＮＡＮＤＣ用ディスクリプタを構成する各エントリのデータ構成例を説明する図である。
【図６】図６は、標準ライトにかかるＮＡＮＤＣ用ディスクリプタのデータ構造の具体例を説明する図である。
【図７】図７は、後処理用ディスクリプタのデータ構造の具体例を説明する図である。
【図８】図８は、前処理用ディスクリプタのデータ構造の具体例を説明する図である。
【図９】図９は、標準キューに登録される参照データのデータ構造例を示す図である。
【図１０】図１０は、優先キューに登録される参照データのデータ構造例を示す図である。
【図１１】図１１は、自動転送管理部の構成を説明するブロック図である。
【図１２】図１２は、ＮＡＮＤキュー制御部の内部構成を説明する図である。
【図１３】図１３は、優先キューにパックが登録される動作を説明するフローチャートである。
【図１４】図１４は、標準キューにパックが登録される動作を説明するフローチャートである。
【図１５】図１５は、投入管理部の動作を説明するフローチャートである。
【図１６】図１６は、ＮＡＮＤＣ制御部の動作を説明するフローチャートである。
【図１７−１】図１７−１は、キュー管理部によるパックの進捗管理の動作を説明するフローチャートである。
【図１７−２】図１７−２は、キュー管理部によるパックの進捗管理の動作を説明するフローチャートである。
【図１７−３】図１７−３は、キュー管理部によるパックの進捗管理の動作を説明するフローチャートである。
【図１８】図１８は、キュー管理部によるキューの切り替え動作を説明するフローチャートである。
【図１９】図１９は、２つのプレーンに対して連続ライト処理を実行するためのＮＡＮＤＣ用ディスクリプタのデータ構造の具体例を示す図である。
【図２０】図２０は、２つのプレーンに対して連続ライト処理を実行する場合に用いられる後処理用ディスクリプタのデータ構造の具体例を示す図である。
【図２１】図２１は、第２の実施形態のメモリシステムを適用したＳＳＤの構成を説明する図である。
【図２２】図２２は、ＲＡＭのメモリ構造を説明する図である。
【図２３】図２３は、第２の実施形態のＮＡＮＤキュー制御部の内部構成を説明する。
【図２４】図２４は、第２の実施形態のＳＳＤのエラー処理にかかる動作を説明するフローチャートである。
【図２５】図２５は、第１の実施形態のＳＳＤを搭載したパーソナルコンピュータの一例を示す斜視図である。
【図２６】図２６は、第１の実施形態のＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。また、以下の説明においては、本発明の実施形態のメモリシステムをＳＳＤに適用した例を説明するが、本発明の実施形態のメモリシステムの適用対象はＳＳＤだけに限定されない。即ち、不揮発性半導体メモリおよび当該不揮発性半導体メモリを制御するコントローラを含むメモリシステム一般について本発明の実施形態を適用することが可能である。また、メモリシステムはホスト装置内部に取り外し不可能な態様で実装されていてもよいし、メモリカードの様にホスト装置に対して着脱可能なリムーバブルデバイスであってもよい。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムを適用したＳＳＤの構成を説明する図である。ＳＳＤ２００は、パーソナルコンピュータなどのホスト装置（以下ホストともいう）１００とＳＡＴＡ（Serial  Advanced  Technology  Attachment）規格の通信インタフェースで接続され、ホスト装置１００の外部記憶装置として機能する。ＳＳＤ２００がホスト装置１００から受信するリード／ライト要求は、ＬＢＡ（Logical  Block  Addressing）で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、通信インタフェースはＳＡＴA規格に限らず、ＳＡＳ（Serial  Attached  SCSI）、ＰＣＩｅ（PCI  Express）など様々な通信インタフェース規格を採用することが可能である。
【０００９】
ＳＳＤ２００は、データ転送装置１と、ＮＡＮＤメモリ２と、ＲＡＭ３と、を備えている。データ転送装置１と、ＮＡＮＤメモリ２と、ＲＡＭ３とは、例えば共通の基板上にそれぞれ独立したチップとして配置されている。なお、ＲＡＭ３はデータ転送装置１に混載されていてもよい。
【００１０】
データ転送装置１は、ＳＡＴＡ  Ｉ／Ｆの制御およびホスト装置１００とＲＡＭ３との間のデータ転送を実行するＳＡＴＡインタフェースコントローラ（ＳＡＴＡＣ）１０と、ＲＡＭ３に対するデータのライト／リードを制御するＲＡＭコントローラ（ＲＡＭＣ）３０と、ＮＡＮＤメモリ２とＲＡＭ３との間のデータ転送を実行するＮＡＮＤコントローラ（ＮＡＮＤＣ）２０と、ＳＡＴＡＣ３０およびＮＡＮＤＣ２０の夫々にデータ転送を実行させるタイミングを制御する自動転送管理部４０と、ファームウェアに基づいてデータ転送装置１の制御を実行するＭＰＵ５０と、を備えている。ＭＰＵ５０は、データ転送装置１の制御の一環として、特に、ＳＳＤ２００の内部処理にかかるデータ転送を実行するためのＮＡＮＤメモリ２に対する命令を生成する第２命令生成部として機能する。内部処理にかかるデータ転送の具体例は後ほど説明する。ＳＡＴＡＣ１０、ＮＡＮＤＣ２０、ＲＡＭＣ３０、自動転送管理部４０およびＭＰＵ５０はバス接続されている。
【００１１】
ＲＡＭ３は、例えばＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＲＡＭ（Static  Random  Access  Memory）、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）などの、ＮＡＮＤメモリ２よりも高速動作する揮発性あるいは不揮発性のランダムアクセス可能な記憶装置で構成される。図２は、ＲＡＭ３のメモリ構造を説明する図である。図示するように、ＲＡＭ３は、ＬＢＡとＮＡＮＤメモリ２の物理アドレスとの対応関係を記述したアドレス変換テーブル等がロードされるワークエリア３１と、ホスト装置１００からライト要求されたデータをキャッシュするライトキャッシュ領域３２と、ホスト装置１００からリード要求され、ＮＡＮＤメモリ２から読み出されたデータを一時記憶するリードバッファ領域３３と、ＳＡＴＡＣ用ディスクリプタ３５、ＮＡＮＤＣ用ディスクリプタ３６、後処理用ディスクリプタ３７、および前処理用ディスクリプタ３８が格納されるディスクリプタ格納領域３４と、を備えている。ディスクリプタ格納領域３４に格納される各ディスクリプタの詳細は後述する。
【００１２】
ＮＡＮＤメモリ２は、ホスト装置１００からのライトデータを記憶したり、ワークエリア３１にロードされているアドレス変換テーブルのバックアップデータや差分データを記憶したりする。ＮＡＮＤメモリ２は、１以上のメモリチップにより構成される。ＮＡＮＤメモリ２が複数のメモリチップで構成される場合、複数のメモリチップを並列駆動することで高速動作を実現する事が可能である。ＮＡＮＤメモリ２は、１つのメモリセルに１ビットを記憶する二値メモリ（SLC:  Single  Level  Cell）であってもよいし、１つのメモリセルに２ビット以上を記憶する多値メモリ（MLC:  Multi  Level  Cell）であってもよい。以下、ＮＡＮＤメモリ２は多値メモリであるとして説明する。
【００１３】
図３は、メモリチップの構成を説明する図である。図示するように、メモリチップ２１は、データキャッシュ２２、ページバッファ２３、およびメモリセルアレイ２４を備えている。メモリセルアレイ２４は、複数のメモリセルがマトリクス状に配列されて構成されており、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。また、メモリセルアレイ２４は、イレースの単位である物理ブロックを複数備えており、個々の物理ブロックは、リードおよびライトの単位である物理ページ（以降、単にページ）を複数備えて構成されている。
【００１４】
データキャッシュ２２およびページバッファ２３は、例えば１ページ分の記憶容量を備えている。データキャッシュ２２は、メモリチップ２１がＮＡＮＤＣ２０との間でデータを送受信するためのバッファとして使用され、ページバッファ２３は、メモリチップ２１がデータをメモリセルアレイ２４に入出力するためのバッファとして使用される。具体的には、ライト処理時には、メモリチップ２１は、ＮＡＮＤＣ２０から送られてきたライトデータをデータキャッシュ２２に受信して、受信したライトデータをページバッファ２３にコピーする。そして、ページバッファ２３に格納されたライトデータをメモリセルアレイ２４にプログラムする。プログラムの際には、メモリチップ２１は、プログラムされたライトデータとページバッファ２３に格納されているライトデータとを比較して、正しくプログラムされたか否かをベリファイする。リード処理時には、メモリチップ２１は、メモリセルアレイ２４からページバッファ２３に対象のデータを読み出して、ページバッファ２３に格納されたリードデータをデータキャッシュ２２にコピーする。データキャッシュ２２に格納されたリードデータは、データ出力信号（例えばＲＥ信号）によりＮＡＮＤＣ２０に送られる。
【００１５】
ここで、ＳＳＤ２００が実行するデータ転送シーケンスは、次の４つに分類される。
（１）ホスト装置１００からリード要求されたデータをＮＡＮＤメモリ２からリードバッファ領域３３に読み出して、リードバッファ領域３３に読み出したデータをホスト装置１００へ送信するデータ転送。
（２）ホスト装置１００からライト要求されて送られてきたデータをライトキャッシュ領域３２に書き込むデータ転送。
（３）内部処理にかかるＮＡＮＤメモリ２からＲＡＭ３へのデータ転送。アドレス変換テーブルをワークエリア３１にロードする動作や、ＮＡＮＤメモリ２に格納されているデータをＬＢＡ順に並べなおしたり、空きブロックを生成したりする際に、ＮＡＮＤメモリ２の記憶内容をいったんワークエリア３１に読み出したりする動作がこのデータ転送に該当する。
（４）内部処理にかかるＲＡＭ３からＮＡＮＤメモリ２へのデータ転送。ライトキャッシュ領域３２にキャッシュされているライトデータをＮＡＮＤメモリ２に退避させる動作や、アドレス変換テーブルをバックアップする動作や、アドレス変換テーブルの差分をＮＡＮＤメモリ２に記録する動作や、ＮＡＮＤメモリ２に格納されているデータをＬＢＡ順に並べなおしたり、空きブロックを生成したりする際にワークエリア３１に読み出したデータをＮＡＮＤメモリ２に書き戻す動作がこのデータ転送に該当する。
【００１６】
本発明の実施形態１によれば、ＳＳＤ２００は、ホスト装置１００に対する応答速度を向上させるために、ホスト装置１００との間でデータの送受信を伴う（１）および（２）にかかるデータ転送を、ＳＳＤ２００内部でのみデータの送受信を行う（３）および（４）にかかるデータ転送よりも優先して実行する。そのための構成として、ＳＳＤ２００は、ＮＡＮＤメモリ２に送信する命令のうちの（１）にかかるデータ転送を実行するための命令をキューイングする優先キュー６１と（３）および（４）にかかるデータ転送を実行するための命令をキューイングする標準キュー６２とを備えている。そして、ＳＳＤ２００は、優先キュー６１に命令が登録された際、実行対象とするキューを標準キュー６２から優先キュー６１に切り替える。以降、（１）、（２）、（３）、（４）にかかるデータ転送を、夫々、優先リード、優先ライト、標準リード、標準ライトと表記する。
【００１７】
メモリチップ２１は、ライトデータの受信とライトデータのプログラムとを並行して実行することで複数ページの連続ライトを高速化することができる。図４−１および図４−２は、メモリチップ２１への連続ライト処理を説明するタイミングチャートである。図４−１および図４−２の上段に示すタイミングチャートはメモリチップ２１のＩ／Ｏピンの状態、中段に示すタイミングチャートはデータキャッシュ２２の状態、下段に示すタイミングチャートはページバッファ２３の状態を夫々示す。なお、ここでは、ｎページ分のライトデータが連続ライトされるものとしている。
【００１８】
図４−１に示すように、メモリチップ２１は、まず、Ｉ／Ｏピンからリセット命令（ＦＦｈ）が入力される。１ページ目のライト命令を受信する。その後、ページ毎のライト命令とステータスリード命令（７０ｈ）とを交互に受信する。ページ毎のライト命令は、ライト予告命令（８０ｈ）、書き込み先アドレス（Ａｄｄｒ）、ライトデータ（Ｄａｔａ）、および書き込み開始命令（１５ｈ）により構成されている。メモリチップ２１は、当該ライト命令により送られてきたｉ（１≦ｉ≦ｎ）ページ目のライトデータをデータキャッシュ２２に受信する。そして、書き込み開始命令（１５ｈ）を受信すると、メモリチップ２１は、データキャッシュ２２に格納されているライトデータをページバッファ２３にコピーする。当該コピーが行われている間、データキャッシュ２２の状態はビジー状態となる。続いて、メモリチップ２１は、データキャッシュ２２からページバッファ２３にコピーされたライトデータをメモリセルアレイ２４にプログラムする。プログラム後には、メモリセルアレイ２４にプログラムされたライトデータのベリファイを実行する。プログラムおよびベリファイが行われている間、ページバッファ２３の状態はビジー状態となる。以降、プログラムとベリファイとからなる動作を単にプログラムと表記することとする。
【００１９】
一方、メモリチップ２１は、データキャッシュ２２の状態をＲＹ／ＢＹピンに出力する。ＲＹ／ＢＹピンがレディー状態となったとき、即ちデータキャッシュ２２からページバッファ２３へのコピーが完了したとき、ＲＹ／ＢＹピンがレディー状態になったことを検知したＮＡＮＤＣ２０から、ステータスリード命令（７０ｈ）が入力される。メモリチップ２１は、ステータスリード命令（７０ｈ）を受信すると、ステータス情報（Ｓｔａｔｕｓ）を出力する。メモリチップ２１はｉページ目のライトデータにかかるライト命令の後にステータスリード命令を受信すると、ステータス情報として、ｉページ目およびｉ−１ページ目のライトデータにかかるプログラミングが夫々成功したか否かを出力する。メモリチップ２１は、図示するタイミングでステータスリード命令（７０ｈ）を受信した場合、例えば、ｉ−１ページ目はプログラムが成功し、ｉページ目は無効（プログラム中）である旨のステータス情報を出力する。ＮＡＮＤＣ２０は、ｉ−１ページ目のプログラムが成功した旨のステータス情報を受信すると、ｉ＋１ページ目のライト命令を送信する。
【００２０】
このように、連続ライト処理を実行すると、ｉページ目のライトデータのプログラミングと、ｉ＋１ページ目のライト命令の送受信とが同時に実行されるため、プログラムにかかる時間が隠ぺいされ、結果としてデータのプログラム効率が向上する。
【００２１】
ＮＡＮＤＣ２０は、連続ライト処理の後に別の処理（例えばリード処理）を実行する場合、当該別の処理にかかる命令の送信を最終に送信したライトデータのプログラムが完了するまで待機する必要がある。そこで、ＮＡＮＤＣ２０は、図４−２に示すように、ｎページ目のライト命令を送信して、ＲＹ／ＢＹ信号がレディー状態になった直後に、ステータスリード命令を送信するが、その後さらに、ｎページ目のライトデータのプログラムが成功した旨のステータス情報が得られるまでステータスリード命令を繰り返し送信する。以降、最後に送信したライトデータのプログラムが成功した旨のステータス情報が得られるまでステータスリード命令を繰り返し送信する動作をステータスポーリングと表記し、ステータスポーリングのためのステータスリード命令を特にステータスポーリング命令と表記することとする。
【００２２】
この連続ライト処理は、標準ライトのうちの１つとして実行される。連続ライト処理は、メモリセルアレイ２４にプログラムが完了する前に次のページのライト命令を送信するようになっているため、連続ライト処理を構成する一連の命令の実行を中断して別の処理にかかる命令を実行したい場合、中断の直前にＮＡＮＤメモリ２に送信したライトデータがメモリセルアレイ２４にプログラムされるまで待つ必要がある。そこで、ＳＳＤ２００は、連続ライト処理を中断する場合に、後処理としてステータスポーリング命令をＮＡＮＤメモリ２に実行させ、中断の直前に送信したライトデータのプログラムが完了するまで優先キュー６１にかかる命令の送信を待機する。また、中断した連続ライト処理にかかる命令の送信を再開するとき、前処理としてリセット命令をＮＡＮＤメモリ２に実行させ、データキャッシュ２２およびページバッファ２３の記憶内容をリセットする。
【００２３】
なお、標準キュー６２および優先キュー６１の夫々に登録される命令の実体は、ディスクリプタ格納領域３４に格納されているＮＡＮＤＣ用ディスクリプタ３６を構成するエントリに記述されており、標準キュー６２および優先キュー６１には、ＮＡＮＤＣ用ディスクリプタ３６内の対応するエントリを参照するための変数が記述されたデータ（以降、参照データ）が登録される。また、後処理および前処理にかかる命令の実体は、夫々、後処理用ディスクリプタ３７、前処理用ディスクリプタ３８として予めディスクリプタ格納領域３４にロードされる。
【００２４】
図５は、標準ライトにかかるＮＡＮＤＣ用ディスクリプタ３６を構成する各エントリのデータ構成例を説明する図である。ＮＡＮＤＣ用ディスクリプタ３６を構成する夫々のエントリは、ＮＡＮＤメモリ２に送信される命令が記述される命令フィールドと、連続投入指示フラグとを備えている。連続投入指示フラグは、後段のエントリにかかる命令を必ず連続して実行する必要があるかまたは中断することが可能であるかを示す。なお、複数の命令に対して１つのエントリを作成することも可能である。ここでは、ページ毎のライト命令を構成する複数の命令（８０ｈ、Ａｄｄｒ、Ｄａｔａ、１１ｈ）は１つのエントリで記述され、リセット命令（ＦＦｈ）やステータスリード命令（７０ｈ）は夫々１つのエントリで記述されるものとする。
【００２５】
図６は、標準ライトにかかるＮＡＮＤＣ用ディスクリプタ３６のデータ構造の具体例を説明する図である。本図に示す例は、図３に示した連続ライト処理を実行するための一連の命令に対応している。即ち、この例によれば、ＮＡＮＤＣ用ディスクリプタ３６は、上段から、リセット命令（ＦＦｈ）を記述したエントリと、１ページ目のライト命令を記述したエントリと、２ページ目以降に関するページ毎のライト命令を記述したエントリおよびステータスリード命令（７０ｈ）の繰り返しと、ステータスポーリング命令（７０ｈ）を記述したエントリとを備えて構成されている。そして、１ページ目を除くページ毎のライト命令の連続投入指示フラグの値は、後段のエントリにかかる命令を連続して実行する必要がある旨の「１」であり、ステータスリード命令（７０ｈ）、１ページ目のライト命令およびステータスポーリング命令（７０ｈ）の連続投入指示フラグの値は、連続した命令の実行を中断することが可能である旨の「０」となっている。
【００２６】
なお、ＮＡＮＤＣ２０によるＮＡＮＤメモリ２とＲＡＭ３との間のデータ転送は、標準ライト実行時、標準リード実行時、および優先リード実行時に実行される。ＮＡＮＤメモリ２に関し、標準リードはＮＡＮＤメモリ２にプログラムする処理を含まないため、後処理を必要とすることなく中断することができる。また、優先リードの実行中はキューの切り替えが実行されないため、優先リードは中断されることがない。したがって、標準リードおよび優先リードにかかるＮＡＮＤＣ用ディスクリプタ３５のエントリから連続投入指示フラグを省略することが可能である。
【００２７】
図７は、後処理用ディスクリプタ３７のデータ構造の具体例を説明する図であり、図８は、前処理用ディスクリプタ３８のデータ構造の具体例を説明する図である。後処理用ディスクリプタ３７は、ステータスリード命令（７０ｈ）を記述したエントリによって構成され、前処理用ディスクリプタ３８は、ステータスポーリング命令（７０ｈ）を記述したエントリによって構成される。
【００２８】
図９は、標準キュー６２に登録される参照データのデータ構造例を示す図であり、図１０は、優先キュー６１に登録される参照データのデータ構造例を示す図である。標準キュー６２に登録される参照データおよび優先キュー６１に登録される参照データは、対象のエントリの先頭アドレスが記述されるフィールドと、エントリ数が記述されるフィールドと、を備えている。即ち、１つの参照データによって、ディスクリプタ格納領域３４に格納されている複数のエントリを参照することができるようになっている。これを利用して、例えば図６に示した連続ライト処理にかかるエントリ群を１つの参照データで参照することが可能になる。なお、以降、１つの参照データにより参照されるエントリ群をパックと表記する。また、１パックのエントリ群を生成する動作を「パックを生成する」、参照データをキューに登録する動作を「パックを登録する」、と表記することがある。なお、１パックに対応するエントリ数は任意であるが、後処理フラグ（後述する）の値を共有することができ、かつ連続して実行される複数のエントリを１つのパックにまとめるようにしてもよい。
【００２９】
標準キュー６２に登録される参照データには、後処理フラグが記述されるフィールドを含んでいる。後処理フラグは、パックを構成するエントリ群の実行を途中で中断する際に後処理を挿入する必要があるか否かを示すフラグである。例えば連続ライト処理にかかる参照データは、当該フィールドに、後処理の挿入が必要である旨の値が記述される。また、標準リードにかかるデータ転送のように、後処理を必要とすることなく中断できる処理にかかる参照データは、当該フィールドに、後処理の挿入が必要でない旨の値が記述される。
【００３０】
なお、ＳＳＤ２００は、ＳＡＴＡＣ用ディスクリプタ３５のエントリを特定する参照データが登録されるキューをルータ部４３（後述する）に備えている。ＳＡＴＡＣ用ディスクリプタ３５の個々のエントリは、例えばＲＡＭ３上のアクセス先のアドレスと、リードであるかライトであるかを示す情報を含む。ＳＡＴＡＣ１０は、リードの時はエントリに記述されているアクセス先のアドレス（即ちリードバッファ領域３３内の指定位置）に格納されているデータをホスト装置１００に転送し、ライトの時はホスト装置１００から送られてきたライトデータをエントリに記述されているアクセス先のアドレス（即ちライトキャッシュ領域３２内の指定位置）に格納する。なお、ＳＡＴＡＣ１０は、優先リード実行時および優先ライト実行時にホスト装置１００とＲＡＭ３との間のデータ転送を実行する。ここでは、ルータ部４３のキューには、ＮＡＮＤＣ用ディスクリプタ３６と同様に、パック毎に参照データが登録されるものとするが、ルータ部４３にはエントリ毎に参照データが登録されるようにしてもよい。
【００３１】
なお、標準リード、標準ライトおよび優先ライトにかかるパックの生成および登録は、ＭＰＵ５０により実行され、優先リードにかかるパックの生成および登録は、自動転送管理部４０に備えられる転送準備部４２により実行される。
【００３２】
図１１は、自動転送管理部４０の構成を説明するブロック図である。図示するように、自動転送管理部４０は、要求並び替え部４１、転送準備部（第１命令生成部）４２、ルータ部４３、およびＮＡＮＤキュー管理部４４を備えている。
【００３３】
要求並び替え部４１は、ホスト装置１００から複数受信したリード／ライト要求をＳＡＴＡＣ１０から取得して、取得した複数のリード／ライト要求の実行順番を効率よく実行できる順番に並べ替える。
【００３４】
転送準備部４２は、要求並び替え部４１が並び替えた後のリード／ライト要求に基づいて、パックの生成および生成したパックの登録を実行する。ＳＡＴＡＣ用ディスクリプタ３５にかかるパックの登録は、ルータ部４３に対して実行され、ＮＡＮＤＣ用ディスクリプタ３６にかかるパックの登録は、ＮＡＮＤキュー管理部４４に対して実行される。
【００３５】
ルータ部４３は、前述のように、ＳＡＴＡＣ用ディスクリプタ３５にかかるパックが登録されるキューを備えている。ルータ部４３は、当該キューに登録されたパックに対応するＳＡＴＡＣ用ディスクリプタ３５をエントリ群に記述されている個々のデータ転送を、エントリ毎にＳＡＴＡＣ１０に実行指示を通知することによって、逐次実行させる。ルータ部４３は、優先リード実行時には、ＮＡＮＤＣ２０から送信されてくる実行完了通知およびＳＡＴＡＣ１０から送信されてくる実行完了通知の受信タイミングに基づくタイミングで、優先ライト実行時には、ＳＡＴＡＣ１０から送信されてくる実行完了通知の受信タイミングに基づくタイミングで、実行指示を通知する。
【００３６】
図１２は、ＮＡＮＤキュー管理部４４の内部構成を説明する図である。図示するように、ＮＡＮＤキュー管理部４４は、優先キュー６１、標準キュー６２、キュー選択部６３、投入管理部６４、命令バッファ６５、ＮＡＮＤＣ制御部６６、およびキュー管理部６７を備えている。
【００３７】
優先キュー６１には、転送準備部４２によって優先リードにかかる参照データが登録され、標準キュー６２には、ＭＰＵ５０によって標準ライトにかかる参照データおよび標準リードにかかる参照データが登録される。
【００３８】
キュー選択部６３、投入管理部６４、命令バッファ６５、ＮＡＮＤＣ制御部６６、およびキュー管理部６７は、ＮＡＮＤＣ２０と協働して、優先キュー６１に登録されている参照データを標準キュー６２に登録されている参照データよりも優先して読み出して、当該読み出した参照データに対応する命令をＮＡＮＤメモリ２に送信する不揮発性メモリ管理部として機能する。以下、不揮発性メモリ管理部を構成する各構成要素について具体的に説明する。
【００３９】
キュー選択部６３は、キュー管理部６７からの選択信号に基づいて優先キュー６１または標準キュー６２のうちの何れか一方を選択する。投入管理部６４は、キュー選択部６３によって選択されたキューから参照データを読み出して、前記読み出した参照データにより参照されるＮＡＮＤＣ用ディスクリプタ３６のエントリ群をディスクリプタ格納領域３４から読み出して命令バッファ６５に格納する。また、投入管理部６４は、キュー管理部６７から停止要求通知（後述する）を受信したとき、動作を停止する。
【００４０】
ＮＡＮＤＣ制御部６６は、命令バッファ６５に格納されているエントリを順次ＮＡＮＤＣ２０に送信する。また、ＮＡＮＤＣ制御部６６は、キュー管理部６７から停止要求を受信したとき、直前にＮＡＮＤＣ２０に送信したエントリに含まれる連続投入指示フラグの値を参照して、当該フラグの値が中断することが可能である旨の「０」である場合、次のエントリの送信を中止して、停止可能通知をキュー管理部６７に通知する。連続投入指示フラグの値が連続して投入される必要がある旨の「１」である場合、ＮＡＮＤＣ制御部６６は、当該フラグの値が「０」であるエントリが送信されるまでエントリの送信を続行する。
【００４１】
なお、ＮＡＮＤＣ２０は、送信されてきた個々のエントリにかかる命令をＮＡＮＤメモリ２に送信するとともに、ＮＡＮＤメモリ２が個々のエントリにかかる命令を実行完了する毎に、実行完了通知を発行する。ＮＡＮＤＣ制御部６６は、ＮＡＮＤＣ２０が実行完了通知をトリガとして次のエントリをＮＡＮＤメモリ２に送信する。
【００４２】
キュー管理部６７は、優先キュー６１および標準キュー６２を監視し、どちらか一方のみに参照データが登録されている場合、参照データが登録されているキューを選択する選択信号をキュー選択部６３に送信する。さらに、標準キュー６２が選択されている状態で優先キュー６１に参照データが登録されたとき、キュー管理部６７は、ＮＡＮＤＣ制御部６６および投入管理部６４に停止要求を送信する。その後、ＮＡＮＤＣ制御部６６から停止可能応答を受信すると、キュー管理部６７は、命令バッファ６５の記憶内容をフラッシュするとともに、投入管理部６４に指令して後処理用ディスクリプタ３７を命令バッファ６５に格納させる。その後、キュー選択部６３に入力する選択信号を標準キュー６２から優先キュー６１に切り替えて、投入管理部６４およびＮＡＮＤＣ制御部６６の動作を再開させる。優先キュー６１が空になると、キュー管理部６７は、投入管理部６４に指令して前処理用ディスクリプタ３８を命令バッファ６５に格納させ、選択信号を優先キュー６１から標準キュー６２に切り替える。
【００４３】
また、キュー管理部６７は、ＮＡＮＤＣ２０が発行する実行完了通知と参照データに記述されているエントリ数とに基づいてＮＡＮＤＣ用ディスクリプタ３６の進捗管理を実行する。また、キュー管理部６７は、標準キュー６２に登録されている参照データのうち、投入対象の参照データを指定する実行管理部６８を備えている。
【００４４】
なお、ＮＡＮＤメモリ２は、複数のメモリチップ２１を用いたバンク構成が採用される場合がある。その場合には、バンク毎に命令バッファ６５、ＮＡＮＤＣ制御部６６、およびＮＡＮＤＣ２０を設け、投入管理部６４は、エントリを投入する際、エントリをバンク毎の命令バッファ６５に振り分けて投入するように構成してもよい。
【００４５】
次に、本発明の第１の実施形態のＳＳＤ２００の動作を説明する。
【００４６】
図１３は、優先キュー６１にパックが登録される動作を説明するフローチャートである。まず、要求並び替え部４１は、ＳＡＴＡＣ１０から１以上の要求を読み出して（ステップＳ１）、読み出した要求を並び替える（ステップＳ２）。そして、要求並び替え部４１は、並び替えた要求を１つ転送準備部４２に送信する（ステップＳ３）。
【００４７】
転送準備部４２は、送信されてきた要求がリード要求であるか否かを判定する（ステップＳ４）。送信されてきた要求がリード要求であった場合（ステップＳ４、Ｙｅｓ）、ＳＡＴＡＣ用ディスクリプタ３５にかかるパックを作成し、当該パックをルータ部４３に登録する（ステップＳ５）。そして、ＮＡＮＤＣ用ディスクリプタ３６にかかるパックを作成し、当該パックをＮＡＮＤキュー管理部４４に備えられる優先キュー６１に登録する（ステップＳ６）。
【００４８】
送信されてきた要求がリード要求ではなかった場合（ステップＳ４、Ｎｏ）、即ちライト要求であった場合、転送準備部４２は、ＭＰＵ５０に依頼して、ＳＡＴＡ用ディスクリプタにかかるパックの生成および当該パックのルータ部４３への登録を実行してもらう（ステップＳ７）。
【００４９】
ステップＳ６またはステップＳ７の処理の後、要求並び替え部４１は、並び替えた要求を全て転送準備部４２に送信したか否かを判定し（ステップＳ８）、未送信の要求があった場合（ステップＳ８、Ｎｏ）、ステップＳ３に移行して未送信の要求を１つ転送準備部４２に送信する。全ての要求を送信済みであった場合（ステップＳ８、Ｙｅｓ）、優先キュー６１にパックが登録される動作が終了する。
【００５０】
図１４は、標準キュー６２にパックが登録される動作を説明するフローチャートである。図示するように、ＭＰＵ５０は、ファームウェアに基づいて、ＮＡＮＤＣ用ディスクリプタ３６にかかるパックを生成するとともに、生成したパックを標準キュー６２に登録する（ステップＳ１１）。そして、標準キュー６２にパックが登録される動作が終了する。
【００５１】
図１５は、投入管理部６４の動作を説明するフローチャートである。投入管理部６４は、キュー選択部６３を介して優先キュー６１または標準キュー６２から参照データを１つ読み出す（ステップＳ２１）。ここで、投入管理部６４は、キュー（優先キュー６１または標準キュー６２）のうちのキュー選択部６３が選択しているキューに登録されている参照データのうち、実行管理部６８により投入対象に指定されている参照データを読み出す。投入管理部６４は、読み出した参照データにより参照されるＮＡＮＤＣ用ディスクリプタ３６のエントリ群をディスクリプタ格納領域３４から読み出して、当該読み出したエントリ群を命令バッファ６５に格納する（ステップＳ２２）。投入管理部６４は、ステップＳ２１の処理とステップＳ２２の処理とを交互に実行する。
【００５２】
図１６は、ＮＡＮＤＣ制御部６６の動作を説明するフローチャートである。ＮＡＮＤＣ制御部６６は、命令バッファ６５に格納されているエントリを１つ取り出して、取り出したエントリをＮＡＮＤＣ２０に送信する（ステップＳ３１）。そして、ＮＡＮＤＣ制御部６６は、停止要求通知の受信があったか否か（ステップＳ３２）、および実行完了通知の受信があったか否か（ステップＳ３３）を交互に実行し、停止要求通知の受信がなく（ステップＳ３２、Ｎｏ）、かつ実行完了通知の受信があった場合（ステップＳ３３、Ｙｅｓ）、ステップＳ３１に移行して次のエントリをＮＡＮＤＣ１０に送信する。
【００５３】
停止要求通知の受信があった場合（ステップＳ３２、Ｙｅｓ）、ＮＡＮＤＣ制御部６６は、実行完了通知の受信があったか否かを判定し（ステップＳ３４）、実行完了通知の受信がなかった場合（ステップＳ３４、Ｎｏ）、実行完了通知の受信があるまでステップＳ３４の判定処理を実行する。実行完了通知の受信があった場合（ステップＳ３４、Ｙｅｓ）、ＮＡＮＤＣ制御部６６は、最後に実行したステップＳ３１の処理によってＮＡＮＤＣ１０に送信したエントリの連続投入フラグの値が「０」であるか否かを判定する（ステップＳ３５）。連続投入フラグの値が「０」ではなかった場合（ステップＳ３５、Ｎｏ）、ＮＡＮＤＣ制御部６６は、次のエントリを命令バッファから１つ取り出して、取り出したエントリをＮＡＮＤＣ１０に送信する（ステップＳ３６）。そして、ステップＳ３４の判定処理を実行する。
【００５４】
連続投入フラグの値が「０」であった場合（ステップＳ３５、Ｙｅｓ）、ＮＡＮＤＣ制御部６６は、キュー管理部６７に停止可能通知を送信する（ステップＳ３７）。そして、キュー管理部６７による命令バッファ６５のフラッシュと投入管理部６４による命令バッファ６５へのエントリの格納とが行われた後（ステップＳ３８）、キュー管理部６７から動作を再開する旨の通知である動作再開通知を受信すると（ステップＳ３９）、ＮＡＮＤＣ制御部６６は、ステップＳ３１の処理を実行する。
【００５５】
図１７−１、図１７−２、および図１７−３は、キュー管理部６７によるパックの進捗管理の動作を説明するフローチャートである。図１７−１は、個別のパックにかかる処理が完了したか否かを管理する動作を説明するフローチャートである。図示するように、キュー管理部６７は、まず、１つのパックに有効なエントリが入っているか否かを判定する（ステップＳ４１）。なお、ここでは、キュー管理部６７は、有効なエントリが入っているパックを有効とし、有効なエントリが入っていないパックを無効とするような内部信号であるＶａｌｉｄ信号をパック毎に備えるものとする。即ち、キュー管理部６７は、ステップＳ４１において、当該パックにかかるＶａｌｉｄ信号が有効であるか否かを判定する。Ｖａｌｉｄ信号が無効である場合（ステップＳ４１、Ｎｏ）、Ｖａｌｉｄ信号が有効となるまでステップＳ４１の判定処理が繰り返される。
【００５６】
Ｖａｌｉｄ信号が有効である場合（ステップＳ４１、Ｙｅｓ）、キュー管理部６７は、当該パックの実行完了したエントリ数が参照データに記述されているエントリ数と一致するか否かを判定する（ステップＳ４２）。実行完了したエントリ数は、ＮＡＮＤＣ２０が発行する実行完了通知をカウントすることによって知ることができる。実行完了したエントリ数が参照データに記述されているエントリ数と一致する場合（ステップＳ４２、Ｙｅｓ）、キュー管理部６７は、当該パックが確定しているか否かをさらに判定する（ステップＳ４３）。
【００５７】
なお、物理アドレスと論理アドレスとの間の変換は、比較的長い時間を要するため、パックの登録元（ＭＰＵ５０および転送準備部４２）は、１パック分のエントリを一括して登録するだけでなく、１パックを構成する個々のエントリを生成完了する毎に逐次登録することもできるようになっている。登録元は、エントリをディスクリプタ格納領域３４に格納する毎に対応する参照データに記述されているエントリ数をインクリメントする。そして、登録元は、１パック分のエントリの格納が完了したとき、１パックのエントリが確定した旨の通知を発行する。ステップＳ４２においては、キュー管理部６７は、対象のパックについて１パック分のエントリが完了した旨の通知を受信したか否かを確認することによって当該パックが確定しているか否かを判定することができる。
【００５８】
実行完了したエントリ数が参照データに記述されているエントリ数と一致しない場合（ステップＳ４２、Ｎｏ）または当該パックが確定していない場合（ステップＳ４３、Ｎｏ）、ステップＳ４２の判定処理が再度実行される。
【００５９】
当該パックが確定した場合（ステップＳ４３、Ｙｅｓ）、キュー管理部６７は、パック完了通知をＭＰＵ５０へ通知し（ステップＳ４４）、ＭＰＵ５０からの開放要求を待ち受ける（ステップＳ４５）。ＭＰＵ５０からの開放要求を受信すると（ステップＳ４５、Ｙｅｓ）、キュー管理部６７は、当該パックにかかる参照データを削除するためのクリア信号を生成する（ステップＳ４６）。すると、当該パックのＶａｌｉｄ信号が無効となり（ステップＳ４７）、ステップＳ４１の処理に移行する。
【００６０】
図１７−２は、個別のパックにかかる命令の投入の進捗を管理する動作を説明するフローチャートである。まず、キュー管理部６７は、１つのパックについて、当該パックが実行管理部６８によって投入対象に指定されているか否かを判定する（ステップＳ５１）。投入対象に指定されていない場合（ステップＳ５１、Ｎｏ）、ステップＳ５１の判定処理が繰り返し実行される。当該パックが投入対象に指定されている場合（ステップＳ５１、Ｙｅｓ）、キュー管理部６７は、当該パックの投入完了したエントリ数と参照データに記述されているエントリ数とが一致するか否かを判定する（ステップＳ５２）。
【００６１】
投入完了したエントリ数と参照データに記述されているエントリ数とが一致する場合（ステップＳ５２、Ｙｅｓ）、キュー管理部６７は、当該パックが確定しているか否かをさらに判定する（ステップＳ５３）。１パック分のエントリが全て生成されていない段階であっても、生成済みのエントリを命令バッファ６５に投入できるようになっているためである。投入完了したエントリ数と参照データに記述されているエントリ数とが一致しない場合（ステップＳ５２、Ｎｏ）または当該パックが確定していない場合（ステップＳ５３、Ｎｏ）、ステップＳ５２の判定処理が再度実行される。
【００６２】
当該パックが確定している場合（ステップＳ５３、Ｙｅｓ）、キュー管理部６７は、当該パックの投入が完了した旨の信号を実行管理部６８に通知する（ステップＳ５４）。実行管理部６８は、当該信号を受信すると、次のパックを投入対象に指定することができ、次のパックが投入対象に指定されると、投入管理部６４は前のパックの実行完了を待つことなく投入することができる。
【００６３】
ステップＳ５４の処理の後、キュー管理部６７は、当該パックにかかるクリア信号を受信したか否かを判定する（ステップＳ５５）。クリア信号を受信していない場合（ステップＳ５５、Ｎｏ）、ステップＳ５５の処理が再度実行される。クリア信号を受信した場合（ステップＳ５５、Ｙｅｓ）、キュー管理部６７は、当該パックにかかる参照データを削除し（ステップＳ５６）、ステップＳ５１の処理に移行する。
【００６４】
図１７−３は、実行管理部６８が投入対象のパックを指定する動作を説明するフローチャートである。図示するように、まず、実行管理部６８は、有効なエントリがあるか否かを全てのパックについて確認する（ステップＳ６１）。有効なエントリがあるか否かは、パック毎のＶａｌｉｄ信号を参照することによって確認することができる。有効なエントリがない場合（ステップＳ６１、Ｎｏ）、有効なエントリが確認できるまでステップＳ６１の処理が実行される。
【００６５】
有効なエントリがある場合（ステップＳ６１、Ｙｅｓ）、実行管理部６８は、現在投入対象に指定しているパックの命令バッファ６５への投入が完了しているか否かを確認する（ステップＳ６２）。投入対象のパックの命令が投入完了しているか否かは、キュー管理部６７がステップＳ５４の処理により発行する信号を受信したか否かによって確認することができる。投入対象のパックの投入が完了していない場合（ステップＳ６２、Ｎｏ）、投入が完了するまでステップＳ６２の処理が実行される。
【００６６】
投入対象のパックの投入が完了した場合（ステップＳ６２、Ｙｅｓ）、実行管理部６８は、ステップＳ６１にて確認した有効なエントリがあるパックのうちのひとつを新たに投入対象に指定し（ステップＳ６３）、ステップＳ６１の処理に移行する。
【００６７】
図１８は、キュー管理部６７によるキューの切り替え動作を説明するフローチャートである。キュー管理部６７は、最初、選択信号で標準キュー６２を選択しており（ステップＳ７１）、優先キュー６１に参照データがあるか否かを判定する（ステップＳ７２）。優先キュー６１に登録されている参照データがない場合（ステップＳ７２、Ｎｏ）、ステップＳ７１に移行して、選択信号で標準キュー６２を選択したままとする。
【００６８】
優先キュー６１に登録されている参照データがあった場合（ステップＳ７２、Ｙｅｓ）、キュー管理部６７は、ＮＡＮＤＣ制御部６６および投入管理部６４に停止要求通知を送信する（ステップＳ７３）。なお、投入管理部６４は、当該停止要求通知を受信すると、動作を停止する。停止要求通知の送信の後、キュー管理部６７は、ＮＡＮＤＣ制御部６６から停止可能通知を受信したか否かを判定する（ステップＳ７４）。停止可能通知を受信していない場合（ステップＳ７４、Ｎｏ）、キュー管理部６７は、停止可能通知を受信するまでステップＳ７４の判定処理を繰り返す。
【００６９】
停止可能通知を受信した場合（ステップＳ７４、Ｙｅｓ）、キュー管理部６７は、標準キュー６２の投入対象に指定されている参照データの後処理フラグの値が後処理を必要とする旨の「１」であるか否かを判定する（ステップＳ７５）。後処理フラグの値が「１」であった場合（ステップＳ７５、Ｙｅｓ）、キュー管理部６７は、命令バッファ６５をフラッシュし（ステップＳ７６）、投入管理部６４に指令して、後処理用ディスクリプタ３７を命令バッファ６５に格納させる（ステップＳ７７）。そして、キュー管理部６７は、ＮＡＮＤＣ制御部６６および投入管理部６４に動作再開通知を送信する（ステップＳ７８）。すると、ＮＡＮＤＣ制御部６６および投入管理部６４は、動作を再開して、命令バッファ６５に格納された後処理用ディスクリプタ３７のＮＡＮＤＣ２０への投入を実行する。
【００７０】
キュー管理部６７は、後処理用ディスクリプタ３７にかかる命令の実行完了を確認すると（ステップＳ７９）、ＮＡＮＤＣ制御部６６および投入管理部６４に停止要求通知を送信する（ステップＳ８０）。なお、後処理用ディスクリプタ３７にかかる命令の実行完了は、実行完了通知を監視することによって確認することができる。停止要求通知の送信の後、ＮＡＮＤＣ制御部６６から停止可能通知を受信すると（ステップＳ８１）、キュー管理部６７は、命令バッファ６４をフラッシュし（ステップＳ８２）、選択信号を標準キュー６２から優先キュー６１に切り替え（ステップＳ８３）、ＮＡＮＤＣ制御部６６および投入管理部６４に動作再開通知を送信する（ステップＳ８４）。
【００７１】
なお、ステップＳ７５の判定処理において、後処理フラグの値が「１」ではなかった場合（ステップＳ７５、Ｎｏ）、ステップＳ７６〜ステップＳ８２の処理はスキップされる。
【００７２】
ステップＳ８４の処理の後、図１５および図１６を用いて説明した動作により、優先キュー６１に登録されている参照データにかかるデータ転送が実行される。当該参照データにかかるデータ転送が全て完了すると、図１７−２の動作により、当該参照データが優先キュー６１から削除される。
【００７３】
キュー管理部６７は、優先キュー６１の実行を全て完了したか否かを判定し（ステップＳ８５）、完了していない場合（ステップＳ８５、Ｎｏ）、ステップＳ８５の判定処理を再度実行する。優先キュー６１の実行を全て完了した場合（ステップＳ８５、Ｙｅｓ）、キュー管理部６７は、投入管理部６４に指令して前処理用ディスクリプタ３８を命令バッファ６５に格納させる（ステップＳ８６）。そして、キュー管理部６７は、ＮＡＮＤＣ制御部６６および投入管理部６４に動作再開通知を送信する（ステップＳ８７）。すると、ＮＡＮＤＣ制御部６６および投入管理部６４は、動作を再開して、命令バッファ６５に格納された前処理用ディスクリプタ６８のＮＡＮＤＣ２０への投入を実行する。
【００７４】
キュー管理部６７は、後処理用ディスクリプタ３７にかかる命令の実行完了を確認すると（ステップＳ８８）、選択信号を優先キュー６１から標準キュー６２に切り替え（ステップＳ８９）、投入管理部６４に指令して、標準キュー６２の投入対象に指定されている参照データにかかるエントリ群のうちの未実行のエントリを命令バッファ６５に格納させる（ステップＳ９０）。その後、キュー管理部６７は、ＮＡＮＤＣ制御部６６および投入管理部６４に動作再開通知を送信し（ステップＳ９１）、ステップＳ７１の処理を実行する。
【００７５】
図１８の説明においては、優先キュー６１を実行完了した後、標準キュー６２にパックが登録されていなくても実行対象のキューを優先キュー６２に切り替えるものとして説明したが、優先キュー６１を実行完了した後は、標準キュー６２にパックが登録されている場合に実行対象のキューを切り替えるように構成してもよい。
【００７６】
なお、メモリチップ２１には、メモリセルアレイ２４がそれぞれ複数の物理ブロックを含むプレーンと呼ばれる複数の領域に分割されているものがある。各プレーンは、互いに独立した周辺回路（データキャッシュ２２およびページバッファ２３を含む）を備えており、複数のプレーンに同時にリード／ライト／イレースを行うことで、１つのプレーンに対してアクセスを行う場合に比べて高速なアクセスを実行することができる。
【００７７】
図１９は、メモリチップ２１はプレーンを２つ有するとし、当該２つのプレーンに対して夫々２ページ分の連続ライト処理を実行するためのＮＡＮＤＣ用ディスクリプタ３６のデータ構造の具体例を示す図である。なお、メモリチップ２１が有する２つのプレーンを、プレーン０、プレーン１と表記して夫々区別するものとする。
【００７８】
図１９の例によれば、ＮＡＮＤＣ用ディスクリプタ３６は、上段から、リセット命令（ＦＦｈ）を記述したエントリと、プレーン０に対するライト命令を記述したエントリ、プレーン１に対するライト命令を記述したエントリ、およびステータスリード命令（７１ｈ）を記述したエントリのセットを２ページ分と、ステータスポーリング命令（７１ｈ）を記述したエントリとを備えて構成されている。このように、２つのプレーンに対して連続ライト処理を実行する場合、ステータスリード命令（およびステータスポーリング命令）として、１つのプレーンに連続ライト処理を実行する場合のコマンド７０ｈと異なるコマンド７１ｈが採用される。
【００７９】
図２０は、２つのプレーンに対して連続ライト処理を実行する場合に用いられる後処理用ディスクリプタ３７のデータ構造の具体例を示す図である。図示するように、この後処理用ディスクリプタ３７は、ステータスポーリング命令（７１ｈ）を記述したエントリによって構成される。
【００８０】
このように、連続ライト処理時に実行されるステータスポーリング命令の種類が複数存在する場合には、後処理用ディスクリプタ３７をステータスポーリング命令の種類毎に用意しておき、参照データに付加される後処理フラグによってステータスポーリング命令の種類を指定するようにしてもよい。
【００８１】
また、以上の説明においては、標準キュー６２にかかるデータ転送を行っている場合で、優先キュー６１と標準キュー６２との間でキューの切り替えが行われたとき、必ず前処理としてのリセット命令を実行するものとして説明したが、参照データに前処理を必要とするか否かを示すフラグを持たせ、キュー管理部６７は当該フラグに基づいて前処理を実行したりしなかったりするようにしてもよい。
【００８２】
また、以上の説明においては、命令の実体をディスクリプタに記述して、各キューには当該ディスクリプタを参照するための参照データが登録されるとして説明したが、各キューにパック毎の命令が記述されたデータが登録されるようにしてもよい。
【００８３】
このように、本発明の第１の実施形態によれば、転送準備部４２は、ホスト装置１００からリード要求されたデータをＮＡＮＤメモリ２から読み出すための命令を生成して当該生成した命令を優先キュー６１に登録し、ＭＰＵ５０は、内部処理にかかるデータ転送をＮＡＮＤメモリ２に実施させるための命令を生成して当該生成した命令を標準キュー６２に登録し、協働して不揮発性メモリ管理部として機能するキュー選択部６３、投入管理部６４、命令バッファ６５、ＮＡＮＤＣ制御部６６、キュー管理部６７およびＮＡＮＤＣ２０は、優先キュー６１に登録されている参照データを標準キュー６２に登録されている参照データよりも優先して読み出して、当該読み出した参照データに対応する命令をＮＡＮＤメモリ２に送信するように構成したので、ホスト装置１００からのリード要求にかかるデータ転送を内部処理にかかるデータ転送よりも優先して実行できるので、ホスト装置１００からのリード要求に対する応答を効率的に実行することができるようになる。
【００８４】
また、ＭＰＵ５０は、ディスクリプタに、次の命令を連続して実行する必要があるか否かを示す連続投入指示フラグ（連続実行情報）を付加しておき、不揮発性メモリ管理部は、標準キュー６２に登録されている命令を実行中に優先キュー６１に命令が登録されたとき、命令の読み出し元のキューの切り替えタイミングを、実行中の命令に付加されている連続投入指示フラグに基づいて決める、ように構成したので、連続ライト処理を実行中にキューの切り替えを行う際に後処理としてステータスポーリングを自動で挿入することができるので、切り替え時におけるプログラムエラーの発生を防止することができる。
【００８５】
また、転送準備部４２は、連続して生成した１以上の命令群でパックを構成させ、パック毎の参照データに、中断時に後処理の挿入が必要であるか否かを示す後処理フラグ（中断処理情報）を付加し、不揮発性メモリ管理部は、キューを標準キュー６２から優先キュー６１に切り替える際に、後処理フラグに基づいて後処理を挿入するか否かを選択するように構成したので、処理の種類毎に後処理を挿入したり挿入しなかったりすることができるようになる。
【００８６】
また、不揮発性メモリ管理部は、ＮＡＮＤメモリ２に送信する命令の読み出し元を優先キュー６１から標準キュー６２に切り替える際、前処理を実行させる命令をＮＡＮＤメモリ２に送信するように構成したので、連続リード処理が再開されるときに前処理としてのリセット命令を挿入することができるので、中断された連続リード処理を、当該連続リード処理の最初からではなく、中断された部分から再開できるようになる。
【００８７】
なお、以上の説明においては、ホスト装置１００との間のデータ転送の効率を向上させるために、ホスト装置１００からの要求に基づくデータ転送にかかる制御をＭＰＵ５０ではなく自動転送管理部４０で実行し、ＭＰＵ５０の計算機コストを内部処理に集中させるようにしている。しかしながら、自動転送管理部４０の構成要素のうちの一部または全部は、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現するようにしてもよい。自動転送管理部４０の構成要素をハードウェアで実現するようにすると、通知信号（実行完了通知、停止要求通知、停止可能通知、動作再開通知など）を用いることにより自動転送管理部４０内あるいは内外の構成要素間の同期が簡単になるという効果が得られる。
【００８８】
（第２の実施形態）
図２１は、第２の実施形態のメモリシステムを適用したＳＳＤの構成を説明する図である。なお、第２の実施形態の説明においては、第１の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【００８９】
図２１に示すように、第２の実施形態のＳＳＤ３００は、データ転送装置４、ＮＡＮＤメモリ２、およびＲＡＭ３を備えている。データ転送装置４は、ＳＡＴＡＣ１０と、ＲＡＭＣ３０と、ＭＰＵ５０と、自動転送管理部７０と、第２のＥＣＣ（Error  Checking  and  Correction）回路８０と、第１のＥＣＣ回路を具備するＮＡＮＤＣ９０とを備えている。ＳＡＴＡＣ１０、ＲＡＭＣ３０、ＭＰＵ５０、自動転送管理部７０、第２のＥＣＣ回路８０、およびＮＡＮＤＣ９０は夫々バスにより接続されている。
【００９０】
第１のＥＣＣ回路９１は第１の誤り訂正符号のエンコードおよびデコードを行い、また、第２の誤り訂正符合のエンコードを行う。第２のＥＣＣ回路８０は、第１の誤り訂正符号のデコードを行う。 
【００９１】
第１の誤り訂正符号、第２の誤り訂正符号は、例えば、ハミング符号、ＢＣＨ（Bose  Chaudhuri  Hocqenghem）符号、ＲＳ(Reed  Solomon)符号、或いはＬＤＰＣ（Low  Density  Parity  Check）符号等であり、第２の誤り訂正符号の訂正能力は、第１の誤り訂正符号の訂正能力よりも高いとする。第１のＥＣＣ回路９１は、例えば、物理ページ単位のデータに対してエンコードを実行する。第２のＥＣＣ回路８０は、例えば複数バンクに渡って書き込まれているデータに対してエンコードを実行する。リード処理実行時には、ＮＡＮＤＣ９０は、第１のＥＣＣ回路９１による誤り訂正を実行する。そして、第１のＥＣＣ回路９１による誤り訂正に失敗した場合に、ＭＰＵ５０による制御の下で、第２のＥＣＣ回路８０による誤り訂正が実行される。
【００９２】
ここで、第１のＥＣＣ回路９１における誤り訂正に失敗した場合に実行される、誤りを回復させる処理を、エラー処理と表記することとする。エラー処理は、上記した第２のＥＣＣ回路８０による誤り訂正だけに限定されない。例えば、エラー処理として、ＮＡＮＤメモリ２を構成するメモリチップ２１のリード電圧を変更してリードを行うようにしてもよい。また、ＮＡＮＤＣ９０では誤り検出を実行するようにして、誤りが検出されたとき、エラー処理が実行されるようにしてもよい。また、ＮＡＮＤＣ９０は、ライト時にプログラムエラーを検出できるように構成して、プログラムエラーが検出されたとき、書き込み位置を変えて再度ライトを試みるなどのエラー処理が実行されるようにしてもよい。
【００９３】
図２２は、ＲＡＭ３のメモリ構造を説明する図である。図示するように、ＲＡＭ３は、ワークエリア３１、ライトキャッシュ領域３２、リードバッファ領域３３およびディスクリプタ格納領域３４を備えている。ディスクリプタ格納領域３４には、ＳＡＴＡＣ用ディスクリプタ３５、ＮＡＮＤＣ用ディスクリプタ３６、後処理用ディスクリプタ３７、前処理用ディスクリプタ３８、およびエラー処理用ディスクリプタ３９が格納される。エラー処理用ディスクリプタ３９は、エラー処理を実現するためにＮＡＮＤメモリ２に対して送信される命令の実体を記述したデータであって、ＭＰＵ５０により作成される。ＭＰＵ５０は、エラー処理用ディスクリプタ３９を作成した際、当該エラー処理用ディスクリプタ３９を参照するための参照データを作成し、作成した参照データを後述するエラーキュー７２に登録する。
【００９４】
自動転送管理部７０の構成は、ＮＡＮＤキュー制御部の構成を除いて第１の実施形態と等しいので、ここでは、自動転送管理部７０に関し、ＮＡＮＤキュー制御部の構成についてのみ説明する。図２３は、第２の実施形態のＮＡＮＤキュー管理部の内部構成を説明する。図示するように、ＮＡＮＤキュー管理部７１は、優先キュー６１、標準キュー６２、エラーキュー７２、キュー選択部７３、投入管理部６４、命令バッファ６５、ＮＡＮＤＣ制御部６６、およびキュー管理部７４を備えている。
【００９５】
エラーキュー７２は、ＭＰＵ５０からエラー処理にかかる参照データが登録される。キュー選択部７３は、投入管理部６４による参照データの読み出し元のキューを、キュー管理部７４からの選択信号に基づいて、優先キュー６１、標準キュー６２、およびエラーキュー７２のうちから選択する。
【００９６】
キュー管理部７４は、ＮＡＮＤＣ９０が第１のＥＣＣ回路９１によるエラー訂正に失敗した旨のエラー発生通知を受信したとき、ＮＡＮＤＣ制御部６６に停止命令通知を送信して投入管理部６４およびＮＡＮＤＣ制御部６６の動作を停止させるとともに、命令バッファ６５をフラッシュする。そして、ＭＰＵ５０からエラーキュー７２に参照データが登録された際、選択信号をエラーキュー７２に切り替えて、投入管理部６４およびＮＡＮＤＣ制御部６６の動作を再開させる。
【００９７】
図２４は、第２の実施形態のＳＳＤ３００のエラー処理にかかる動作を説明するフローチャートである。第１のＥＣＣ回路９１による誤り訂正に失敗すると、ＮＡＮＤＣ９０は、エラー発生通知をキュー管理部７４およびＭＰＵ５０に送信する（ステップＳ１０１）。すると、キュー管理部７４は、停止命令通知をＮＡＮＤＣ制御部６６および投入管理部６４に送信してＮＡＮＤＣ制御部６６および投入管理部６４の動作を停止させ（ステップＳ１０２）、命令バッファ６５をフラッシュする（ステップＳ１０３）。
【００９８】
一方、エラー発生通知を受信したＭＰＵ５０は、ＮＡＮＤＣ９０にアクセスして失敗原因を解析し、解析結果に基づいてエラー処理用ディスクリプタ３９を生成するとともに、当該生成したエラー処理用ディスクリプタ３９を参照するための参照データをエラーキュー７２に登録する（ステップＳ１０４）。ここでは、参照データは、複数エントリ（パック）毎に登録されるものとする。
【００９９】
キュー管理部７４は、参照データがエラーキュー７２に登録されると、選択信号をエラーキューに切り替えて（ステップＳ１０５）、投入管理部６４およびＮＡＮＤＣ制御部６６に動作再開通知を送信する（ステップＳ１０６）。これにより、エラーキュー７２に登録されている参照データに基づいてエラー処理が実行される。なお、キュー管理部７４は、図１７−２で説明した動作を行って、キュー管理部７４から実行完了した参照データの削除を行う。
【０１００】
キュー管理部７４は、エラーキュー７２に参照データがあるか否かを判定し（ステップＳ１０７）、参照データが残っている場合には（ステップＳ１０７、Ｙｅｓ）、ステップＳ１０７の判定処理を再度実行する。エラーキュー７２に参照データがない場合（ステップＳ１０７、Ｎｏ）、キュー管理部７４は、選択信号をエラーキュー７２から実行を中断した元のキューに切り替えて（ステップＳ１０８）、エラー処理時の動作が完了する。
【０１０１】
このように、本発明の第２の実施形態によれば、第１の実施形態の構成に、誤り訂正エラーを検出する第１のＥＣＣ回路９１を備え、ＭＰＵ５０は、第１のＥＣＣ回路９１が誤り訂正エラーを検出したとき、前記検出された誤り訂正エラーに対応するエラー処理にかかる、ＮＡＮＤメモリ２に対する命令を生成し、当該生成した命令をエラーキュー７２に登録し、協働して不揮発性メモリ管理部として機能するキュー選択部７３、投入管理部６４、命令バッファ６５、ＮＡＮＤＣ制御部６６、キュー管理部７４およびＮＡＮＤＣ９０は、エラーキュー７２に命令が登録されたとき、命令の読み出し元を優先キュー６１または標準キュー６２からエラーキュー７２に切り替える、ように構成したので、第１の実施形態からえられる効果に加えて、エラー処理を実行することができるようになる。
【０１０２】
（第３の実施形態）
図２５は、第１の実施形態のＳＳＤ２００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。なお、このパーソナルコンピュータ１２００には、第１の実施形態のＳＳＤ２００だけでなく第２の実施形態のＳＳＤ３００を搭載することも可能である。
【０１０３】
パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【０１０４】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ２００等が収容されている。
【０１０５】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１０６】
ＳＳＤ２００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１０７】
図２６は、ＳＳＤ２００を搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ２００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【０１０８】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ２００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１０９】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１１０】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１１１】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１１２】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【０１１３】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１１４】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１１５】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ２００を、ＳＡＴＡインタフェースを介して制御する。
【０１１６】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ２００へのアクセスを行う。ＳＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ２００に入力される。
【０１１７】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１１８】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１１９】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１２０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２１】
１、４  データ転送装置、２  ＮＡＮＤメモリ、３  ＲＡＭ、２１  メモリチップ、２２  データキャッシュ、２３  ページバッファ、２４  メモリセルアレイ、３１  ワークエリア、３２  ライトキャッシュ領域、３３  リードバッファ領域、３４  ディスクリプタ格納領域、３５  ＳＡＴＡＣ用ディスクリプタ、３６  ＮＡＮＤＣ用ディスクリプタ、３７  後処理用ディスクリプタ、３８  前処理用ディスクリプタ、３９  エラー処理用ディスクリプタ、４０、７０  自動転送管理部、４２  転送準備部、４４、７１  ＮＡＮＤキュー管理部、６１  優先キュー、６２  標準キュー、６３、７３  キュー選択部、６４  投入管理部、６５  命令バッファ、６６  ＮＡＮＤＣ制御部、６７、７４  キュー管理部、６８  実行管理部、７２  エラーキュー、８０  第２のＥＣＣ回路、９１  第１のＥＣＣ回路、１００  ホスト装置、１２００  パーソナルコンピュータ。
【図１】
2012234363.tif 000003
【図２】
2012234363.tif 000004
【図３】
2012234363.tif 000005
【図４−１】
2012234363.tif 000006
【図４−２】
2012234363.tif 000007
【図５】
2012234363.tif 000008
【図６】
2012234363.tif 000009
【図７】
2012234363.tif 000010
【図８】
2012234363.tif 000011
【図９】
2012234363.tif 000012
【図１０】
2012234363.tif 000013
【図１１】
2012234363.tif 000014
【図１２】
2012234363.tif 000015
【図１３】
2012234363.tif 000016
【図１４】
2012234363.tif 000017
【図１５】
2012234363.tif 000018
【図１６】
2012234363.tif 000019
【図１７−１】
2012234363.tif 000020
【図１７−２】
2012234363.tif 000021
【図１７−３】
2012234363.tif 000022
【図１８】
2012234363.tif 000023
【図１９】
2012234363.tif 000024
【図２０】
2012234363.tif 000025
【図２１】
2012234363.tif 000026
【図２２】
2012234363.tif 000027
【図２３】
2012234363.tif 000028
【図２４】
2012234363.tif 000029
【図２５】
2012234363.tif 000030
【図２６】
2012234363.tif 000031