(57)【特許請求の範囲】
【請求項１】
不揮発性のメモリと、
コマンドが格納されるコマンド格納部と、
バックグランド処理の種類とその優先順位とが設定され、
必要とされているバックグランド処理の情報が設定され、
ホストデバイスによって、前記バックグランド処理の許可または不許可が設定される記憶部と、
前記コマンド格納部にコマンドが格納されていないと判定すると、前記記憶部を参照して前記ホストデバイスが前記バックグランド処理を行うことを許可しているか否かを判定し、
許可されていない場合、前記記憶部に設定された前記バックグランド処理の情報と前記優先順位とを参照して、前記メモリの未使用のブロックの数と、前記必要とされているバックグランド処理の優先順位及び数とに基づいて前記バックグランド処理の重要度を前記記憶部に設定する管理部と、
を備えることを特徴とするメモリデバイス。
【請求項２】
前記管理部は、前記ホストデバイスが前記バックグランド処理を行うことを許可していると判定する場合、
前記記憶部に設定された前記バックグランド処理の情報を参照して、前記メモリの未使用のブロックの数と、前記バックグランド処理の種類及び数とに基づいて前記バックグランド処理の重要度を前記記憶部に設定し、
前記記憶部に設定された前記バックグランド処理の情報に基づくバックグランド処理を、優先順に実行する
ことを特徴とする請求項１に記載のメモリデバイス。
【請求項３】
前記管理部は、前記バックグランド処理を実行している間に前記ホストデバイスからコマンドが入力された場合、前記記憶部に設定された前記重要度が、所定の値以上の場合、前記バックグランド処理を実行することを特徴とする請求項２に記載のメモリデバイス。
【請求項４】
前記管理部は、前記バックグランド処理の間に前記ホストデバイスからコマンドが入力された場合、最大で２つの前記バックグランド処理を実行することを特徴とする請求項３に記載のメモリデバイス。
【請求項５】
前記管理部は、前記ホストデバイスに、前記記憶部に設定された前記重要度に関する情報を供給することを特徴とする請求項１乃至４のいずれか一項に記載のメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリデバイスに関する。
【背景技術】
【０００２】
データを保持するメディアとして種々のものが存在する。そのようなメディアとして、例えば、ＵＦＳ（Universal Flash Storage）メモリデバイス等が挙げられる。従来のメモリデバイスは、不要なバックグランド処理と、必要なバックグランド処理とを明確に判断することができないので、効率良くバックグランド処理を行うことができず、メモリデバイスのパフォーマンスが低下してしまうという問題があった。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】JEDEC SOLID STATE TECHNOLOGY ASSOCIATION、JEDEC STANDARD（JESD220）、２０１１年２月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高品質なメモリデバイスを提供する。
【課題を解決するための手段】
【０００５】
実施形態のメモリデバイスは、不揮発性のメモリと、コマンド格納部と、記憶部と、管理部と、を備えている。コマンド格納部は、コマンドを格納する。記憶部は、バックグランド処理の種類及び優先順位を設定し、必要とされている前記バックグランド処理の情報を設定し、ホストデバイスによって、前記バックグランド処理の許可または不許可が設定される。管理部は、前記コマンド格納部にコマンドが格納されていないと判定すると、前記記憶部を参照して前記ホストデバイスが前記バックグランド処理を行うことを許可しているか否かを判定し、許可されていない場合、前記記憶部に設定された前記バックグランド処理の情報を参照して、前記メモリの未使用のブロックの数と、前記バックグランド処理の種類及び数とに基づいて前記バックグランド処理の重要度を前記記憶部に設定する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るメモリデバイスのハードウェア上の構成を示している。
【図２】第１の実施形態に係るメモリを例示する回路図である。
【図３】第１の実施形態に係るメモリ空間の構成を例示する図である。
【図４】第１の実施形態に係るメモリデバイスが封止された形態の例を示している。
【図５】第１の実施形態に係るホストデバイスの機能ブロックを示している。
【図６】第１の実施形態に係るメモリデバイスの機能ブロックを示している。
【図７】第１の実施形態に係るパケットの例を示している。
【図８】第１の実施形態に係る論理アドレスと物理ブロックとの変換テーブルの例を示している。
【図９】第１の実施形態に係るバックグランド処理の種類と、優先順位とを示した図である。
【図１０】第１の実施形態に係るメモリデバイスにおいて、バックグランド処理の重要度及び必要性の設定に係る動作についてのフローである。
【図１１】第１の実施形態に係るメモリデバイスにおいて、バックグランド処理が行われる場合の動作についてのフローである。
【図１２】第２の実施形態に係るメモリデバイスのバックグランド処理中に、電力に関するコマンドがメモリデバイスに入力された場合の動作についてのフローである。
【発明を実施するための形態】
【０００７】
以下、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【０００８】
（第１の実施形態）
＜１．１  構成＞
＜１．１．１  メモリデバイスの概要＞
図１は、第１の実施形態に係るメモリデバイスを概略的に示している。図１は、メモリデバイスのハードウェア上の構成を示している。  
図１に示すように、メモリデバイス（半導体記憶装置）１は、ホストデバイス（以下、単にホストと称する場合がある）２と通信できるように構成されている。メモリデバイス１は、ターゲットとして動作し、ホストデバイス２はイニシエータとして動作する。さらに具体的な例として、メモリデバイス１はＵＦＳメモリデバイスであり、ホストデバイス２はＵＦＳメモリデバイスをサポートするホストである。
【０００９】
メモリデバイス１は、少なくとも、不揮発性の半導体メモリ１１と、メモリ１１を制御するためのメモリコントローラ１２とを含んでいる。メモリ１１は、複数ビットからなる特定の書き込み単位でデータの書き込み、及び読み出しを行う。さらに、メモリ１１は、複数の書き込み単位からなる消去単位でデータを消去する。
【００１０】
また、メモリデバイス１は、Ｉ／Ｏ２１、コアロジック部２２、Ｉ／Ｏ２３を含んでいる。Ｉ／Ｏ２１は、メモリデバイス１がホストデバイス２と接続するためのハードウェア上の構成を含んでいる。メモリデバイス１がＵＦＳメモリデバイスである場合、メモリデバイス１とホストデバイス２との間の信号には、ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃ、ＶＣＣ、ＶＣＣＱ、ＶＣＣＱ２、ＶＤＤｉ、ＶＤＤｉ２、ＶＤＤｉ３が含まれる。ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃは、ホストデバイス２とＩ／Ｏ２１との間で通信される。ＲＥＳＥＴは、ハードウェアリセット信号である。ＲＥＦ＿ＣＬＫは、参照クロックである。ＤＯＵＴとＤＯＵＴ＿ｃは差動信号対を形成し、ホストデバイス２からメモリデバイス１へ送信される信号である。ＤＩＮとＤＩＮ＿ｃは差動信号対を形成し、メモリデバイス１からホストデバイス２へ送信される信号である。ＶＣＣ、ＶＣＣＱ、ＶＣＣＱ２は、メモリ１１、及びコアロジック部２２に供給される電源電圧である。ＶＤＤｉ、ＶＤＤｉ２、ＶＤＤｉ３は、コアロジック部２２に供給され、コアロジック部２２内に電圧レギュレータが設けられる際の入力端子である。
【００１１】
コアロジック部２２は、メモリコントローラ１２のうちのＩ／Ｏを除く主要部分である。Ｉ／Ｏ２３は、メモリコントローラ１２がメモリ１１と接続するためのハードウェア上の構成を含んでいる。コアロジック部２２は、ホストインターフェース３１、バッファ３２、データバス３３、メモリインターフェース３４、バッファ３５、ＥＣＣ回路３６、制御バス４１、ＣＰＵ（central processing unit）４２、ＲＯＭ（read only memory）４３、ワークＲＡＭ（random access memory）４５、レジスタ４６を含んでいる。
【００１２】
Ｉ／Ｏ２１は、ホストインターフェース３１と接続されている。ホストインターフェース３１は、メモリデバイス１とホストデバイス２が通信するのに必要な処理を行なう。より具体的には、ホストインターフェース３１は、メモリデバイス１とホストデバイス２がともに準拠している通信プロトコルに則ってメモリデバイス１とホストデバイス２との間の通信を担う。メモリデバイス１がＵＦＳメモリデバイスである場合、例えば、ホストインターフェース３１は、ＵＦＳインターフェースである。ＵＦＳインターフェースは、物理層についてはＭ−ＰＨＹ規格に則っており、リンク層についてはＵｎｉＰｒｏ規格に則っている。
【００１３】
ホストインターフェース３１は、バッファ３２と接続されている。バッファ３２は、ホストデバイス２からメモリデバイス１に送信されたデータをホストインターフェース３１を介して受け取り、これを一時的に保持する。また、バッファ３２は、メモリデバイス１からホストインターフェース３１を介してホストデバイス２へ送信されるデータを一時的に保持する。バッファ３２はデータバス３３と接続されている。
【００１４】
Ｉ／Ｏ２３は、メモリインターフェース３４と接続されている。メモリインターフェース３４は、メモリコントローラ１２がメモリ１１と通信するのに必要な処理を行なう。より具体的には、メモリインターフェース３４は、コアロジック部２２からの指示をメモリ１１が認識可能な形態で送信する。メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリインターフェース３４は、ＮＡＮＤフラッシュインターフェースである。尚、メモリ１１はＮＡＮＤ型フラッシュメモリに限らず、不揮発性のメモリであれば、どのようなメモリでも良い。
【００１５】
メモリインターフェース３４は、バッファ３５と接続されている。バッファ３５は、メモリ１１からメモリコントローラ１２に送信されたデータをメモリインターフェース３４を介して受け取り、これを一時的に保持する。また、バッファ３５は、メモリコントローラ１２からメモリ１１にメモリインターフェース３４を介して送信される予定のデータを一時的に保持する。バッファ３５はデータバス３３と接続されている。メモリインターフェース３４、及びバッファ３５は、ＥＣＣ（error correcting code）回路３６と接続されている。ＥＣＣ回路３６はまた、データバッファ３５と接続されている。ＥＣＣ回路３６は、ホストデバイス２からの書き込みデータをデータバス３３を介して受け取り、書き込みデータにエラー訂正符号を付加し、エラー訂正符号を付された書き込みデータをバッファ３５に供給する。また、ＥＣＣ回路３６は、メモリ１１から供給されたデータをバッファ３５を介して受け取り、このデータに対してエラー訂正符号を用いてエラー訂正を行い、エラー訂正されたデータをデータバス３３に供給する。
【００１６】
制御バス４１には、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４５、レジスタ４６が接続されている。ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４５、レジスタ４６は、制御バス４１を介して相互に通信する。ＣＰＵ４２は、メモリデバイス１の全体の動作を司る。ＣＰＵ４２は、ＲＯＭ４３に格納されている制御プログラム（命令）に従って所定の処理を実行する。ＣＰＵ４２は、制御プログラムに従ってホストデバイス２から受けたコマンドに従ってメモリ１１に対する所定の処理を実行したりする。
【００１７】
ＲＯＭ４３は、ＣＰＵ４２により制御される制御プログラムなどを格納する。ＲＡＭ４５は、ＣＰＵ４２の作業エリアとして使用され、ＣＰＵ４２の作業に必要な変数等を一時的に記憶する。レジスタ４６は、メモリデバイス１の動作に必要な種々の値を保持する。また、レジスタ４６は、ホストデバイス２が、メモリデバイス１を制御するのに必要な種々の値を保持する。
【００１８】
制御バス４１には、ホストインターフェース３１、バッファ３２、メモリインターフェース３４、バッファ３５が接続されている。ＣＰＵ４２は、制御プログラムやホストデバイス２からの指示に基づいて、ホストインターフェース３１、バッファ３２、メモリインターフェース３４、バッファ３５を制御する。メモリコントローラ１２には、アナログ回路５１が設けられていてもよい。
【００１９】
＜１．１．２  メモリの概要＞
例えば、メモリ１１は１つまたは複数のＮＡＮＤ型フラッシュメモリを含む。メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリ１１は、ページ単位でデータの書き込み、及び読み出しを行う。ページは、図２に示すように、複数のメモリセルトランジスタの集合のメモリ空間からなり、固有の物理アドレスを割り当てられている。各メモリセルトランジスタ（メモリセル、セルトランジスタ等とも称す）ＭＴは、いわゆる積層ゲート構造のＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）である。各メモリセルトランジスタＭＴは、電荷蓄積層ＣＳに蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタＭＴが電流経路（ソース／ドレインＳＤ）同士を相互に直列接続されてＮＡＮＤストリングを構成し、ＮＡＮＤストリングの両端に選択ランジスタＳ１、Ｓ２が接続される。選択トランジスタＳ２の電流経路の他端はビット線ＢＬに接続され、選択トランジスタＳ１の電流経路の他端はソース線ＳＬに接続されている。
【００２０】
ワード線ＷＬ０乃至ＷＬ６３は、ＷＬ方向に延び、同じ行に属する複数のメモリセルトランジスタＭＴの制御ゲート電極ＣＧに接続される。メモリセルトランジスタＭＴは、ビット線ＢＬとワード線ＷＬとの各交点に設けられる。セレクトゲート線ＳＧＤは、ＷＬ方向に延び、ブロック内の全選択トランジスタＳ２に接続されている。セレクトゲート線ＳＧＳは、ＷＬ方向に延び、ブロック内の全選択トランジスタＳ１に接続されている。同じワード線ＷＬと接続されている複数のメモリセルトランジスタＭＴは、ページを構成する。
【００２１】
メモリ１１は、図３に示すように、複数のメモリセルトランジスタを含むメモリセルアレイ９１と、メモリセルトランジスタとの間でデータの入出力を行うページバッファ９２とを備えている。ページバッファ９２は、１ページ分のデータを保持する。メモリ１１へのデータの書き込みを行う場合、メモリコントローラ１２は、書き込みコマンドとともに、書き込み先を示すページアドレスと１ページ分の書き込みデータとをメモリ１１に送信する。メモリ１１は、メモリコントローラ１２から受信した書き込みデータをページバッファ９２に格納し、ページバッファ９２内の書き込みデータをページアドレスで指定されたメモリセルへと書き込む。このメモリセルへの書き込み動作を開始すると、メモリ１１はメモリコントローラ１２に対して動作中であることを示すビジー信号を出力する。引き続きデータを書き込む場合、ビジー信号がレディー信号に切り替わった後、次のページアドレスに対して上記と同様の動作を行う。
【００２２】
メモリ１１からのデータの読み出しを行う場合、メモリコントローラ１２は、読み出しコマンドとともに、読み出し先を示すページアドレスをメモリ１１に送信する。メモリ１１は、ページアドレスで指定されたメモリセルからページバッファ９２に１ページ分のデータを読み出す。このメモリセルからの読み出し動作を開始すると、メモリ１１はメモリコントローラ１２に対してビジー信号出力する。そして、ビジー信号がレディー信号に切り替わった後、ページバッファ９２に格納された読み出しデータがメモリコントローラ１２に出力される。引き続きデータを読み出す場合、次のページアドレスに対して上記と同様の動作を行う。
【００２３】
メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリセルトランジスタＭＴが２つ以上の閾値電圧の異なる状態を取り得る。つまり、１つのメモリセルが多値（多ビット）を記憶できるようにメモリ１１が構成されていてもよい。そのような多値を記憶可能なメモリの場合、１つのワード線に複数ページが割り当てられる。
【００２４】
また、メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリ１１は、ブロック単位でデータの消去を行う。各ブロックは、連続する物理アドレスを有する複数のページからなる。以下の説明では、便宜上、書き込み単位をページとし、消去単位をブロックとする。しかしながら、メモリ１１は、必ずしもＮＡＮＤ型フラッシュメモリに限られない。
【００２５】
＜１．１．３  メモリのパッケージについて＞
メモリデバイス１は、例えば、プリント基板上に半田により実装される埋め込み型でも良いし、ホストデバイス２に設けられたカードスロットに対して脱着可能なリムーバブル型でもよい。図４は、封止された形態のメモリデバイス１の例を示している。図４に示されているように、プリント基板２０１上にチップ状の複数のメモリ１１が積層されている。各メモリ１１は、プリント基板２０１上の配線パターン（図示せず）にワイヤ２０２により接続されている。チップ状のメモリコントローラ１２も、プリント基板２０１上に置かれ、ワイヤ２０２により配線パターンに接続されている。プリント基板２０１の裏面には、図示せぬ外部端子（例えば、ＢＧＡ（ball grid array））が設けられている。外部端子には、図１に示した信号（ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃ、ＶＣＣ、ＶＣＣＱ、ＶＣＣＱ２、ＶＤＤｉ、ＶＤＤｉ２、ＶＤＤｉ３が含まれる。ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃ）が割り当てられ、この外部端子を介してメモリデバイス１外部のホストデバイス２との間で信号を通信する。プリント基板２０１、メモリ１１、メモリコントローラ１２、ワイヤ２０２は、例えば樹脂製のパッケージ２０３により封止されている。
【００２６】
＜１．１．４  ホストデバイスの機能的な構成＞
次に、図５に、ホストデバイス２の構成の別の視点を示す。より具体的には、図５は、ホストデバイス２の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【００２７】
ホストデバイス２は、ドライバ２２０、ホストコントローラ２３０、及びインターフェース２４０を含んでいる。ホストデバイス２は、例えばメモリデバイス１と通信しようとするアプリケーション２１０を更に含んでいる。
【００２８】
アプリケーション２１０は、ドライバ２２０を用いて、メモリデバイス１と通信する。ドライバ２２０は、図示しないＵＦＳＨＣＩ（UFS Host Controller Interface）を介してホストコントローラ２３０を管理する。そして、インターフェース２４０を介して、例えばメモリデバイス１とホストコントローラ２３０とは接続される。尚、インターフェース２４０は、上述したホストインターフェース３１と同様の構成である。
【００２９】
＜１．１．５  メモリデバイスの機能的な構成＞
次に、図６に、メモリデバイス１の構成の別の視点を示す。より具体的には、図６は、メモリデバイス１の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【００３０】
メモリデバイス１は、ターゲットポート６１、ルータ６２、デバイスマネージャ６３、デスクリプタ６４、アトリビュート６５、フラグ６６、複数のロジカルユニット（ＬＵ：logical unit）６７を含んでいる。ターゲットポート６１は、メモリデバイス１がホストデバイス２と通信可能に接続されるためのポートであり、例えばホストインターフェース３１に対応する。ルータ６２は、ホストデバイス２から受信された通信（タスク、コマンド、データ、クエリー等）を宛先のロジカルユニット６７にルーティングする。ホストデバイス２は、コマンドの処理またはタスク管理機能を、１つのロジカルユニット６７を宛先とする要求を通じて要求する。ロジカルユニット６７同士は、アドレス（例えばＬＵＮ（logial unit number））により相互に識別されることが可能である。尚、以下において、コマンドとは、ＬＵコマンド（書き込みコマンド、または読み出しコマンド等）と、タスクと、クエリーとを包含していると解する。
【００３１】
ところで、ＬＵＮは、例えば、図７に示されているように、ＵＦＳメモリデバイスでは、メモリデバイス１とホストデバイス２との間の通信（パケット）に含められることが可能である。  
パケット１０１は、ＬＵＮ１０２と、実体部１０３を含んでいる。  
ＬＵＮ１０２は、例えばパケット１０１のヘッダに含められることが可能である。各パケットの宛先のロジカルユニット６７は、ＬＵＮにより一意に特定される。  
実体部１０３は、パケットの機能に固有の内容、例えばタスク、データ、ＬＵコマンド、クエリー、各種のパラメータ等を含んでいる。より具体的には、パケットの実体部１０３にコマンド記述部が含まれており、コマンド記述部にＳＣＳＩ（small computer system interface）コマンドが格納されている。ＳＣＳＩコマンド中に、所定のコマンド、及びアドレス等が含まれている。
【００３２】
また、図６に示すように、ルータ６２は、ホストデバイス２から受信された通信（タスク、ＬＵコマンド、データ、クエリー）を、この通信中のＬＵＮに基づいて、宛先のロジカルユニット６７にルーティングする。また、ルータ６２は、複数のロジカルユニット６７からホストデバイス２宛ての通信を例えば時分割によって適当な順序でターゲットポート６１に送信する。ルータ６２は、例えばＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。すなわち、ＣＰＵ４２によって、ＲＯＭ４３中のプログラムが、レジスタ４６中の値を参照しながら実行されることを通じて実現される。
【００３３】
デバイスマネージャ６３は、デバイスレベルの動作、及びコンフィギュレーションの管理を行なう。デバイスレベルの管理には、例えば、メモリデバイス１の電力管理、スリープ等の制御等が含まれる。デバイスレベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイスマネージャ６３は、ホストデバイス２からのメモリデバイス１のコンフィギュレーション情報の変更、及び出力要求であるクエリー要求のようなコマンドを処理する。デバイスマネージャ６３は、例えばＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。すなわち、ＣＰＵ４２によって、ＲＯＭ４３中のプログラムが、レジスタ４６中の値を参照しながら実行されることを通じて実現される。
【００３４】
デスクリプタ６４、アトリビュート６５、フラグ６６は、例えばワークＲＡＭ４５及びレジスタ４６中のデータとして実現される。
【００３５】
デスクリプタ６４は、予め定義されたフォーマットのデータ構造を有し、メモリデバイス１についての何らかの特徴を記述するためのものである。デスクリプタ６４には、例えば、メモリデバイス１にアクセスするのに必要なデバイスクラス、サブクラス、プロトコル等が含まれる。
【００３６】
アトリビュート６５は、メモリデバイス１に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート６５には、例えば、メモリデバイス１とホストデバイス２との間で転送可能なデータの最大値等が含まれる。
【００３７】
フラグ６６は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは“０”または“１”等により表わされる。
【００３８】
＜１．１．６  ロジカルユニットの構成＞
各ロジカルユニット６７は、例えばメモリ１１、メモリインターフェース３４、バッファ３５、ＥＣＣ回路３６、ＣＰＵ４２、ＲＯＭ４３、レジスタ４６（図１参照）により実現される。各ロジカルユニット６７は、相互に独立して、ホストデバイス２からの処理を実行する。したがって、各ロジカルユニット６７はメモリ１１、インターフェース２１、２３、バッファ３５、ＥＣＣ回路３６、ＣＰＵ４２、ＲＯＭ４３、レジスタ４６等の資源の一部を利用して実現される。各ＬＵは、上記のようにホストデバイス２からは１つのＬＵを特定するＬＵＮによって相互に区別される。ホストデバイス２からのコマンドは指定されたロジカルユニット６７によって実行される。
【００３９】
そして、各ロジカルユニット６７は、デバイスサーバ７１、タスクマネージャ７２、メモリ領域７３、及びキュー（queue：待ち行列）領域７４を含んでいる。
【００４０】
キュー領域７４は、ワークＲＡＭ４５またはレジスタ４６等のハードウェアで実現され、ホストデバイス２からのタスク、ＬＵコマンド、クエリー等を保持する。キュー領域７４は、図示しないＬＵコマンドを保持するコマンドキューと、タスクを保持するタスクキューと、クエリーを保持するクエリーキューとを備えている。また、コマンドキュー、タスクキュー、及びクエリーキュー（これらを、単にキュー、または待ち行列空間と呼ぶことがある）は、それぞれ、入出力が繰返されるデータを一時的に保持するデータ構造の一つである。
【００４１】
メモリ領域７３は、メモリ１１のメモリ領域のうちの一部から構成され、例えばホストデバイス２からの書き込みデータを格納する。
【００４２】
デバイスサーバ７１、及びタスクマネージャ７２は、例えばＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。すなわち、ＣＰＵ４２によって、ＲＯＭ４３中のプログラムが、レジスタ４６中の値を参照しながら実行されることを通じて実現される。
【００４３】
デバイスサーバ７１は、ホストデバイス２から受信されたＬＵレベルの処理を要求するコマンドを解釈する。具体的には、デバイスサーバ７１は、該コマンドが、タスク、ＬＵコマンド、またはクエリーかを判別して、それぞれをキュー領域７４内の所定の領域に割り当てる。また、デバイスサーバ７１は、タスク、ＬＵコマンド、またはクエリーを実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。
【００４４】
ロジカルユニット６７はメモリ領域７３を含んでいるので、デバイスサーバ７１は、少なくともメモリ領域７３（メモリ１１）を制御する機能を有している。
【００４５】
タスクマネージャ７２は、複数のコマンドの実行の順序を制御し、タスク管理機能を提供する。例えば、キュー領域７４に保持されたタスク、ＬＵコマンド、またはクエリーの実行の順序を制御する。
【００４６】
上記のように、デバイスサーバ７１は、メモリ１１の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホストデバイス２によって、ホストデバイス２がメモリデバイス１に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ１１の書き込み領域（ページ）または消去領域（ブロック）を特定するためのアドレスである。デバイスサーバ７１は、自身に対応するメモリ領域７３によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（または物理ブロック）が、どの論理アドレスのデータを保持しているかの関係、及びどの物理アドレスのページ（または物理ブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することを含んでいる。その管理のために、デバイスサーバ７１は、例えば論理アドレス物理アドレス変換テーブル（以下、単に変換テーブルと称する場合がある）を保持している。
【００４７】
変換の例として、例えば、図８に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレスオフセットが割り当てられている。図８は、メモリ１１の書き込み単位の大きさが１６ｋＢであり、論理アドレスが５１２Ｂサイズのデータごとに割り当てられている例を示している。
【００４８】
＜１．２  動作＞
＜１．２．１  バックグランド処理＞
第１の実施形態のメモリデバイス１は、全ロジカルユニット６７のキュー（コマンドキュー）７４が空になり、ホストデバイス２が許可する場合に、後述するバックグランド処理を行う。
【００４９】
＜１．２．２  バックグランド処理の種類＞
まず、メモリデバイス１が行うバックグランド処理について説明する。第１の実施形態に係るメモリデバイス１のバックグランド処理としては、以下の（１）〜（６）の６つが考えられる。例えばＣＰＵ４２が主体となってバックグランド処理を行う。
【００５０】
（１）ガベージコレクション
ガベージコレクションとは、メモリ１１内の所定以上の量の無効データが含まれるブロックを再利用するプロセスである。具体的に再利用とは、このブロック内に保持されている有効なデータを、新しいブロックに移してから、このブロックを消去ブロックとして利用できる状態にすることである。
【００５１】
（２）トリム（Ｔｒｉｍ）
トリムとは、消去グループ単位で消去を行う代わりに、書き込みグループ単位でメモリ１１の消去動作を行うことである。トリムでは、ホストデバイス２は、メモリ１１内の必要でないデータを特定し、特定されたデータを消去することが出来る。
【００５２】
（３）ワイプ（Ｗｉｐｅ）
ワイプとは、メモリ１１に論理ブロックを割り当て、再フォーマットする操作である。
【００５３】
（４）バッドブロック管理
メモリ１１では、例えば使用を繰り返しているうちに不良ブロックが発生する。  
このような不良ブロックの存在はフラッシュ操作（消去等）の失敗や書き込み動作が失敗する結果、判明する（ＥＣＣ３６により検出される）。  
不良ブロックが特定されると、これらの不良ブロックはメモリ１１内の不良ブロックテーブルに格納される。このように、不良ブロックを処理するプロセスのことを、バッドブロック管理と呼ぶ。
【００５４】
（５）ウェアレベリング
メモリ１１ではデータの書き換え及び消去を繰り返すとメモリセルが劣化し、データを書き込むことができなくなることがある。このため特定のブロックのみにデータの書き込み消去が集中するとそのブロックだけ早く寿命を迎えてしまう。  
この現象を回避するための動作がウェアレベリングである。ウェアレベリングにはいくつかの手法があるが、ＮＡＮＤ型フラッシュメモリを使った記憶媒体では、メモリ１１外部からのアドレス信号をメモリ１１内部毎に異なるアドレスに変換して、各ブロックの書き込み消去回数が平均化されるようにする。また、このアドレス変換情報もメモリ１１内に書き込まれて保存される。
【００５５】
（６）リードディスターブ対応処理
リードディスターブとは、読み出しを繰り返すことによって発生するビットエラーである。選択されたブロックにおいて、非選択のメモリセルは、制御ゲートに電圧が印加されるので、読み出し操作を繰り返すにつれて、記憶データが破壊され、誤りが発生する。このリードディスターブを抑制するために、デバイスマネージャ６３（ＣＰＵ４２）は例えばブロック毎の読出し回数を把握し、定期的にデータを書き直す。このような動作を、リードディスターブ対応処理等と称す。
【００５６】
そして、第１の実施形態では、図９に示すように、上記（１）〜（６）のバックグランド処理に優先順位（優先度）を決めて、例えばレジスタ４６にバックグランド処理の種類と、その優先順位を設定しておく。尚、この優先順位、及びバックグランド処理の数や種類はあくまで第１の実施形態の一例であり、デバイスマネージャ６３等によって適宜変更可能である。
【００５７】
また、例えばデバイスマネージャ６３は、メモリデバイス１が必要としているバックグランド処理をバックグランド処理情報として、レジスタ４６に設定する。
【００５８】
＜１．２．３  バックグランド処理の許可に関する設定＞
ところで、例えばホストデバイス２は、消費電力の関係上、メモリデバイス１のコマンドキュー７４が空になった際に、メモリデバイス１がバックグランド処理を行うことを許可しないことがある。メモリデバイス１は、ホストデバイス２の許可を得ないと、コマンドキュー７４が空になった際に、バックグランド処理を行わない。
【００５９】
ホストデバイス２は、メモリデバイス１がバックグランド処理を行う事を許可するか否かを、レジスタ４６（図１参照）内のフラグ「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ（許可設定とも称す）（図示せず）」に設定する。
【００６０】
具体的には、ホストデバイス２は、メモリデバイス１がバックグランド処理を行う事を許可しない場合は、「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」を“０”に設定する。また、ホストデバイス２は、メモリデバイス１がバックグランド処理を行う事を許可する場合は、「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」を“１”に設定する。ホストデバイス２は、「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」の設定を適宜変更することが可能である。メモリデバイス１は、このフラグを確認して、「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」が“１”に設定されている場合に、バックグランド処理を行う。
【００６１】
＜１．２．４  バックグランド処理の重要度に関する設定＞
例えばデバイスマネージャ６３は、メモリデバイス１が必要とするバックグランド処理の種類、及び数、そして、メモリ１１の未使用メモリブロック数等に応じてレジスタ４６内のフラグ「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性（図示せず）」の設定を行う。
【００６２】
具体的には、デバイスマネージャ６３は、バックグランド処理の重要度が「重要（Critical）」であると判定した場合は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０３”に設定し、「必要（Performance Impact）」であると判定した場合は、「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０２”に設定し、「必要（Required）」であると判定した場合は、「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０１”に設定し、「必要無し」であると判定した場合は「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“００”に設定する。尚、具体的な重要度の判定方法に関しては、下記に記載しているが、これに限らず、バックグランド処理の重要度の判定方法は適宜変更可能である。
【００６３】
また、バックグランド処理の重要度が「重要（Critical）」である場合においては、メモリデバイス１は、一定のコマンド（モードセレクトコマンド等）以外には反応しなくなる。これ以上メモリデバイス１は動作できないため、ホストデバイス２は、後述するメモリデバイス１がバックグランド処理を行う必要性に関するデータを検出した場合、ホストデバイス２は、できるだけ早くメモリデバイス１にバックグランド処理を行わせる。そして、例えばホストデバイス２にバックグランド処理の重要度を供給しても良いし、ホストデバイス２がレジスタ４６を監視することで、バックグランド処理の状況を確認しても良い。
【００６４】
＜１．２．５  バックグランド処理の必要性に関する設定＞
例えばデバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」の設定に基づいて、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ（図示せず）」の「ＵＦＳ  Ｓｔａｔｕｓビット（図示せず）」を設定する。
【００６５】
具体的には、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」の設定が所定以上の重要度である場合、バックグランド処理を行う必要があると判定し、レジスタ４６内の設定値「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」を“１”に設定する。また、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」の設定が所定未満の重要度である場合、バックグランド処理を行う必要はないと判定し、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」を“０”に設定する。
【００６６】
例えばホストデバイス２は、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」が“１”に設定されていることを確認すると、ホストデバイス２はすぐに、またはできるだけ早くメモリデバイス１にバックグランド処理を実行させる。
【００６７】
尚、具体的なバックグランド処理の必要性の判定方法に関しては、下記に記載しているが、これに限らず、判定方法は適宜変更可能である。そして、例えばホストデバイス２にバックグランド処理の必要性を供給しても良いし、ホストデバイス２がレジスタ４６を監視することで、バックグランド処理の状況を確認しても良い。
【００６８】
＜１．２．６  第１の実施形態に係るメモリデバイス１の基本的な動作＞
次に、図１０、１１を用いて、第１の実施形態に係るメモリデバイス１の基本的な動作について説明する。図１０は、第１の実施形態に係るメモリデバイス１において、バックグランド処理の重要度及び必要性の設定に係る動作１０００についてのフローを示している。図１１は、第１の実施形態に係るメモリデバイス１において、バックグランド処理が行われる場合の動作１１００についてのフローを示している。
【００６９】
＜１．２．６．１  バックグランド処理の重要度及び必要性の設定動作＞
［ステップＳ１００１］
図１０に示すように、デバイスマネージャ６３は、全てのロジカルユニット６７内のキュー領域７４が空か否かを判定する。これは、例えば、各ロジカルユニット６７内のデバイスサーバ７１が、キュー領域７４が空になった旨を、デバイスマネージャ６３に伝えることで、実現しても良い。
【００７０】
［ステップＳ１００２］
ステップＳ１００１において、デバイスマネージャ６３が、全てのロジカルユニット６７内のコマンドキュー７４が空だと判定した場合、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」の設定を確認する。
【００７１】
［ステップＳ１００３］
ステップＳ１００２において、デバイスマネージャ６３が、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」の設定が、バックグランド処理不許可である“０”であることを確認した場合、メモリデバイス１のバックグランド処理の要求、及び未使用のブロックＢＬＫの数を確認する。
【００７２】
［ステップＳ１００４］
デバイスマネージャ６３は、“メモリ１１の未使用のブロックの数が閾値未満（未使用のブロック数＜閾値）であり、且つ図８に示す（１）〜（６）のバックグランド処理の全てが必要である”という条件を満たすか否かを判定する。尚、この閾値は適宜変更されることができる。
【００７３】
［ステップＳ１００５］
ステップＳ１００４の条件を満たす場合、デバイスマネージャ６３は、バックグランド処理の重要度を「重要（Critical）」として、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０３”に設定する。そして、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」が“０２”以上の場合、バックグランド処理を行う必要があると判定し、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」を“１”に設定する。
【００７４】
このレジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」（重要度）、または「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」（必要性）を、例えばデバイスマネージャ６３が、ホストデバイス２に通知する。また、ホストデバイス２が、レジスタ４６を監視することで、バックグランド処理の重要度及び必要性を確認しても良い。
【００７５】
特に、バックグランド処理の重要度が「重要（Critical）」である場合、メモリデバイス１は、一定のコマンド以外には反応しなくなる。ホストデバイス２はすぐに、またはできるだけ早くメモリデバイス１にバックグランド処理を実行させる。このバックグランド処理については、後述の動作１１００を参照されたい。
【００７６】
［ステップＳ１００６］
ステップＳ１００４の条件を満たさない場合、デバイスマネージャ６３は、“図８に示す（１）が必要であり、且つ図８に示す（２）及び（３）の少なくとも一つが必要である”という条件を満たすか否かを判定する。
【００７７】
［ステップＳ１００７］
ステップＳ１００６の条件を満たす場合、デバイスマネージャ６３は、バックグランド処理の重要度を「必要（Performance Impact）」として、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０２”に設定する。そして、デバイスマネージャ６３は、バックグランド処理を行う必要があると判定し、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」を“１”に設定する。
【００７８】
［ステップＳ１００８］
ステップＳ１００６の条件を満たさない場合、デバイスマネージャ６３は、“図８に示す（１）〜（６）のうち一つ以上必要である”という条件を満たすか否かを判定する。
【００７９】
［ステップＳ１００９］
ステップＳ１００８の条件を満たす場合、デバイスマネージャ６３は、バックグランド処理の重要度を「必要（Required）」として、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０１”に設定する。そして、デバイスマネージャ６３は、バックグランド処理を行う必要がないと判定し、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」を“０”に設定する。
【００８０】
［ステップＳ１０１０］
ステップＳ１００８の条件を満たさない場合、デバイスマネージャ６３は、バックグランド処理の重要度を「必要無し」として、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“００”に設定する。そして、デバイスマネージャ６３は、バックグランド処理を行う必要がないと判定し、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＩＮ」の「ＵＦＳ  Ｓｔａｔｕｓビット」を“０”に設定する。
【００８１】
＜１．２．６．２  バックグランド処理動作＞
［ステップＳ１１０１］
ステップＳ１００２において、デバイスマネージャ６３が、レジスタ４６内の「ＢＡＣＫＧＲＯＵＮＤ＿ＯＰＳ＿ＥＮ」の設定が、バックグランド処理を許可する“１”であることを確認した場合、メモリデバイス１が必要とするバックグランド処理があるか否かを判定する。
【００８２】
［ステップＳ１１０２］
ステップＳ１１０１において、デバイスマネージャ６３が、メモリデバイス１が必要とするバックグランド処理があると判定した場合、デバイスマネージャ６３は、ステップＳ１００４と同様の動作を行う。
【００８３】
［ステップＳ１１０３］
ステップＳ１１０２の条件を満たす場合、デバイスマネージャ６３は、ステップＳ１００５と同様の動作を行う。
【００８４】
［ステップＳ１１０４］
デバイスマネージャ６３は、図８に示す（１）〜（６）を、優先順位の高い（１）から順に（６）までバックグランド処理を行っていく。例えば（１）〜（３）のバックグランド処理が終了すると、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を、「必要（Required）」を意味する“０１”に設定しても良い。
【００８５】
尚、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」が“０１”の場合、デバイスマネージャ６３は、ホストデバイス２から新しいコマンドがメモリデバイス１に供給されると、バックグランド処理を中断して新しいコマンドを実行する。
【００８６】
［ステップＳ１１０５］
ステップＳ１１０２の条件を満たさない場合、デバイスマネージャ６３は、ステップＳ１００６と同様の動作を行う。
【００８７】
［ステップＳ１１０６］
ステップＳ１１０５の条件を満たす場合、デバイスマネージャ６３は、ステップＳ１００７と同様の動作を行う。
【００８８】
［ステップＳ１１０７］
デバイスマネージャ６３は、必要とされた処理のうち、優先順位の高いものから順にバックグランド処理を行っていく。
【００８９】
［ステップＳ１１０８］
ステップＳ１１０５の条件を満たさない場合、デバイスマネージャ６３は、ステップＳ１００９と同様の動作を行う。
【００９０】
［ステップＳ１１０９］
デバイスマネージャ６３は、必要とされた処理のうち、優先順位の高いものから順にバックグランド処理を行っていく。
【００９１】
＜１．３  第１の実施形態に係るメモリデバイスの作用効果＞
上述した第１の実施形態によれば、メモリデバイス１は、不揮発性のメモリ１１と、コマンドが格納されるコマンド格納部（キュー領域）７４とを備えている。また、メモリデバイス１は、バックグランド処理の種類とその優先順位とが設定され、必要とされているバックグランド処理の情報が設定され、ホストデバイス２によって、バックグランド処理の許可または不許可が設定される記憶部（レジスタ）４６を備えている。更にメモリデバイス１は、コマンド格納部７４にコマンドが格納されていないと判定すると、記憶部４６を参照してホストデバイス２がバックグランド処理を行うことを許可しているか否かを判定し、許可されていない場合、記憶部４６に設定されたバックグランド処理の情報と優先順位とを参照して、メモリ１１の未使用のブロックの数と、必要とされているバックグランド処理の優先順位及び数とに基づいてバックグランド処理の重要度を記憶部４６に設定し、ホストデバイス２がバックグランド処理を行うことを許可していると判定する場合、記憶部４６に設定されたバックグランド処理の情報を参照して、メモリ１１の未使用のブロックの数と、バックグランド処理の種類及び数とに基づいてバックグランド処理の重要度を記憶部４６に設定し、記憶部４６に設定されたバックグランド処理の情報に基づくバックグランド処理を、優先順に実行する管理部６３を備えている。また、管理部６３は、ホストデバイス２に、記憶部４６に設定された重要度に関する情報を供給する。  
このように、メモリデバイス１は、効率的にバックグランド処理を行うことができる。
【００９２】
例えば、バックグランド処理の優先順位、重要度、及び必要性等の規定が不明瞭である場合、ホストデバイス２は、メモリデバイス１がどの程度バックグランド処理の実行を必要としているのかを明確に判断することができない。そのため、メモリデバイス１がバックグランド処理を行わなければ、所定のコマンド以外の新しいコマンドを受け付けることができない場合等を、ホストデバイス２は的確に判断することができない。また、未使用ブロックを考慮しない場合、例えば未使用ブロックが十分存在し、バックグランド処理が不要な場合と、未使用ブロックが不足しており、バックグランド処理が必要な場合とをホストが判断できず、的確にバックグランド処理を行うことができない。
【００９３】
しかし、第１の実施形態に係るメモリデバイス１では、メモリ１１の“未使用ブロックの数”及び“バックグランド処理の項目（種類及び数）”に基づいてバックグランド処理の重要度及び必要性を判定している。このため、ホストデバイス２に、未使用ブロック数が十分か、不足しているかという事を含めてバックグランド処理の重要性及び必要性を明確に伝えることができ、メモリデバイス１は、効率的にバックグランド処理を行うことができる。また、メモリデバイス１がバックグランド処理を早急に行わなければならない事を、ホストデバイス２に伝えることができるので、メモリデバイス１のパフォーマンスの低下を抑制することができる。
【００９４】
また、コマンドキューが空の期間のみにバックグランド処理を行うので、メモリデバイス１のパフォーマンスが向上する。更に、メモリデバイス１は、緊急性のないバックグランド処理等を判断できるので、ホストデバイス２のコマンドを優先することができ、ホストデバイス２の消費電力を抑制することができる。
【００９５】
（第２の実施形態）
次に、第２の実施形態について説明する。第２の実施形態に係るメモリデバイスは、第１実施形態と同じハードウェア構成および機能ブロックを有する。第２の実施形態の説明で触れられていない点については、第１実施形態の記述が第２の実施形態に全て適用されることに留意されたい。第２の実施形態は、メモリデバイス１がバックグランド処理している際に、メモリデバイス１に電力に関するコマンドが入力された場合に関する。
【００９６】
図１２は、第２の実施形態に係るメモリデバイス１のバックグランド処理中に、電力に関するコマンドがメモリデバイス１に入力された場合の動作１２００についてのフローを示している。
【００９７】
＜２．１  バックグランド処理中に他のコマンドが入力された場合の動作＞
［ステップＳ１２０１］
メモリデバイス１がバックグランド処理を実行している最中に、ホストデバイス２がメモリデバイス１へと、例えばＳｌｅｅｐモード、またはＰｏｗｅｒ  Ｄｏｗｎ等の電力に関するコマンドを発行することがある。
【００９８】
この場合、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」が「必要（Performance Impact）」以上を意味する“０２”または “０３”であるか否かを判定する。
【００９９】
尚、第１の実施形態で説明したステップＳ１００７及び１１０６Ｓでは、メモリデバイス１が“図８に示す（１）が必要であり、且つ図８に示す（２）及び（３）の少なくとも一つが必要である”という条件を満たす場合に、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０２”に設定していた。しかし、第２の実施形態では、メモリデバイス１が“図８に示す（１）を含めて３つ以上のバックグランド処理が必要である”という条件を満たす場合に、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０２”に設定する。
【０１００】
［ステップＳ１２０２］
レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」が“０２”または“０３”である場合、デバイスマネージャ６３は、メモリデバイス１が必要とするバックグランド処理の中から、優先順位が高いものから最大で二つのバックグランド処理を実行する。その後、例えばデバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を、「必要（Required）」を意味する“０１”に設定する。
【０１０１】
［ステップＳ１２０３］
デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」が“０１”に設定された後、ホストデバイス２から要求されたコマンドを実行する。つまり、メモリデバイス１は、Ｓｌｅｅｐモードに移行する、またはＰｏｗｅｒ  Ｄｏｗｎが実行される。
【０１０２】
［ステップＳ１２０４］
レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」が“００”または“０１”である場合、デバイスマネージャ６３は、ホストデバイス２から要求されたコマンドを実行する。つまり、メモリデバイス１は、Ｓｌｅｅｐモードに移行する、またはＰｏｗｅｒ  Ｄｏｗｎが実行される。
【０１０３】
＜２．２  第２の実施形態に係るメモリデバイスの作用効果＞
上述した第１の実施形態によれば、管理部６３は、例えばバックグランド処理を実行している間にホストデバイス２からコマンドが入力された場合、記憶部４６に設定された重要度が、所定の値以上の場合、バックグランド処理を実行する。
【０１０４】
このように、バックグランド処理中に、ホストデバイス２から新しいコマンドが発行された場合でも、メモリデバイス１は重要度を用いることで、バックグランド処理の中止または続行を的確に判断することができる。
【０１０５】
バックグラウンド処理を行っている最中に、ホストデバイス２から他のコマンドを要求されることがある。明確にバックグランド処理の重要性または必要性を規定しないと、不要なバックグランド処理を行っている場合でも、他のコマンドを待機させることになり、メモリデバイス１のパフォーマンスに影響してしまう。
【０１０６】
しかし、第２の実施形態のメモリデバイス１では、バックグランド処理の重要性または必要性を明確に規定している。そして、バックグランド処理中に、ホストデバイス２から電力に係る要求（Ｓｌｅｅｐモードへの移行、Ｐｏｗｅｒ  Ｄｏｗｎ等）がされた場合に、どのようにバックグランド処理を実行するのかを明確にしている。
【０１０７】
そのため、メモリデバイス１がバックグランド処理をすぐに必要とする場合においては、バックグランド処理を優先し、メモリデバイス１がバックグランド処理をすぐに必要としない場合には、ホストデバイス２の要求を優先する。これにより、メモリデバイス１のパフォーマンスが向上し、ホストデバイス２の電力を効率よく使用することができる。
【０１０８】
＜３  変形例等＞
尚、バックグランドの許可設定、バックグランドの重要度、バックグランドの必要性、バックグランドの処理情報等がレジスタ４６に設定されているが、設定される場所は、必ずしもレジスタ４６に限らない。
【０１０９】
また、第２の実施形態では、メモリデバイス１が“図８に示す（１）を含めて３つ以上のバックグランド処理が必要である”という条件を満たす場合に、デバイスマネージャ６３は、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０２”に設定している。しｋぁし、これに限らず、他の条件を満たす場合に、デバイスマネージャ６３が、レジスタ４６内の「ＢＡＣＫ＿ＧＲＯＵＮＤ＿ＯＰＳ＿ＳＴＡＴＵＳ属性」を“０２”に設定する場合でも、上述した第２の実施形態は実施可能である。
【０１１０】
また、上述した第１の実施形態及び第２の実施形態では、ＵＦＳメモリデバイスを用いて説明したが、これに限らず、例えば、クライアントサーバモデルに基づくメモリシステムであれば、どのようなものでも良い。
【０１１１】
また、上述した第１の実施形態及び第２の実施形態では、ＵＦＳメモリデバイスを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した第１の実施形態及び第２の実施形態と同様の作用効果を奏することができる。また、メモリ１１はＮＡＮＤ型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
【０１１２】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【０１１３】
１…メモリデバイス、      ２…ホストデバイス、      １１…メモリ
１２…メモリコントローラ、      ２１、２３…インターフェース
２２…コアロジック部、      ３１…ホストインターフェース
３２…バッファ、      ３３…データバス、    ３４…メモリインターフェース
３５…バッファ、      ３６…ＥＣＣ回路、      ４１…制御バス
４２…ＣＰＵ、      ４３…ＲＯＭ、      ４５…ワークＲＡＭ
４６…レジスタ、      ５１…アナログ回路、      ６１…ターゲットポート
６２…ルータ、      ６３…デバイスマネージャ、      ６４…デスクリプタ
６５…アトリビュート、      ６６…フラグ、        ６７…ロジカルユニット
７１…デバイスサーバ、      ７２…タスクマネージャ、      ７３…メモリ領域
７４…キュー領域、      ９１…メモリセルアレイ、      ９２…ページバッファ
１０１…パケット、      １０２…ＬＵＮ、      １０３…実体部
２０１…プリント基板、      ２０２…ワイヤ、      ２０３…パッケージ
２１０…アプリケーション、    ２２０…ドライバ、    ２３０…コントローラ、
２４０…インターフェース。
【図１】
0005481453.tif 000002
【図２】
0005481453.tif 000003
【図３】
0005481453.tif 000004
【図４】
0005481453.tif 000005
【図５】
0005481453.tif 000006
【図６】
0005481453.tif 000007
【図７】
0005481453.tif 000008
【図８】
0005481453.tif 000009
【図９】
0005481453.tif 000010
【図１０】
0005481453.tif 000011
【図１１】
0005481453.tif 000012
【図１２】
0005481453.tif 000013