(57)【特許請求の範囲】
【請求項１】
複数のセルを単位としてデータ書き込みまたはデータ読み出しがされる不揮発性のメモリと、
前記メモリを制御し、前記メモリのメモリ空間を、少なくとも第１パーティション及び第２パーティションに区切って管理するコントローラとを具備し、
前記コントローラは、
前記第１パーティション及び前記第２パーティションに対して互いに独立してデータ書き込み要求を受信させ、
データ書き込み要求を受信した場合、前記データ書き込み要求に係る書き込みデータのデータサイズの分割が必要であるか否かを判定し、
前記データサイズの分割が必要であると判定する場合は、前記書き込みデータのデータサイズを分割し、
前記第１パーティションのデータ書き込みを行う期間に、前記第２パーティションの書き込みデータのデータ要求を行って前記書き込みデータの受信を行う
メモリ・デバイス。
【請求項２】
前記コントローラは、
データ読み出し要求を受信した場合、読み出しデータのデータサイズを分割して、前記メモリからデータ読み出しを行う
請求項１に記載のメモリ・デバイス。
【請求項３】
前記コントローラは、前記データサイズの分割が必要でないと判断する場合、書き込みデータまたは読み出しデータのデータサイズを最大化した前記複数のセルを単位としてデータ書き込みまたはデータ読み出しを行う
請求項１または２に記載のメモリ・デバイス。
【請求項４】
前記データサイズを分割する単位は、前記データ書き込みまたはデータ読み出しが行われる複数のセルの単位である
請求項１乃至３のいずれか１項に記載のメモリ・デバイス。
【請求項５】
前記コントローラが前記データサイズの分割が必要であるか否かを判定する基準は、以下の２つの条件を満たす場合である：
１．少なくとも前記第１及び第２パーティションにデータ書き込みまたはデータ読み出しが要求されている場合
２．前記データ書き込み要求または前記データ読み出し要求の各々のデータサイズが、前記複数のセルの単位以上ある場合
請求項１乃至４のいずれか１項に記載のメモリ・デバイス。
【請求項６】
前記コントローラが前記データサイズ分割が必要であるか否かを判定する基準は、以下の３つの条件を満たす場合である：
１．少なくとも前記第１または第２パーティションにデータ書き込みまたはデータ読み出しが要求されている場合
２．少なくとも１つ以上のクエリー要求がある場合
３．前記データ書き込み要求または前記データ読み出し要求の各々のデータサイズが、前記複数のセルの単位以上ある場合
請求項１乃至４のいずれか１項に記載のメモリ・デバイス。
【請求項７】
前記データ書き込み要求またはデータ読み出し要求は、ＳＣＳＩ（small computer system interface）コマンドであることを特徴とする請求項１乃至６の何れか１項に記載のメモリ・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリ・デバイスに関するものである。
【背景技術】
【０００２】
データを保持するメディアとして種々のものが存在する。そのようなメディアとして、例えばクライアント・サーバ・モデルに基づいたメモリ・デバイスがある。クライアント・サーバ・モデルに基づいた、メモリ・デバイスおよびホスト・デバイスからなるメモリ・システムでは、別のメモリ・システムと異なる点がある。例えば、クライアント・サーバ・モデルに基づくメモリ・デバイスおよびホスト・デバイスの役割分担は、クライアント・サーバ・モデルに基づかないメモリ・デバイスおよびホスト・デバイスの役割分担と異なる。したがって、ホスト・デバイスとメモリ・デバイスとの間の通信内容も、クライアント・サーバ・モデルに基づくシステムと基づかないシステムとで異なる。
【０００３】
メモリ・システムは特定の規格に則っていることがある。例えば、クライアント・サーバ・モデルに基づくメモリ・システムとして、例えば、ＵＦＳ（Universal Flash Storage）メモリ・デバイスおよびホスト・デバイスが挙げられる。規格で定められている点については、メモリ・システムは仕様に則っていなければならない。しかしながら、規格で定められていない点も存在し、このような点については、メモリ・システムの設計者が定めることができる。このように自由度が存在する事項については、メモリ・システムの特性に適する形で好ましい性能が実現されるように、決定されるべきである。このような自由度を伴った事項に対して適切な決定を行なって、より高い性能を実現できるメモリ・デバイスを提供する要望がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００７／１１６４７６号パンフレット
【非特許文献】
【０００５】
【非特許文献１】JEDEC SOLID STATE TECHNOLOGY ASSOCIATION、JEDEC STANDARD（JESD220）、２０１１年２月
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メモリ・デバイスへのアクセスの効率化を図ることができ、ホスト・デバイスへの応答性能も向上することができる。
【課題を解決するための手段】
【０００７】
実施形態によれば、一態様に係るメモリ・デバイスは、複数のセルを単位としてデータ書き込みまたはデータ読み出しがされる不揮発性のメモリと、前記メモリを制御し、前記メモリのメモリ空間を、少なくとも第１パーティション及び第２パーティションに区切って管理するコントローラとを具備し、前記コントローラは、前記第１パーティション及び前記第２パーティションに対して互いに独立してデータ書き込み要求を受信させ、データ書き込み要求を受信した場合、前記データ書き込み要求に係る書き込みデータのデータサイズの分割が必要であるか否かを判定し、前記データサイズの分割が必要であると判定する場合は、前記書き込みデータのデータサイズを分割し、前記第１パーティションのデータ書き込みを行う期間に、前記第２パーティションの書き込みデータのデータ要求を行って前記書き込みデータの受信を行う。
【図面の簡単な説明】
【０００８】
【図１】メモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示す図。
【図２】参考例のクライアント・サーバ・モデルに基づくメモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示す図。
【図３】参考例のホスト・デバイスとメモリ・デバイスとを示す図。
【図４】第１実施形態に係るメモリ・デバイスのハードウェア上の構成を示す図。
【図５】メモリ・デバイスが封止された形態の例を示す図。
【図６】第１実施形態に係るメモリ・デバイス機能ブロックを示す図。
【図７】第１の実施形態に係るパケットの例を示す図。
【図８】論理アドレスと物理ブロックの変換テーブルの例を示す図。
【図９】第１実施形態に係るＬＵをより詳細に示す機能ブロックを示す図。
【図１０】第１実施形態に係るデータ書き込み時の通信の様子を示す図。
【図１１】書き込みコマンドを例示する図。
【図１２】転送要求のための通信内容を例示する図。
【図１３】データ転送のための通信内容を例示する図。
【図１４】第１実施形態に係るメモリ・デバイスのデータ分割判断フローを示す図。
【図１５】第１実施形態に係るメモリ・デバイスのデータ分割をより具体的に示す図。
【図１６】図１５中のビジィ期間（１）、（２）における２つのロジカル・ユニットのアクセス状況を示す図。
【図１７】第２実施形態に係るメモリ・デバイスのデータ分割判断フローを示す図。
【発明を実施するための形態】
【０００９】
［参考例］  
実施形態の説明に先立ち、参考例について簡単に説明する。参考例として、クライアント・サーバ・モデルに基づくメモリ・システムおよび基づかないメモリ・システムについて説明する。クライアント・サーバ・モデルに基づかないメモリ・デバイスとして、ＳＤＴＭカードおよびｅＭＭＣを例に取る。
【００１０】
図１は、メモリ・デバイス（ＳＤＴＭカードまたはｅＭＭＣ）とホスト・デバイスとの間のデータ書き込みの際の通信の例を示している。図１に示されているように、ホスト・デバイスは書き込みコマンドを発行することにより、書き込みを開始する。書き込みコマンドは、書き込みデータに割り当てられた論理アドレスを含んでいる。論理アドレスは、書き込みデータの開始位置に対応する。メモリ・デバイスは、書き込みコマンドを受け取ると、レスポンスを返す。ホスト・デバイスは、レスポンスを受け取ると、メモリ・デバイスに書き込まれるべきデータ（書き込みデータ）を転送する。書き込みデータは、複数の書き込みデータ部分に分割されて転送される。書き込みデータ部分の大きさは、ＳＤＴＭカードまたはｅＭＭＣの規格に基づいて予め定められている。メモリ・デバイスは、データを受け取れる間は、レディー／ビジー信号を用いてレディー状態を通知する。メモリ・デバイスは、受け取ったデータを逐次、メモリ・デバイス内のメモリに書き込む。一方、例えばメモリ・デバイスのバッファが一杯になる等の理由でメモリ・デバイスがデータを受け取れなくなると、メモリ・デバイスは、ホスト・デバイスにビジー状態を通知する。メモリ・デバイスのビジー状態の間は、ホスト・デバイスはデータの転送を中断する。ビジー状態が解除されると、ホスト・デバイスはさらなる書き込みデータ部分データを送信する。このようにして、書き込みデータの全体が送信されると、メモリ・デバイスは、書き込み停止コマンドを送信する。メモリ・デバイスは、書き込み停止コマンドを受け取るとレスポンスを返し、書き込みは終了する。
【００１１】
このように、データの書き込みの位置はホスト・デバイスにより指定され、書き込みデータ部分の大きさも規格により定められている。すなわち、参考例のメモリ・システムでは、ホスト・デバイスがデータ転送の主導権を有しており、ホスト・デバイスが、メモリ・デバイスに指示を出し、メモリ・デバイスはその指示に従う。メモリ・デバイスが有する自由度は小さい。
【００１２】
図２は、クライアント・サーバ・モデルに基づくメモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示している。図２に示されているように、ホスト・デバイスは書き込みコマンドを発行することにより、書き込みを開始する。書き込みコマンドは、書き込みの位置を指定する論理アドレスおよび、この書き込みコマンドの対象の書き込みデータのサイズの情報を含んでいる。書き込みコマンドを受け取ると、メモリ・デバイスは、書き込みデータの転送要求の内容を決定する。転送要求には、書き込みデータのうちのメモリ・デバイスがホスト・デバイスからの転送を望む部分の大きさおよびオフセット・アドレスが含まれることになっている。オフセット・アドレスは、メモリ・デバイスが転送を望む部分の位置を特定するためのものである。ホスト・デバイスは、転送要求を受け取ると、要求されたデータ部分をメモリ・デバイスに転送する。メモリ・デバイスは、受け取ったデータ部分をメモリに書き込むことと、別のデータ部分の転送要求を送信することと、を実行する。この書き込みと転送要求は、書き込みデータ全体が書き込まれるまで継続する。書き込みデータ全体の書き込みの成功または失敗に応じて、メモリ・デバイスはホスト・デバイスに相応するレスポンスを送信する。
【００１３】
このように、図２の例では、メモリ・デバイスが書き込みデータ部分を決定し、転送要求を送信する。この書き込みにおいて、規格によって定められている事項と定められていない事項がある。例えば、メモリ・デバイスによる転送要求内のオフセット・アドレスがシーケンシャルであるかランダムであるかはホスト・デバイスにおいて任意に設定され、オフセット・アドレスの選択は、この設定に従わなければならない。一方、例えば、転送要求によって指定されるデータ部分の大きさは、仕様において定められていない場合がある。
【００１４】
＜ホスト・デバイスとメモリ・デバイスとの関係について＞  
次に、図３を用い、ホスト・デバイスとメモリ・デバイスとの関係について簡単に説明する。
【００１５】
例えば、上記ＵＦＳで標準化されるデータ書き込み（WRITE処理）では、ホスト・デバイスから、論理ブロックアドレスと長さが指定される。これを受けたメモリ・デバイスは、自身のＮＡＮＤ型フラッシュメモリへのデータ書き込みについて、１度に書くか複数回に分けて書くかについての制約は受けず、メモリ・デバイス側の都合でハンドリングできる。
【００１６】
図示するように、また、上記ＵＦＳでは、ホストデバイス中のApplication Clientは、メモリ・デバイス中の複数のLogical Unitのそれぞれに対して、コマンドを発行できる。Logical Unit毎に発行されたコマンドは、各々独立して動作することが求められる。すなわち、Application Client側からは、複数のLogical Unitが独立、平行して稼働しているように見える必要がある。
【００１７】
しかしながら、一般的にＮＡＮＤ型フラッシュメモリへのアクセスは、ＣＰＵの処理時間に比べて長い時間を必要とする。このため、1つのLogical Unitに長大なデータのアクセスが要求されると、他のLogical Unitの動作が阻害され、平行動作ができなくなり、ホスト・デバイス側への応答性能も劣化する。
【００１８】
一方で、メモリ・デバイスが有するＮＡＮＤ型フラッシュメモリへのデータ書き込みには最低限の書き込みサイズの制約がある。そのため、一度の書き込みサイズが大きい方が、ＮＡＮＤ型フラッシュメモリへのデータ書き込みの際のパフォーマンスが向上するという性質がある。
【００１９】
以下に、このような知見に基づいて構成された実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００２０】
［第１実施形態］  
図４は、第１実施形態に係るメモリ・デバイスを概略的に示している。図４は、メモリ・デバイスのハードウェア上の構成を示している。図４に示されているように、メモリ・デバイス１は、ホスト・デバイス（以下、単にホストと称する場合がある）２と通信できるように構成されている。メモリ・デバイス１とホスト２は、少なくとも、ホスト２からの書き込み要求に対して、メモリ・デバイス１が書き込みデータの部分のサイズおよび位置を指定できる方式でホスト２と通信する。より具体的には、メモリ・デバイス１とホスト２、クライアント・サーバ・モデルに基づいて通信する。メモリ・デバイス１は、ターゲットとして動作し、ホスト２はイニシエータとして動作する。さらに具体的な例として、メモリ・デバイス１はＵＦＳメモリ・デバイスであり、ホスト２はＵＦＳメモリ・デバイスをサポートするホストである。
【００２１】
メモリ・デバイス１は、少なくとも、不揮発性の半導体メモリ１１と、メモリ１１を制御するためのメモリ・コントローラ１２とを含んでいる。メモリ１１は、複数ビットからなる特定の書き込み単位でデータの書き込みおよび読み出しを行う。さらに、メモリ１１は、複数の書き込み単位からなる消去単位でデータを消去する。
【００２２】
例えば、メモリ１１は１つまたは複数のＮＡＮＤ型フラッシュメモリからなる。メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリ１１は、ページ単位でデータの書き込みおよび読み出しを行う。ページは、複数の接続されたメモリセルの集合のメモリ空間からなり、固有の物理アドレスを割り当てられている。
【００２３】
メモリ１１は、複数のメモリセルからなるメモリセルアレイと、メモリセルとの間でデータの入出力を行うページバッファとを備えている。ページバッファは、１ページ分のデータを保持する。メモリ１１へのデータの書き込みを行う場合、メモリ・コントローラ１２は、書き込みコマンドとともに、書き込み先を示すページアドレスと１ページ分の書き込みデータとをメモリ１１に送信する。メモリ１１は、メモリ・コントローラ１２から受信した書き込みデータをページバッファに格納し、ページバッファ内の書き込みデータをページアドレスで指定されたメモリセルへと書き込む。このメモリセルへの書き込み動作を開始すると、メモリ１１はメモリ・コントローラ１２に対して動作中であることを示すビジー信号を出力する。引き続きデータを書き込む場合、ビジー信号がレディー信号に切り替わった後、次のページアドレスに対して上記と同様の動作を行う。
【００２４】
メモリ１１からのデータの読み出しを行う場合、メモリ・コントローラ１２は、読み出しコマンドとともに、読み出し先を示すページアドレスをメモリ１１に送信する。メモリ１１は、ページアドレスで指定されたメモリセルからページバッファに１ページ分のデータを読み出す。このメモリセルからの読み出し動作を開始すると、メモリ１１はメモリ・コントローラ１２に対してビジー信号出力する。そして、ビジー信号がレディー信号に切り替わった後、ページバッファに格納された読み出しデータがメモリ・コントローラ１１に出力される。引き続きデータを読み出す場合、次のページアドレスに対して上記と同様の動作を行う。
【００２５】
また、メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリ１１は、ブロック単位でデータの消去を行う。各ブロックは、連続する物理アドレスを有する複数のページからなる。各メモリセルは、いわゆる積層ゲート構造のＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）からなる。各セルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリ１１がＮＡＮＤ型フラッシュメモリである場合、セルトランジスタが２つ以上の閾値電圧の異なる状態を取り得る、つまりメモリセルが多値（多ビット）を記憶できるように、メモリ１１が構成されていてもよい。以下の説明では、便宜上、書き込み単位をページとし、消去単位をブロックとする。しかしながら、メモリ１１は、必ずしもＮＡＮＤ型フラッシュメモリに限られない。
【００２６】
メモリ・デバイス１は、Ｉ／Ｏ２１、コア・ロジック部２２、Ｉ／Ｏ２３を含んでいる。Ｉ／Ｏ２１は、メモリ・デバイス１がホスト２と接続するためのハードウェア上の構成を含んでいる。メモリ・デバイス１がＵＦＳメモリ・デバイスである場合、メモリ・デバイス１とホスト２との間の信号には、ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃ、ＶＣＣ、ＶＣＣＱ、ＶＣＣＱ２、ＶＤＤｉ、ＶＤＤｉ２、ＶＤＤｉ３が含まれる。ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃは、ホスト２とＩ／Ｏ２１との間で通信される。ＲＥＳＥＴは、ハードウェア・リセット信号である。ＲＥＦ＿ＣＬＫは、参照クロックである。ＤＯＵＴとＤＯＵＴ＿ｃは差動信号対を形成し、ホスト２からメモリ・デバイス１へ送信される信号である。ＤＩＮとＤＩＮ＿ｃは差動信号対を形成し、メモリ・デバイス１からホスト２へ送信される信号である。ＶＣＣ、ＶＣＣＱ、ＶＣＣＱ２は、メモリ１１およびコア・ロジック部３１に供給される電源電圧である。ＶＤＤｉ、ＶＤＤｉ２、ＶＤＤｉ３は、コア・ロジック部３１に供給され、コア・ロジック部３１内に電圧レギュレータが設けられる際の入力端子である。
【００２７】
コア・ロジック部２２は、メモリ・コントローラ１２のうちのＩ／Ｏを除く主要部分である。Ｉ／Ｏ２３は、メモリ・コントローラ１２がメモリ１１と接続するためのハードウェア上の構成を含んでいる。コア・ロジック部２２は、ホスト・インターフェース３１、バッファ３２、データ・バス３３、メモリ・インターフェース３４、バッファ３５、ＥＣＣ回路３６、制御バス４１、ＣＰＵ４２、ＲＯＭ４３、ワークＲＡＭ４５、レジスタ４６を含んでいる。
【００２８】
Ｉ／Ｏ２１は、ホスト・インターフェース３１と接続されている。ホスト・インターフェース３１は、メモリ・デバイス１とホスト２が通信するのに必要な処理を行なう。より具体的には、ホスト・インターフェース３１は、メモリ・デバイス１とホスト２がともに準拠している通信プロトコルに則ってメモリ・デバイス１とホスト２との間の通信を担う。メモリ・デバイス１がＵＦＳメモリ・デバイスである場合、例えば、ホスト・インターフェース３１は、ＵＦＳインターフェースである。ＵＦＳインターフェースは、物理層についてはＭ−ＰＨＹ規格に則っており、リンク層についてはＵｎｉＰｒｏ規格に則っている。
【００２９】
ホスト・インターフェース３１は、バッファ３２と接続されている。バッファ３２は、ホスト２からメモリ・デバイス１に送信されたデータをホスト・インターフェース３１を介して受け取り、これを一時的に保持する。また、バッファ３２は、メモリ・デバイス１からホスト・インターフェース３１を介してホスト２へ送信されるデータを一時的に保持する。バッファ３２はデータ・バス３３と接続されている。
【００３０】
Ｉ／Ｏ３１は、メモリ・インターフェース３４と接続されている。メモリ・インターフェース３４は、メモリ・コントローラ１２がメモリ１１と通信するのに必要な処理を行なう。より具体的には、メモリ・インターフェース３４は、コア・ロジック部２２からの指示をメモリ１１が認識可能な形態で送信する。メモリ１１がＮＡＮＤ型フラッシュメモリである場合、メモリ・インターフェース３４は、ＮＡＮＤフラッシュ・インターフェースである。
【００３１】
メモリ・インターフェース３４は、バッファ３５と接続されている。バッファ３５は、メモリ１１からコントローラ１２に送信されたデータをメモリ・インターフェース３４を介して受け取り、これを一時的に保持する。また、バッファ３５は、コントローラ１２からメモリ１１にメモリ・インターフェース３４を介して送信される予定のデータを一時的に保持する。バッファ３５はデータ・バス３３と接続されている。メモリ・インターフェース３４およびバッファ３５は、ＥＣＣ（error correcting code）回路３６と接続されている。ＥＣＣ回路３６はまた、データ・バッファ２４と接続されている。ＥＣＣ回路３６は、ホスト１からの書き込みデータをデータ・バス３３を介して受け取り、書き込みデータにエラー訂正符号を付加し、エラー訂正符号を付された書き込みデータをバッファ３５に供給する。また、ＥＣＣ回路３６は、メモリ１１から供給されたデータをバッファ３５を介して受け取り、このデータに対してエラー訂正符号を用いてエラー訂正を行い、エラー訂正されたデータをデータ・バス３３に供給する。
【００３２】
データ・バス３３は、制御バス４１と接続されている。制御バス４１には、ＣＰＵ（central processing unit）４２、ＲＯＭ（read only memory）４３、ＲＡＭ（random acccess memory）４５、レジスタ４６が接続されている。ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４５、レジスタ４６は、制御バス４１を介して相互に通信する。ＣＰＵ４２は、メモリ・デバイス１の全体の動作を司る。そして、ＣＰＵ４２は、ＲＯＭ４３に格納されている制御プログラム（命令）に従って所定の処理を実行する。ＣＰＵ４２は、制御プログラムに従ってホスト２から受けたコマンドに従ってメモリ１１に対する所定の処理を実行したりする。
【００３３】
ＲＯＭ４３は、ＣＰＵ４２により制御されるなどを格納する。ＲＡＭ４５は、ＣＰＵ４２の作業エリアとして使用され、ＣＰＵ４２の作業に必要な変数等を一時的に記憶する。レジスタ４６は、メモリ・デバイス１の動作に必要な種々の値を保持する。また、レジスタ４６は、ホスト２が、メモリ・デバイス２を制御するのに必要な種々の値を保持する。
【００３４】
制御バス４１には、ホスト・インターフェース３１、バッファ３２、メモリ・インターフェース３４、バッファ３５が接続されている。ＣＰＵ４２は、制御プログラムやホスト２からの指示に基づいて、ホスト・インターフェース３１、バッファ３２、メモリ・インターフェース３４、バッファ３５を制御する。メモリ・コントローラ１２には、アナログ・ポート回路５１が設けられていてもよい。
【００３５】
メモリ・デバイス１は、例えば、プリント基板上に半田実装される埋め込み型でも良いし、ホスト２に設けられたカードスロットに対して脱着可能なリムーバブル型でも良い。図５は、封止された形態のメモリ・デバイス１の例を示している。図５に示されているように、プリント基板２０１上にチップ状の複数のメモリ１１が積層されている。各メモリ１１は、プリント基板２０１上の配線パターン（図示せず）にワイヤ２０２により接続されている。チップ状のメモリ・コントローラ１２も、プリント基板２０１上に置かれ、ワイヤ２０２により配線パターンに接続されている。プリント基板２０１の裏面には、例えば図示せぬ外部端子（例えば、ＢＧＡ（ball grid array））が設けられている。外部端子には、図３に示した信号（ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃ、ＶＣＣ、ＶＣＣＱ、ＶＣＣＱ２、ＶＤＤｉ、ＶＤＤｉ２、ＶＤＤｉ３が含まれる。ＲＥＳＥＴ、ＲＥＦ＿ＣＬＫ、ＤＯＵＴ、ＤＯＵＴ＿ｃ、ＤＩＮ、ＤＩＮ＿ｃ）が割り当てられ、この外部端子を介してメモリ・デバイス１外部のホスト２との間で信号を通信する。プリント基板２０１、メモリ１１、メモリ・コントローラ１２、ワイヤ２０２は、例えば樹脂製のパッケージ２０３により封止されている。
【００３６】
次に、図６に、メモリ・デバイス１の構成の別の視点を示す。より具体的には、図６は、メモリ・デバイス１の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータ・ソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【００３７】
メモリ・デバイス１は、ターゲット・ポート６１、ルータ６２、デバイス・マネージャ６３、デスクリプタ６４、アトリビュート６５、フラグ６６、複数のＬＵ（logical unit：論理単位）（６７−１〜６７−ｎ）を含んでいる。ターゲット・ポート６１は、メモリ・デバイス１がホスト１と通信可能に接続されるためのポートであり、例えばホスト・インターフェース３１に対応する。ルータ６２は、ホスト２から受信された通信（タスク、コマンド、データ、クエリー等）を宛先のＬＵ６７にルーティングする。ホスト２は、コマンドの処理またはタスク管理機能を、１つのＬＵ６７を宛先とする要求を通じて要求する。ＬＵ６７同士は、アドレス（例えばＬＵＮ（logial unit number））により相互に識別されることが可能である。ＬＵＮは、例えば、図７に示されているように、メモリ・デバイス１とホスト２との間の通信（パケット）に含められることが可能である。図７に示されているように、パケット１０１は、ＬＵＮ１０２と、実体部１０３を含んでいる。ＬＵＮ１０２は、例えばパケット１０１のヘッダに含められることが可能である。実体部１０３は、パケットの機能に固有の内容、例えばコマンド、データ、各種のパラメータ等を含んでいる。各パケットの宛先のＬＵ６２は、ＬＵＮにより一意に特定される。ＵＦＳメモリ・デバイスでは、メモリ・デバイス１とホスト２との間のパケットはいずれもヘッダを含んでおり、ヘッダ内にＬＵＮが記述されている。
【００３８】
ルータ６２は、ホスト２から受信された通信（タスク、コマンド、データ、クエリー）を、この通信中のＬＵＮに基づいて、宛先のＬＵ６７にルーティングする。また、ルータ６２は、複数のＬＵ６７からホスト２宛ての通信を例えば時分割によって適当な順序でターゲット・ポート６１に送信する。ルータ６２は、例えばＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。すなわち、ＣＰＵ４２によって、ＲＯＭ４３中のプログラムが、レジスタ４６中の値を参照しながら実行されることを通じて実現される。
【００３９】
デバイス・レベル・マネージャ６３は、デバイス・レベルの動作およびコンフィギュレーションの管理を行なう。デバイス・レベルの管理には、例えば、メモリ・デバイス１の電力管理、スリープ等の制御等が含まれる。デバイス・レベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイス・レベル・マネージャ６３は、ホスト２からのメモリ・デバイス１のコンフィギュレーション情報の変更および出力要求であるクエリー要求のようなコマンドを処理する。デバイス・レベル・マネージャ６３は、例えばＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。すなわち、ＣＰＵ４２によって、ＲＯＭ４３中のプログラムが、レジスタ４６中の値を参照しながら実行されることを通じて実現される。
【００４０】
デスクリプタ６４、アトリビュート６５、フラグ６６は、例えばワークＲＡＭ４５中のデータとして実現される。デスクリプタ６４は、予め定義されたフォーマットのデータ構造を有し、メモリ・デバイス１についての何らかの特徴を記述するためのものである。デスクリプタ６４には、例えば、メモリ・デバイス１にアクセスするのに必要なデバイス・クラス、サブ・クラス、プロトコル等が含まれる。アトリビュート６５は、メモリ・デバイス１に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート６５には、例えば、メモリ・デバイス１とホスト２との間で転送可能なデータの最大値等が含まれる。フラグ６６は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは「０」または「１」等により表わされる。
【００４１】
各ＬＵ６７は、例えばメモリ１１、メモリ・インターフェース３４、バッファ３５、ＥＣＣ回路３６、ＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。各ＬＵ６７は、相互に独立して、ホスト２からの処理を実行する。したがって、各ＬＵはメモリ１１、インターフェース３１、バッファ３５、ＥＣＣ回路３６、ＣＰＵ４２、ＲＯＭ４３、レジスタ４６等の資源の一部を利用して実現される。各ＬＵは、上記のようにホスト２からは１つのＬＵを特定するＬＵＮによって相互に区別される。ホスト２からのコマンドは指定されたＬＵ６７によって実行される。
【００４２】
各ＬＵ６７は、デバイス・サーバ７１、タスク・マネージャ７２、メモリ領域７３を含んでいる。メモリ領域７３は、メモリ１１のメモリ領域のうちの一部から構成され、ホスト２からの書き込みデータを実際に格納する。デバイス・サーバ７１およびタスク・マネージャ７２は、例えばＣＰＵ４２、ＲＯＭ４３、レジスタ４６により実現される。すなわち、ＣＰＵ４２によって、ＲＯＭ４３中のプログラムが、レジスタ４６中の値を参照しながら実行されることを通じて実現される。デバイス・サーバ７１は、ホスト２から受信されたＬＵレベルの処理を要求するコマンドを解釈し、実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。ＬＵ６７はメモリ領域７３を含んでいるので、デバイス・サーバ７１は、少なくともメモリ領域７３（メモリ１１）を制御する機能を有している。タスク・マネージャ７２は、複数のコマンド（タスク）の実行の順序を制御し、タスク管理機能を提供する。
【００４３】
上記のように、デバイス・サーバ７１は、メモリ１１の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホスト２によって、ホスト２がメモリ・デバイス１に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ１１の書き込み領域（ページ）または消去領域（ブロック）を特定するためのアドレスである。デバイス・サーバ７１は、自身に対応するメモリ領域７３によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（または物理ブロック）が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（または物理ブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することを含んでいる。その管理のために、デバイス・サーバ７１は、例えば論理アドレス・物理アドレス変換テーブル（以下、単に変換テーブルと称する場合がある）を保持している。
【００４４】
変換の例として、例えば、図８に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレス・オフセットが割り当てられている。図８は、メモリ１１の書き込み単位の大きさが１６ｋＢであり、論理アドレスが５１２Ｂサイズのデータごとに割り当てられている例を示している。
【００４５】
次に、図９および図１０を参照して、データ書き込みの際の動作について説明する。図９は、第１実施形態に係るＬＵ６７をより詳細に示す機能ブロック図である。図９は、第１実施形態に係るデータ書き込み時の通信の様子を示している。複数のＬＵ６７のうち、少なくとも１つ、典型的には全てが以下に図９を参照して説明する構成を有している。図９に示されているように、デバイス・サーバ７１は、管理部８１と、コマンド解析部８２と、転送要求生成部８３と、メモリ制御部８４を含んでいる。
【００４６】
管理部８１は、デバイス・サーバ７１の全体を管理する。コマンド解析部８２は、ホスト２からルータ６２を介してコマンドを受信する。コマンド解析部８２は、受信されたコマンドを解析する。コマンド制御部８２は、書き込みコマンドを受信すると、転送要求生成部８３に、転送要求の決定（生成）を要求する。この転送要求生成部８３への要求は、コマンド解析部８２が直接行なってもよいし、管理部８１により行われてもよい。転送要求生成部８３は、要求を受けると、書き込みコマンドに含まれている書き込みデータのサイズおよびアドレスに基づいて転送要求を生成する。メモリ制御部８４は、管理部８１の指示に従って、メモリ１１に対するあらゆる指示の発行を担う。
【００４７】
次に、図１０を参照して、データ書き込み時のシーケンスについて説明する。本例は、１つのＬＵ６７に対するデータ書き込み要求に関する。このため、各通信はいずれも、この１つのＬＵ６７とホスト２との間の通信（パケット）に相当する。
【００４８】
図１０に示されているように、書き込みコマンドがホスト２からメモリ・デバイス１に送信される。書き込みコマンドは、図１１に示されているように、少なくとも、ＬＵＮ１０２、書き込み指示１１１、アドレス１１２、書き込みデータ・サイズ１１３を含んでいる。アドレス１１２は、書き込みデータが書き込まれる位置（論理アドレス）である。書き込みデータ・サイズ１１３は、書き込みデータの全体のサイズを示す。
【００４９】
ＵＦＳメモリ・システムでは、データ、コマンド、クエリー等はいずれもパケットによって転送される。メモリ・デバイス１およびホスト２がＵＦＳメモリ・システムである場合、書き込みコマンドは、コマンド転送パケットに相当する。パケットはヘッダを含み、パケットの実体部にコマンド記述部が含まれており、コマンド記述部にＳＣＳＩ（small computer system interface）コマンドが格納されている。ＳＣＳＩコマンド中に、書き込みコマンド１１１、アドレス１１２、書き込みデータ・サイズ１１３が含まれている。
【００５０】
書き込みコマンドは、宛先のＬＵ６７中のコマンド解析部８２により受信される。受信されたコマンドが書き込みコマンドであると、コマンド解析部８２は、直接または管理部８１を介して転送要求生成部８３に転送要求の生成を要求する。生成要求を受け取ると、転送要求生成部８３は、メモリ１１の特性を考慮して、具体的には、書き込みデータの論理アドレスおよびサイズを考慮して、転送要求を生成する。より具体的には、まず、転送要求生成部８３は、書き込みデータの論理アドレスを参照して、書き込み要求が書き込み先のページの先頭からの書き込み要求に相当するかを検査する。本例では、論理アドレスは０ｘ００００であり、これは、ブロック（すなわちページ）の先頭からの書き込み要求に相当する。転送要求生成部８３は、このことを知得すると、書き込みデータのうちの、１ページのサイズに等しい部分の転送をホスト２に要求する。メモリ１１は、ページ単位でデータ書き込みを行なうので、書き込みデータのうちの１ページと同じサイズの部分（書き込みデータ部分）ごとにデータを受信すると、効率よくデータを書き込めるからである。逆に、例えばページの１．５倍のサイズなどであると、書き込みデータ部分のさらに一部をバッファに一時格納する必要が生じる等の理由により、データ書き込み効率が低下する可能性がある。このように、書き込み要求が書き込み先ページの先頭からの書き込みに相当するのであれば、転送要求生成部８３は、書き込みデータ全体の先頭からページ・サイズの部分の転送を要求する。より具体的には、本例に従うと、論理アドレスが０ｘ００００からの１６ｋＢサイズの書き込みデータ部分の転送要求が生成される。この転送要求は、図１０に示されているように、管理部８１、ルータ６２を介してホスト２に送信される。なお、書き込み要求がページの先頭からの書き込み要求に相当しない場合については、第２実施形態において説明する。
【００５１】
転送要求は、図１２に示されているように、ＬＵＮ（ヘッダ）１０２、転送データ・アドレス１２１、転送データ・サイズ１２２を含んでいる。転送データ・アドレス１２１は、ＬＵ６２が転送を要求する、書き込みデータ部分のオフセット・アドレスを示す。転送データ・サイズ１２２は、対応する書き込みデータ部分のサイズを示す。メモリ・デバイス１およびホスト２がＵＦＳメモリ・システムである場合、転送要求は、転送要求パケットに相当する。転送要求パケットは、パケットの実体部において、ＬＵ６２がデータ転送の準備ができたことを示すとともに、転送データ・アドレス１２１、転送データ・サイズ１２２を含んでいる。
【００５２】
図１０に示されているように、ホスト２は、転送要求を受信すると、この転送要求に応じた書き込みデータ部分を送信する。データ転送は、図１３に示されているように、ＬＵＮ（ヘッダ）１０２、データ１３１を含んでいる。メモリ・デバイス１およびホスト２がＵＦＳメモリ・システムである場合、データ転送は、データ転送パケットにより行なわれる。データ転送パケットは、パケットの実体部において、転送すべきデータを含んでいる。
【００５３】
ホスト１からの書き込みデータ部分は、メモリ・デバイス２において、より具体的には、対応する転送要求を発行したＬＵ６７によって受信される。受信された書き込みデータ部分は、メモリ制御部８４の制御によってメモリ領域７３の適切な位置に書き込まれる。
【００５４】
次いで、転送要求生成部８３は、次の転送要求を生成する。この転送要求は、書き込みデータ全体のうちの最初の書き込みデータ部分に続くページ・サイズの部分の転送を要求する。この２番目の書き込みデータ部分は、論理アドレスが０ｘ００２０からの１６ｋＢのサイズの書き込みデータ部分に相当する。転送要求はホスト２に送信される。次いで、対応するデータ部分が、１番目のデータ部分を参照して説明したのと同様の手順でメモリ領域７３に書き込まれる。
【００５５】
以下、同様の処理が繰り返される。すなわち、転送要求生成部８３は、２番目の書き込みデータ部分に続く論理アドレス０ｘ００４０からの１６ｋＢサイズの３番目の書き込みデータ部分の転送の要求を生成する。これに応じて、対応するデータ部分が、メモリ領域７３に書き込まれる。さらに、転送要求生成部８３は、３番目の書き込みデータ部分に続く論理アドレス０ｘ００６０からの１６ｋＢの１６ｋＢサイズの最後の書き込みデータ部分の転送の要求を生成する。これに応じて、対応するデータ部分が、メモリ領域７３に書き込まれる。最後の書き込みデータ部分の大きさも１６ｋＢである。書き込みデータのサイズがページ・サイズの整数倍であり、かつ書き込み要求がページの先頭からの書き込み要求に相当していたからである。最後の書き込みデータ部分の転送要求の送信および書き込みが終了すると、対応するＬＵ６７のデバイス・サーバ（より具体的には管理部８１）は、書き込み成功の旨のレスポンスをホスト２に送信する。こうして、データ書き込みが完了する。
【００５６】
以上説明したように、第１実施形態に係るメモリ・デバイスは、ホスト２からのデータ書き込み要求に対して転送されるべき各書き込みデータ部分の大きさを決定する権限を有しており、かつページ・サイズの書き込みデータ部分の転送を要求する。このため、１度に転送される書き込みデータ部分は、ページ・サイズを有するとともにその先頭および終端が書き込み先のページの先頭および終端と一致する。すると、メモリ・デバイス２は、受信された書き込みデータ部分をメモリ１１に書き込むのと並行して次の書き込みデータ部分を受信できる。データの書き込み中はメモリはビジー状態となるが、メモリ１１は書き込みデータを受け取れることに基づく。このような書き込みシーケンスにより、メモリ１１は効率よく書き込みを行なえる。
【００５７】
また、データを書き込む部分にデータが既に記憶されているかにかかわらず、一度データが書き込まれたページに対してそのデータを消去せずに再度データを書き込むことが禁止されているメモリにおいては、メモリのページのサイズ以上の単位で論理アドレスと物理アドレスとの変換を行う場合、ページの部分的な書き込みが生じないようにホスト２から書き込みデータ部分が転送されないと、書き込み効率が低下する。例えば、論理アドレスと物理アドレスの変換において、０ｘ００００から０ｘ００１９までの論理アドレスがメモリ１１の第１ページの物理アドレスに対応し、０ｘ００２０から０ｘ００３９までの論理アドレスがメモリ１１の第２ページの物理アドレスに対応しているとする。ここで、論理アドレス０ｘ００１０からの１６ｋＢサイズの書き込みデータ部分がホストから転送されると、論理アドレス０ｘ００１０から０ｘ００１９までのデータが第１ページの半分に記憶され、論理アドレス０ｘ００２０から０ｘ００２９までのデータが第２ページの半分に記憶される。この後、メモリ・デバイスは、論理アドレス０ｘ００００から８ｋＢサイズの書き込みデータ部分をホストから受信すると、第１ページへの再書き込みが禁止されているため、第１ページに記憶された論理アドレス０ｘ００１０から０ｘ００１９までのデータを読み出して、ホストから受信した論理アドレス０ｘ００００から０ｘ０００９までの書き込みデータ部分とともに、新たな第３ページに記憶しなければならない。この第３ページへの書き込み後、ｘ００００から０ｘ００１９までの論理アドレスはメモリ１１の第３ページの物理アドレスに対応付けられる。このように、ページの部分的な書き込みを行うと、ページの未書き込み部分に対する書き込み要求をホストから受けたときに、メモリ・デバイスは、既書き込みデータを新たなページにコピーしなければならない。また、論理アドレスと物理アドレスとの変換をメモリのブロック単位で行う場合は、ブロック単位で、既書き込みデータを新たなブロックにコピーしなければならないため、書き込み効率の低下はより顕著となる。
【００５８】
一方、第１実施形態に係るメモリ・デバイスがホスト２に転送を要求する書き込みデータ部分は、ページ・サイズを有するとともに、その論理アドレスの先頭がページの先頭の物理アドレスに対応し、終端がページの終端の物理アドレスに対応している。このため、ページの部分的な書き込みが生じず、既書き込みデータのコピーに伴う書き込み効率の低下を回避できる。
【００５９】
＜データ分割判断フロー＞  
次に、図１４のフローに則して、第１実施形態に係るデータ分割判断動作について、説明する。第１実施形態に係るメモリ・デバイスは、図示するフローに則して、データ分割判断を行う。
【００６０】
まず、ステップＳ１１の際、メモリ・デバイス１は、ホスト・デバイス２から、書き込み（WRITE）コマンドを受信する。書き込みコマンドは、例えば、上記図１１に図示するようなものがある。
【００６１】
続いて、ステップＳ１２の際、メモリ・デバイス１は、上記受信した書き込みコマンド中の全てのコマンドキューの内容を確認する。具体的には、図１１に示したように、メモリ・デバイス１は、書き込みコマンド中の、ＬＵＮ１０２、書き込み指示１１１、アドレス１１２、書き込みデータ・サイズ１１３を確認する。
【００６２】
続いて、ステップＳ１３の際、メモリ・デバイス１は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・デバイス１は、各Logical Unit（６７）のコマンドキューにキューイングされているコマンドのうち書き込み（write）コマンドの数を調べ、その数によってデータ書き込み処理の分割を判定する。本例の場合、分割する否かの判定基準は、例えば、次の通りである：
１．キューイングされているWriteコマンドが２つ以上ある場合
２．各々のWriteコマンドによる書き込みサイズが、１ページ以上ある場合
このような上記２つの条件を満たす場合、メモリ・デバイス１は、書き込みデータを分割し、データ書き込みを行う。ここで、詳細については後述するが、本例の場合、分割して書き込むデータ・サイズは、ページ単位である。なお、図１５に示すように、１つのロジカルユニット（ＬＵ）に対するホスト・デバイス２からの書き込みコマンドは１つである。
【００６３】
続いて、ステップＳ１４の際、上記ステップＳ１３の際にデータ処理の分割が必要であると判定される場合（Yes）、メモリ・デバイス１は、分割サイズでデータ転送を実行する。
【００６４】
続いて、ステップＳ１５の際、上記ステップＳ１３の際にデータ処理の分割が必要でない判定される場合（No）、メモリ・デバイス１は、ホスト・デバイス２から要求されたデータ転送を実行する。この際、メモリ・デバイス１は、書き込みデータの単位を最大化（本例では、ページ単位）してデータ書き込みを行う。そのため、データ転送効率を向上することができる。
【００６５】
＜データ分割判断の具体例＞  
次に、より具体的に、図１５を用いて、上記第１実施形態に係るデータ分割判断動作について説明する。ここでは、ロジカル・ユニット６７−１（LUN=1）とロジカル・ユニット６７−２（LUN=2）に対して、ホスト１から２つのwriteコマンドが発行され、上記ステップＳ１３の際としてwriteコマンドを２つに分割する場合を一例に示す。
【００６６】
図示するように、まず、メモリ・デバイス１のメモリ・コントローラ１２は、ホスト・デバイス（UFS HOST）２から発行された２つのロジカル・ユニット６７−１（LUN=1）とロジカル・ユニット６７−２（LUN=2）とに対しての２つのwriteコマンド（１）、（２）を受信する。
【００６７】
続いて、メモリ・コントローラ１２は、受信したwriteコマンド（１）、（２）の全てのコマンドキューを確認する。
【００６８】
続いて、メモリ・コントローラ１２は、受信したwriteコマンド（１）、（２）のデータ処理の分割が必要であるか否かを判定する。図示する場合では、メモリ・コントローラ１２は、各Logical Unit（６７）のコマンドキューにキューイングされているコマンドのうち書き込み（write）コマンドの数が２つ以上（（１）、（２））あり、各々のWriteコマンドによる書き込みサイズが１ページ以上ある場合である。
【００６９】
そのため、メモリ・コントローラ１２は、受信したWriteコマンド（１）、（２）を分割する必要があると判定する。
【００７０】
そのため、続いて、受信したwriteコマンド（１）、（２）を２つに分割し、ホスト２に対して、まず、ロジカル・ユニット６７−１（LUN=1）の分割した前段の書き込みデータの転送要求（Ready to Transfer LUN=1）を送信する。
【００７１】
続いて、ホスト・デバイス２は、受信した転送要求に従い、メモリ・コントローラ１２に、ロジカル・ユニット６７−１（LUN=1）の前段の書き込みデータ（Data Out UPIU LUN=1）を送信する。
【００７２】
続いて、メモリ・コントローラ１２は、受信した前段の書き込みデータを、対応するロジカル・ユニット６７−１に書き込む（書き込みその１  LUN=1）。この際、メモリ・コントローラ１２により、分割した書き込みデータを一度に書き込まれるサイズは、ページ単位を基本とする。そのため、ホスト・デバイスから見れば、メモリ・デバイス１は、ここからビジィ（BUSY）期間（１）が開始される。メモリ・デバイス１は、ビジィ（BUSY）をホスト・デバイス２に送信する。
【００７３】
ここで、図中の破線で囲って示すように、メモリ・コントローラ１２は、ロジカル・ユニット６７−１（LUN=1）に上記データ書き込みのためにアクセスしているビジィ（BUSY）期間（１）に、次のデータ書き込み対象であるロジカル・ユニット６７−２（LUN=2）の前段のデータ要求を行い、書き込みデータの受信を同様にホスト・デバイス２に対して行う。
【００７４】
すなわち、メモリ・コントローラ１２は、上記ビジィ（BUSY）期間（１）に、次のデータ書き込み対象であるロジカル・ユニット６７−２（LUN=2）のデータ転送要求（Ready to Transfer LUN=2）をホスト・デバイス２に行い、ホスト・デバイス２から書き込みデータの受信（Data Out UPIU LUN=2）を同様に受信する。
【００７５】
このように、図示した例では、メモリ・デバイス１へのアクセスサイズを前段および後段の２つに分割し、始めにロジカル・ユニット６７−１（LUN=1）に対して書き込みを行い、このロジカル・ユニット６７−１（LUN=1）の前段の書き込みの最中に、次のロジカル・ユニット６７−２（LUN=2）の前段の書き込みデータのリクエストとそのデータ受信を行う。これにより、メモリ・デバイス１へのアクセスの効率化を図ることができ、ホスト・デバイス１への応答性能も向上することができる。
【００７６】
続いて、ロジカル・ユニット６７−１（LUN=1）に対しての前段のデータ書き込みが終了すると、即座に、メモリ・コントローラ１２は、ホスト・デバイス２から受信した書き込みデータ（Data Out UPIU LUN=2）を対応するロジカル・ユニット６７−２（LUN=2）に書き込む（書き込みその１  LUN=2）ことができる。メモリ・デバイス１は、ここからビジィ（BUSY）期間（２）が開始される。メモリ・デバイス１は、同様に、ビジィ（BUSY）をホスト・デバイス２に送信する。
【００７７】
ここで、上記と同様に、メモリ・コントローラ１２は、ロジカル・ユニット６７−２（LUN=2）に上記データ書き込みのためにアクセスしているビジィ（BUSY）期間（２）に、次のデータ書き込み対象であるロジカル・ユニット６７−１（LUN=1）の分割した後段のデータ要求（Ready to Transfer LUN=1）を行い、書き込みデータの受信（Data Out UPIU LUN=1）を同様にホスト・デバイス２に対して行う。
【００７８】
続いて、ロジカル・ユニット６７−２（LUN=2）の前段のデータ書き込みが終了すると、即座に、メモリ・コントローラ１２は、ホスト・デバイス２から受信した後段の書き込みデータ（Data Out UPIU LUN=1）を対応するロジカル・ユニット６７−１（LUN=1）に書き込む（書き込みその２  LUN=1）ことができる。メモリ・デバイス１は、ここからビジィ（BUSY）期間（３）が開始される。メモリ・デバイス１は、同様に、ビジィ（BUSY）をホスト・デバイス２に送信する。
【００７９】
ここで、上記と同様に、メモリ・コントローラ１２は、ロジカル・ユニット６７−１（LUN=1）に上記後段のデータ書き込みのためにアクセスしているビジィ（BUSY）期間（３）に、次のデータ書き込み対象であるロジカル・ユニット６７−２（LUN=2）の分割した後段のデータ要求（Ready to Transfer LUN=2）を行い、書き込みデータの受信（Data Out UPIU LUN=2）を同様にホスト・デバイス２に対して行う。
【００８０】
続いて、ロジカル・ユニット６７−１（LUN=1）の後段のデータ書き込みが終了すると、即座に、メモリ・コントローラ１２は、ホスト・デバイス２から受信した後段の書き込みデータ（Data Out UPIU LUN=2）を対応するロジカル・ユニット６７−２（LUN=2）に書き込む（書き込みその２  LUN=2）ことができる。メモリ・デバイス１は、ここからビジィ（BUSY）期間（４）が開始される。メモリ・デバイス１は、同様に、ビジィ（BUSY）をホスト・デバイス２に送信する。
【００８１】
続いて、メモリ・コントローラ１２は、ロジカル・ユニット６７−２（LUN=2）の後段の書き込みデータ（Data Out UPIU LUN=2）の完了によりビジィ（BUSY）期間（４）が終了し、ホスト・デバイス２にデータ書込みの終了を送信する。
【００８２】
尚、第１実施形態では、データ書き込み（Write）の場合を一例に挙げて説明した。しかしながら、データ読み出し（Read）の場合は、メモリ・デバイス１の都合が良いデータサイズで分割してホスト２へデータを送信すれば良い。そのため、データ読み出しの場合では、データ書き込みのような書き込みデータの要求は行わない。
【００８３】
＜作用効果＞  
第１の実施形態に係るメモリ・デバイスによれば、少なくとも下記（１）の効果が得られる。
【００８４】
（１）メモリ・デバイス１へのアクセスの効率化を図ることができ、ホスト・デバイス２への応答性能も向上することができる。  
上記のように、本例に係るメモリ・コントローラ１２は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・コントローラ１２は、各Logical Unit（６７）のコマンドキューにキューイングされているコマンドのうち書き込み（write）コマンドの数を調べ、その数によってデータ書き込み処理の分割を判定する。データ書き込み処理の分割の条件を満たす場合、メモリ・コントローラ１２は、受信した書き込みデータを分割し、データ書き込みを行う。
【００８５】
具体的には、図１５で示したような場合、メモリ・コントローラ１２は、受信したWriteコマンド（１）、（２）を分割する必要があると判定する。その結果、図１５中の破線で囲って示したように、メモリ・コントローラ１２は、ロジカル・ユニット６７−１（LUN=1）に前段のデータ書き込みのためにアクセスしているビジィ（BUSY）期間（１）に、次のデータ書き込み対象であるロジカル・ユニット６７−２（LUN=2）の前段のデータ要求を行い、書き込みデータの受信を同様にホスト・デバイス２に対して行う。
【００８６】
すなわち、メモリ・コントローラ１２は、上記ビジィ（BUSY）期間（１）に、次のデータ書き込み対象であるロジカル・ユニット６７−２（LUN=2）のデータ転送要求（Ready to Transfer LUN=2）をホスト・デバイス２に行い、ホスト・デバイス２から書き込みデータの受信（Data Out UPIU LUN=2）を同様に受信する。
【００８７】
このように、本例では、メモリ・デバイス１へのアクセスサイズを前段および後段の２つに分割し、始めにロジカル・ユニット６７−１（LUN=1）に対して前段の書き込みを行い、このロジカル・ユニット６７−１（LUN=1）の前段の書き込みの最中に、次のロジカル・ユニット６７−２（LUN=2）の前段の書き込みデータのリクエストとそのデータ受信を行う。
【００８８】
そのため、例えば、図１６に示すように、時刻ｔ１とｔ２との間のビジィ期間（Busy (1)）のロジカル・ユニット６７−１（LUN=1）に前段のデータ書き込みのためにアクセスしている間（書き込みデータ：ＤＴ１〜ＤＴｎ）に並行して、次のデータ書き込み対象であるロジカル・ユニット６７−２（LUN=2）の前段のデータ要求を行い、書き込みデータの受信を行うことができる。
【００８９】
よって、即座に、時刻ｔ３とｔ４との間のビジィ期間（Busy (2)）のロジカル・ユニット６７−２（LUN=2）に前段のデータ書き込むこと（書き込みデータ：ＤＴ１〜ＤＴｎ）ができる。同様に、このビジィ期間（Busy (2)）の間に並行して、次のデータ書き込み対象であるロジカル・ユニット６７−１（LUN=1）の後段のデータ要求を行い、書き込みデータの受信を行うことができる。
【００９０】
これにより、メモリ・デバイス１へのアクセスの効率化を図ることができ、ホスト・デバイス１への応答性能も向上することができる。
【００９１】
このように、本例に係るＵＦＳ規格等では、データの送受信に関して、メモリ・デバイス１側が主導権を握っている。そこで、本例では、特性を生かし、ＮＡＮＤ型フラッシュメモリへのアクセス性能が向上するページ単位でのサイズで書き込み、読み出し処理を分割する。そのため、１つの処理だけでメモリ・デバイス１が占有されることを防止することで、メモリ・デバイス１のアクセス効率を向上することができる。あわせて、ホスト・デバイス２への応答性能も向上することができる。
【００９２】
ここで、本例で説明したＵＦＳ規格では、ホスト・デバイス２は、メモリ・デバイス１上の異なるロジカルユニット（ＬＵ）に対して独立にコマンドを発行することができる。また、各パーティションは、コマンドをキューイングすることができる。各々のパーティションに発行されたコマンドは、ホスト・デバイス２から見て、独立に動作するように見える必要がある。
【００９３】
この制約をクリアするために、メモリ・デバイス１へのアクセスを伴うコマンドは、メモリ・デバイス１の内部状態に応じて、ＮＡＮＤ型フラッシュメモリへのアクセス処理を分割する。分割の単位は、本例では、ＮＡＮＤ型フラッシュメモリへの最大のアクセス単位であるページ単位や、消去ブロック単位などとすることが望ましい。これは、一度のデータ書き込み／データ読み出しのアクセスのサイズが大きい方が、ＮＡＮＤ型フラッシュメモリ１１へのデータ書き込み／データ読み出しの際のパフォーマンスが向上するという性質があるからである。
【００９４】
このため、本例では、ステップＳ１４の際、ホスト・デバイス（Application Client）２が発行しているコマンドが少なく、データ分割が必要でないときは、メモリ・デバイス１へアクセスするデータ単位を最大化（本例では、ページ単位）して、データ転送効率を上げる。
【００９５】
一方、ステップＳ１５の際、発行されているコマンドが多く、データ分割が必要なときは、ホスト・デバイス２への応答性能を上げるために、メモリ・デバイス１へのアクセス単位を分けるのである。
【００９６】
（２）ＮＡＮＤ型フラッシュメモリだけではなく、次世代の不揮発性メモリに対しても有利である。  
ここで、ＵＦＳ規格は、不揮発性メモリに対応するインターフェース規格である。ＵＦＳメモリ・デバイスとしては、例えば、本例で説明したＮＡＮＤ型フラッシュメモリ１１とコントローラ１２とで構成されることを想定されている。
【００９７】
しかしながら、本例に説明したＮＡＮＤ型フラッシュメモリ１１だけではなく、例えば、ＲｅＲＡＭ（Resistance Random Access Memory）、ＭＲＡＭ（Magnetic Random Access Memory）等の次世代の不揮発性メモリを使用することも視野に入れているものである。
【００９８】
そのため、ＮＡＮＤ型フラッシュメモリ１１だけでなく、上記のような次世代の不揮発性メモリに対しても有利である。
【００９９】
［第２実施形態（更にReadコマンドに関する一例）］  
次に、第２実施形態に係るメモリ・デバイスについて、図１７を用いて説明する。第２実施形態は、更にReadコマンドに関するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１００】
＜データ分割判断フロー＞  
図１７のフローに則して、第２実施形態に係るデータ分割判断動作について、説明する。
【０１０１】
まず、ステップＳ２１の際、メモリ・デバイス１は、ホスト・デバイス２から、書き込み（WRITE）コマンドまたは読み出し（READ）コマンドを受信する点で、上記第１の実施形態と相違する。
【０１０２】
続いて、ステップＳ２２の際、メモリ・デバイス１は、上記受信した書き込みコマンドおよび読み出し（READ）コマンド中の全てのコマンドキューの内容を確認する。
【０１０３】
続いて、ステップＳ２３の際、メモリ・デバイス１は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・デバイス１は、各Logical Unit（６７）のコマンドキューにキューイングされているコマンドのうちwriteコマンドとreadコマンドの数を調べ、その数によって書き込み処理の分割を決める。本例の場合、分割する否かの判定基準は、例えば、次の通りである：
１．キューイングされているWriteコマンドとReadコマンドの合計が２つ以上ある場合
２．各々のWriteコマンド、Readコマンドによる書き込みサイズ、読み込みサイズが、１ページ以上ある場合
このような上記２つの条件を満たす場合、メモリ・デバイス１は、Writeコマンド／Readコマンドを分割して、書き込みデータ／読み出しデータを分割し、データ書き込み／データ読み出しを行う。ここで、同様に、分割して書き込む／読み出すデータ・サイズは、ページ単位である。
【０１０４】
以後、上記第１実施形態と同様の処理を行い、データ分割判断を終了する。
【０１０５】
その他の構成、動作等に関しては、上記第１の実施形態と実質的に同様である。
【０１０６】
＜作用効果＞  
上記のように、第２実施形態に係るメモリ・デバイスによれば、少なくとも上記（１）乃至（２）と同様の効果が得られる。さらに、第２実施形態に説明したように、必要に応じて、データ読み出しの場合にも同様に適用でき、同様の効果を得ることが可能である。
【０１０７】
［第３実施形態（更にクエリーリクエストに関する一例）］  
次に、第３実施形態に係るメモリ・デバイスについて説明する。第３実施形態は、更にクエリーリクエストを判断基準に入れて判定するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１０８】
＜データ分割判断フロー＞  
図示は省略するが、上記ステップＳ１３等の際、メモリ・デバイス１は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・デバイス１は、各Logical Unit（６７）のコマンドキューにキューイングされているコマンドのうちwriteコマンドとreadコマンドの数を調べ、その数によって書き込み処理の分割を決める。本例の場合、分割する否かの判定基準は、例えば、クエリーリクエスト（Query Request）を加えた、次の通りである点で、相違する：
１．キューイングされているWriteコマンド、Readコマンド合計が１つ以上ある場合
２．キューイングされているQuery Request(READ DESCRIPTOR/WRITE DESCRIPTOR)コマンドが１つ以上ある場合
３．各々のWriteコマンド、Readコマンドによる書き込みサイズ、読み込みサイズが、１ページ以上ある場合
ここで、クエリーリクエスト（Query Request）とは、主にメモリ・デバイス１の情報の取得のために用いられるものである。例えば、ホスト２からのメモリ・デバイス１のコンフィギュレーション情報の変更および出力要求等をいう。クエリーリクエストと上記データ転送要求との関係については、クエリーリクエストの方の処理が問い合わせの処理で処理時間も短いので、優先的に処理をされる。また、データを分割したライト／リード動作においてクエリーリクエストがいつ実行されるのかについては、仕掛中のwrite/ read処理が終わり次第、クエリーの処理を行う。
【０１０９】
このような上記３つの条件を満たす場合、メモリ・デバイス１は、書き込みデータ／読み出しデータを分割し、データ書き込／データ読み出しみを行う。ここで、同様に、分割して書き込む／読み出すデータ・サイズは、ページ単位である。
【０１１０】
以後、上記第１実施形態と同様の処理を行い、データ分割判断を終了する。
【０１１１】
その他の構成、動作等に関しては、上記第１の実施形態と実質的に同様である。
【０１１２】
＜作用効果＞  
上記のように、第３実施形態に係るメモリ・デバイスによれば、少なくとも上記（１）乃至（２）と同様の効果が得られる。さらに、第３実施形態に説明したように、必要に応じて、クエリーリクエストを判断に加え、同様に適用でき、同様の効果を得ることが可能である。
【０１１３】
［第４実施形態（更にReadコマンドに関する一例）］  
次に、第４実施形態に係るメモリ・デバイスについて説明する。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１１４】
＜データ分割判断フロー＞  
ここで、ロジカル・ユニット６７にはアクセスの優先度が設定できる。
【０１１５】
そこで、本例では、例えば、上記ステップＳ１３の際などに、より高優先のロジカル・ユニット６７に対するアクセス処理の場合には分割を行わない点で、上記実施形態と相違する。
【０１１６】
例えば、ロジカル・ユニット６７−１（LUN=1）の方が、ロジカル・ユニット６７−２（LUN=2）よりもより優先度が高い場合を一例に挙げる。
【０１１７】
この場合、ロジカル・ユニット６７−１（LUN=1）とロジカル・ユニット６７−２（LUN=2）に対して、ホスト１から２つのwriteコマンド（１）、（２）が発行されると、例えば、上記ステップＳ１３の際に、メモリ・コントローラ１２は、上記のようなデータ分割処理を行わない。この場合、メモリ・コントローラ１２は、まず、writeコマンド（１）に対するロジカル・ユニット６７−１（LUN=1）のデータ書き込みを行う。
【０１１８】
＜作用効果＞  
上記のように、第４実施形態に係るメモリ・デバイスによれば、少なくとも上記（１）乃至（２）と同様の効果が得られる。さらに、必要に応じて、第４実施形態を適用することが可能である。
【０１１９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１２０】
例えば、上記の実施形態では、メモリ・デバイスがホストに転送を要求する書き込みデータ部分は、メモリの１ページ分のサイズであるが、この書き込みデータ部分のサイズは１ページ分に限られず、ページ・サイズの整数倍であっても良い。また、上記の実施形態では、書き込み要求がページの先頭からの書き込み要求に相当しない場合、書き込みデータの先頭から、書き込み先のページの終端までに相当するサイズの部分を１番目の書き込みデータ部分として要求しているが、その書き込み先のページの終端までに相当するサイズの部分と、それに続くページ・サイズ（または、ページ・サイズの整数倍）のデータとを合わせて、１番目の書き込みデータ部分として要求しても良い。
【符号の説明】
【０１２１】
１…メモリ・デバイス、２…ホスト・デバイス、１１…ＮＡＮＤ型フラッシュメモリ、１２…メモリ・コントローラ、６７…ロジカル・ユニット（コントローラによりメモリ１１のメモリ空間を複数のパーティションに区切って管理されるもの）。
【図１】
0005547154.tif 000002
【図２】
0005547154.tif 000003
【図３】
0005547154.tif 000004
【図４】
0005547154.tif 000005
【図５】
0005547154.tif 000006
【図６】
0005547154.tif 000007
【図７】
0005547154.tif 000008
【図８】
0005547154.tif 000009
【図９】
0005547154.tif 000010
【図１０】
0005547154.tif 000011
【図１１】
0005547154.tif 000012
【図１２】
0005547154.tif 000013
【図１３】
0005547154.tif 000014
【図１４】
0005547154.tif 000015
【図１５】
0005547154.tif 000016
【図１６】
0005547154.tif 000017
【図１７】
0005547154.tif 000018