説明

メモリデバイス

【課題】高品質なメモリデバイスを提供する。
【解決手段】メモリデバイスは、不揮発性のメモリ11と、コマンド格納部と、記憶部46と、管理部と、を備えている。コマンド格納部は、コマンドを格納する。記憶部46は、バックグランド処理の種類とその優先順位とが設定され、必要とされているバックグランド処理の情報が設定され、ホストデバイス2によって、バックグランド処理の許可または不許可が設定される。管理部は、コマンド格納部にコマンドが格納されていないと判定すると、記憶部46を参照してホストデバイス2がバックグランド処理を行うことを許可しているか否かを判定し、許可されていない場合、記憶部46に設定されたバックグランド処理の情報と優先順位とを参照して、メモリ11の未使用のブロックの数と、必要とされているバックグランド処理の優先順位及び数とに基づいてバックグランド処理の重要度を記憶部46に設定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリデバイスに関する。
【背景技術】
【0002】
データを保持するメディアとして種々のものが存在する。そのようなメディアとして、例えば、UFS(Universal Flash Storage)メモリデバイス等が挙げられる。従来のメモリデバイスは、不要なバックグランド処理と、必要なバックグランド処理とを明確に判断することができないので、効率良くバックグランド処理を行うことができず、メモリデバイスのパフォーマンスが低下してしまうという問題があった。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】JEDEC SOLID STATE TECHNOLOGY ASSOCIATION、JEDEC STANDARD(JESD220)、2011年2月
【発明の概要】
【発明が解決しようとする課題】
【0004】
高品質なメモリデバイスを提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリデバイスは、不揮発性のメモリと、コマンド格納部と、記憶部と、管理部と、を備えている。コマンド格納部は、コマンドを格納する。記憶部は、バックグランド処理の種類及び優先順位を設定し、必要とされている前記バックグランド処理の情報を設定し、ホストデバイスによって、前記バックグランド処理の許可または不許可が設定される。管理部は、前記コマンド格納部にコマンドが格納されていないと判定すると、前記記憶部を参照して前記ホストデバイスが前記バックグランド処理を行うことを許可しているか否かを判定し、許可されていない場合、前記記憶部に設定された前記バックグランド処理の情報を参照して、前記メモリの未使用のブロックの数と、前記バックグランド処理の種類及び数とに基づいて前記バックグランド処理の重要度を前記記憶部に設定する。
【図面の簡単な説明】
【0006】
【図1】第1の実施形態に係るメモリデバイスのハードウェア上の構成を示している。
【図2】第1の実施形態に係るメモリを例示する回路図である。
【図3】第1の実施形態に係るメモリ空間の構成を例示する図である。
【図4】第1の実施形態に係るメモリデバイスが封止された形態の例を示している。
【図5】第1の実施形態に係るホストデバイスの機能ブロックを示している。
【図6】第1の実施形態に係るメモリデバイスの機能ブロックを示している。
【図7】第1の実施形態に係るパケットの例を示している。
【図8】第1の実施形態に係る論理アドレスと物理ブロックとの変換テーブルの例を示している。
【図9】第1の実施形態に係るバックグランド処理の種類と、優先順位とを示した図である。
【図10】第1の実施形態に係るメモリデバイスにおいて、バックグランド処理の重要度及び必要性の設定に係る動作についてのフローである。
【図11】第1の実施形態に係るメモリデバイスにおいて、バックグランド処理が行われる場合の動作についてのフローである。
【図12】第2の実施形態に係るメモリデバイスのバックグランド処理中に、電力に関するコマンドがメモリデバイスに入力された場合の動作についてのフローである。
【発明を実施するための形態】
【0007】
以下、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0008】
(第1の実施形態)
<1.1 構成>
<1.1.1 メモリデバイスの概要>
図1は、第1の実施形態に係るメモリデバイスを概略的に示している。図1は、メモリデバイスのハードウェア上の構成を示している。
図1に示すように、メモリデバイス(半導体記憶装置)1は、ホストデバイス(以下、単にホストと称する場合がある)2と通信できるように構成されている。メモリデバイス1は、ターゲットとして動作し、ホストデバイス2はイニシエータとして動作する。さらに具体的な例として、メモリデバイス1はUFSメモリデバイスであり、ホストデバイス2はUFSメモリデバイスをサポートするホストである。
【0009】
メモリデバイス1は、少なくとも、不揮発性の半導体メモリ11と、メモリ11を制御するためのメモリコントローラ12とを含んでいる。メモリ11は、複数ビットからなる特定の書き込み単位でデータの書き込み、及び読み出しを行う。さらに、メモリ11は、複数の書き込み単位からなる消去単位でデータを消去する。
【0010】
また、メモリデバイス1は、I/O21、コアロジック部22、I/O23を含んでいる。I/O21は、メモリデバイス1がホストデバイス2と接続するためのハードウェア上の構成を含んでいる。メモリデバイス1がUFSメモリデバイスである場合、メモリデバイス1とホストデバイス2との間の信号には、RESET、REF_CLK、DOUT、DOUT_c、DIN、DIN_c、VCC、VCCQ、VCCQ2、VDDi、VDDi2、VDDi3が含まれる。RESET、REF_CLK、DOUT、DOUT_c、DIN、DIN_cは、ホストデバイス2とI/O21との間で通信される。RESETは、ハードウェアリセット信号である。REF_CLKは、参照クロックである。DOUTとDOUT_cは差動信号対を形成し、ホストデバイス2からメモリデバイス1へ送信される信号である。DINとDIN_cは差動信号対を形成し、メモリデバイス1からホストデバイス2へ送信される信号である。VCC、VCCQ、VCCQ2は、メモリ11、及びコアロジック部22に供給される電源電圧である。VDDi、VDDi2、VDDi3は、コアロジック部22に供給され、コアロジック部22内に電圧レギュレータが設けられる際の入力端子である。
【0011】
コアロジック部22は、メモリコントローラ12のうちのI/Oを除く主要部分である。I/O23は、メモリコントローラ12がメモリ11と接続するためのハードウェア上の構成を含んでいる。コアロジック部22は、ホストインターフェース31、バッファ32、データバス33、メモリインターフェース34、バッファ35、ECC回路36、制御バス41、CPU(central processing unit)42、ROM(read only memory)43、ワークRAM(random access memory)45、レジスタ46を含んでいる。
【0012】
I/O21は、ホストインターフェース31と接続されている。ホストインターフェース31は、メモリデバイス1とホストデバイス2が通信するのに必要な処理を行なう。より具体的には、ホストインターフェース31は、メモリデバイス1とホストデバイス2がともに準拠している通信プロトコルに則ってメモリデバイス1とホストデバイス2との間の通信を担う。メモリデバイス1がUFSメモリデバイスである場合、例えば、ホストインターフェース31は、UFSインターフェースである。UFSインターフェースは、物理層についてはM−PHY規格に則っており、リンク層についてはUniPro規格に則っている。
【0013】
ホストインターフェース31は、バッファ32と接続されている。バッファ32は、ホストデバイス2からメモリデバイス1に送信されたデータをホストインターフェース31を介して受け取り、これを一時的に保持する。また、バッファ32は、メモリデバイス1からホストインターフェース31を介してホストデバイス2へ送信されるデータを一時的に保持する。バッファ32はデータバス33と接続されている。
【0014】
I/O23は、メモリインターフェース34と接続されている。メモリインターフェース34は、メモリコントローラ12がメモリ11と通信するのに必要な処理を行なう。より具体的には、メモリインターフェース34は、コアロジック部22からの指示をメモリ11が認識可能な形態で送信する。メモリ11がNAND型フラッシュメモリである場合、メモリインターフェース34は、NANDフラッシュインターフェースである。尚、メモリ11はNAND型フラッシュメモリに限らず、不揮発性のメモリであれば、どのようなメモリでも良い。
【0015】
メモリインターフェース34は、バッファ35と接続されている。バッファ35は、メモリ11からメモリコントローラ12に送信されたデータをメモリインターフェース34を介して受け取り、これを一時的に保持する。また、バッファ35は、メモリコントローラ12からメモリ11にメモリインターフェース34を介して送信される予定のデータを一時的に保持する。バッファ35はデータバス33と接続されている。メモリインターフェース34、及びバッファ35は、ECC(error correcting code)回路36と接続されている。ECC回路36はまた、データバッファ35と接続されている。ECC回路36は、ホストデバイス2からの書き込みデータをデータバス33を介して受け取り、書き込みデータにエラー訂正符号を付加し、エラー訂正符号を付された書き込みデータをバッファ35に供給する。また、ECC回路36は、メモリ11から供給されたデータをバッファ35を介して受け取り、このデータに対してエラー訂正符号を用いてエラー訂正を行い、エラー訂正されたデータをデータバス33に供給する。
【0016】
制御バス41には、CPU42、ROM43、RAM45、レジスタ46が接続されている。CPU42、ROM43、RAM45、レジスタ46は、制御バス41を介して相互に通信する。CPU42は、メモリデバイス1の全体の動作を司る。CPU42は、ROM43に格納されている制御プログラム(命令)に従って所定の処理を実行する。CPU42は、制御プログラムに従ってホストデバイス2から受けたコマンドに従ってメモリ11に対する所定の処理を実行したりする。
【0017】
ROM43は、CPU42により制御される制御プログラムなどを格納する。RAM45は、CPU42の作業エリアとして使用され、CPU42の作業に必要な変数等を一時的に記憶する。レジスタ46は、メモリデバイス1の動作に必要な種々の値を保持する。また、レジスタ46は、ホストデバイス2が、メモリデバイス1を制御するのに必要な種々の値を保持する。
【0018】
制御バス41には、ホストインターフェース31、バッファ32、メモリインターフェース34、バッファ35が接続されている。CPU42は、制御プログラムやホストデバイス2からの指示に基づいて、ホストインターフェース31、バッファ32、メモリインターフェース34、バッファ35を制御する。メモリコントローラ12には、アナログ回路51が設けられていてもよい。
【0019】
<1.1.2 メモリの概要>
例えば、メモリ11は1つまたは複数のNAND型フラッシュメモリを含む。メモリ11がNAND型フラッシュメモリである場合、メモリ11は、ページ単位でデータの書き込み、及び読み出しを行う。ページは、図2に示すように、複数のメモリセルトランジスタの集合のメモリ空間からなり、固有の物理アドレスを割り当てられている。各メモリセルトランジスタ(メモリセル、セルトランジスタ等とも称す)MTは、いわゆる積層ゲート構造のMOSFET(metal oxide semiconductor field effect transistor)である。各メモリセルトランジスタMTは、電荷蓄積層CSに蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタMTが電流経路(ソース/ドレインSD)同士を相互に直列接続されてNANDストリングを構成し、NANDストリングの両端に選択ランジスタS1、S2が接続される。選択トランジスタS2の電流経路の他端はビット線BLに接続され、選択トランジスタS1の電流経路の他端はソース線SLに接続されている。
【0020】
ワード線WL0乃至WL63は、WL方向に延び、同じ行に属する複数のメモリセルトランジスタMTの制御ゲート電極CGに接続される。メモリセルトランジスタMTは、ビット線BLとワード線WLとの各交点に設けられる。セレクトゲート線SGDは、WL方向に延び、ブロック内の全選択トランジスタS2に接続されている。セレクトゲート線SGSは、WL方向に延び、ブロック内の全選択トランジスタS1に接続されている。同じワード線WLと接続されている複数のメモリセルトランジスタMTは、ページを構成する。
【0021】
メモリ11は、図3に示すように、複数のメモリセルトランジスタを含むメモリセルアレイ91と、メモリセルトランジスタとの間でデータの入出力を行うページバッファ92とを備えている。ページバッファ92は、1ページ分のデータを保持する。メモリ11へのデータの書き込みを行う場合、メモリコントローラ12は、書き込みコマンドとともに、書き込み先を示すページアドレスと1ページ分の書き込みデータとをメモリ11に送信する。メモリ11は、メモリコントローラ12から受信した書き込みデータをページバッファ92に格納し、ページバッファ92内の書き込みデータをページアドレスで指定されたメモリセルへと書き込む。このメモリセルへの書き込み動作を開始すると、メモリ11はメモリコントローラ12に対して動作中であることを示すビジー信号を出力する。引き続きデータを書き込む場合、ビジー信号がレディー信号に切り替わった後、次のページアドレスに対して上記と同様の動作を行う。
【0022】
メモリ11からのデータの読み出しを行う場合、メモリコントローラ12は、読み出しコマンドとともに、読み出し先を示すページアドレスをメモリ11に送信する。メモリ11は、ページアドレスで指定されたメモリセルからページバッファ92に1ページ分のデータを読み出す。このメモリセルからの読み出し動作を開始すると、メモリ11はメモリコントローラ12に対してビジー信号出力する。そして、ビジー信号がレディー信号に切り替わった後、ページバッファ92に格納された読み出しデータがメモリコントローラ12に出力される。引き続きデータを読み出す場合、次のページアドレスに対して上記と同様の動作を行う。
【0023】
メモリ11がNAND型フラッシュメモリである場合、メモリセルトランジスタMTが2つ以上の閾値電圧の異なる状態を取り得る。つまり、1つのメモリセルが多値(多ビット)を記憶できるようにメモリ11が構成されていてもよい。そのような多値を記憶可能なメモリの場合、1つのワード線に複数ページが割り当てられる。
【0024】
また、メモリ11がNAND型フラッシュメモリである場合、メモリ11は、ブロック単位でデータの消去を行う。各ブロックは、連続する物理アドレスを有する複数のページからなる。以下の説明では、便宜上、書き込み単位をページとし、消去単位をブロックとする。しかしながら、メモリ11は、必ずしもNAND型フラッシュメモリに限られない。
【0025】
<1.1.3 メモリのパッケージについて>
メモリデバイス1は、例えば、プリント基板上に半田により実装される埋め込み型でも良いし、ホストデバイス2に設けられたカードスロットに対して脱着可能なリムーバブル型でもよい。図4は、封止された形態のメモリデバイス1の例を示している。図4に示されているように、プリント基板201上にチップ状の複数のメモリ11が積層されている。各メモリ11は、プリント基板201上の配線パターン(図示せず)にワイヤ202により接続されている。チップ状のメモリコントローラ12も、プリント基板201上に置かれ、ワイヤ202により配線パターンに接続されている。プリント基板201の裏面には、図示せぬ外部端子(例えば、BGA(ball grid array))が設けられている。外部端子には、図1に示した信号(RESET、REF_CLK、DOUT、DOUT_c、DIN、DIN_c、VCC、VCCQ、VCCQ2、VDDi、VDDi2、VDDi3が含まれる。RESET、REF_CLK、DOUT、DOUT_c、DIN、DIN_c)が割り当てられ、この外部端子を介してメモリデバイス1外部のホストデバイス2との間で信号を通信する。プリント基板201、メモリ11、メモリコントローラ12、ワイヤ202は、例えば樹脂製のパッケージ203により封止されている。
【0026】
<1.1.4 ホストデバイスの機能的な構成>
次に、図5に、ホストデバイス2の構成の別の視点を示す。より具体的には、図5は、ホストデバイス2の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【0027】
ホストデバイス2は、ドライバ220、ホストコントローラ230、及びインターフェース240を含んでいる。ホストデバイス2は、例えばメモリデバイス1と通信しようとするアプリケーション210を更に含んでいる。
【0028】
アプリケーション210は、ドライバ220を用いて、メモリデバイス1と通信する。ドライバ220は、図示しないUFSHCI(UFS Host Controller Interface)を介してホストコントローラ230を管理する。そして、インターフェース240を介して、例えばメモリデバイス1とホストコントローラ230とは接続される。尚、インターフェース240は、上述したホストインターフェース31と同様の構成である。
【0029】
<1.1.5 メモリデバイスの機能的な構成>
次に、図6に、メモリデバイス1の構成の別の視点を示す。より具体的には、図6は、メモリデバイス1の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【0030】
メモリデバイス1は、ターゲットポート61、ルータ62、デバイスマネージャ63、デスクリプタ64、アトリビュート65、フラグ66、複数のロジカルユニット(LU:logical unit)67を含んでいる。ターゲットポート61は、メモリデバイス1がホストデバイス2と通信可能に接続されるためのポートであり、例えばホストインターフェース31に対応する。ルータ62は、ホストデバイス2から受信された通信(タスク、コマンド、データ、クエリー等)を宛先のロジカルユニット67にルーティングする。ホストデバイス2は、コマンドの処理またはタスク管理機能を、1つのロジカルユニット67を宛先とする要求を通じて要求する。ロジカルユニット67同士は、アドレス(例えばLUN(logial unit number))により相互に識別されることが可能である。尚、以下において、コマンドとは、LUコマンド(書き込みコマンド、または読み出しコマンド等)と、タスクと、クエリーとを包含していると解する。
【0031】
ところで、LUNは、例えば、図7に示されているように、UFSメモリデバイスでは、メモリデバイス1とホストデバイス2との間の通信(パケット)に含められることが可能である。
パケット101は、LUN102と、実体部103を含んでいる。
LUN102は、例えばパケット101のヘッダに含められることが可能である。各パケットの宛先のロジカルユニット67は、LUNにより一意に特定される。
実体部103は、パケットの機能に固有の内容、例えばタスク、データ、LUコマンド、クエリー、各種のパラメータ等を含んでいる。より具体的には、パケットの実体部103にコマンド記述部が含まれており、コマンド記述部にSCSI(small computer system interface)コマンドが格納されている。SCSIコマンド中に、所定のコマンド、及びアドレス等が含まれている。
【0032】
また、図6に示すように、ルータ62は、ホストデバイス2から受信された通信(タスク、LUコマンド、データ、クエリー)を、この通信中のLUNに基づいて、宛先のロジカルユニット67にルーティングする。また、ルータ62は、複数のロジカルユニット67からホストデバイス2宛ての通信を例えば時分割によって適当な順序でターゲットポート61に送信する。ルータ62は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0033】
デバイスマネージャ63は、デバイスレベルの動作、及びコンフィギュレーションの管理を行なう。デバイスレベルの管理には、例えば、メモリデバイス1の電力管理、スリープ等の制御等が含まれる。デバイスレベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイスマネージャ63は、ホストデバイス2からのメモリデバイス1のコンフィギュレーション情報の変更、及び出力要求であるクエリー要求のようなコマンドを処理する。デバイスマネージャ63は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0034】
デスクリプタ64、アトリビュート65、フラグ66は、例えばワークRAM45及びレジスタ46中のデータとして実現される。
【0035】
デスクリプタ64は、予め定義されたフォーマットのデータ構造を有し、メモリデバイス1についての何らかの特徴を記述するためのものである。デスクリプタ64には、例えば、メモリデバイス1にアクセスするのに必要なデバイスクラス、サブクラス、プロトコル等が含まれる。
【0036】
アトリビュート65は、メモリデバイス1に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート65には、例えば、メモリデバイス1とホストデバイス2との間で転送可能なデータの最大値等が含まれる。
【0037】
フラグ66は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは“0”または“1”等により表わされる。
【0038】
<1.1.6 ロジカルユニットの構成>
各ロジカルユニット67は、例えばメモリ11、メモリインターフェース34、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46(図1参照)により実現される。各ロジカルユニット67は、相互に独立して、ホストデバイス2からの処理を実行する。したがって、各ロジカルユニット67はメモリ11、インターフェース21、23、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46等の資源の一部を利用して実現される。各LUは、上記のようにホストデバイス2からは1つのLUを特定するLUNによって相互に区別される。ホストデバイス2からのコマンドは指定されたロジカルユニット67によって実行される。
【0039】
そして、各ロジカルユニット67は、デバイスサーバ71、タスクマネージャ72、メモリ領域73、及びキュー(queue:待ち行列)領域74を含んでいる。
【0040】
キュー領域74は、ワークRAM45またはレジスタ46等のハードウェアで実現され、ホストデバイス2からのタスク、LUコマンド、クエリー等を保持する。キュー領域74は、図示しないLUコマンドを保持するコマンドキューと、タスクを保持するタスクキューと、クエリーを保持するクエリーキューとを備えている。また、コマンドキュー、タスクキュー、及びクエリーキュー(これらを、単にキュー、または待ち行列空間と呼ぶことがある)は、それぞれ、入出力が繰返されるデータを一時的に保持するデータ構造の一つである。
【0041】
メモリ領域73は、メモリ11のメモリ領域のうちの一部から構成され、例えばホストデバイス2からの書き込みデータを格納する。
【0042】
デバイスサーバ71、及びタスクマネージャ72は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0043】
デバイスサーバ71は、ホストデバイス2から受信されたLUレベルの処理を要求するコマンドを解釈する。具体的には、デバイスサーバ71は、該コマンドが、タスク、LUコマンド、またはクエリーかを判別して、それぞれをキュー領域74内の所定の領域に割り当てる。また、デバイスサーバ71は、タスク、LUコマンド、またはクエリーを実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。
【0044】
ロジカルユニット67はメモリ領域73を含んでいるので、デバイスサーバ71は、少なくともメモリ領域73(メモリ11)を制御する機能を有している。
【0045】
タスクマネージャ72は、複数のコマンドの実行の順序を制御し、タスク管理機能を提供する。例えば、キュー領域74に保持されたタスク、LUコマンド、またはクエリーの実行の順序を制御する。
【0046】
上記のように、デバイスサーバ71は、メモリ11の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホストデバイス2によって、ホストデバイス2がメモリデバイス1に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ11の書き込み領域(ページ)または消去領域(ブロック)を特定するためのアドレスである。デバイスサーバ71は、自身に対応するメモリ領域73によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、及びどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。その管理のために、デバイスサーバ71は、例えば論理アドレス物理アドレス変換テーブル(以下、単に変換テーブルと称する場合がある)を保持している。
【0047】
変換の例として、例えば、図8に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレスオフセットが割り当てられている。図8は、メモリ11の書き込み単位の大きさが16kBであり、論理アドレスが512Bサイズのデータごとに割り当てられている例を示している。
【0048】
<1.2 動作>
<1.2.1 バックグランド処理>
第1の実施形態のメモリデバイス1は、全ロジカルユニット67のキュー(コマンドキュー)74が空になり、ホストデバイス2が許可する場合に、後述するバックグランド処理を行う。
【0049】
<1.2.2 バックグランド処理の種類>
まず、メモリデバイス1が行うバックグランド処理について説明する。第1の実施形態に係るメモリデバイス1のバックグランド処理としては、以下の(1)〜(6)の6つが考えられる。例えばCPU42が主体となってバックグランド処理を行う。
【0050】
(1)ガベージコレクション
ガベージコレクションとは、メモリ11内の所定以上の量の無効データが含まれるブロックを再利用するプロセスである。具体的に再利用とは、このブロック内に保持されている有効なデータを、新しいブロックに移してから、このブロックを消去ブロックとして利用できる状態にすることである。
【0051】
(2)トリム(Trim)
トリムとは、消去グループ単位で消去を行う代わりに、書き込みグループ単位でメモリ11の消去動作を行うことである。トリムでは、ホストデバイス2は、メモリ11内の必要でないデータを特定し、特定されたデータを消去することが出来る。
【0052】
(3)ワイプ(Wipe)
ワイプとは、メモリ11に論理ブロックを割り当て、再フォーマットする操作である。
【0053】
(4)バッドブロック管理
メモリ11では、例えば使用を繰り返しているうちに不良ブロックが発生する。
このような不良ブロックの存在はフラッシュ操作(消去等)の失敗や書き込み動作が失敗する結果、判明する(ECC36により検出される)。
不良ブロックが特定されると、これらの不良ブロックはメモリ11内の不良ブロックテーブルに格納される。このように、不良ブロックを処理するプロセスのことを、バッドブロック管理と呼ぶ。
【0054】
(5)ウェアレベリング
メモリ11ではデータの書き換え及び消去を繰り返すとメモリセルが劣化し、データを書き込むことができなくなることがある。このため特定のブロックのみにデータの書き込み消去が集中するとそのブロックだけ早く寿命を迎えてしまう。
この現象を回避するための動作がウェアレベリングである。ウェアレベリングにはいくつかの手法があるが、NAND型フラッシュメモリを使った記憶媒体では、メモリ11外部からのアドレス信号をメモリ11内部毎に異なるアドレスに変換して、各ブロックの書き込み消去回数が平均化されるようにする。また、このアドレス変換情報もメモリ11内に書き込まれて保存される。
【0055】
(6)リードディスターブ対応処理
リードディスターブとは、読み出しを繰り返すことによって発生するビットエラーである。選択されたブロックにおいて、非選択のメモリセルは、制御ゲートに電圧が印加されるので、読み出し操作を繰り返すにつれて、記憶データが破壊され、誤りが発生する。このリードディスターブを抑制するために、デバイスマネージャ63(CPU42)は例えばブロック毎の読出し回数を把握し、定期的にデータを書き直す。このような動作を、リードディスターブ対応処理等と称す。
【0056】
そして、第1の実施形態では、図9に示すように、上記(1)〜(6)のバックグランド処理に優先順位(優先度)を決めて、例えばレジスタ46にバックグランド処理の種類と、その優先順位を設定しておく。尚、この優先順位、及びバックグランド処理の数や種類はあくまで第1の実施形態の一例であり、デバイスマネージャ63等によって適宜変更可能である。
【0057】
また、例えばデバイスマネージャ63は、メモリデバイス1が必要としているバックグランド処理をバックグランド処理情報として、レジスタ46に設定する。
【0058】
<1.2.3 バックグランド処理の許可に関する設定>
ところで、例えばホストデバイス2は、消費電力の関係上、メモリデバイス1のコマンドキュー74が空になった際に、メモリデバイス1がバックグランド処理を行うことを許可しないことがある。メモリデバイス1は、ホストデバイス2の許可を得ないと、コマンドキュー74が空になった際に、バックグランド処理を行わない。
【0059】
ホストデバイス2は、メモリデバイス1がバックグランド処理を行う事を許可するか否かを、レジスタ46(図1参照)内のフラグ「BACKGROUND_OPS_EN(許可設定とも称す)(図示せず)」に設定する。
【0060】
具体的には、ホストデバイス2は、メモリデバイス1がバックグランド処理を行う事を許可しない場合は、「BACKGROUND_OPS_EN」を“0”に設定する。また、ホストデバイス2は、メモリデバイス1がバックグランド処理を行う事を許可する場合は、「BACKGROUND_OPS_EN」を“1”に設定する。ホストデバイス2は、「BACKGROUND_OPS_EN」の設定を適宜変更することが可能である。メモリデバイス1は、このフラグを確認して、「BACKGROUND_OPS_EN」が“1”に設定されている場合に、バックグランド処理を行う。
【0061】
<1.2.4 バックグランド処理の重要度に関する設定>
例えばデバイスマネージャ63は、メモリデバイス1が必要とするバックグランド処理の種類、及び数、そして、メモリ11の未使用メモリブロック数等に応じてレジスタ46内のフラグ「BACK_GROUND_OPS_STATUS属性(図示せず)」の設定を行う。
【0062】
具体的には、デバイスマネージャ63は、バックグランド処理の重要度が「重要(Critical)」であると判定した場合は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“03”に設定し、「必要(Performance Impact)」であると判定した場合は、「BACK_GROUND_OPS_STATUS属性」を“02”に設定し、「必要(Required)」であると判定した場合は、「BACK_GROUND_OPS_STATUS属性」を“01”に設定し、「必要無し」であると判定した場合は「BACK_GROUND_OPS_STATUS属性」を“00”に設定する。尚、具体的な重要度の判定方法に関しては、下記に記載しているが、これに限らず、バックグランド処理の重要度の判定方法は適宜変更可能である。
【0063】
また、バックグランド処理の重要度が「重要(Critical)」である場合においては、メモリデバイス1は、一定のコマンド(モードセレクトコマンド等)以外には反応しなくなる。これ以上メモリデバイス1は動作できないため、ホストデバイス2は、後述するメモリデバイス1がバックグランド処理を行う必要性に関するデータを検出した場合、ホストデバイス2は、できるだけ早くメモリデバイス1にバックグランド処理を行わせる。そして、例えばホストデバイス2にバックグランド処理の重要度を供給しても良いし、ホストデバイス2がレジスタ46を監視することで、バックグランド処理の状況を確認しても良い。
【0064】
<1.2.5 バックグランド処理の必要性に関する設定>
例えばデバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」の設定に基づいて、レジスタ46内の「BACKGROUND_OPS_IN(図示せず)」の「UFS Statusビット(図示せず)」を設定する。
【0065】
具体的には、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」の設定が所定以上の重要度である場合、バックグランド処理を行う必要があると判定し、レジスタ46内の設定値「BACKGROUND_OPS_IN」の「UFS Statusビット」を“1”に設定する。また、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」の設定が所定未満の重要度である場合、バックグランド処理を行う必要はないと判定し、レジスタ46内の「BACKGROUND_OPS_IN」の「UFS Statusビット」を“0”に設定する。
【0066】
例えばホストデバイス2は、レジスタ46内の「BACKGROUND_OPS_IN」の「UFS Statusビット」が“1”に設定されていることを確認すると、ホストデバイス2はすぐに、またはできるだけ早くメモリデバイス1にバックグランド処理を実行させる。
【0067】
尚、具体的なバックグランド処理の必要性の判定方法に関しては、下記に記載しているが、これに限らず、判定方法は適宜変更可能である。そして、例えばホストデバイス2にバックグランド処理の必要性を供給しても良いし、ホストデバイス2がレジスタ46を監視することで、バックグランド処理の状況を確認しても良い。
【0068】
<1.2.6 第1の実施形態に係るメモリデバイス1の基本的な動作>
次に、図10、11を用いて、第1の実施形態に係るメモリデバイス1の基本的な動作について説明する。図10は、第1の実施形態に係るメモリデバイス1において、バックグランド処理の重要度及び必要性の設定に係る動作1000についてのフローを示している。図11は、第1の実施形態に係るメモリデバイス1において、バックグランド処理が行われる場合の動作1100についてのフローを示している。
【0069】
<1.2.6.1 バックグランド処理の重要度及び必要性の設定動作>
[ステップS1001]
図10に示すように、デバイスマネージャ63は、全てのロジカルユニット67内のキュー領域74が空か否かを判定する。これは、例えば、各ロジカルユニット67内のデバイスサーバ71が、キュー領域74が空になった旨を、デバイスマネージャ63に伝えることで、実現しても良い。
【0070】
[ステップS1002]
ステップS1001において、デバイスマネージャ63が、全てのロジカルユニット67内のコマンドキュー74が空だと判定した場合、レジスタ46内の「BACKGROUND_OPS_EN」の設定を確認する。
【0071】
[ステップS1003]
ステップS1002において、デバイスマネージャ63が、レジスタ46内の「BACKGROUND_OPS_EN」の設定が、バックグランド処理不許可である“0”であることを確認した場合、メモリデバイス1のバックグランド処理の要求、及び未使用のブロックBLKの数を確認する。
【0072】
[ステップS1004]
デバイスマネージャ63は、“メモリ11の未使用のブロックの数が閾値未満(未使用のブロック数<閾値)であり、且つ図8に示す(1)〜(6)のバックグランド処理の全てが必要である”という条件を満たすか否かを判定する。尚、この閾値は適宜変更されることができる。
【0073】
[ステップS1005]
ステップS1004の条件を満たす場合、デバイスマネージャ63は、バックグランド処理の重要度を「重要(Critical)」として、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“03”に設定する。そして、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」が“02”以上の場合、バックグランド処理を行う必要があると判定し、レジスタ46内の「BACKGROUND_OPS_IN」の「UFS Statusビット」を“1”に設定する。
【0074】
このレジスタ46内の「BACK_GROUND_OPS_STATUS属性」(重要度)、または「BACKGROUND_OPS_IN」の「UFS Statusビット」(必要性)を、例えばデバイスマネージャ63が、ホストデバイス2に通知する。また、ホストデバイス2が、レジスタ46を監視することで、バックグランド処理の重要度及び必要性を確認しても良い。
【0075】
特に、バックグランド処理の重要度が「重要(Critical)」である場合、メモリデバイス1は、一定のコマンド以外には反応しなくなる。ホストデバイス2はすぐに、またはできるだけ早くメモリデバイス1にバックグランド処理を実行させる。このバックグランド処理については、後述の動作1100を参照されたい。
【0076】
[ステップS1006]
ステップS1004の条件を満たさない場合、デバイスマネージャ63は、“図8に示す(1)が必要であり、且つ図8に示す(2)及び(3)の少なくとも一つが必要である”という条件を満たすか否かを判定する。
【0077】
[ステップS1007]
ステップS1006の条件を満たす場合、デバイスマネージャ63は、バックグランド処理の重要度を「必要(Performance Impact)」として、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“02”に設定する。そして、デバイスマネージャ63は、バックグランド処理を行う必要があると判定し、レジスタ46内の「BACKGROUND_OPS_IN」の「UFS Statusビット」を“1”に設定する。
【0078】
[ステップS1008]
ステップS1006の条件を満たさない場合、デバイスマネージャ63は、“図8に示す(1)〜(6)のうち一つ以上必要である”という条件を満たすか否かを判定する。
【0079】
[ステップS1009]
ステップS1008の条件を満たす場合、デバイスマネージャ63は、バックグランド処理の重要度を「必要(Required)」として、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“01”に設定する。そして、デバイスマネージャ63は、バックグランド処理を行う必要がないと判定し、レジスタ46内の「BACKGROUND_OPS_IN」の「UFS Statusビット」を“0”に設定する。
【0080】
[ステップS1010]
ステップS1008の条件を満たさない場合、デバイスマネージャ63は、バックグランド処理の重要度を「必要無し」として、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“00”に設定する。そして、デバイスマネージャ63は、バックグランド処理を行う必要がないと判定し、レジスタ46内の「BACKGROUND_OPS_IN」の「UFS Statusビット」を“0”に設定する。
【0081】
<1.2.6.2 バックグランド処理動作>
[ステップS1101]
ステップS1002において、デバイスマネージャ63が、レジスタ46内の「BACKGROUND_OPS_EN」の設定が、バックグランド処理を許可する“1”であることを確認した場合、メモリデバイス1が必要とするバックグランド処理があるか否かを判定する。
【0082】
[ステップS1102]
ステップS1101において、デバイスマネージャ63が、メモリデバイス1が必要とするバックグランド処理があると判定した場合、デバイスマネージャ63は、ステップS1004と同様の動作を行う。
【0083】
[ステップS1103]
ステップS1102の条件を満たす場合、デバイスマネージャ63は、ステップS1005と同様の動作を行う。
【0084】
[ステップS1104]
デバイスマネージャ63は、図8に示す(1)〜(6)を、優先順位の高い(1)から順に(6)までバックグランド処理を行っていく。例えば(1)〜(3)のバックグランド処理が終了すると、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を、「必要(Required)」を意味する“01”に設定しても良い。
【0085】
尚、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」が“01”の場合、デバイスマネージャ63は、ホストデバイス2から新しいコマンドがメモリデバイス1に供給されると、バックグランド処理を中断して新しいコマンドを実行する。
【0086】
[ステップS1105]
ステップS1102の条件を満たさない場合、デバイスマネージャ63は、ステップS1006と同様の動作を行う。
【0087】
[ステップS1106]
ステップS1105の条件を満たす場合、デバイスマネージャ63は、ステップS1007と同様の動作を行う。
【0088】
[ステップS1107]
デバイスマネージャ63は、必要とされた処理のうち、優先順位の高いものから順にバックグランド処理を行っていく。
【0089】
[ステップS1108]
ステップS1105の条件を満たさない場合、デバイスマネージャ63は、ステップS1009と同様の動作を行う。
【0090】
[ステップS1109]
デバイスマネージャ63は、必要とされた処理のうち、優先順位の高いものから順にバックグランド処理を行っていく。
【0091】
<1.3 第1の実施形態に係るメモリデバイスの作用効果>
上述した第1の実施形態によれば、メモリデバイス1は、不揮発性のメモリ11と、コマンドが格納されるコマンド格納部(キュー領域)74とを備えている。また、メモリデバイス1は、バックグランド処理の種類とその優先順位とが設定され、必要とされているバックグランド処理の情報が設定され、ホストデバイス2によって、バックグランド処理の許可または不許可が設定される記憶部(レジスタ)46を備えている。更にメモリデバイス1は、コマンド格納部74にコマンドが格納されていないと判定すると、記憶部46を参照してホストデバイス2がバックグランド処理を行うことを許可しているか否かを判定し、許可されていない場合、記憶部46に設定されたバックグランド処理の情報と優先順位とを参照して、メモリ11の未使用のブロックの数と、必要とされているバックグランド処理の優先順位及び数とに基づいてバックグランド処理の重要度を記憶部46に設定し、ホストデバイス2がバックグランド処理を行うことを許可していると判定する場合、記憶部46に設定されたバックグランド処理の情報を参照して、メモリ11の未使用のブロックの数と、バックグランド処理の種類及び数とに基づいてバックグランド処理の重要度を記憶部46に設定し、記憶部46に設定されたバックグランド処理の情報に基づくバックグランド処理を、優先順に実行する管理部63を備えている。また、管理部63は、ホストデバイス2に、記憶部46に設定された重要度に関する情報を供給する。
このように、メモリデバイス1は、効率的にバックグランド処理を行うことができる。
【0092】
例えば、バックグランド処理の優先順位、重要度、及び必要性等の規定が不明瞭である場合、ホストデバイス2は、メモリデバイス1がどの程度バックグランド処理の実行を必要としているのかを明確に判断することができない。そのため、メモリデバイス1がバックグランド処理を行わなければ、所定のコマンド以外の新しいコマンドを受け付けることができない場合等を、ホストデバイス2は的確に判断することができない。また、未使用ブロックを考慮しない場合、例えば未使用ブロックが十分存在し、バックグランド処理が不要な場合と、未使用ブロックが不足しており、バックグランド処理が必要な場合とをホストが判断できず、的確にバックグランド処理を行うことができない。
【0093】
しかし、第1の実施形態に係るメモリデバイス1では、メモリ11の“未使用ブロックの数”及び“バックグランド処理の項目(種類及び数)”に基づいてバックグランド処理の重要度及び必要性を判定している。このため、ホストデバイス2に、未使用ブロック数が十分か、不足しているかという事を含めてバックグランド処理の重要性及び必要性を明確に伝えることができ、メモリデバイス1は、効率的にバックグランド処理を行うことができる。また、メモリデバイス1がバックグランド処理を早急に行わなければならない事を、ホストデバイス2に伝えることができるので、メモリデバイス1のパフォーマンスの低下を抑制することができる。
【0094】
また、コマンドキューが空の期間のみにバックグランド処理を行うので、メモリデバイス1のパフォーマンスが向上する。更に、メモリデバイス1は、緊急性のないバックグランド処理等を判断できるので、ホストデバイス2のコマンドを優先することができ、ホストデバイス2の消費電力を抑制することができる。
【0095】
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態に係るメモリデバイスは、第1実施形態と同じハードウェア構成および機能ブロックを有する。第2の実施形態の説明で触れられていない点については、第1実施形態の記述が第2の実施形態に全て適用されることに留意されたい。第2の実施形態は、メモリデバイス1がバックグランド処理している際に、メモリデバイス1に電力に関するコマンドが入力された場合に関する。
【0096】
図12は、第2の実施形態に係るメモリデバイス1のバックグランド処理中に、電力に関するコマンドがメモリデバイス1に入力された場合の動作1200についてのフローを示している。
【0097】
<2.1 バックグランド処理中に他のコマンドが入力された場合の動作>
[ステップS1201]
メモリデバイス1がバックグランド処理を実行している最中に、ホストデバイス2がメモリデバイス1へと、例えばSleepモード、またはPower Down等の電力に関するコマンドを発行することがある。
【0098】
この場合、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」が「必要(Performance Impact)」以上を意味する“02”または “03”であるか否かを判定する。
【0099】
尚、第1の実施形態で説明したステップS1007及び1106Sでは、メモリデバイス1が“図8に示す(1)が必要であり、且つ図8に示す(2)及び(3)の少なくとも一つが必要である”という条件を満たす場合に、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“02”に設定していた。しかし、第2の実施形態では、メモリデバイス1が“図8に示す(1)を含めて3つ以上のバックグランド処理が必要である”という条件を満たす場合に、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“02”に設定する。
【0100】
[ステップS1202]
レジスタ46内の「BACK_GROUND_OPS_STATUS属性」が“02”または“03”である場合、デバイスマネージャ63は、メモリデバイス1が必要とするバックグランド処理の中から、優先順位が高いものから最大で二つのバックグランド処理を実行する。その後、例えばデバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を、「必要(Required)」を意味する“01”に設定する。
【0101】
[ステップS1203]
デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」が“01”に設定された後、ホストデバイス2から要求されたコマンドを実行する。つまり、メモリデバイス1は、Sleepモードに移行する、またはPower Downが実行される。
【0102】
[ステップS1204]
レジスタ46内の「BACK_GROUND_OPS_STATUS属性」が“00”または“01”である場合、デバイスマネージャ63は、ホストデバイス2から要求されたコマンドを実行する。つまり、メモリデバイス1は、Sleepモードに移行する、またはPower Downが実行される。
【0103】
<2.2 第2の実施形態に係るメモリデバイスの作用効果>
上述した第1の実施形態によれば、管理部63は、例えばバックグランド処理を実行している間にホストデバイス2からコマンドが入力された場合、記憶部46に設定された重要度が、所定の値以上の場合、バックグランド処理を実行する。
【0104】

このように、バックグランド処理中に、ホストデバイス2から新しいコマンドが発行された場合でも、メモリデバイス1は重要度を用いることで、バックグランド処理の中止または続行を的確に判断することができる。
【0105】
バックグラウンド処理を行っている最中に、ホストデバイス2から他のコマンドを要求されることがある。明確にバックグランド処理の重要性または必要性を規定しないと、不要なバックグランド処理を行っている場合でも、他のコマンドを待機させることになり、メモリデバイス1のパフォーマンスに影響してしまう。
【0106】
しかし、第2の実施形態のメモリデバイス1では、バックグランド処理の重要性または必要性を明確に規定している。そして、バックグランド処理中に、ホストデバイス2から電力に係る要求(Sleepモードへの移行、Power Down等)がされた場合に、どのようにバックグランド処理を実行するのかを明確にしている。
【0107】
そのため、メモリデバイス1がバックグランド処理をすぐに必要とする場合においては、バックグランド処理を優先し、メモリデバイス1がバックグランド処理をすぐに必要としない場合には、ホストデバイス2の要求を優先する。これにより、メモリデバイス1のパフォーマンスが向上し、ホストデバイス2の電力を効率よく使用することができる。
【0108】
<3 変形例等>
尚、バックグランドの許可設定、バックグランドの重要度、バックグランドの必要性、バックグランドの処理情報等がレジスタ46に設定されているが、設定される場所は、必ずしもレジスタ46に限らない。
【0109】
また、第2の実施形態では、メモリデバイス1が“図8に示す(1)を含めて3つ以上のバックグランド処理が必要である”という条件を満たす場合に、デバイスマネージャ63は、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“02”に設定している。しkぁし、これに限らず、他の条件を満たす場合に、デバイスマネージャ63が、レジスタ46内の「BACK_GROUND_OPS_STATUS属性」を“02”に設定する場合でも、上述した第2の実施形態は実施可能である。
【0110】
また、上述した第1の実施形態及び第2の実施形態では、UFSメモリデバイスを用いて説明したが、これに限らず、例えば、クライアントサーバモデルに基づくメモリシステムであれば、どのようなものでも良い。
【0111】
また、上述した第1の実施形態及び第2の実施形態では、UFSメモリデバイスを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した第1の実施形態及び第2の実施形態と同様の作用効果を奏することができる。また、メモリ11はNAND型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
【0112】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【0113】
1…メモリデバイス、 2…ホストデバイス、 11…メモリ
12…メモリコントローラ、 21、23…インターフェース
22…コアロジック部、 31…ホストインターフェース
32…バッファ、 33…データバス、 34…メモリインターフェース
35…バッファ、 36…ECC回路、 41…制御バス
42…CPU、 43…ROM、 45…ワークRAM
46…レジスタ、 51…アナログ回路、 61…ターゲットポート
62…ルータ、 63…デバイスマネージャ、 64…デスクリプタ
65…アトリビュート、 66…フラグ、 67…ロジカルユニット
71…デバイスサーバ、 72…タスクマネージャ、 73…メモリ領域
74…キュー領域、 91…メモリセルアレイ、 92…ページバッファ
101…パケット、 102…LUN、 103…実体部
201…プリント基板、 202…ワイヤ、 203…パッケージ
210…アプリケーション、 220…ドライバ、 230…コントローラ、
240…インターフェース。

【特許請求の範囲】
【請求項1】
不揮発性のメモリと、
コマンドが格納されるコマンド格納部と、
バックグランド処理の種類とその優先順位とが設定され、
必要とされているバックグランド処理の情報が設定され、
ホストデバイスによって、前記バックグランド処理の許可または不許可が設定される記憶部と、
前記コマンド格納部にコマンドが格納されていないと判定すると、前記記憶部を参照して前記ホストデバイスが前記バックグランド処理を行うことを許可しているか否かを判定し、
許可されていない場合、前記記憶部に設定された前記バックグランド処理の情報と前記優先順位とを参照して、前記メモリの未使用のブロックの数と、前記必要とされているバックグランド処理の優先順位及び数とに基づいて前記バックグランド処理の重要度を前記記憶部に設定する管理部と、
を備えることを特徴とするメモリデバイス。
【請求項2】
前記管理部は、前記ホストデバイスが前記バックグランド処理を行うことを許可していると判定する場合、
前記記憶部に設定された前記バックグランド処理の情報を参照して、前記メモリの未使用のブロックの数と、前記バックグランド処理の種類及び数とに基づいて前記バックグランド処理の重要度を前記記憶部に設定し、
前記記憶部に設定された前記バックグランド処理の情報に基づくバックグランド処理を、優先順に実行する
ことを特徴とする請求項1に記載のメモリデバイス。
【請求項3】
前記管理部は、前記バックグランド処理を実行している間に前記ホストデバイスからコマンドが入力された場合、前記記憶部に設定された前記重要度が、所定の値以上の場合、前記バックグランド処理を実行することを特徴とする請求項2に記載のメモリデバイス。
【請求項4】
前記管理部は、前記バックグランド処理の間に前記ホストデバイスからコマンドが入力された場合、最大で2つの前記バックグランド処理を実行することを特徴とする請求項3に記載のメモリデバイス。
【請求項5】
前記管理部は、前記ホストデバイスに、前記記憶部に設定された前記重要度に関する情報を供給することを特徴とする請求項1乃至4のいずれか一項に記載のメモリデバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2013−69069(P2013−69069A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2011−206384(P2011−206384)
【出願日】平成23年9月21日(2011.9.21)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】