(57)【要約】【課題】１つの実施形態は、例えば、優先度の異なる複数のコマンドキューにそれぞれ格納されたコマンドを適切に処理できるメモリシステムを提供することを目的とする。【解決手段】１つの実施形態によれば、不揮発性半導体メモリと制御部とを有するメモリシステムが提供される。制御部の処理部は、第１のコマンドキューに格納された第１のコマンドの実行中に第２のコマンドキューに第２のコマンドが格納された場合、第２のコマンドが第２のコマンドキューに格納されたタイミングにおける第１のコマンドによる不揮発性半導体メモリへのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理では、第１のコマンドの実行を中断して第２のコマンドを実行させる。完了処理では、第１のコマンドの実行を完了させる。【選択図】図１
2013200692.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと、
前記不揮発性半導体メモリを制御する制御部と、
を備え、
前記制御部は、
第１のコマンドキューと、
前記第１のコマンドキューより高い優先度を有する第２のコマンドキューと、
前記第１のコマンドキュー及び前記第２のコマンドキューのいずれかのコマンドキューを選択し、選択されたコマンドキューに格納されたコマンドを実行させ前記不揮発性半導体メモリへのアクセス処理を行う処理部であって、前記第１のコマンドキューに格納された第１のコマンドの実行中に前記第２のコマンドキューに第２のコマンドが格納された場合、前記第２のコマンドが前記第２のコマンドキューに格納されたタイミングにおける前記第１のコマンドによる前記不揮発性半導体メモリへのアクセス進捗状況に応じて、前記第１のコマンドの実行を中断して前記第２のコマンドを実行させる中断処理と前記第１のコマンドの実行を完了させる完了処理とのいずれかを行う処理部と、
を有する
ことを特徴とするメモリシステム。
【請求項２】
前記処理部は、前記第１のコマンドの実行に伴う前記不揮発性半導体メモリへのアクセス進捗状況と、前記第１のコマンドの種類とに応じて、前記中断処理と前記完了処理とのいずれかを行う
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記処理部は、前記第１のコマンドが消去コマンド又は読み出しコマンドであることに応じて前記中断処理を行い、前記第１のコマンドが書き込みコマンドであることに応じて前記完了処理を行う
ことを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記処理部は、前記第１のコマンドが書き込みコマンドであり、且つ前記不揮発性半導体メモリへのアクセス進捗状況が前記不揮発性半導体メモリのビジー状態開始前であることに応じて、前記中断処理を行い、前記第１のコマンドが書き込みコマンドであり、且つ前記不揮発性半導体メモリへのアクセス進捗状況が前記不揮発性半導体メモリのビジー状態開始後であることに応じて、前記完了処理を行う
ことを特徴とする請求項３に記載のメモリシステム。
【請求項５】
前記処理部は、前記完了処理により前記第１のコマンドの実行が完了された後に、前記第２のコマンドの実行を開始する
ことを特徴とする請求項１から４のいずれか１項に記載のメモリシステム。
【請求項６】
前記処理部は、前記中断処理により前記第１のコマンドの実行が中断され前記第２のコマンドの実行が完了された後に、中断されたタイミングにおける前記第１のコマンドによる前記不揮発性半導体メモリへのアクセス進捗状況に応じて、前記第１のコマンドの実行を中断時の処理から継続させる継続処理と前記第１のコマンドの実行を最初の処理からやり直すリトライ処理とのいずれかを行う
ことを特徴とする請求項１から４のいずれか１項に記載のメモリシステム。
【請求項７】
前記処理部は、前記不揮発性半導体メモリへのアクセス進捗状況が前記不揮発性半導体メモリのビジー状態満了前であることに応じて、前記リトライ処理を行い、前記不揮発性半導体メモリへのアクセス進捗状況が前記不揮発性半導体メモリのビジー状態満了後であることに応じて、前記継続処理を行う
ことを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記処理部は、中断されたタイミングにおける前記第１のコマンドによる前記不揮発性半導体メモリへのアクセス進捗状況と、前記第１のコマンドの種類及び前記第２のコマンドの種類の組み合わせとに応じて、前記継続処理と前記リトライ処理とのいずれかを行う
ことを特徴とする請求項６に記載のメモリシステム。
【請求項９】
前記処理部は、前記組み合わせが消去コマンド及び読み出しコマンドを含むことに応じて、前記継続処理を行い、前記組み合わせが消去コマンド及び読み出しコマンドを含まないことに応じて、前記リトライ処理を行う
ことを特徴とする請求項８に記載のメモリシステム。
【請求項１０】
前記処理部は、前記組み合わせが消去コマンド及び読み出しコマンドを含み、且つ前記不揮発性半導体メモリへのアクセス進捗状況が前記不揮発性半導体メモリのビジー状態満了前であることに応じて、前記リトライ処理を行い、前記組み合わせが消去コマンド及び読み出しコマンドを含み、且つ前記不揮発性半導体メモリへのアクセス進捗状況が前記不揮発性半導体メモリのビジー状態満了後であることに応じて、前記継続処理を行う
ことを特徴とする請求項９に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリを搭載したＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が注目されている。ＳＳＤなどのメモリシステムには、優先度の異なる複数のコマンドキューを持つものがある。このとき、優先度の異なる複数のコマンドキューにそれぞれ格納されたコマンドを適切に処理することが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２８２４２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１つの実施形態は、例えば、優先度の異なる複数のコマンドキューにそれぞれ格納されたコマンドを適切に処理できるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
１つの実施形態によれば、不揮発性半導体メモリと制御部とを有するメモリシステムが提供される。制御部は、不揮発性半導体メモリを制御する。制御部は、第１のコマンドキューと第２のコマンドキューと処理部とを有する。第２のコマンドキューは、第１のコマンドキューより高い優先度を有する。処理部は、第１のコマンドキュー及び第２のコマンドキューのいずれかのコマンドキューを選択する。処理部は、選択されたコマンドキューに格納されたコマンドを実行させ不揮発性半導体メモリへのアクセス処理を行う。処理部は、第１のコマンドキューに格納された第１のコマンドの実行中に第２のコマンドキューに第２のコマンドが格納された場合、第２のコマンドが第２のコマンドキューに格納されたタイミングにおける第１のコマンドによる不揮発性半導体メモリへのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理では、第１のコマンドの実行を中断して第２のコマンドを実行させる。完了処理では、第１のコマンドの実行を完了させる。
【図面の簡単な説明】
【０００６】
【図１】実施形態にかかるメモリシステムの構成を示す図。
【図２】実施形態におけるＮＡＮＤ型フラッシュメモリの構成を示す図。
【図３】実施形態におけるＮＡＮＤコントローラの構成を示す図。
【図４】実施形態にかかるメモリシステムの動作を示すフローチャート。
【図５】実施形態にかかるメモリシステムの動作を示す図。
【図６】実施形態にかかるメモリシステムの動作を示す図。
【図７】実施形態にかかるメモリシステムの動作を示す図。
【図８】実施形態にかかるメモリシステムの動作を示す図。
【図９】実施形態にかかるメモリシステムの動作を示す図。
【図１０】実施形態にかかるメモリシステムの動作を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
実施形態にかかるメモリシステム１００について図１を用いて説明する。図１は、メモリシステム１００の構成を示す図である。
【０００９】
メモリシステム１００は、ホスト装置ＨＡに対する外部記憶媒体として機能するものであり、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）又はメモリカードである。ホスト装置ＨＡは、例えば、パーソナルコンピュータ又はＣＰＵコアを含む。
【００１０】
メモリシステム１００は、コントローラとしてのドライブ制御回路４と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ１０と、ランダムアクセス可能な半導体メモリとしてのＲＡＭ２０と、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースなどを備えている。
【００１１】
ＲＡＭ２０としては、例えば揮発性半導体メモリを採用する。ＲＡＭ２０として、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを採用することができる。ＲＡＭ２０は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。
【００１２】
ドライブ制御回路４は、ホストＨＡとＮＡＮＤ型フラッシュメモリ１０との間でＲＡＭ２０を介してデータ転送制御を行うとともに、メモリシステム１００内の各構成要素を制御する。
【００１３】
ドライブ制御回路４は、データアクセス用バス１０１、回路制御用バス１０２を備えている。回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。回路制御用バス１０２には、ＮＡＮＤ型フラッシュメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。
【００１４】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１７、ＮＡＮＤコントローラ１１０、及びＲＡＭコントローラ１１４は、データアクセス用バス１０１と回路制御用バス１０２との両方に接続されている。ＡＴＡコントローラ１１７は、ＡＴＡインタフェース２を介してホストＨＡとの間でデータを送受信する。データアクセス用バス１０１には、データ作業領域及びファームウェア展開領域として使用されるＳＲＡＭ１１５がＳＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤ型フラッシュメモリ１０に記憶されているファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによってＳＲＡＭ１１５に転送される。プロセッサ１０４は、ＳＲＡＭ１１５に転送されたファームウェアを実行することで、メモリシステム１００内での最上位のコントローラとして動作し、ドライブ制御回路４内の構成要素を制御する。
【００１５】
ＲＡＭコントローラ１１４は、プロセッサ１０４とＲＡＭ２０とのインタフェース処理、ＡＴＡ  Ｉ／Ｆ２−ＲＡＭ２０間のデータ転送制御、ＮＡＮＤ型フラッシュメモリ１０−ＲＡＭ２０間のデータ転送制御などを実行する。ＮＡＮＤコントローラ１１０は、プロセッサ１０４とＮＡＮＤ型フラッシュメモリ１０とのインタフェース処理、ＮＡＮＤ型フラッシュメモリ１０−ＲＡＭ２０間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。
【００１６】
ＮＡＮＤ型フラッシュメモリ１０は、ホスト装置１００からのライトデータを記憶したり、ワークエリア（図示せず）にロードされているアドレス変換テーブルのバックアップデータや差分データを記憶したりする。ＮＡＮＤ型フラッシュメモリ１０は、１以上のメモリチップにより構成される。ＮＡＮＤ型フラッシュメモリ１０が複数のメモリチップで構成される場合、複数のメモリチップを並列駆動することで高速動作を実現する事が可能である。ＮＡＮＤ型フラッシュメモリ１０は、１つのメモリセルに１ビットを記憶する二値メモリ（ＳＬＣ：  Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）であってもよいし、１つのメモリセルに２ビット以上を記憶する多値メモリ（ＭＬＣ：  Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）であってもよい。以下、ＮＡＮＤメモリ２は多値メモリであるとして説明する。
次に、ＮＡＮＤ型フラッシュメモリ１０について図２を用いて説明する。図２は、ＮＡＮＤ型フラッシュメモリ１０の構成を示す図である。
【００１７】
ＮＡＮＤ型フラッシュメモリ１０は、制御回路１５、メモリセルアレイ１１、ページバッファ１２、データキャッシュ１３、及びステータスレジスタ１４を有する。
制御回路１５は、ＮＡＮＤ型フラッシュメモリ１０の各部を全体的に制御する。
【００１８】
メモリセルアレイ１１は、例えば多値メモリである場合、複数のメモリセルがマトリクス状に配列されて構成されており、個々のメモリセルは、上位ページ及び下位ページを使用して多値記憶が可能である。また、メモリセルアレイ１１は、消去の単位である物理ブロックを複数備えており、個々の物理ブロックは、読み出しおよび書き込みの単位である物理ページ（以降、単にページ）を複数備えて構成されている。また、個々のメモリセルは、１回データが書き込まれたら消去されるまでそのデータを不揮発に保持するので、データをさらに上書きすることが困難である。
【００１９】
データキャッシュ１３およびページバッファ１２は、例えば１ページ分の記憶容量を備えている。データキャッシュ１３は、ＮＡＮＤ型フラッシュメモリ１０がＮＡＮＤコントローラ１１０との間でデータを送受信するためのバッファとして使用され、ページバッファ１２は、ＮＡＮＤ型フラッシュメモリ１０がデータをメモリセルアレイ１１に入出力するためのバッファとして使用される。
【００２０】
具体的には、書き込みコマンド実行時には、制御回路１５は、ＮＡＮＤコントローラ１１０から書き込みデータが送られてきたら、データキャッシュ１３に格納されたデータをクリアして、書き込みデータをデータキャッシュ１３に格納する。制御回路１５は、さらに、データキャッシュ１３に格納された書き込みデータをページバッファ１２にコピーする。そして、制御回路１５は、ページバッファ１２に格納された書き込みデータをメモリセルアレイ１１にプログラムする。プログラムの際には、制御回路１５は、プログラムされた書き込みデータとページバッファ１２に格納されている書き込みデータとを比較して、正しくプログラムされたか否かをベリファイする。
【００２１】
読み出しコマンド時には、制御回路１５は、メモリセルアレイ１１からページバッファ１２に対象のデータを読み出す。そして、制御回路１５は、データキャッシュ１３に格納されたデータをクリアした後に、ページバッファ１２に格納された読み出しデータをデータキャッシュ１３にコピーする。制御回路１５は、データキャッシュ１３に格納された読み出しデータを、データ出力信号（例えばＲＥ信号）によりＮＡＮＤコントローラ１１０に送る。
【００２２】
ステータスレジスタ１４には、制御回路１５が生成したステータス情報が格納される。ステータスレジスタ１４に格納されたステータス情報は、制御回路１５による制御の下、ＮＡＮＤコントローラ１１０に送られる。
【００２３】
具体的には、書き込みコマンド実行時又は消去コマンド実行時に、制御回路１５は、ＮＡＮＤコントローラ１１０から、ステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）を受信する。制御回路１５は、ステータスリード命令を受信すると、ステータスレジスタ１４に格納されたステータス情報をＮＡＮＤコントローラ１１０へ出力する。
【００２４】
例えば、書き込みコマンド実行時、制御回路１５は、書き込みデータにかかるライト命令（Ｃｍｄ８０ｈ−Ａｄｒ−ＤａｔａＩｎ−Ｃｍｄ１０ｈ）の後にステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）を受信すると、データキャッシュ１３に書き込みデータが格納されていれば、ステータス情報として、書き込みデータにかかるプログラミングが成功したか否かを出力する。
【００２５】
なお、制御回路１５は、データキャッシュ１３に格納された書き込みデータをクリアした場合、それに応じて書き込みデータにかかるステータス情報もステータスレジスタ１４からクリアする。そのため、制御回路１５は、データキャッシュ１３に書き込みデータが格納されていない場合に、書き込みデータにかかるステータス情報を出力することが困難である。
【００２６】
例えば、消去コマンド実行時、制御回路１５は、消去コマンドにかかるイレース命令（Ｃｍｄ６０ｈ−Ａｄｒ−ＣｍｄＤ０ｈ）の後にステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）を受信すると、ステータス情報として、消去コマンドにかかるイレースが成功したか否かを出力する。
次に、ＮＡＮＤコントローラ１１０について図３を用いて説明する。図３は、ＮＡＮＤコントローラ１１０の構成を示す図である。
【００２７】
メモリシステム１００では、優先度の異なるコマンドが異なるタイミングで要求されることがある。この優先度は、例えば、コマンド実行中における他のコマンドとの関係での実行順に関する優先度である。その点を考慮して、ＮＡＮＤコントローラ１１０は、優先度の異なる２つのコマンドキューを持ち、優先度の高いコマンドキューにコマンドがセットされたイベントで優先度の低いコマンドキューから優先度の高いコマンドキューへの切り替えを行うか否か判断する機構を持つ。
【００２８】
具体的には、ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー（第１のコマンドキュー）１１１、優先度高のコマンドキュー（第２のコマンドキュー）１１２、及び処理部１１３を有する。
【００２９】
優先度低のコマンドキュー１１１は、優先度高のコマンドキュー１１２に比べて低い優先度を有する。すなわち、優先度低のコマンドキュー１１１には、コマンドの実行順に関して、優先度高のコマンドキュー１１２に格納されるコマンドよりも優先度の低いコマンドが格納される。優先度低のコマンドキュー１１１は、例えば、複数のコマンドを格納可能である。優先度低のコマンドキュー１１１は、例えば、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造を有し、複数のコマンドをその格納された順に投入位置１１１ａから実行位置１１１ｂ（図５（ａ）参照）へ移動させる。
【００３０】
優先度高のコマンドキュー１１２は、優先度低のコマンドキュー１１１に比べて高い優先度を有する。すなわち、優先度高のコマンドキュー１１２には、コマンドの実行順に関して、優先度低のコマンドキュー１１１に格納されるコマンドよりも優先度の高いコマンドが格納される。優先度高のコマンドキュー１１２は、例えば、１以上のコマンドを格納可能である。以下では、説明の簡略化のために、優先度高のコマンドキュー１１２が１つのコマンドを格納する場合について例示的に説明するが、以下の考え方は、優先度高のコマンドキュー１１２が複数のコマンドを格納可能である場合にも同様に適用できる。
【００３１】
処理部１１３は、優先度低のコマンドキュー１１１及び優先度高のコマンドキュー１１２のいずれかのコマンドキューを選択し、選択されたコマンドキューに格納されたコマンドを実行させＮＡＮＤ型フラッシュメモリ１０へのアクセス処理を行う。
【００３２】
例えば、処理部１１３は、優先度高のコマンドキュー１１２にコマンドが格納されていない場合、優先度低のコマンドキュー１１１を選択し、優先度低のコマンドキュー１１１における実行位置１１１ｂに格納されたコマンドを実行させる。例えば、処理部１１３は、優先度低のコマンドキュー１１１における実行位置１１１ｂに書き込みコマンドＷＲ０が格納されていれば（図５（ａ）参照）、書き込みコマンドＷＲ０を実行させる。
【００３３】
例えば、処理部１１３は、優先度低のコマンドキュー１１１にコマンドが格納されていない状態で、優先度高のコマンドキュー１１２にコマンドが格納された場合、優先度高のコマンドキュー１１２を選択し、優先度高のコマンドキュー１１２に格納されたコマンドを実行させる。例えば、処理部１１３は、優先度高のコマンドキュー１１２に書き込みコマンドＷＲ２が格納されていれば（図５（ａ）参照）、書き込みコマンドＷＲ２を実行させる。
【００３４】
一方、優先度低のコマンドキュー１１１に１以上のコマンドが格納されており、その実行位置１１１ｂに格納されたコマンドを実行中に、優先度高のコマンドキュー１１２にコマンドが格納された場合が問題となる。
【００３５】
ここで、仮に、処理部１１３が、優先度低のコマンドキュー１１１のコマンドの処理を必ず完了させてから優先度高のコマンドキュー１１２のコマンドの処理を行う場合を考える。この場合、優先度の低いコマンドの処理完了を待つ時間分、優先度の高いコマンドへのレイテンシ（コマンド応答までの時間）が長くなる傾向にある。
【００３６】
そこで、実施形態では、処理部１１３が、優先度低のコマンドキュー１１１に格納された第１のコマンドの実行中に優先度高のコマンドキュー１１２に第２のコマンドが格納された場合、第２のコマンドが優先度高のコマンドキュー１１２に格納されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理は、第１のコマンドの実行を中断して第２のコマンドを実行させるような処理である。完了処理は、第１のコマンドの実行を完了させるような処理である。すなわち、優先度低のコマンドキュー１１１の第１のコマンドの処理を必ず完了させるのではなく、第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況を考慮して、第１のコマンドを完了させるか中断させるかを切り替える制御を行う。
具体的には、処理部１１３は、キュー切り替え部１１３ａ及びコマンドシーケンス発行部１１３ｂを有する。
【００３７】
キュー切り替え部１１３ａは、優先度低のコマンドキュー１１１及び優先度高のコマンドキュー１１２のそれぞれに格納されたコマンドを監視し、コマンドシーケンス発行部１１３ｂによるコマンドシーケンス発行前であれば、それぞれにおけるコマンドの格納状況に応じて、優先度低のコマンドキュー１１１及び優先度高のコマンドキュー１１２のいずれかのコマンドキューを選択し、選択されたコマンドキューに格納されたコマンドの内容をコマンドシーケンス発行部１１３ｂへ通知する。
【００３８】
コマンドシーケンス発行部１１３ｂは、実行すべきコマンドの内容の通知をキュー切り替え部１１３ａから受けたら、実行すべきコマンドの内容に応じてコマンドシーケンスを発行する。コマンドシーケンス発行部１１３ｂは、発行されたコマンドシーケンスに従って、ＮＡＮＤ型フラッシュメモリ１０へ供給すべき命令やデータを生成しそれらをＮＡＮＤ型フラッシュメモリ１０へ供給するアクセス処理を行う。また、コマンドシーケンス発行部１１３ｂは、コマンドシーケンスを発行したその旨をキュー切り替え部１１３ａへ通知する。
【００３９】
一方、キュー切り替え部１１３ａは、コマンドシーケンス発行部１１３ｂによるコマンドシーケンス発行後、例えば優先度低のコマンドキュー１１１に格納された第１のコマンドの実行中に優先度高のコマンドキュー１１２に第２のコマンドが格納された場合、第２のコマンドが優先度高のコマンドキュー１１２に格納されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況をコマンドシーケンス発行部１１３ｂに問い合わせる。
【００４０】
コマンドシーケンス発行部１１３ｂは、その問い合わせに応じて、アクセス進捗状況を判定する。すなわち、コマンドシーケンス発行部１１３ｂは、コマンドシーケンスが発行された後、ＮＡＮＤ型フラッシュメモリ１０からＢｕｓｙ信号を逐一受信する。コマンドシーケンス発行部１１３ｂは、Ｂｕｓｙ信号の値が「Ｒｅａｄｙ」なのか「Ｂｕｓｙ」なのかに応じてアクセス進捗状況を判定する。
【００４１】
例えば、コマンドシーケンス発行部１１３ｂは、Ｂｕｓｙ信号の値が、コマンドシーケンス発行後に「Ｂｕｓｙ」になる前の「Ｒｅａｄｙ」であれば、アクセス進捗状況がビジー状態開始前（例えば、図１０に示す「ＮＡＮＤＢｕｓｙ前」）であると判定する。
【００４２】
例えば、コマンドシーケンス発行部１１３ｂは、Ｂｕｓｙ信号の値が「Ｂｕｓｙ」であれば、アクセス進捗状況がビジー状態中（例えば、図１０に示す「ＮＡＮＤＢｕｓｙ中」）であると判定する。
【００４３】
例えば、コマンドシーケンス発行部１１３ｂは、Ｂｕｓｙ信号の値が、コマンドシーケンス発行後に「Ｂｕｓｙ」になった後の「Ｒｅａｄｙ」であれば、アクセス進捗状況がビジー状態満了後（例えば、図１０に示す「ＮＡＮＤＢｕｓｙ後」）であると判定する。
コマンドシーケンス発行部１１３ｂは、判定されたアクセス進捗状況をキュー切り替え部１１３ａに通知する。
【００４４】
キュー切り替え部１１３ａは、アクセス進捗状況の通知を受けたら、アクセス進捗状況に応じて、実行中の第１のコマンドに関して中断処理と完了処理とのいずれかを行う。
【００４５】
すなわち、キュー切り替え部１１３ａは、中断処理を行う場合、優先度低のコマンドキュー１１１を選択した状態から優先度高のコマンドキュー１１２を選択した状態へ切り替えることで、第１のコマンドを中断して第２のコマンドを実行させる。このとき、キュー切り替え部１１３ａは、第１のコマンドが中断中であることを示す中断状態フラグを保持してもよい。
【００４６】
あるいは、キュー切り替え部１１３ａは、完了処理を行う場合、優先度低のコマンドキュー１１１を選択した状態を維持することで、第１のコマンドの実行を完了させる。そして、キュー切り替え部１１３ａは、完了処理により第１のコマンドの実行が完了された後に、第２のコマンドの実行を開始する。例えば、キュー切り替え部１１３ａは、第１のコマンドの実行が完了した旨の通知をコマンドシーケンス発行部１１３ｂから受けたら、優先度低のコマンドキュー１１１を選択した状態から優先度高のコマンドキュー１１２を選択した状態へ切り替えることで、第２のコマンドの実行を開始させる。
【００４７】
さらに、例えば、キュー切り替え部１１３ａは、第１のコマンドの実行に伴うＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況と、第１のコマンドの種類とに応じて、中断処理と完了処理とのいずれかを行う。例えば、キュー切り替え部１１３ａは、第１のコマンドが消去コマンド又は読み出しコマンドであることに応じて中断処理を行い、第１のコマンドが書き込みコマンドであることに応じて完了処理を行う。
【００４８】
より具体的には、キュー切り替え部１１３ａは、第１のコマンドが書き込みコマンドであり、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態開始前であることに応じて、中断処理を行う。また、キュー切り替え部１１３ａは、第１のコマンドが書き込みコマンドであり、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態開始後であることに応じて、完了処理を行う。
【００４９】
あるいは、ここで、仮に、処理部１１３が、中断処理を行う際に、優先度低のコマンドキュー１１１のコマンドの処理を強制的に破棄してから、優先度高のコマンドキュー１１２のコマンドの処理を行う場合について考える。この場合、優先度低のコマンドキュー１１１のコマンドの処理を強制的に破棄してしまうことから、優先度低のコマンドキュー１１１のコマンドの処理に関してスループットが低下する傾向にある。
【００５０】
それに関して、実施形態では、処理部１１３が、中断処理により第１のコマンドの実行が中断され第２のコマンドの実行が完了された後に、中断されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況に応じて、継続処理とリトライ処理とのいずれかを行う。継続処理は、第１のコマンドの実行を中断時の処理から継続させるような処理である。リトライ処理は、第１のコマンドの実行を最初の処理からやり直させるような処理である。
【００５１】
例えば、キュー切り替え部１１３ａは、中断処理により第１のコマンドの実行が中断され第２のコマンドの実行が完了された後に、優先度高のコマンドキュー１１２を選択した状態から優先度低のコマンドキュー１１１を選択した状態へ切り替えることで、中断されていた第１のコマンドの実行を実行すべき旨をコマンドシーケンス発行部１１３ｂへ通知する。
【００５２】
これに応じて、コマンドシーケンス発行部１１３ｂは、中断処理により第１のコマンドの実行が中断されたタイミングにおけるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況を判定する。このとき、コマンドシーケンス発行部１１３ｂは、判定されたアクセス進捗状況として、例えば中断処理を行うときに用いたアクセス進捗状況を用いてもよい。そして、例えば、コマンドシーケンス発行部１１３ｂは、ＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了前であることに応じて、第１のコマンドのコマンドシーケンスを最初から発行することで、第１のコマンドの実行を最初の処理からやり直させるようにするリトライ処理を行う。あるいは、例えば、コマンドシーケンス発行部１１３ｂは、ＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了後であることに応じて、第１のコマンドのコマンドシーケンスを中断時のものから発行することで、第１のコマンドの実行を中断時の処理から継続させる継続処理を行う。
【００５３】
さらに、例えば、コマンドシーケンス発行部１１３ｂは、中断されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況と、第１のコマンドの種類及び第２のコマンドの種類の組み合わせとに応じて、継続処理とリトライ処理とのいずれかを行う。例えば、コマンドシーケンス発行部１１３ｂは、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含むことに応じて、継続処理を行い、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含まないことに応じて、リトライ処理を行う。
【００５４】
より具体的には、コマンドシーケンス発行部１１３ｂは、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了前であることに応じて、リトライ処理を行う。コマンドシーケンス発行部１１３ｂは、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了後であることに応じて、継続処理を行う。
【００５５】
なお、コマンドシーケンス発行部１１３ｂは、例えば、実行中のコマンドが書き込みコマンド又は消去コマンドであれば、ステータスリード命令に対する応答（例えば、ステータス情報）をＮＡＮＤ型フラッシュメモリ１０から受信したことに応じて実行中のコマンドが完了したと判断する。あるいは、コマンドシーケンス発行部１１３ｂは、例えば、実行中のコマンドが読み出しコマンドであれば、読み出し予定のデータの最終アドレスのデータをＮＡＮＤ型フラッシュメモリ１０から受信したことに応じて実行中のコマンドが完了したと判断する。コマンドシーケンス発行部１１３ｂは、実行中のコマンドが完了したと判断したらその旨をキュー切り替え部１１３ａへ通知する。
次に、メモリシステム１００の動作について図４を用いて説明する。図４は、メモリシステム１００の動作を示すフローチャートである。
【００５６】
ステップＳ１では、ＮＡＮＤコントローラ１１０が、優先度高のコマンドキュー１１２に第２のコマンドが格納されたことに応じて、優先度低のコマンドキュー１１１のコマンド（第１のコマンド）の処理を実行中であるか否かを判定する。ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー１１１のコマンドの処理を実行中である場合（ステップＳ１でＹｅｓ）、処理をステップＳ１０へ進め、優先度低のコマンドキュー１１１のコマンドの処理を実行中でない場合（ステップＳ１でＮｏ）、処理をステップＳ７へ進める。
【００５７】
ステップＳ１０では、ＮＡＮＤコントローラ１１０が、第２のコマンドが優先度高のコマンドキュー１１２に格納されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況等に応じて、完了処理と中断処理とのいずれかを選択するための停止判定を行う。完了処理では、優先度の低いコマンドキューで実施中であった第１のコマンドによるアクセス処理を完結させた後、優先度の高いコマンドキューの第２のコマンドを実行する。中断処理では、優先度の低いコマンドキューで実施中であった第１のコマンドによるアクセス処理を中断して、優先度の高いコマンドキューの第２のコマンドを実行する。
具体的には、ステップＳ１０において、ＮＡＮＤコントローラ１１０は、以下のステップＳ１１〜ステップＳ１３の処理を行う。
【００５８】
ステップＳ１１では、ＮＡＮＤコントローラ１１０が、ＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がビジー状態開始後か否かを判定する。ＮＡＮＤコントローラ１１０は、アクセス進捗状況がビジー状態開始前であれば、処理をステップＳ７へ進め、アクセス進捗状況がビジー状態開始前でなければ（すなわち、ビジー状態開始後であれば）、処理をステップＳ１３へ進める。
【００５９】
ステップＳ１３では、ＮＡＮＤコントローラ１１０が、実行中の第１のコマンドの種類が書き込みコマンド（ＷＲアクセス）であるか否かを判断する。ＮＡＮＤコントローラ１１０は、第１のコマンドの種類が書き込みコマンドである場合（ステップＳ１３でＹｅｓ）、処理をステップＳ２へ進め、第１のコマンドの種類が書き込みコマンドでない場合（ステップＳ１３でＮｏ）、処理をステップＳ７へ進める。
【００６０】
ステップＳ２では、ＮＡＮＤコントローラ１１０が、完了処理を行う。すなわち、ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー１１１の第１のコマンドの実行を完了させる。
【００６１】
ステップＳ７では、ＮＡＮＤコントローラ１１０が、中断処理を行う。すなわち、ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー１１１の第１のコマンドの実行を中断させる。このとき、ＮＡＮＤコントローラ１１０は、第１のコマンドの実行を中断中であることを示す中断状態フラグを生成して保持してもよい。
ステップＳ３では、ＮＡＮＤコントローラ１１０が、優先度高のコマンドキュー１１２の第２のコマンドの実行を行い、第２のコマンドの実行を完了させる。
【００６２】
ステップＳ２０では、ＮＡＮＤコントローラ１１０が、中断されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況に応じて、通常処理と継続処理とリトライ処理とのいずれかを行うための復帰判定を行う。通常処理では、停止判定（ステップＳ１０）で第１のコマンドを完了すべきと判定されたことに応じて完了処理（ステップＳ２）がなされた場合に対応し、通常通り優先度低のコマンドキューの処理を行う。継続処理では、停止判定（ステップＳ１０）で第１のコマンドを中断すべきと判定されたことに応じて中断処理（ステップＳ７）がなされた場合に対応し、中断処理（ステップＳ７）で中断していた以降のアクセス処理を継続する。リトライ処理では、停止判定（ステップＳ１０）で第１のコマンドを中断すべきと判定されたことに応じて中断処理（ステップＳ７）がなされた場合に対応し、優先度高のコマンドキュー１１２への切り替え前の優先度低のコマンドキュー１１１の第１のコマンドをリトライ処理する。
具体的には、ステップＳ２０において、ＮＡＮＤコントローラ１１０は、以下のステップＳ２１〜ステップＳ２３の処理を行う。
【００６３】
ステップＳ２１では、ＮＡＮＤコントローラ１１０が、例えば上記の中断状態フラグを参照することなどにより、優先度低のコマンドキュー１１１が中断中か否かを判定する。ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー１１１が中断中でない、すなわち、第１のコマンドの処理が完了している場合（ステップＳ２１でＮｏ）、処理をステップＳ４へ進め、優先度低のコマンドキュー１１１が中断中である（ステップＳ２２でＹｅｓ）、処理をステップＳ２２へ進める。
【００６４】
ステップＳ２２では、ＮＡＮＤコントローラ１１０が、中断されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がビジー状態満了後（ビジー状態満了済み）であるか否かを判定する。ＮＡＮＤコントローラ１１０は、アクセス進捗状況がビジー状態満了後である場合（ステップＳ２２でＹｅｓ）、処理をステップＳ２３へ進め、アクセス進捗状況がビジー状態満了後でない、すなわちビジー状態満了前である場合（ステップＳ２２でＹｅｓ）、処理をステップＳ６へ進める。
【００６５】
ステップＳ２３では、ＮＡＮＤコントローラ１１０が、優先度低のコマンドキュー１１１の第１のコマンドの処理が、優先度高のコマンドキュー１１２の第２のコマンドで実行した処理がＮＡＮＤ型フラッシュメモリ１０内の内部情報（キャッシュやステータス情報等）を更新するアクセスであることにより影響を受ける処理であるか否かを判定する。
【００６６】
例えば、ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー１１１の第１のコマンドの種類と優先度高のコマンドキュー１１２の第２のコマンドの種類との組み合わせが、消去コマンド及び読み出しコマンドを含む場合、第１のコマンドの処理が、ＮＡＮＤ型フラッシュメモリ１０内の内部情報の更新アクセスにより影響を受けない処理であると判定し（ステップＳ２３でＮｏ）、処理をステップＳ５へ進める。
【００６７】
あるいは、例えば、ＮＡＮＤコントローラ１１０は、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含まない場合、第１のコマンドの処理が、ＮＡＮＤ型フラッシュメモリ１０内の内部情報の更新アクセスにより影響を受ける処理であると判定し（ステップＳ２３でＹｅｓ）、処理をステップＳ６へ進める。
【００６８】
ステップＳ４では、ＮＡＮＤコントローラ１１０が、通常処理を行う。すなわち、ＮＡＮＤコントローラ１１０は、優先度低のコマンドキュー１１１で第１のコマンドの次に格納されたコマンドを実行する。
【００６９】
ステップＳ５では、ＮＡＮＤコントローラ１１０が、継続処理を行う。すなわち、ＮＡＮＤコントローラ１１０は、第１のコマンドの実行を中断時の処理から継続させて完了させる。
【００７０】
ステップＳ６では、ＮＡＮＤコントローラ１１０が、リトライ処理を行う。すなわち、ＮＡＮＤコントローラ１１０は、第１のコマンドの実行を最初の処理からやり直させるように開始させ完了させる。
次に、停止判定（ステップＳ１０）及び復帰判定（ステップＳ２０）に伴う動作について、具体的なケースを例示しながら説明する。
【００７１】
第１のケースは、図５（ａ）に示すように、優先度低のコマンドキュー１１１の書き込みコマンドＷＲ０を実行中に優先度高のコマンドキュー１１２に書き込みコマンドＷＲ２が格納されたケースである。第１のケースは、例えば、図４に示す通常処理（ステップＳ４）に対応したケースである。
【００７２】
図５（ｂ）に示すように、優先度低のコマンドキュー１１１の書き込みコマンドＷＲ０のコマンドシーケンスでは、ライト命令（Ｃｍｄ８０ｈ−Ａｄｒ−ＤａｔａＩｎ−Ｃｍｄ１０ｈ）、ＮＡＮＤコントローラ１１０からＮＡＮＤ型フラッシュメモリ１０への書き込みデータの転送等のアクセス処理（ｔＰｒｏｇ）、ステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）が順に処理されることが予定されている。また、Ｂｕｓｙ信号の値は、アクセス処理（ｔＰｒｏｇ）の前後で「Ｒｅａｄｙ」であり、アクセス処理（ｔＰｒｏｇ）中に「Ｂｕｓｙ」になることが予定されている。
【００７３】
このとき、「Ｂｕｓｙ」状態開始後のタイミングｔ１やタイミングｔ２において優先度高のコマンドキュー１１２に書き込みコマンドＷＲ２が格納された場合、図５（ｃ）に示すように、コマンドＷＲ０のコマンドシーケンスの全て（すなわち、ライト命令とアクセス処理とステータスリード命令と）を完了させてから、優先度高のコマンドキュー１１２の書き込みコマンドＷＲ２の実行を開始する。
【００７４】
ここで、仮に、タイミングｔ１やタイミングｔ２において優先度高のコマンドキュー１１２に書き込みコマンドＷＲ２が格納された場合に、優先度低のコマンドキュー１１１の書き込みコマンドＷＲ０を中断させてしまうと、優先度高のコマンドキュー１１２の書き込みコマンドＷＲ２完了後に優先度低のコマンドキュー１１１の書き込みコマンドＷＲ０を中断時点から開始しようとしても、ＮＡＮＤ型フラッシュメモリ１０への書き込みが上書きになってしまう。ＮＡＮＤ型フラッシュメモリ１０は、上記のように一度書き込まれたメモリセルに上書きすることが困難であるため、代替のメモリセルを探して書き込むことになるが、先に途中まで書き込まれたメモリセルは無効なメモリセルとして破棄されることになる。これにより、ＮＡＮＤ型フラッシュメモリ１０におけるリソースを無駄な消費することになる。
【００７５】
それに対して、実施形態では、アクセス処理（ｔＰｒｏｇ）が開始されたタイミング以降のタイミングｔ１やタイミングｔ２で優先度高のコマンドキュー１１２に書き込みコマンドＷＲ２が格納された場合、ＮＡＮＤ型フラッシュメモリ１０の特性を考慮して、実行中のコマンドＷＲ０のコマンドシーケンスを中断せずに全て完了させる。これにより、ＮＡＮＤ型フラッシュメモリ１０におけるリソースの無駄な消費を低減できる。
【００７６】
第２のケースは、図６（ａ）に示すように、優先度低のコマンドキュー１１１の消去コマンドＥＲ０を実行中に優先度高のコマンドキュー１１２に読み出しコマンドＲＤ０が格納されたケースである。第２のケースは、例えば、図４に示す継続処理（ステップＳ５）に対応したケースである。
【００７７】
図６（ｂ）に示すように、優先度低のコマンドキュー１１１の消去コマンドＥＲ０のコマンドシーケンスでは、イレース命令（Ｃｍｄ６０ｈ−Ａｄｒ−ＣｍｄＤ０ｈ）、ＮＡＮＤコントローラ１１０からＮＡＮＤ型フラッシュメモリ１０への消去動作に伴うアクセス処理（ｔＢＥＲＡＳＥ）、ステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）が順に処理されることが予定されている。また、Ｂｕｓｙ信号の値は、アクセス処理（ｔＢＥＲＡＳＥ）の前後で「Ｒｅａｄｙ」であり、アクセス処理（ｔＢＥＲＡＳＥ）中に「Ｂｕｓｙ」になることが予定されている。
【００７８】
このとき、「Ｂｕｓｙ」状態満了後のタイミングｔ３において優先度高のコマンドキュー１１２に読み出しコマンドＲＤ０が格納された場合、図６（ｃ）に示すように、消去コマンドＥＲ０のコマンドシーケンスのうちイレース命令とアクセス処理とを完了させてから、消去コマンドＥＲ０を中断して、優先度高のコマンドキュー１１２の読み出しコマンドＲＤ０の実行を開始する。そして、優先度高のコマンドキュー１１２の読み出しコマンドＲＤ０の実行を完了したら、中断中の消去コマンドＥＲ０のコマンドシーケンスのうちステータスリード命令から処理を継続して再開し完了させる。
【００７９】
本ケースにおいては、優先度高のコマンドキュー１１２の読み出しコマンドＲＤ０の処理によって優先度低のコマンドキュー１１１で中断した際のＮＡＮＤ型フラッシュメモリ１０の内部情報（キャッシュやステータス情報等）が棄損しない為、中断後、優先度高のコマンドキュー１１２の読み出しコマンドＲＤ０の実行が完了してから、中断中の消去コマンドＥＲ０の継続処理が可能である。
【００８０】
第３のケースは、図７（ａ）に示すように、優先度低のコマンドキュー１１１の読み出しコマンドＲＤ０を実行中に優先度高のコマンドキュー１１２に消去コマンドＥＲ０が格納されたケースである。第３のケースは、例えば、図４に示す継続処理（ステップＳ５）に対応したケースである。
【００８１】
図７（ｂ）に示すように、優先度低のコマンドキュー１１１の読み出しコマンドＲＤ０のコマンドシーケンスでは、リード命令（Ｃｍｄ００ｈ−Ａｄｒ−Ｃｍｄ３０ｈ）、ＮＡＮＤコントローラ１１０からＮＡＮＤ型フラッシュメモリ１０へのデータ読み出し動作に伴うアクセス処理（ｔＲ）、ＮＡＮＤ型フラッシュメモリ１０からＮＡＮＤコントローラ１１０へのデータ転送処理（ＤａｔａＯｕｔ）が順に処理されることが予定されている。また、Ｂｕｓｙ信号の値は、アクセス処理（ｔＲ）の前後で「Ｒｅａｄｙ」であり、アクセス処理（ｔＲ）中に「Ｂｕｓｙ」になることが予定されている。
【００８２】
このとき、「Ｂｕｓｙ」状態満了後のタイミングｔ４において優先度高のコマンドキュー１１２に消去コマンドＥＲ０が格納された場合、図７（ｃ）に示すように、読み出しコマンドＲＤ０のコマンドシーケンスのうちリード命令とアクセス処理とを完了させてから、読み出しコマンドＲＤ０を中断して、優先度高のコマンドキュー１１２の消去コマンドＥＲ０の実行を開始する。そして、優先度高のコマンドキュー１１２の消去コマンドＥＲ０の実行を完了したら、中断中の読み出しコマンドＲＤ０のコマンドシーケンスのうちデータ転送処理から処理を継続して再開し完了させる。
【００８３】
本ケースにおいては、優先度高のコマンドキュー１１２の消去コマンドＥＲ０の処理によって優先度低のコマンドキュー１１１で中断した際のＮＡＮＤ型フラッシュメモリ１０の内部情報（キャッシュやステータス情報等）が棄損しない為、中断後、優先度高のコマンドキュー１１２の消去コマンドＥＲ０の実行が完了してから、中断中の読み出しコマンドＲＤ０の継続処理が可能である。
【００８４】
第４のケースは、図８（ａ）に示すように、優先度低のコマンドキュー１１１の消去コマンドＥＲ０を実行中に優先度高のコマンドキュー１１２に消去コマンドＥＲ１が格納されたケースである。第４のケースは、例えば、図４に示すリトライ処理（ステップＳ６）に対応したケースである。
【００８５】
図８（ｂ）に示すように、優先度低のコマンドキュー１１１の消去コマンドＥＲ０のコマンドシーケンスでは、イレース命令（Ｃｍｄ６０ｈ−Ａｄｒ−ＣｍｄＤ０ｈ）、ＮＡＮＤコントローラ１１０からＮＡＮＤ型フラッシュメモリ１０への消去動作に伴うアクセス処理（ｔＢＥＲＡＳＥ）、ステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）が順に処理されることが予定されている。また、Ｂｕｓｙ信号の値は、アクセス処理（ｔＢＥＲＡＳＥ）の前後で「Ｒｅａｄｙ」であり、アクセス処理（ｔＢＥＲＡＳＥ）中に「Ｂｕｓｙ」になることが予定されている。
【００８６】
このとき、「Ｂｕｓｙ」状態満了後のタイミングｔ５において優先度高のコマンドキュー１１２に消去コマンドＥＲ１が格納された場合、図８（ｃ）に示すように、消去コマンドＥＲ０を中断して、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行を開始する。そして、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行を完了したら、中断中の消去コマンドＥＲ０のコマンドシーケンスのうち最初のイレース命令から処理をやり直すように処理を開始し完了させる。
【００８７】
本ケースにおいては、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の処理によって優先度低のコマンドキュー１１１で中断した際のＮＡＮＤ型フラッシュメモリ１０の内部情報（キャッシュやステータス情報等）が棄損される為、中断後、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行が完了してから、中断中の消去コマンドＥＲ０のリトライ処理が必要になる。
【００８８】
第５のケースは、図９（ａ）に示すように、優先度低のコマンドキュー１１１の消去コマンドＥＲ０を実行中に優先度高のコマンドキュー１１２に消去コマンドＥＲ１が格納されたケースである。第５のケースは、例えば、図４に示すリトライ処理（ステップＳ６）に対応したケースである。
【００８９】
図９（ｂ）に示すように、優先度低のコマンドキュー１１１の消去コマンドＥＲ０のコマンドシーケンスでは、イレース命令（Ｃｍｄ６０ｈ−Ａｄｒ−ＣｍｄＤ０ｈ）、ＮＡＮＤコントローラ１１０からＮＡＮＤ型フラッシュメモリ１０への消去動作に伴うアクセス処理（ｔＢＥＲＡＳＥ）、ステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）が順に処理されることが予定されている。また、Ｂｕｓｙ信号の値は、アクセス処理（ｔＢＥＲＡＳＥ）の前後で「Ｒｅａｄｙ」であり、アクセス処理（ｔＢＥＲＡＳＥ）中に「Ｂｕｓｙ」になることが予定されている。
【００９０】
このとき、「Ｂｕｓｙ」状態開始前のタイミングｔ６において優先度高のコマンドキュー１１２に消去コマンドＥＲ１が格納された場合、図９（ｃ）に示すように、消去コマンドＥＲ０を中断して、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行を開始する。そして、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行を完了したら、中断中の消去コマンドＥＲ０のコマンドシーケンスのうち最初のイレース命令から処理をやり直すように処理を開始し完了させる。
【００９１】
あるいは、「Ｂｕｓｙ」状態中のタイミングｔ７において優先度高のコマンドキュー１１２に消去コマンドＥＲ１が格納された場合、図９（ｄ）に示すように、消去コマンドＥＲ０を中断して、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行を開始する。そして、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行を完了したら、中断中の消去コマンドＥＲ０のコマンドシーケンスのうち最初のイレース命令から処理をやり直すように処理を開始し完了させる。
【００９２】
本ケースにおいては、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の処理によって優先度低のコマンドキュー１１１で中断した際のＮＡＮＤ型フラッシュメモリ１０の内部情報（キャッシュやステータス情報等）が棄損される為、中断後、優先度高のコマンドキュー１１２の消去コマンドＥＲ１の実行が完了してから、中断中の消去コマンドＥＲ０のリトライ処理が必要になる。
【００９３】
このように、停止判定（ステップＳ１０）及び復帰判定（ステップＳ２０）に伴う動作について、第１のケース〜第５のケースを例示して説明したが、それ以外にも様々なケースが考えられる。様々なケースについてまとめたものを図１０に示す。
【００９４】
ここで、仮に、処理部１１３が、優先度低のコマンドキュー１１１のコマンドの処理を必ず完了させてから優先度高のコマンドキュー１１２のコマンドの処理を行う場合を考える。この場合、優先度の低いコマンドの処理完了を待つ時間分、優先度の高いコマンドへのレイテンシ（コマンド応答までの時間）が長くなる傾向にある。
【００９５】
それに対して、実施形態では、処理部１１３が、優先度低のコマンドキュー１１１に格納された第１のコマンドの実行中に優先度高のコマンドキュー１１２に第２のコマンドが格納された場合、第２のコマンドが優先度高のコマンドキュー１１２に格納されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理は、第１のコマンドの実行を中断して第２のコマンドを実行させるような処理である。完了処理は、第１のコマンドの実行を完了させるような処理である。これにより、第１のコマンドの実行を必ず完了させる場合に比べて、優先度の高いコマンドへのレイテンシ（コマンド応答までの時間）を短縮できる。
【００９６】
また、実施形態では、処理部１１３が、第１のコマンドの実行に伴うＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況と、第１のコマンドの種類とに応じて、中断処理と完了処理とのいずれかを行う。これにより、第１のコマンドを停止することに関して、アクセス進捗状況と第１のコマンドの種類との両方を考慮した適切な処理を行うことができる。
【００９７】
例えば、実施形態では、処理部１１３が、第１のコマンドが消去コマンド又は読み出しコマンドであることに応じて中断処理を行い、第１のコマンドが書き込みコマンドであることに応じて完了処理を行う。これにより、コマンドの実行に伴うＮＡＮＤ型フラッシュメモリ１０の特性を考慮して、中断処理と完了処理とを切り替えて行うことができる。
【００９８】
あるいは、仮に、第１のコマンドが書き込みコマンドであり、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態開始後であるときに中断処理を行う場合について考える。この場合、優先度高のコマンドキュー１１２の第２のコマンドの実行完了後に優先度低のコマンドキュー１１１の第１のコマンド（書き込みコマンド）を中断時点から開始しようとしても、ＮＡＮＤ型フラッシュメモリ１０への書き込みが上書きになってしまう。ＮＡＮＤ型フラッシュメモリ１０は、上記のように一度書き込まれたメモリセルに上書きすることが困難であるため、代替のメモリセルを探して書き込むことになるが、先に途中まで書き込まれたメモリセルは無効なメモリセルとして破棄されることになる。これにより、ＮＡＮＤ型フラッシュメモリ１０におけるリソースを無駄に消費することになる。
【００９９】
あるいは、仮に、第１のコマンドが書き込みコマンドであり、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態開始前であるときに完了処理を行う場合について考える。この場合、優先度高のコマンドキュー１１２の第２のコマンドの実行完了後に優先度低のコマンドキュー１１１の第１のコマンド（書き込みコマンド）を中断時点から開始することができる。すなわち、ビジー状態開始前であればＮＡＮＤ型フラッシュメモリ１０へのメモリセルへの書き込みがまだ実施されていないので、メモリセルへの書き込みが上書きにならずにメモリセルへ書き込みを行うことができる。すなわち、この場合に完了処理を行うことは、無駄に、第１のコマンドの実行を完了させるものであり、優先度の高いコマンドへのレイテンシ（コマンド応答までの時間）が長くなる傾向にある。
【０１００】
それに対して、実施形態では、処理部１１３が、第１のコマンドが書き込みコマンドであり、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態開始前であることに応じて、中断処理を行う。これにより、ＮＡＮＤ型フラッシュメモリ１０の特性を考慮して、実行中の第１のコマンド（書き込みコマンド）のコマンドシーケンスを中断させるので、優先度の高いコマンドへのレイテンシを低減できる。また、処理部１１３は、第１のコマンドが書き込みコマンドであり、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態開始後であることに応じて、完了処理を行う。すなわち、処理部１１３は、完了処理により第１のコマンドの実行が完了された後に、第２のコマンドの実行を開始する。これにより、ＮＡＮＤ型フラッシュメモリ１０の特性を考慮して、実行中の第１のコマンド（書き込みコマンド）のコマンドシーケンスを中断せずに全て完了させるので、ＮＡＮＤ型フラッシュメモリ１０におけるリソースの無駄な消費を低減できる。すなわち、実施形態によれば、優先度の高いコマンドへのレイテンシを低減できるとともに、ＮＡＮＤ型フラッシュメモリ１０におけるリソースの無駄な消費を低減できる。
【０１０１】
あるいは、仮に、処理部１１３が、中断処理を行う際に、優先度低のコマンドキュー１１１の第１のコマンドの処理を強制的に破棄してから、優先度高のコマンドキュー１１２の第２のコマンドの処理を行う場合について考える。この場合、優先度低のコマンドキュー１１１の第１のコマンドの処理を強制的に破棄してしまうことから、優先度低のコマンドキュー１１１の第１のコマンドの処理に関してスループットが低下する傾向にある。
【０１０２】
それに対して、実施形態では、処理部１１３が、中断処理により第１のコマンドの実行が中断され第２のコマンドの実行が完了された後に、中断されたタイミングにおける前記第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況に応じて、継続処理とリトライ処理とのいずれかを行う。継続処理は、第１のコマンドの実行を中断時の処理から継続させる処理である。リトライ処理は、第１のコマンドの実行を最初の処理からやり直す処理である。これにより、ＮＡＮＤ型フラッシュメモリ１０の特性、すなわちＮＡＮＤ型フラッシュメモリ１０の内部状態が棄損されるか否かを考慮して、可能な場合に第１のコマンドを中断時の処理から継続させることができる。この結果、優先度低のコマンドキュー１１１の第１のコマンドの処理に関してスループットを向上できる。
【０１０３】
また、実施形態では、処理部１１３が、ＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了前であることに応じて、リトライ処理を行い、ＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了後であることに応じて、継続処理を行う。これにより、アクセス進捗状況を考慮して、可能な場合に第１のコマンドを中断時の処理から継続させることができる。
【０１０４】
また、実施形態では、処理部１１３が、中断されたタイミングにおける第１のコマンドによるＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況と、第１のコマンドの種類及び第２のコマンドの種類の組み合わせとに応じて、継続処理とリトライ処理とのいずれかを行う。これにより、第１のコマンドの実行へ復帰させることに関して、アクセス進捗状況と第１のコマンドの種類及び第２のコマンドの種類の組み合わせとの両方を考慮した適切な処理を行うことができる。
【０１０５】
また、実施形態では、処理部１１３が、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含むことに応じて、継続処理を行い、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含まないことに応じて、リトライ処理を行う。これにより、ＮＡＮＤ型フラッシュメモリ１０の特性、すなわちＮＡＮＤ型フラッシュメモリ１０の内部状態が棄損されるか否かを考慮して、可能な場合に第１のコマンドを中断時の処理から継続させることができる。
【０１０６】
また、実施形態では、処理部１１３が、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了前であることに応じて、リトライ処理を行う。処理部１１３は、第１のコマンドの種類及び第２のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つＮＡＮＤ型フラッシュメモリ１０へのアクセス進捗状況がＮＡＮＤ型フラッシュメモリ１０のビジー状態満了後であることに応じて、継続処理を行う。これにより、アクセス進捗状況と第１のコマンドの種類及び第２のコマンドの種類の組み合わせとの両方を考慮して、ＮＡＮＤ型フラッシュメモリ１０の内部状態が棄損されない場合に、第１のコマンドを中断時の処理から継続させることができる。
【０１０７】
なお、上記の実施形態では、書き込みコマンドのコマンドシーケンスにおいて、アクセス処理（ｔＰｒｏｇ）の完了後にステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）を行う場合について例示している（図５（ｂ）参照）が、ステータスリード命令は、ステータポーリング命令として、アクセス処理中から開始され繰り返し行われてもよい。
【０１０８】
同様に、消去コマンドのコマンドシーケンスにおいて、アクセス処理（ｔＢＥＲＡＳＥ）の完了後にステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）を行う場合について例示している（図６（ｂ）参照）が、ステータスリード命令は、ステータポーリング命令として、アクセス処理中から開始され繰り返し行われてもよい。
【０１０９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１０】
２  ＡＴＡ  Ｉ／Ｆ、４  ドライブ制御回路、１０  ＮＡＮＤ型フラッシュメモリ、１１  メモリセルアレイ、１２  ページバッファ、１３  データキャッシュ、１４  ステータスレジスタ、１５  制御回路、２０  ＲＡＭ、１００  メモリシステム、１０１  データアクセス用バス、１０２  回路制御用バス、１０４  プロセッサ、１０５  ブートＲＯＭ、１０６  ＲＯＭコントローラ、１１０  ＮＡＮＤコントローラ、１１１  優先度低のコマンドキュー、１１２  優先度高のコマンドキュー、１１３  処理部、１１３ａ  キュー切り替え部、１１３ｂ  コマンドシーケンス発行部、１１４  ＲＡＭコントローラ、１１５  ＳＲＡＭ、１１６  ＳＲＡＭコントローラ、１１７  ＡＴＡコントローラ。
【図１】
2013200692.tif 000003
【図２】
2013200692.tif 000004
【図３】
2013200692.tif 000005
【図４】
2013200692.tif 000006
【図５】
2013200692.tif 000007
【図６】
2013200692.tif 000008
【図７】
2013200692.tif 000009
【図８】
2013200692.tif 000010
【図９】
2013200692.tif 000011
【図１０】
2013200692.tif 000012