メモリデバイス
【課題】高品質なメモリデバイスを提供する。
【解決手段】メモリデバイスは、不揮発性のメモリ73と、コマンドが格納されるコマンド格納部74と、コマンドをホストデバイス2から受信し、コマンドをコマンド格納部74に格納すると共にコマンドを実行し、コマンドの実行が終了した後、コマンドの実行の終了を知らせる第1の信号をホストデバイス2に送信する制御部71とを備え、制御部71は、第1のコマンドに応答してメモリ73についての書き込み、読み出し、または消去を実行し、第2のコマンドに応答して、コマンド格納部74内の第1のコマンドまたは実行中の第1のコマンドを中断し、第2のコマンドを実行した際、中断対象となる第1のコマンドのうち、中断可能な第1コマンドを中断すると共に、中断対象となる第1のコマンドのうちで中断されなかった全ての第1のコマンドに関する第1の通知を送信した後、第2のコマンドに関する第1の通知を送信する。
【解決手段】メモリデバイスは、不揮発性のメモリ73と、コマンドが格納されるコマンド格納部74と、コマンドをホストデバイス2から受信し、コマンドをコマンド格納部74に格納すると共にコマンドを実行し、コマンドの実行が終了した後、コマンドの実行の終了を知らせる第1の信号をホストデバイス2に送信する制御部71とを備え、制御部71は、第1のコマンドに応答してメモリ73についての書き込み、読み出し、または消去を実行し、第2のコマンドに応答して、コマンド格納部74内の第1のコマンドまたは実行中の第1のコマンドを中断し、第2のコマンドを実行した際、中断対象となる第1のコマンドのうち、中断可能な第1コマンドを中断すると共に、中断対象となる第1のコマンドのうちで中断されなかった全ての第1のコマンドに関する第1の通知を送信した後、第2のコマンドに関する第1の通知を送信する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリデバイスに関する。
【背景技術】
【0002】
データを保持するメディアとして種々のものが存在する。そのようなメディアとして、例えば、UFS(Universal Flash Storage)メモリデバイス等が挙げられる。ホストデバイスは、UFSメモリデバイスに命令を発行した際、UFSメモリデバイスからのレスポンスを受信するための待機時間が長くなるという問題があった。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】JEDEC SOLID STATE TECHNOLOGY ASSOCIATION、JEDEC STANDARD(JESD220)、2011年2月
【発明の概要】
【発明が解決しようとする課題】
【0004】
高品質なメモリデバイスを提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリデバイスは、不揮発性のメモリと、コマンドが格納されるコマンド格納部と、前記コマンドをホストデバイスから受信し、前記コマンドを前記コマンド格納部に格納すると共に前記コマンドを実行し、前記コマンドの実行が終了した後、前記コマンドの実行の終了を知らせる第1の信号を前記ホストデバイスに送信する制御部とを備える。前記制御部は、第1のコマンドに応答して前記メモリについての書き込み、読み出し、または消去を実行し、第2のコマンドに応答して、前記コマンド格納部内の前記第1のコマンドまたは実行中の第1のコマンドを中断し、前記第2のコマンドを実行した際、中断対象となる前記第1のコマンドのうち、中断可能な前記第1コマンドを中断すると共に、中断対象となる前記第1のコマンドのうちで中断されなかった全ての前記第1のコマンドに関する前記第1の通知を送信した後、前記第2のコマンドに関する前記第1の通知を送信する。
【図面の簡単な説明】
【0006】
【図1】第1の実施形態に係るメモリデバイスのハードウェア上の構成を示している。
【図2】第1の実施形態に係るメモリを例示する回路図である。
【図3】第1の実施形態に係るメモリ空間の構成を例示する図である。
【図4】第1の実施形態に係るメモリデバイスが封止された形態の例を示している。
【図5】第1の実施形態に係るメモリデバイス機能ブロックを示している。
【図6】第1の実施形態に係るパケットの例を示している。
【図7】第1の実施形態に係る論理アドレスと物理ブロックとの変換テーブルの例を示している。
【図8】第1の実施形態に係るLUをより詳細に示す機能ブロック図である。
【図9】第1の実施形態に係るキュー領域をより詳細に示すブロック図である。
【図10】第1の実施形態に係るコマンド中断方法を概略的に示したフローチャートである。
【図11】第1の実施形態に係るメモリデバイスとホストデバイスとの間の通信の例を示している。
【図12】第2の実施形態に係るメモリデバイスとホストデバイスとの間の通信の例を示している。
【図13】比較例に係るメモリデバイスとホストデバイスとの間の通信の例を示している。
【発明を実施するための形態】
【0007】
以下、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0008】
(第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】
<メモリの概要>
例えば、メモリ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は、例えば、プリント基板上に半田により実装される埋め込み型でも良いし、ホストデバイス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】
<メモリデバイスの機能的な構成>
次に、図5に、メモリデバイス1の構成の別の視点を示す。より具体的には、図5は、メモリデバイス1の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【0027】
メモリデバイス1は、ターゲットポート61、ルータ62、デバイスマネージャ63、デスクリプタ64、アトリビュート65、フラグ66、複数のロジカルユニットLU(logical unit)67を含んでいる。ターゲットポート61は、メモリデバイス1がホストデバイス2と通信可能に接続されるためのポートであり、例えばホストインターフェース31に対応する。ルータ62は、ホストデバイス2から受信された通信(タスク、コマンド、データ、クエリー等)を宛先のLU67にルーティングする。ホストデバイス2は、コマンドの処理またはタスク管理機能を、1つのLU67を宛先とする要求を通じて要求する。LU67同士は、アドレス(例えばLUN(logical unit number))により相互に識別されることが可能である。尚、以下において、コマンドとは、LUコマンド(書き込みコマンド、または読み出しコマンド等)と、タスクと、クエリーとを包含していると解する。
【0028】
ところで、LUNは、例えば、図6に示されているように、UFSメモリデバイスでは、メモリデバイス1とホストデバイス2との間の通信(パケット)に含められることが可能である。
パケット101は、LUN102と、実体部103を含んでいる。
LUN102は、例えばパケット101のヘッダに含められることが可能である。各パケットの宛先のLU67は、LUNにより一意に特定される。
実体部103は、パケットの機能に固有の内容、例えばタスク、データ、LUコマンド、クエリー、各種のパラメータ等を含んでいる。より具体的には、パケットの実体部103にコマンド記述部が含まれており、コマンド記述部にSCSI(small computer system interface)コマンドが格納されている。SCSIコマンド中に、所定のコマンド、及びアドレス等が含まれている。
【0029】
また、図5に示すように、ルータ62は、ホストデバイス2から受信された通信(タスク、LUコマンド、データ、クエリー)を、この通信中のLUNに基づいて、宛先のLU67にルーティングする。また、ルータ62は、複数のLU67からホストデバイス2宛ての通信を例えば時分割によって適当な順序でターゲットポート61に送信する。ルータ62は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0030】
デバイスマネージャ63は、デバイスレベルの動作、及びコンフィギュレーションの管理を行なう。デバイスレベルの管理には、例えば、メモリデバイス1の電力管理、スリープ等の制御等が含まれる。デバイスレベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイスマネージャ63は、ホストデバイス2からのメモリデバイス1のコンフィギュレーション情報の変更、及び出力要求であるクエリー要求のようなコマンドを処理する。デバイスマネージャ63は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0031】
デスクリプタ64、アトリビュート65、フラグ66は、例えばワークRAM45中のデータとして実現される。デスクリプタ64は、予め定義されたフォーマットのデータ構造を有し、メモリデバイス1についての何らかの特徴を記述するためのものである。デスクリプタ64には、例えば、メモリデバイス1にアクセスするのに必要なデバイスクラス、サブクラス、プロトコル等が含まれる。アトリビュート65は、メモリデバイス1に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート65には、例えば、メモリデバイス1とホストデバイス2との間で転送可能なデータの最大値等が含まれる。フラグ66は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは「0」または「1」等により表わされる。
【0032】
<ロジカルユニットの構成>
各LU67は、例えばメモリ11、メモリインターフェース34、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46(図1参照)により実現される。各LU67は、相互に独立して、ホストデバイス2からの処理を実行する。したがって、各LU67はメモリ11、インターフェース21、23、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46等の資源の一部を利用して実現される。各LUは、上記のようにホストデバイス2からは1つのLUを特定するLUNによって相互に区別される。ホストデバイス2からのコマンドは指定されたLU67によって実行される。
【0033】
そして、各LU67は、デバイスサーバ71、タスクマネージャ72、メモリ領域73、及びキュー(queue:待ち行列)領域74を含んでいる。
【0034】
キュー領域74は、ワークRAM45またはレジスタ46等のハードウェアで実現され、ホストデバイス2からのタスク、LUコマンド、クエリー等を保持する。
【0035】
メモリ領域73は、メモリ11のメモリ領域のうちの一部から構成され、例えばホストデバイス2からの書き込みデータを格納する。
【0036】
デバイスサーバ71、及びタスクマネージャ72は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0037】
デバイスサーバ71は、ホストデバイス2から受信されたLUレベルの処理を要求するコマンドを解釈する。具体的には、デバイスサーバ71は、該コマンドが、タスク、LUコマンド、またはクエリーかを判別して、それぞれをキュー領域74内の所定の領域に割り当てる。また、デバイスサーバ71は、タスク、LUコマンド、またはクエリーを実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。
【0038】
LU67はメモリ領域73を含んでいるので、デバイスサーバ71は、少なくともメモリ領域73(メモリ11)を制御する機能を有している。
【0039】
タスクマネージャ72は、複数のコマンドの実行の順序を制御し、タスク管理機能を提供する。例えば、キュー領域74に保持されたタスク、LUコマンド、またはクエリーの実行の順序を制御する。
【0040】
上記のように、デバイスサーバ71は、メモリ11の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホストデバイス2によって、ホストデバイス2がメモリデバイス1に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ11の書き込み領域(ページ)または消去領域(ブロック)を特定するためのアドレスである。デバイスサーバ71は、自身に対応するメモリ領域73によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、及びどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。その管理のために、デバイスサーバ71は、例えば論理アドレス物理アドレス変換テーブル(以下、単に変換テーブルと称する場合がある)を保持している。
【0041】
変換の例として、例えば、図7に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレスオフセットが割り当てられている。図7は、メモリ11の書き込み単位の大きさが16kBであり、論理アドレスが512Bサイズのデータごとに割り当てられている例を示している。
【0042】
<デバイスサーバの構成>
次に、図8を参照して、デバイスサーバ71をより詳細に説明する。複数のLU67のうち、少なくとも1つ、典型的には全てが、図8に示す構成を有している。
図8に示されているように、デバイスサーバ71は、管理部81と、コマンド解析部82と、メモリ制御部83を含んでいる。
【0043】
管理部81は、デバイスサーバ71の全体を管理する。コマンド解析部82は、ホストデバイス2からルータ62を介してコマンドを受信する。また、コマンド解析部82は、受信されたコマンドを解析する。更に、コマンド解析部82は、コマンドを受信すると、キュー領域74内に、該コマンドを割り当てる。メモリ制御部83は、管理部81の指示に従って、メモリ11に対するあらゆる指示の発行を担う。
【0044】
<キュー領域の構成>
次に、図8及び図9を用いてキュー領域74について説明する。図9は、第1の実施形態に係るキュー領域74の基本的な構成を概略的に示した図である。
【0045】
図示するように、キュー領域74は、LUコマンドを保持するコマンドキュー74aと、タスクを保持するタスクキュー74bと、クエリーを保持するクエリーキュー74cとを備えている。
【0046】
コマンドキュー74a、タスクキュー74b、及びクエリーキュー74c(これらを、単にキュー、または待ち行列空間と呼ぶことがある)は、それぞれ、入出力が繰返されるデータを一時的に保持するデータ構造の一つである。本実施形態に係るキューは、先に入力されたデータから順に処理していく構造となっており、データを先入れ先出し法(FIFO: first in first out)等とも呼ぶことがある。このようなキューの末尾にデータを追加(格納)することをエンキュー(enqueue)と呼び、キューの先頭からデータを取り出すことをデキュー(dequeue)と呼ぶ。
【0047】
コマンドキュー74aにおいて、データ(LUコマンド)は一つずつ、先頭のCommand(1)から末尾のCommand(x)(xは1以上の任意の整数)まで順番にエンキューされる。そして、データ(LUコマンド)は一つずつ、先頭のCommand(1)から順番にデキューされる。
【0048】
タスクキュー74bにおいて、データ(タスク)は一つずつ、先頭のTask(1)から末尾のTask(y)(yは1以上の任意の整数)まで順番にエンキューされる。そして、データ(タスク)は一つずつ、先頭のTask(1)から順番にデキューされる。
【0049】
クエリーキュー74cにおいて、データ(クエリー)は一つずつ、先頭のQuery(1)から末尾のQuery(z)(zは1以上の任意の整数)まで順番にエンキューされる。そして、データ(クエリー)は一つずつ、先頭のQuery(1)から順番にデキューされる。
【0050】
尚、本実施形態に係るメモリデバイス1において、同時に複数のコマンドは実行できない。つまり、コマンドキュー74a、タスクキュー74b、及びクエリーキュー74cからそれぞれ同時にデキューされることはない。各キュー内において、デキューされる順番は決まっているが、コマンドキュー74a、タスクキュー74b、及びクエリーキュー74cの内、どのキューから優先的にデキューされるかは、例えばタスクマネージャ72が適宜決定することができる。本実施形態では、例えばタスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bやクエリーキュー74cが優先的に実行されるように設定されている。
【0051】
<コマンド中断方法>
ところで、ホストデバイス2から、メモリデバイス1に、キュー領域74内に格納されている全コマンドを中断するコマンドが発行されることがある。
【0052】
各コマンドは、その処理が終了すると、対応するLU67のデバイスサーバ(より具体的には例えば管理部81)によって、各コマンドに係る処理の終了の旨のレスポンスをホストデバイス2に送信する。こうして、ホストデバイス2は、各コマンドの処理が終了したと認識する。
【0053】
しかし、例えば中断コマンドによって、各コマンドが中断された場合、中断された各コマンドは、中断された旨のレスポンスをホストデバイス2に送信しない。ホストデバイス2は、中断コマンドが中断処理を終了した旨のレスポンスを受けて、中断コマンドが終了したことを認識する。
【0054】
ここで、図10を用いて、第1の実施形態に係るコマンド中断方法100について説明する。図10は、第1の実施形態に係るコマンド中断方法を概略的に示したフローチャートである。ここでは一例として、コマンドキュー74a(Command(1)〜Command(x))に格納されたLUコマンドを中断する場合について説明する。
【0055】
[ステップS101]
ホストデバイス2から、メモリデバイス1に、少なくともコマンドキュー74aに格納されたコマンドを中断する中断コマンド(例えばタスク)が入力される。この中断コマンド(タスク)はLU67のデバイスサーバ(より具体的には例えばコマンド解析部82)に入力される。また、コマンド解析部82は、タスクキュー74bに中断コマンドをエンキューする。タスクキュー74bはコマンドキュー74aよりも優先されるので、コマンドキュー74a内のコマンドがデキューされる前に、中断コマンドがデキューされる。
【0056】
[ステップS102]
中断コマンドのデキューを受けて、管理部81は、コマンドキュー74a内のコマンドが全て中断できるかを確認し、更に実行中のコマンドの有無及び実行中のコマンドが中断できるかを確認する。
【0057】
[ステップS103]
管理部81によって、コマンドキュー74a内のコマンド及び実行中のコマンドが全て中断できる場合、管理部81は中断コマンドを実行して、全てのコマンドを中断する。
【0058】
[ステップS104]
中断処理が終了すると、対応するLU67の管理部81は、中断の終了の旨のレスポンスをホストデバイス2に送信する。尚、中断の終了の旨のレスポンスとして、例えば、「全てのコマンドの中断処理が成功した」というレスポンスと、「全てのコマンドの中断は成功してないが、コマンドの中断処理は終了した」というレスポンスの2種類が存在する。このため、例えば全てのコマンドの中断が成功した場合は、管理部81はホストデバイス2に、その旨がわかるようなレスポンスを送信しても良い。
【0059】
[ステップS105]
ステップS102において、管理部81は、中断できないコマンド(実行中のコマンドも含む)があると判定した場合、管理部81は中断コマンドを実行し、中断可能なコマンドのみを中断する。
【0060】
[ステップS106]
管理部81は、中断処理の終了の後、中断できなかった全てのコマンドのレスポンスをホストデバイス2に送信する。その後、ステップS104を実行する。
【0061】
<第1の実施形態に係るコマンド中断方法の具体例>
次に、図11を用いて、第1の実施形態に係るLUコマンド中断時のホストデバイス2とメモリデバイス1との通信の様子について説明する。図11は、ホストデバイス2からメモリデバイス1に入力されたLUコマンドを、ホストデバイス2からメモリデバイス1に入力されたタスクで中断する場合における、ホストデバイス2とメモリデバイス1との通信の様子と、該通信時における、コマンドキュー74a及びタスクキュー74bの様子を示した図である。尚、図11では簡単のため、コマンドキュー74a及びタスクキュー74bの先頭から三つまでのキューを図示している。また、簡単のため、初めはコマンドキュー74a及びタスクキュー74bには何もエンキューされてないものとする。また、各通信はいずれも、この1つのLU67とホスト2との間の通信(パケット)に相当する。
【0062】
図11に示すように、まずホストデバイス2からメモリデバイス1のコマンド解析部82に一つ目のコマンド(WRITE(1) command:書き込みコマンド)が供給される。コマンド解析部82は、該コマンドがLUコマンド(WRITE(1) command)であることを判別し、コマンドキュー74aに該LUコマンドをエンキューする。この際、コマンドキュー74aには何もエンキューされていないので、該LUコマンドは、コマンドキュー74aの先頭にエンキューされる。そして、先頭にエンキューされたWRITE(1) commandがデキューされ、メモリ領域73への書き込み動作が実行される。コマンドキュー74aは再び空となる。
【0063】
尚、書き込み動作の一例として、例えば管理部81は、書き込み動作を実行する前に、ホストデバイス2に書き込みの準備ができた旨を伝えるレスポンスを返す。ホストデバイス2はこのレスポンスを受けて、メモリデバイス1に書き込み用のデータを転送する。そして、このデータの転送を受けて、デバイスサーバ71は、メモリ領域73への書き込みを実行する。
【0064】
続いて、ホストデバイス2からメモリデバイス1のコマンド解析部82に二つ目のコマンド(WRITE(2) command:書き込みコマンド)が供給される。コマンド解析部82は、該コマンドがLUコマンド(WRITE(2) command)であることを判別し、コマンドキュー74aに該LUコマンド(WRITE(2) command)をエンキューする。この際、コマンドキュー74aには何もエンキューされていないので、該LUコマンドは、コマンドキュー74aの先頭にエンキューされる。
【0065】
続いて、ホストデバイス2からメモリデバイス1のコマンド解析部82に三つ目のコマンド(READ command:読み出しコマンド)が供給される。コマンド解析部82は、該コマンドがLUコマンド(READ command)であることを判別し、コマンドキュー74aに該LUコマンド(READ command)をエンキューする。この際、該LUコマンド(READ command)は、WRITE(2) commandの次にエンキューされる。
【0066】
次に、ホストデバイス2からメモリデバイス1のコマンド解析部82に四つ目のコマンド(ABORT task:中断タスク)が供給される。コマンド解析部82は、該コマンドがタスク(ABORT task)であることを判別し、タスクキュー74bに該タスク(ABORT task)をエンキューする。この際、該タスク(ABORT task)は、タスクキュー74bの先頭にエンキューされる。このABORT taskは、キュー領域74に格納されているコマンドを全て中断するコマンドである。
【0067】
ここで、タスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bが優先されるように設定されている。そのため、管理部81は、ABORT taskをWRITE(2) commandよりも優先して実行する。ABORT taskの実行によって、コマンドキュー74aに格納されているWRITE(2) command、及びREAD commandが中断される。しかし、WRITE(1) commandは既に実行されているので、ABORT taskによって中断されない。尚、管理部81によって、実行中のコマンドであっても、中断可能だと判定されれば、該コマンドを中断してもかまわない。
【0068】
管理部81は、中断可能なコマンドの中断が完了すると、その旨をホストデバイス2に伝えるレスポンス(ABORT taskに関するレスポンス)を返す。ところで、コマンド中断の実行時に、既に実行中のコマンドや、例えば管理部81によって中断すべきではないと判断されるコマンドが残っていることがある。そのような場合、管理部81は、中断できなかったコマンドに関するレスポンスをホストデバイス2に送信してから、ABORT taskに関するレスポンスをホストデバイス2に送信する。このため、図11に示すように、WRITE(1) commandが実行中の間は、管理部81は、ABORT taskのレスポンスをホストデバイス2に送信しない。
【0069】
そして、WRITE(1) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(1) command))をホストデバイスへと送信する。
【0070】
中断可能なコマンドが中断され、且つ中断されなかったコマンドのレスポンスがホストデバイス2へと発行されると、管理部81は、コマンドの中断が全て完了した旨を伝えるレスポンス(RESPONSE (ABORT task))をホストデバイス2に送信する。
【0071】
<第1の実施形態に係るメモリデバイスの作用効果>
上述した第1の実施形態によれば、メモリデバイス1は、不揮発性のメモリ(メモリ領域)73と、コマンドが格納されるコマンド格納部(キュー領域)74と、コマンドをホストデバイス2から受信し、コマンドをコマンド格納部74に格納すると共にコマンドを実行し、コマンドの実行が終了した後、コマンドの実行の終了を知らせる第1の信号(レスポンス)をホストデバイス2に送信する制御部(デバイスサーバ)71とを備えている。また、制御部71は、第1のコマンドに応答してメモリ73についての書き込み、読み出し、または消去を実行し、第2のコマンドに応答して、コマンド格納部74内の第1のコマンドまたは実行中の第1のコマンドを中断する。また、制御部71は、第2のコマンドを実行した際、中断対象となる第1のコマンド(コマンド格納部74に格納されたコマンド、及び実行中のコマンド)のうち、中断可能な第1コマンドを中断すると共に、中断対象となる第1のコマンドのうちで中断されなかった全ての第1のコマンドに関する第1の通知を送信した後、第2のコマンドに関する第1の通知を、ホストデバイス2に送信する。
【0072】
このように、メモリデバイス1が、レスポンスをホストデバイス2に送信するタイミングを制御することで、ホストデバイス2は、メモリデバイス1の状態を正確に認識することができる。以下に比較例を用いて、本実施形態のより詳細な効果について説明する。
【0073】
まず、図13を用いて、比較例について概略的に説明する。比較例は、コマンド中断時において、中断されないコマンドがレスポンスをホストデバイス2に返す前に、コマンド中断のレスポンスをホストデバイス2に返す場合に関する。
【0074】
図13に示すように、タスクキュー74bにタスク(ABORT task)がエンキューされるまでは、上述の第1の実施形態(図11)で説明した動作と同様の動作が行われる。
【0075】
タスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bが優先されるように設定されている。そのため、ABORT taskがWRITE(2) commandよりも優先して実行される。しかし、ここで管理部81によって、WRITE(2) commandは中断すべきではないと判断される場合、ABORT taskの実行によって、コマンドキュー74aに格納されているREAD commandが中断される。しかし、管理部81は、WRITE(1) command、及びWRITE(2) commandに関するレスポンスがホストデバイス2に送信される前に、コマンドの中断が完了した旨を伝えるレスポンスをホストデバイス2に送信する。
【0076】
その後、WRITE(1) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(1) command))をホストデバイス2へと送信する。
【0077】
続いて、先頭に格納されているWRITE(2) commandがデキューされ、メモリ領域73への書き込み動作が実行される。そして、WRITE(2) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(2) command))をホストデバイス2へと送信する。
【0078】
このように、各コマンドが中断された場合、管理部81は、中断されたコマンドに関するレスポンスをホストデバイス2に送信しない。このため、ホストデバイス2はどのコマンドが中断され、どのコマンドが中断されなかったかを明確に認識できない。その結果、ホストデバイス2は、全てのコマンドからのレスポンスが送信されるまで待機している。
【0079】
比較例によると、中断されなかったコマンドがあるにも関わらず、コマンドの中断の終了の旨のレスポンスをホストデバイス2に送信している。このため、ホストデバイス2はどのコマンドが中断され、どのコマンドが中断されなかったかを明確に認識できない。その結果、中断されていないコマンドのレスポンスを待つために所定の時間待機しなければならないという問題が起きてしまう。
【0080】
そこで、本実施形態では上述したように、管理部81が、中断されなかったコマンドのレスポンスを全てホストデバイス2に送信した後に、コマンドの中断の終了の旨のレスポンスをホストデバイス2に送信するように、レスポンスの順序を明確に規定する。これにより、ホストデバイス2は、コマンドの中断の終了の旨のレスポンスを認識した時点で、メモリデバイス1内のコマンドが全て中断及び終了されたことを認識することができる。このようなメモリデバイス1を用いることで、ホストデバイス2は、コマンドの中断の終了の旨のレスポンスを認識した時点で、待機時間無しに所望の処理に移行することが可能となる。例えばメモリデバイス1とホストデバイス2との間の通信がより円滑に行われることが可能となる。
【0081】
尚、上述のステップS104でも説明したように、中断の終了の旨のレスポンスは2種類存在する。そこで、中断対象となるコマンドが一つである場合、ホストデバイス2は2種類の中断の終了の旨のレスポンスを受信するだけで、該コマンドが中断されたか否かがわかる。そのため、「全てのコマンドの中断は成功してないが、コマンドの中断処理は終了した」というレスポンスを受信した場合は、該コマンドが中断されてないことをホストデバイス2が認識することができ、ホストデバイス2は該コマンドからのレスポンスを待てば良い。しかし、上述したように、中断対象となるコマンドが複数存在する場合、ホストデバイスは「全てのコマンドの中断は成功してないが、コマンドの中断処理は終了した」というレスポンスを受信しただけでは、中断対象となるコマンドのうち、どのコマンドが中断され、どのコマンドが中断されていないかが不明確となる。このように中断対象となるコマンドが複数存在する場合、上述した第1の実施形態は特に有効である。
【0082】
(第2の実施形態)
次に、図12を用いて、第2の実施形態について説明する。第2の実施形態に係るメモリデバイスは、第1実施形態と同じハードウェア構成および機能ブロックを有する。第2の実施形態の説明で触れられていない点については、第1実施形態の記述が第2の実施形態に全て適用されることに留意されたい。第2の実施形態は、コマンド中断時において、実行中のコマンド及び、キュー内に中断されないコマンドが残っている場合に関する。
【0083】
<第2の実施形態に係るコマンド中断方法の具体例>
図12は、第2の実施形態に係るLUコマンド中断時のホストデバイス2とメモリデバイス1との通信の様子について示した図である。尚、図12では簡単のため、コマンドキュー74a及びタスクキュー74bの先頭から三つまでのキューを図示している。また、簡単のため、初めはコマンドキュー74a及びタスクキュー74bには何もエンキューされてないものとする。
【0084】
図12に示すように、ホストデバイス2からメモリデバイス1のコマンド解析部82に四つ目のコマンド(ABORT task:中断タスク)が供給され、タスクキュー74bに該タスク(ABORT task)がエンキューされるまでは、上述の第1の実施形態(図11)で説明した動作と同様の動作が行われる。
【0085】
第1の実施形態と同様に、タスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bが優先されるように設定されている。そのため、ABORT taskがWRITE(2) commandよりも優先して実行される。しかし、ここで管理部81は、WRITE(2) commandは中断すべきではないと判断した場合、ABORT taskの実行によって、コマンドキュー74aに格納されているcommandのうちREAD commandのみ中断し、WRITE(2) commandは中断しない。しかし、管理部81は、中断されないコマンド(WRITE(1) command、及びWRITE(2) command)に関するレスポンスがホストデバイス2に送信されるまで、コマンドの中断が完了した旨を伝えるレスポンスをホストデバイス2に送信しない。
【0086】
そして、WRITE(1) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(1) command))をホストデバイス2へと送信する。
【0087】
続いて、先頭に格納されているWRITE(2) commandがデキューされ、メモリ領域73への書き込み動作が実行される。コマンドキュー74aは再び空となる。この書き込み動作に関しては、第1の実施形態で説明した方法と同様の方法で行われる。
【0088】
そして、WRITE(2) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(2) command))をホストデバイス2へと送信する。
【0089】
中断可能なコマンドが中断され、且つ中断されなかったコマンドのレスポンスがホストデバイス2へと発行されると、管理部81は、コマンドの中断が全て完了した旨を伝えるレスポンス(RESPONSE (ABORT task))をホストデバイス2に送信する。
【0090】
<第2の実施形態に係るメモリデバイスの作用効果>
上述した第2の実施形態によれば、制御部71は、中断対象となる第1のコマンドのうち、中断すべきである第1のコマンドと、中断すべきでない第1のコマンドとを判断している。
【0091】
管理部81が、中断対象となるコマンドキュー74a内のLUコマンドのうち、中断すべきではないと判断するLUコマンドがある場合においても、管理部81が、中断すべきではないと判断したコマンドのレスポンスをホストデバイス2に送信してから、コマンドの中断の終了の旨のレスポンスをホストデバイス2に送信することで、上述した第1の実施形態と同様の効果を得ることが可能である。
【0092】
<変形例等>
尚、上述ではタスク(ABORT task)を用いてキュー領域74内のコマンドを中断している。しかし、これに限らず、所定のコマンドによってキュー領域74内を初期化する場合においても、中断できなかったコマンドのレスポンスがホストデバイス2に送信された後に、管理部81が該コマンドが完了した旨を伝えるレスポンスをホストデバイス2に送信することで、上述した第1の実施形態及び第2の実施形態と同様の効果を得ることが可能である。またこの場合、タスクマネージャ72によって、コマンドキュー74aよりも、該コマンドの実行が優先されるように設定されている。このように、メモリデバイス1内のコマンドを中断するコマンドであれば、上述したコマンド(ABORT task)に限定されず、どのようなものでも上述した第1の実施形態及び第2の実施形態を適用可能である。
【0093】
また、上述した第1の実施形態及び第2の実施形態では、UFSメモリデバイスを用いて説明したが、これに限らず、例えば、クライアントサーバモデルに基づくメモリシステムであれば、どのようなものでも良い。
【0094】
また、上述した第1の実施形態及び第2の実施形態では、UFSメモリデバイスを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した第1の実施形態及び第2の実施形態と同様の作用効果を奏することができる。また、メモリ11はNAND型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
【0095】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【0096】
1…メモリデバイス、2…ホストデバイス、11…メモリ、12…コントローラ、
21…I/O、22…コアロジック部、23…I/O、
31…ホストインターフェース、32…バッファ、33…データバス、
34…メモリインターフェース、35…バッファ、36…ECC回路、
41…制御バス、42…CPU、43…ROM、45…ワークRAM、
46…レジスタ、51…アナログ回路、61…ターゲットポート、
62…タスクルータ、63…デバイスマネージャ、64…デスクリプタ、
65…アトリビュート、66…フラグ、67…LU、71…デバイスサーバ、
72…タスクマネージャ、73…メモリ領域、74…キュー領域、
74a…コマンドキュー、74b…タスクキュー、74c…クエリーキュー、
81…管理部、82…コマンド解析部、83…転送要求生成部、84…メモリ制御部。
【技術分野】
【0001】
本発明の実施形態は、メモリデバイスに関する。
【背景技術】
【0002】
データを保持するメディアとして種々のものが存在する。そのようなメディアとして、例えば、UFS(Universal Flash Storage)メモリデバイス等が挙げられる。ホストデバイスは、UFSメモリデバイスに命令を発行した際、UFSメモリデバイスからのレスポンスを受信するための待機時間が長くなるという問題があった。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】JEDEC SOLID STATE TECHNOLOGY ASSOCIATION、JEDEC STANDARD(JESD220)、2011年2月
【発明の概要】
【発明が解決しようとする課題】
【0004】
高品質なメモリデバイスを提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリデバイスは、不揮発性のメモリと、コマンドが格納されるコマンド格納部と、前記コマンドをホストデバイスから受信し、前記コマンドを前記コマンド格納部に格納すると共に前記コマンドを実行し、前記コマンドの実行が終了した後、前記コマンドの実行の終了を知らせる第1の信号を前記ホストデバイスに送信する制御部とを備える。前記制御部は、第1のコマンドに応答して前記メモリについての書き込み、読み出し、または消去を実行し、第2のコマンドに応答して、前記コマンド格納部内の前記第1のコマンドまたは実行中の第1のコマンドを中断し、前記第2のコマンドを実行した際、中断対象となる前記第1のコマンドのうち、中断可能な前記第1コマンドを中断すると共に、中断対象となる前記第1のコマンドのうちで中断されなかった全ての前記第1のコマンドに関する前記第1の通知を送信した後、前記第2のコマンドに関する前記第1の通知を送信する。
【図面の簡単な説明】
【0006】
【図1】第1の実施形態に係るメモリデバイスのハードウェア上の構成を示している。
【図2】第1の実施形態に係るメモリを例示する回路図である。
【図3】第1の実施形態に係るメモリ空間の構成を例示する図である。
【図4】第1の実施形態に係るメモリデバイスが封止された形態の例を示している。
【図5】第1の実施形態に係るメモリデバイス機能ブロックを示している。
【図6】第1の実施形態に係るパケットの例を示している。
【図7】第1の実施形態に係る論理アドレスと物理ブロックとの変換テーブルの例を示している。
【図8】第1の実施形態に係るLUをより詳細に示す機能ブロック図である。
【図9】第1の実施形態に係るキュー領域をより詳細に示すブロック図である。
【図10】第1の実施形態に係るコマンド中断方法を概略的に示したフローチャートである。
【図11】第1の実施形態に係るメモリデバイスとホストデバイスとの間の通信の例を示している。
【図12】第2の実施形態に係るメモリデバイスとホストデバイスとの間の通信の例を示している。
【図13】比較例に係るメモリデバイスとホストデバイスとの間の通信の例を示している。
【発明を実施するための形態】
【0007】
以下、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0008】
(第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】
<メモリの概要>
例えば、メモリ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は、例えば、プリント基板上に半田により実装される埋め込み型でも良いし、ホストデバイス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】
<メモリデバイスの機能的な構成>
次に、図5に、メモリデバイス1の構成の別の視点を示す。より具体的には、図5は、メモリデバイス1の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【0027】
メモリデバイス1は、ターゲットポート61、ルータ62、デバイスマネージャ63、デスクリプタ64、アトリビュート65、フラグ66、複数のロジカルユニットLU(logical unit)67を含んでいる。ターゲットポート61は、メモリデバイス1がホストデバイス2と通信可能に接続されるためのポートであり、例えばホストインターフェース31に対応する。ルータ62は、ホストデバイス2から受信された通信(タスク、コマンド、データ、クエリー等)を宛先のLU67にルーティングする。ホストデバイス2は、コマンドの処理またはタスク管理機能を、1つのLU67を宛先とする要求を通じて要求する。LU67同士は、アドレス(例えばLUN(logical unit number))により相互に識別されることが可能である。尚、以下において、コマンドとは、LUコマンド(書き込みコマンド、または読み出しコマンド等)と、タスクと、クエリーとを包含していると解する。
【0028】
ところで、LUNは、例えば、図6に示されているように、UFSメモリデバイスでは、メモリデバイス1とホストデバイス2との間の通信(パケット)に含められることが可能である。
パケット101は、LUN102と、実体部103を含んでいる。
LUN102は、例えばパケット101のヘッダに含められることが可能である。各パケットの宛先のLU67は、LUNにより一意に特定される。
実体部103は、パケットの機能に固有の内容、例えばタスク、データ、LUコマンド、クエリー、各種のパラメータ等を含んでいる。より具体的には、パケットの実体部103にコマンド記述部が含まれており、コマンド記述部にSCSI(small computer system interface)コマンドが格納されている。SCSIコマンド中に、所定のコマンド、及びアドレス等が含まれている。
【0029】
また、図5に示すように、ルータ62は、ホストデバイス2から受信された通信(タスク、LUコマンド、データ、クエリー)を、この通信中のLUNに基づいて、宛先のLU67にルーティングする。また、ルータ62は、複数のLU67からホストデバイス2宛ての通信を例えば時分割によって適当な順序でターゲットポート61に送信する。ルータ62は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0030】
デバイスマネージャ63は、デバイスレベルの動作、及びコンフィギュレーションの管理を行なう。デバイスレベルの管理には、例えば、メモリデバイス1の電力管理、スリープ等の制御等が含まれる。デバイスレベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイスマネージャ63は、ホストデバイス2からのメモリデバイス1のコンフィギュレーション情報の変更、及び出力要求であるクエリー要求のようなコマンドを処理する。デバイスマネージャ63は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0031】
デスクリプタ64、アトリビュート65、フラグ66は、例えばワークRAM45中のデータとして実現される。デスクリプタ64は、予め定義されたフォーマットのデータ構造を有し、メモリデバイス1についての何らかの特徴を記述するためのものである。デスクリプタ64には、例えば、メモリデバイス1にアクセスするのに必要なデバイスクラス、サブクラス、プロトコル等が含まれる。アトリビュート65は、メモリデバイス1に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート65には、例えば、メモリデバイス1とホストデバイス2との間で転送可能なデータの最大値等が含まれる。フラグ66は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは「0」または「1」等により表わされる。
【0032】
<ロジカルユニットの構成>
各LU67は、例えばメモリ11、メモリインターフェース34、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46(図1参照)により実現される。各LU67は、相互に独立して、ホストデバイス2からの処理を実行する。したがって、各LU67はメモリ11、インターフェース21、23、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46等の資源の一部を利用して実現される。各LUは、上記のようにホストデバイス2からは1つのLUを特定するLUNによって相互に区別される。ホストデバイス2からのコマンドは指定されたLU67によって実行される。
【0033】
そして、各LU67は、デバイスサーバ71、タスクマネージャ72、メモリ領域73、及びキュー(queue:待ち行列)領域74を含んでいる。
【0034】
キュー領域74は、ワークRAM45またはレジスタ46等のハードウェアで実現され、ホストデバイス2からのタスク、LUコマンド、クエリー等を保持する。
【0035】
メモリ領域73は、メモリ11のメモリ領域のうちの一部から構成され、例えばホストデバイス2からの書き込みデータを格納する。
【0036】
デバイスサーバ71、及びタスクマネージャ72は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0037】
デバイスサーバ71は、ホストデバイス2から受信されたLUレベルの処理を要求するコマンドを解釈する。具体的には、デバイスサーバ71は、該コマンドが、タスク、LUコマンド、またはクエリーかを判別して、それぞれをキュー領域74内の所定の領域に割り当てる。また、デバイスサーバ71は、タスク、LUコマンド、またはクエリーを実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。
【0038】
LU67はメモリ領域73を含んでいるので、デバイスサーバ71は、少なくともメモリ領域73(メモリ11)を制御する機能を有している。
【0039】
タスクマネージャ72は、複数のコマンドの実行の順序を制御し、タスク管理機能を提供する。例えば、キュー領域74に保持されたタスク、LUコマンド、またはクエリーの実行の順序を制御する。
【0040】
上記のように、デバイスサーバ71は、メモリ11の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホストデバイス2によって、ホストデバイス2がメモリデバイス1に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ11の書き込み領域(ページ)または消去領域(ブロック)を特定するためのアドレスである。デバイスサーバ71は、自身に対応するメモリ領域73によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、及びどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。その管理のために、デバイスサーバ71は、例えば論理アドレス物理アドレス変換テーブル(以下、単に変換テーブルと称する場合がある)を保持している。
【0041】
変換の例として、例えば、図7に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレスオフセットが割り当てられている。図7は、メモリ11の書き込み単位の大きさが16kBであり、論理アドレスが512Bサイズのデータごとに割り当てられている例を示している。
【0042】
<デバイスサーバの構成>
次に、図8を参照して、デバイスサーバ71をより詳細に説明する。複数のLU67のうち、少なくとも1つ、典型的には全てが、図8に示す構成を有している。
図8に示されているように、デバイスサーバ71は、管理部81と、コマンド解析部82と、メモリ制御部83を含んでいる。
【0043】
管理部81は、デバイスサーバ71の全体を管理する。コマンド解析部82は、ホストデバイス2からルータ62を介してコマンドを受信する。また、コマンド解析部82は、受信されたコマンドを解析する。更に、コマンド解析部82は、コマンドを受信すると、キュー領域74内に、該コマンドを割り当てる。メモリ制御部83は、管理部81の指示に従って、メモリ11に対するあらゆる指示の発行を担う。
【0044】
<キュー領域の構成>
次に、図8及び図9を用いてキュー領域74について説明する。図9は、第1の実施形態に係るキュー領域74の基本的な構成を概略的に示した図である。
【0045】
図示するように、キュー領域74は、LUコマンドを保持するコマンドキュー74aと、タスクを保持するタスクキュー74bと、クエリーを保持するクエリーキュー74cとを備えている。
【0046】
コマンドキュー74a、タスクキュー74b、及びクエリーキュー74c(これらを、単にキュー、または待ち行列空間と呼ぶことがある)は、それぞれ、入出力が繰返されるデータを一時的に保持するデータ構造の一つである。本実施形態に係るキューは、先に入力されたデータから順に処理していく構造となっており、データを先入れ先出し法(FIFO: first in first out)等とも呼ぶことがある。このようなキューの末尾にデータを追加(格納)することをエンキュー(enqueue)と呼び、キューの先頭からデータを取り出すことをデキュー(dequeue)と呼ぶ。
【0047】
コマンドキュー74aにおいて、データ(LUコマンド)は一つずつ、先頭のCommand(1)から末尾のCommand(x)(xは1以上の任意の整数)まで順番にエンキューされる。そして、データ(LUコマンド)は一つずつ、先頭のCommand(1)から順番にデキューされる。
【0048】
タスクキュー74bにおいて、データ(タスク)は一つずつ、先頭のTask(1)から末尾のTask(y)(yは1以上の任意の整数)まで順番にエンキューされる。そして、データ(タスク)は一つずつ、先頭のTask(1)から順番にデキューされる。
【0049】
クエリーキュー74cにおいて、データ(クエリー)は一つずつ、先頭のQuery(1)から末尾のQuery(z)(zは1以上の任意の整数)まで順番にエンキューされる。そして、データ(クエリー)は一つずつ、先頭のQuery(1)から順番にデキューされる。
【0050】
尚、本実施形態に係るメモリデバイス1において、同時に複数のコマンドは実行できない。つまり、コマンドキュー74a、タスクキュー74b、及びクエリーキュー74cからそれぞれ同時にデキューされることはない。各キュー内において、デキューされる順番は決まっているが、コマンドキュー74a、タスクキュー74b、及びクエリーキュー74cの内、どのキューから優先的にデキューされるかは、例えばタスクマネージャ72が適宜決定することができる。本実施形態では、例えばタスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bやクエリーキュー74cが優先的に実行されるように設定されている。
【0051】
<コマンド中断方法>
ところで、ホストデバイス2から、メモリデバイス1に、キュー領域74内に格納されている全コマンドを中断するコマンドが発行されることがある。
【0052】
各コマンドは、その処理が終了すると、対応するLU67のデバイスサーバ(より具体的には例えば管理部81)によって、各コマンドに係る処理の終了の旨のレスポンスをホストデバイス2に送信する。こうして、ホストデバイス2は、各コマンドの処理が終了したと認識する。
【0053】
しかし、例えば中断コマンドによって、各コマンドが中断された場合、中断された各コマンドは、中断された旨のレスポンスをホストデバイス2に送信しない。ホストデバイス2は、中断コマンドが中断処理を終了した旨のレスポンスを受けて、中断コマンドが終了したことを認識する。
【0054】
ここで、図10を用いて、第1の実施形態に係るコマンド中断方法100について説明する。図10は、第1の実施形態に係るコマンド中断方法を概略的に示したフローチャートである。ここでは一例として、コマンドキュー74a(Command(1)〜Command(x))に格納されたLUコマンドを中断する場合について説明する。
【0055】
[ステップS101]
ホストデバイス2から、メモリデバイス1に、少なくともコマンドキュー74aに格納されたコマンドを中断する中断コマンド(例えばタスク)が入力される。この中断コマンド(タスク)はLU67のデバイスサーバ(より具体的には例えばコマンド解析部82)に入力される。また、コマンド解析部82は、タスクキュー74bに中断コマンドをエンキューする。タスクキュー74bはコマンドキュー74aよりも優先されるので、コマンドキュー74a内のコマンドがデキューされる前に、中断コマンドがデキューされる。
【0056】
[ステップS102]
中断コマンドのデキューを受けて、管理部81は、コマンドキュー74a内のコマンドが全て中断できるかを確認し、更に実行中のコマンドの有無及び実行中のコマンドが中断できるかを確認する。
【0057】
[ステップS103]
管理部81によって、コマンドキュー74a内のコマンド及び実行中のコマンドが全て中断できる場合、管理部81は中断コマンドを実行して、全てのコマンドを中断する。
【0058】
[ステップS104]
中断処理が終了すると、対応するLU67の管理部81は、中断の終了の旨のレスポンスをホストデバイス2に送信する。尚、中断の終了の旨のレスポンスとして、例えば、「全てのコマンドの中断処理が成功した」というレスポンスと、「全てのコマンドの中断は成功してないが、コマンドの中断処理は終了した」というレスポンスの2種類が存在する。このため、例えば全てのコマンドの中断が成功した場合は、管理部81はホストデバイス2に、その旨がわかるようなレスポンスを送信しても良い。
【0059】
[ステップS105]
ステップS102において、管理部81は、中断できないコマンド(実行中のコマンドも含む)があると判定した場合、管理部81は中断コマンドを実行し、中断可能なコマンドのみを中断する。
【0060】
[ステップS106]
管理部81は、中断処理の終了の後、中断できなかった全てのコマンドのレスポンスをホストデバイス2に送信する。その後、ステップS104を実行する。
【0061】
<第1の実施形態に係るコマンド中断方法の具体例>
次に、図11を用いて、第1の実施形態に係るLUコマンド中断時のホストデバイス2とメモリデバイス1との通信の様子について説明する。図11は、ホストデバイス2からメモリデバイス1に入力されたLUコマンドを、ホストデバイス2からメモリデバイス1に入力されたタスクで中断する場合における、ホストデバイス2とメモリデバイス1との通信の様子と、該通信時における、コマンドキュー74a及びタスクキュー74bの様子を示した図である。尚、図11では簡単のため、コマンドキュー74a及びタスクキュー74bの先頭から三つまでのキューを図示している。また、簡単のため、初めはコマンドキュー74a及びタスクキュー74bには何もエンキューされてないものとする。また、各通信はいずれも、この1つのLU67とホスト2との間の通信(パケット)に相当する。
【0062】
図11に示すように、まずホストデバイス2からメモリデバイス1のコマンド解析部82に一つ目のコマンド(WRITE(1) command:書き込みコマンド)が供給される。コマンド解析部82は、該コマンドがLUコマンド(WRITE(1) command)であることを判別し、コマンドキュー74aに該LUコマンドをエンキューする。この際、コマンドキュー74aには何もエンキューされていないので、該LUコマンドは、コマンドキュー74aの先頭にエンキューされる。そして、先頭にエンキューされたWRITE(1) commandがデキューされ、メモリ領域73への書き込み動作が実行される。コマンドキュー74aは再び空となる。
【0063】
尚、書き込み動作の一例として、例えば管理部81は、書き込み動作を実行する前に、ホストデバイス2に書き込みの準備ができた旨を伝えるレスポンスを返す。ホストデバイス2はこのレスポンスを受けて、メモリデバイス1に書き込み用のデータを転送する。そして、このデータの転送を受けて、デバイスサーバ71は、メモリ領域73への書き込みを実行する。
【0064】
続いて、ホストデバイス2からメモリデバイス1のコマンド解析部82に二つ目のコマンド(WRITE(2) command:書き込みコマンド)が供給される。コマンド解析部82は、該コマンドがLUコマンド(WRITE(2) command)であることを判別し、コマンドキュー74aに該LUコマンド(WRITE(2) command)をエンキューする。この際、コマンドキュー74aには何もエンキューされていないので、該LUコマンドは、コマンドキュー74aの先頭にエンキューされる。
【0065】
続いて、ホストデバイス2からメモリデバイス1のコマンド解析部82に三つ目のコマンド(READ command:読み出しコマンド)が供給される。コマンド解析部82は、該コマンドがLUコマンド(READ command)であることを判別し、コマンドキュー74aに該LUコマンド(READ command)をエンキューする。この際、該LUコマンド(READ command)は、WRITE(2) commandの次にエンキューされる。
【0066】
次に、ホストデバイス2からメモリデバイス1のコマンド解析部82に四つ目のコマンド(ABORT task:中断タスク)が供給される。コマンド解析部82は、該コマンドがタスク(ABORT task)であることを判別し、タスクキュー74bに該タスク(ABORT task)をエンキューする。この際、該タスク(ABORT task)は、タスクキュー74bの先頭にエンキューされる。このABORT taskは、キュー領域74に格納されているコマンドを全て中断するコマンドである。
【0067】
ここで、タスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bが優先されるように設定されている。そのため、管理部81は、ABORT taskをWRITE(2) commandよりも優先して実行する。ABORT taskの実行によって、コマンドキュー74aに格納されているWRITE(2) command、及びREAD commandが中断される。しかし、WRITE(1) commandは既に実行されているので、ABORT taskによって中断されない。尚、管理部81によって、実行中のコマンドであっても、中断可能だと判定されれば、該コマンドを中断してもかまわない。
【0068】
管理部81は、中断可能なコマンドの中断が完了すると、その旨をホストデバイス2に伝えるレスポンス(ABORT taskに関するレスポンス)を返す。ところで、コマンド中断の実行時に、既に実行中のコマンドや、例えば管理部81によって中断すべきではないと判断されるコマンドが残っていることがある。そのような場合、管理部81は、中断できなかったコマンドに関するレスポンスをホストデバイス2に送信してから、ABORT taskに関するレスポンスをホストデバイス2に送信する。このため、図11に示すように、WRITE(1) commandが実行中の間は、管理部81は、ABORT taskのレスポンスをホストデバイス2に送信しない。
【0069】
そして、WRITE(1) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(1) command))をホストデバイスへと送信する。
【0070】
中断可能なコマンドが中断され、且つ中断されなかったコマンドのレスポンスがホストデバイス2へと発行されると、管理部81は、コマンドの中断が全て完了した旨を伝えるレスポンス(RESPONSE (ABORT task))をホストデバイス2に送信する。
【0071】
<第1の実施形態に係るメモリデバイスの作用効果>
上述した第1の実施形態によれば、メモリデバイス1は、不揮発性のメモリ(メモリ領域)73と、コマンドが格納されるコマンド格納部(キュー領域)74と、コマンドをホストデバイス2から受信し、コマンドをコマンド格納部74に格納すると共にコマンドを実行し、コマンドの実行が終了した後、コマンドの実行の終了を知らせる第1の信号(レスポンス)をホストデバイス2に送信する制御部(デバイスサーバ)71とを備えている。また、制御部71は、第1のコマンドに応答してメモリ73についての書き込み、読み出し、または消去を実行し、第2のコマンドに応答して、コマンド格納部74内の第1のコマンドまたは実行中の第1のコマンドを中断する。また、制御部71は、第2のコマンドを実行した際、中断対象となる第1のコマンド(コマンド格納部74に格納されたコマンド、及び実行中のコマンド)のうち、中断可能な第1コマンドを中断すると共に、中断対象となる第1のコマンドのうちで中断されなかった全ての第1のコマンドに関する第1の通知を送信した後、第2のコマンドに関する第1の通知を、ホストデバイス2に送信する。
【0072】
このように、メモリデバイス1が、レスポンスをホストデバイス2に送信するタイミングを制御することで、ホストデバイス2は、メモリデバイス1の状態を正確に認識することができる。以下に比較例を用いて、本実施形態のより詳細な効果について説明する。
【0073】
まず、図13を用いて、比較例について概略的に説明する。比較例は、コマンド中断時において、中断されないコマンドがレスポンスをホストデバイス2に返す前に、コマンド中断のレスポンスをホストデバイス2に返す場合に関する。
【0074】
図13に示すように、タスクキュー74bにタスク(ABORT task)がエンキューされるまでは、上述の第1の実施形態(図11)で説明した動作と同様の動作が行われる。
【0075】
タスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bが優先されるように設定されている。そのため、ABORT taskがWRITE(2) commandよりも優先して実行される。しかし、ここで管理部81によって、WRITE(2) commandは中断すべきではないと判断される場合、ABORT taskの実行によって、コマンドキュー74aに格納されているREAD commandが中断される。しかし、管理部81は、WRITE(1) command、及びWRITE(2) commandに関するレスポンスがホストデバイス2に送信される前に、コマンドの中断が完了した旨を伝えるレスポンスをホストデバイス2に送信する。
【0076】
その後、WRITE(1) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(1) command))をホストデバイス2へと送信する。
【0077】
続いて、先頭に格納されているWRITE(2) commandがデキューされ、メモリ領域73への書き込み動作が実行される。そして、WRITE(2) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(2) command))をホストデバイス2へと送信する。
【0078】
このように、各コマンドが中断された場合、管理部81は、中断されたコマンドに関するレスポンスをホストデバイス2に送信しない。このため、ホストデバイス2はどのコマンドが中断され、どのコマンドが中断されなかったかを明確に認識できない。その結果、ホストデバイス2は、全てのコマンドからのレスポンスが送信されるまで待機している。
【0079】
比較例によると、中断されなかったコマンドがあるにも関わらず、コマンドの中断の終了の旨のレスポンスをホストデバイス2に送信している。このため、ホストデバイス2はどのコマンドが中断され、どのコマンドが中断されなかったかを明確に認識できない。その結果、中断されていないコマンドのレスポンスを待つために所定の時間待機しなければならないという問題が起きてしまう。
【0080】
そこで、本実施形態では上述したように、管理部81が、中断されなかったコマンドのレスポンスを全てホストデバイス2に送信した後に、コマンドの中断の終了の旨のレスポンスをホストデバイス2に送信するように、レスポンスの順序を明確に規定する。これにより、ホストデバイス2は、コマンドの中断の終了の旨のレスポンスを認識した時点で、メモリデバイス1内のコマンドが全て中断及び終了されたことを認識することができる。このようなメモリデバイス1を用いることで、ホストデバイス2は、コマンドの中断の終了の旨のレスポンスを認識した時点で、待機時間無しに所望の処理に移行することが可能となる。例えばメモリデバイス1とホストデバイス2との間の通信がより円滑に行われることが可能となる。
【0081】
尚、上述のステップS104でも説明したように、中断の終了の旨のレスポンスは2種類存在する。そこで、中断対象となるコマンドが一つである場合、ホストデバイス2は2種類の中断の終了の旨のレスポンスを受信するだけで、該コマンドが中断されたか否かがわかる。そのため、「全てのコマンドの中断は成功してないが、コマンドの中断処理は終了した」というレスポンスを受信した場合は、該コマンドが中断されてないことをホストデバイス2が認識することができ、ホストデバイス2は該コマンドからのレスポンスを待てば良い。しかし、上述したように、中断対象となるコマンドが複数存在する場合、ホストデバイスは「全てのコマンドの中断は成功してないが、コマンドの中断処理は終了した」というレスポンスを受信しただけでは、中断対象となるコマンドのうち、どのコマンドが中断され、どのコマンドが中断されていないかが不明確となる。このように中断対象となるコマンドが複数存在する場合、上述した第1の実施形態は特に有効である。
【0082】
(第2の実施形態)
次に、図12を用いて、第2の実施形態について説明する。第2の実施形態に係るメモリデバイスは、第1実施形態と同じハードウェア構成および機能ブロックを有する。第2の実施形態の説明で触れられていない点については、第1実施形態の記述が第2の実施形態に全て適用されることに留意されたい。第2の実施形態は、コマンド中断時において、実行中のコマンド及び、キュー内に中断されないコマンドが残っている場合に関する。
【0083】
<第2の実施形態に係るコマンド中断方法の具体例>
図12は、第2の実施形態に係るLUコマンド中断時のホストデバイス2とメモリデバイス1との通信の様子について示した図である。尚、図12では簡単のため、コマンドキュー74a及びタスクキュー74bの先頭から三つまでのキューを図示している。また、簡単のため、初めはコマンドキュー74a及びタスクキュー74bには何もエンキューされてないものとする。
【0084】
図12に示すように、ホストデバイス2からメモリデバイス1のコマンド解析部82に四つ目のコマンド(ABORT task:中断タスク)が供給され、タスクキュー74bに該タスク(ABORT task)がエンキューされるまでは、上述の第1の実施形態(図11)で説明した動作と同様の動作が行われる。
【0085】
第1の実施形態と同様に、タスクマネージャ72によって、コマンドキュー74aよりも、タスクキュー74bが優先されるように設定されている。そのため、ABORT taskがWRITE(2) commandよりも優先して実行される。しかし、ここで管理部81は、WRITE(2) commandは中断すべきではないと判断した場合、ABORT taskの実行によって、コマンドキュー74aに格納されているcommandのうちREAD commandのみ中断し、WRITE(2) commandは中断しない。しかし、管理部81は、中断されないコマンド(WRITE(1) command、及びWRITE(2) command)に関するレスポンスがホストデバイス2に送信されるまで、コマンドの中断が完了した旨を伝えるレスポンスをホストデバイス2に送信しない。
【0086】
そして、WRITE(1) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(1) command))をホストデバイス2へと送信する。
【0087】
続いて、先頭に格納されているWRITE(2) commandがデキューされ、メモリ領域73への書き込み動作が実行される。コマンドキュー74aは再び空となる。この書き込み動作に関しては、第1の実施形態で説明した方法と同様の方法で行われる。
【0088】
そして、WRITE(2) commandが終了すると、管理部81は、その旨を伝えるレスポンス(RESPONSE (WRITE(2) command))をホストデバイス2へと送信する。
【0089】
中断可能なコマンドが中断され、且つ中断されなかったコマンドのレスポンスがホストデバイス2へと発行されると、管理部81は、コマンドの中断が全て完了した旨を伝えるレスポンス(RESPONSE (ABORT task))をホストデバイス2に送信する。
【0090】
<第2の実施形態に係るメモリデバイスの作用効果>
上述した第2の実施形態によれば、制御部71は、中断対象となる第1のコマンドのうち、中断すべきである第1のコマンドと、中断すべきでない第1のコマンドとを判断している。
【0091】
管理部81が、中断対象となるコマンドキュー74a内のLUコマンドのうち、中断すべきではないと判断するLUコマンドがある場合においても、管理部81が、中断すべきではないと判断したコマンドのレスポンスをホストデバイス2に送信してから、コマンドの中断の終了の旨のレスポンスをホストデバイス2に送信することで、上述した第1の実施形態と同様の効果を得ることが可能である。
【0092】
<変形例等>
尚、上述ではタスク(ABORT task)を用いてキュー領域74内のコマンドを中断している。しかし、これに限らず、所定のコマンドによってキュー領域74内を初期化する場合においても、中断できなかったコマンドのレスポンスがホストデバイス2に送信された後に、管理部81が該コマンドが完了した旨を伝えるレスポンスをホストデバイス2に送信することで、上述した第1の実施形態及び第2の実施形態と同様の効果を得ることが可能である。またこの場合、タスクマネージャ72によって、コマンドキュー74aよりも、該コマンドの実行が優先されるように設定されている。このように、メモリデバイス1内のコマンドを中断するコマンドであれば、上述したコマンド(ABORT task)に限定されず、どのようなものでも上述した第1の実施形態及び第2の実施形態を適用可能である。
【0093】
また、上述した第1の実施形態及び第2の実施形態では、UFSメモリデバイスを用いて説明したが、これに限らず、例えば、クライアントサーバモデルに基づくメモリシステムであれば、どのようなものでも良い。
【0094】
また、上述した第1の実施形態及び第2の実施形態では、UFSメモリデバイスを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した第1の実施形態及び第2の実施形態と同様の作用効果を奏することができる。また、メモリ11はNAND型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
【0095】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【0096】
1…メモリデバイス、2…ホストデバイス、11…メモリ、12…コントローラ、
21…I/O、22…コアロジック部、23…I/O、
31…ホストインターフェース、32…バッファ、33…データバス、
34…メモリインターフェース、35…バッファ、36…ECC回路、
41…制御バス、42…CPU、43…ROM、45…ワークRAM、
46…レジスタ、51…アナログ回路、61…ターゲットポート、
62…タスクルータ、63…デバイスマネージャ、64…デスクリプタ、
65…アトリビュート、66…フラグ、67…LU、71…デバイスサーバ、
72…タスクマネージャ、73…メモリ領域、74…キュー領域、
74a…コマンドキュー、74b…タスクキュー、74c…クエリーキュー、
81…管理部、82…コマンド解析部、83…転送要求生成部、84…メモリ制御部。
【特許請求の範囲】
【請求項1】
不揮発性のメモリと、
コマンドが格納されるコマンド格納部と、
前記コマンドをホストデバイスから受信し、前記コマンドを前記コマンド格納部に格納すると共に前記コマンドを実行し、前記コマンドの実行が終了した後、前記コマンドの実行の終了を知らせる第1の信号を前記ホストデバイスに送信する制御部と
を備え、
前記制御部は、
第1のコマンドに応答して前記メモリについての書き込み、読み出し、または消去を実行し、
第2のコマンドに応答して、前記コマンド格納部内の前記第1のコマンドまたは実行中の第1のコマンドを中断し、
前記第2のコマンドを実行した際、中断対象となる前記第1のコマンドのうち、中断可能な前記第1コマンドを中断すると共に、
中断対象となる前記第1のコマンドのうちで中断されなかった全ての前記第1のコマンドに関する前記第1の通知を送信した後、前記第2のコマンドに関する前記第1の通知を送信する
ことを特徴とするメモリデバイス。
【請求項2】
前記制御部は、中断対象となる前記第1のコマンドのうち、中断すべきである前記第1のコマンドと、中断すべきでない前記第1のコマンドとを判断することを特徴とする請求項1に記載のメモリデバイス。
【請求項3】
中断対象となる前記第1のコマンドは複数存在することを特徴とする請求項1または2に記載のメモリデバイス。
【請求項4】
前記コマンド格納部は、第1のコマンド格納部と、第2のコマンド格納部とを備え、
前記制御部は、前記第1のコマンドを前記第1のコマンド格納部に格納し、前記第2のコマンドを、前記第2のコマンド格納部に格納し、
前記第1のコマンド格納部、及び前記第2のコマンド格納部に格納された前記第1のコマンド及び前記第2のコマンドが実行される順番を決定する順番制御部を更に備え、
前記順番制御部は、前記第2のコマンドの順番を、前記第1のコマンドの順番よりも前にすることを特徴とする請求項1乃至3のいずれか一項に記載のメモリデバイス。
【請求項5】
前記コマンド格納部は、行列空間であり、前記コマンドは前記行列空間の前から順番に格納され、前記行列空間に格納された前記コマンドは前から順番に実行されることを特徴とする請求項1乃至4のいずれか一項に記載のメモリデバイス。
【請求項1】
不揮発性のメモリと、
コマンドが格納されるコマンド格納部と、
前記コマンドをホストデバイスから受信し、前記コマンドを前記コマンド格納部に格納すると共に前記コマンドを実行し、前記コマンドの実行が終了した後、前記コマンドの実行の終了を知らせる第1の信号を前記ホストデバイスに送信する制御部と
を備え、
前記制御部は、
第1のコマンドに応答して前記メモリについての書き込み、読み出し、または消去を実行し、
第2のコマンドに応答して、前記コマンド格納部内の前記第1のコマンドまたは実行中の第1のコマンドを中断し、
前記第2のコマンドを実行した際、中断対象となる前記第1のコマンドのうち、中断可能な前記第1コマンドを中断すると共に、
中断対象となる前記第1のコマンドのうちで中断されなかった全ての前記第1のコマンドに関する前記第1の通知を送信した後、前記第2のコマンドに関する前記第1の通知を送信する
ことを特徴とするメモリデバイス。
【請求項2】
前記制御部は、中断対象となる前記第1のコマンドのうち、中断すべきである前記第1のコマンドと、中断すべきでない前記第1のコマンドとを判断することを特徴とする請求項1に記載のメモリデバイス。
【請求項3】
中断対象となる前記第1のコマンドは複数存在することを特徴とする請求項1または2に記載のメモリデバイス。
【請求項4】
前記コマンド格納部は、第1のコマンド格納部と、第2のコマンド格納部とを備え、
前記制御部は、前記第1のコマンドを前記第1のコマンド格納部に格納し、前記第2のコマンドを、前記第2のコマンド格納部に格納し、
前記第1のコマンド格納部、及び前記第2のコマンド格納部に格納された前記第1のコマンド及び前記第2のコマンドが実行される順番を決定する順番制御部を更に備え、
前記順番制御部は、前記第2のコマンドの順番を、前記第1のコマンドの順番よりも前にすることを特徴とする請求項1乃至3のいずれか一項に記載のメモリデバイス。
【請求項5】
前記コマンド格納部は、行列空間であり、前記コマンドは前記行列空間の前から順番に格納され、前記行列空間に格納された前記コマンドは前から順番に実行されることを特徴とする請求項1乃至4のいずれか一項に記載のメモリデバイス。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−61790(P2013−61790A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−199695(P2011−199695)
【出願日】平成23年9月13日(2011.9.13)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願日】平成23年9月13日(2011.9.13)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]