説明

メモリ・デバイス

【課題】メモリ・デバイスへのアクセスの効率化を図ることができ、ホスト・デバイスへの応答性能も向上することができる。
【解決手段】実施形態によれば、メモリ・デバイス1は、複数のセルを単位としてデータ書き込みまたはデータ読み出しがされる不揮発性のメモリ11と、前記メモリを制御し前記メモリのメモリ空間を複数のパーティションに区切って管理するコントローラ12とを具備する。前記コントローラ12は、データ書き込み要求がされた場合、書き込みデータのデータサイズを分割(S13)し、前記区切って管理される第1パーティションLU1のデータ書き込みを行う期間に、前記区切って管理される第2パーティションLU2の書き込みデータのデータ要求を行って前記書き込みデータの受信を行う(S14)。

【発明の詳細な説明】
【技術分野】
【0001】
メモリ・デバイスに関するものである。
【背景技術】
【0002】
データを保持するメディアとして種々のものが存在する。そのようなメディアとして、例えばクライアント・サーバ・モデルに基づいたメモリ・デバイスがある。クライアント・サーバ・モデルに基づいた、メモリ・デバイスおよびホスト・デバイスからなるメモリ・システムでは、別のメモリ・システムと異なる点がある。例えば、クライアント・サーバ・モデルに基づくメモリ・デバイスおよびホスト・デバイスの役割分担は、クライアント・サーバ・モデルに基づかないメモリ・デバイスおよびホスト・デバイスの役割分担と異なる。したがって、ホスト・デバイスとメモリ・デバイスとの間の通信内容も、クライアント・サーバ・モデルに基づくシステムと基づかないシステムとで異なる。
【0003】
メモリ・システムは特定の規格に則っていることがある。例えば、クライアント・サーバ・モデルに基づくメモリ・システムとして、例えば、UFS(Universal Flash Storage)メモリ・デバイスおよびホスト・デバイスが挙げられる。規格で定められている点については、メモリ・システムは仕様に則っていなければならない。しかしながら、規格で定められていない点も存在し、このような点については、メモリ・システムの設計者が定めることができる。このように自由度が存在する事項については、メモリ・システムの特性に適する形で好ましい性能が実現されるように、決定されるべきである。このような自由度を伴った事項に対して適切な決定を行なって、より高い性能を実現できるメモリ・デバイスを提供する要望がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2007/116476号パンフレット
【非特許文献】
【0005】
【非特許文献1】JEDEC SOLID STATE TECHNOLOGY ASSOCIATION、JEDEC STANDARD(JESD220)、2011年2月
【発明の概要】
【発明が解決しようとする課題】
【0006】
メモリ・デバイスへのアクセスの効率化を図ることができ、ホスト・デバイスへの応答性能も向上することができる。
【課題を解決するための手段】
【0007】
実施形態によれば、一態様に係るメモリ・デバイスは、複数のセルを単位としてデータ書き込みまたはデータ読み出しがされる不揮発性のメモリと、前記メモリを制御するコントローラであって、前記メモリのメモリ空間を複数のパーティションに区切って管理し、前記コントローラは、データ書き込み要求がされた場合、書き込みデータのデータサイズを分割し、前記区切って管理される第1パーティションのデータ書き込みを行う期間に、前記区切って管理される第2パーティションの書き込みデータのデータ要求を行って前記書き込みデータの受信を行う。
【図面の簡単な説明】
【0008】
【図1】メモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示す図。
【図2】参考例のクライアント・サーバ・モデルに基づくメモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示す図。
【図3】参考例のホスト・デバイスとメモリ・デバイスとを示す図。
【図4】第1実施形態に係るメモリ・デバイスのハードウェア上の構成を示す図。
【図5】メモリ・デバイスが封止された形態の例を示す図。
【図6】第1実施形態に係るメモリ・デバイス機能ブロックを示す図。
【図7】第1の実施形態に係るパケットの例を示す図。
【図8】論理アドレスと物理ブロックの変換テーブルの例を示す図。
【図9】第1実施形態に係るLUをより詳細に示す機能ブロックを示す図。
【図10】第1実施形態に係るデータ書き込み時の通信の様子を示す図。
【図11】書き込みコマンドを例示する図。
【図12】転送要求のための通信内容を例示する図。
【図13】データ転送のための通信内容を例示する図。
【図14】第1実施形態に係るメモリ・デバイスのデータ分割判断フローを示す図。
【図15】第1実施形態に係るメモリ・デバイスのデータ分割をより具体的に示す図。
【図16】図15中のビジィ期間(1)、(2)における2つのロジカル・ユニットのアクセス状況を示す図。
【図17】第2実施形態に係るメモリ・デバイスのデータ分割判断フローを示す図。
【発明を実施するための形態】
【0009】
[参考例]
実施形態の説明に先立ち、参考例について簡単に説明する。参考例として、クライアント・サーバ・モデルに基づくメモリ・システムおよび基づかないメモリ・システムについて説明する。クライアント・サーバ・モデルに基づかないメモリ・デバイスとして、SDTMカードおよびeMMCを例に取る。
【0010】
図1は、メモリ・デバイス(SDTMカードまたはeMMC)とホスト・デバイスとの間のデータ書き込みの際の通信の例を示している。図1に示されているように、ホスト・デバイスは書き込みコマンドを発行することにより、書き込みを開始する。書き込みコマンドは、書き込みデータに割り当てられた論理アドレスを含んでいる。論理アドレスは、書き込みデータの開始位置に対応する。メモリ・デバイスは、書き込みコマンドを受け取ると、レスポンスを返す。ホスト・デバイスは、レスポンスを受け取ると、メモリ・デバイスに書き込まれるべきデータ(書き込みデータ)を転送する。書き込みデータは、複数の書き込みデータ部分に分割されて転送される。書き込みデータ部分の大きさは、SDTMカードまたはeMMCの規格に基づいて予め定められている。メモリ・デバイスは、データを受け取れる間は、レディー/ビジー信号を用いてレディー状態を通知する。メモリ・デバイスは、受け取ったデータを逐次、メモリ・デバイス内のメモリに書き込む。一方、例えばメモリ・デバイスのバッファが一杯になる等の理由でメモリ・デバイスがデータを受け取れなくなると、メモリ・デバイスは、ホスト・デバイスにビジー状態を通知する。メモリ・デバイスのビジー状態の間は、ホスト・デバイスはデータの転送を中断する。ビジー状態が解除されると、ホスト・デバイスはさらなる書き込みデータ部分データを送信する。このようにして、書き込みデータの全体が送信されると、メモリ・デバイスは、書き込み停止コマンドを送信する。メモリ・デバイスは、書き込み停止コマンドを受け取るとレスポンスを返し、書き込みは終了する。
【0011】
このように、データの書き込みの位置はホスト・デバイスにより指定され、書き込みデータ部分の大きさも規格により定められている。すなわち、参考例のメモリ・システムでは、ホスト・デバイスがデータ転送の主導権を有しており、ホスト・デバイスが、メモリ・デバイスに指示を出し、メモリ・デバイスはその指示に従う。メモリ・デバイスが有する自由度は小さい。
【0012】
図2は、クライアント・サーバ・モデルに基づくメモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示している。図2に示されているように、ホスト・デバイスは書き込みコマンドを発行することにより、書き込みを開始する。書き込みコマンドは、書き込みの位置を指定する論理アドレスおよび、この書き込みコマンドの対象の書き込みデータのサイズの情報を含んでいる。書き込みコマンドを受け取ると、メモリ・デバイスは、書き込みデータの転送要求の内容を決定する。転送要求には、書き込みデータのうちのメモリ・デバイスがホスト・デバイスからの転送を望む部分の大きさおよびオフセット・アドレスが含まれることになっている。オフセット・アドレスは、メモリ・デバイスが転送を望む部分の位置を特定するためのものである。ホスト・デバイスは、転送要求を受け取ると、要求されたデータ部分をメモリ・デバイスに転送する。メモリ・デバイスは、受け取ったデータ部分をメモリに書き込むことと、別のデータ部分の転送要求を送信することと、を実行する。この書き込みと転送要求は、書き込みデータ全体が書き込まれるまで継続する。書き込みデータ全体の書き込みの成功または失敗に応じて、メモリ・デバイスはホスト・デバイスに相応するレスポンスを送信する。
【0013】
このように、図2の例では、メモリ・デバイスが書き込みデータ部分を決定し、転送要求を送信する。この書き込みにおいて、規格によって定められている事項と定められていない事項がある。例えば、メモリ・デバイスによる転送要求内のオフセット・アドレスがシーケンシャルであるかランダムであるかはホスト・デバイスにおいて任意に設定され、オフセット・アドレスの選択は、この設定に従わなければならない。一方、例えば、転送要求によって指定されるデータ部分の大きさは、仕様において定められていない場合がある。
【0014】
<ホスト・デバイスとメモリ・デバイスとの関係について>
次に、図3を用い、ホスト・デバイスとメモリ・デバイスとの関係について簡単に説明する。
【0015】
例えば、上記UFSで標準化されるデータ書き込み(WRITE処理)では、ホスト・デバイスから、論理ブロックアドレスと長さが指定される。これを受けたメモリ・デバイスは、自身のNAND型フラッシュメモリへのデータ書き込みについて、1度に書くか複数回に分けて書くかについての制約は受けず、メモリ・デバイス側の都合でハンドリングできる。
【0016】
図示するように、また、上記UFSでは、ホストデバイス中のApplication Clientは、メモリ・デバイス中の複数のLogical Unitのそれぞれに対して、コマンドを発行できる。Logical Unit毎に発行されたコマンドは、各々独立して動作することが求められる。すなわち、Application Client側からは、複数のLogical Unitが独立、平行して稼働しているように見える必要がある。
【0017】
しかしながら、一般的にNAND型フラッシュメモリへのアクセスは、CPUの処理時間に比べて長い時間を必要とする。このため、1つのLogical Unitに長大なデータのアクセスが要求されると、他のLogical Unitの動作が阻害され、平行動作ができなくなり、ホスト・デバイス側への応答性能も劣化する。
【0018】
一方で、メモリ・デバイスが有するNAND型フラッシュメモリへのデータ書き込みには最低限の書き込みサイズの制約がある。そのため、一度の書き込みサイズが大きい方が、NAND型フラッシュメモリへのデータ書き込みの際のパフォーマンスが向上するという性質がある。
【0019】
以下に、このような知見に基づいて構成された実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0020】
[第1実施形態]
図4は、第1実施形態に係るメモリ・デバイスを概略的に示している。図4は、メモリ・デバイスのハードウェア上の構成を示している。図4に示されているように、メモリ・デバイス1は、ホスト・デバイス(以下、単にホストと称する場合がある)2と通信できるように構成されている。メモリ・デバイス1とホスト2は、少なくとも、ホスト2からの書き込み要求に対して、メモリ・デバイス1が書き込みデータの部分のサイズおよび位置を指定できる方式でホスト2と通信する。より具体的には、メモリ・デバイス1とホスト2、クライアント・サーバ・モデルに基づいて通信する。メモリ・デバイス1は、ターゲットとして動作し、ホスト2はイニシエータとして動作する。さらに具体的な例として、メモリ・デバイス1はUFSメモリ・デバイスであり、ホスト2はUFSメモリ・デバイスをサポートするホストである。
【0021】
メモリ・デバイス1は、少なくとも、不揮発性の半導体メモリ11と、メモリ11を制御するためのメモリ・コントローラ12とを含んでいる。メモリ11は、複数ビットからなる特定の書き込み単位でデータの書き込みおよび読み出しを行う。さらに、メモリ11は、複数の書き込み単位からなる消去単位でデータを消去する。
【0022】
例えば、メモリ11は1つまたは複数のNAND型フラッシュメモリからなる。メモリ11がNAND型フラッシュメモリである場合、メモリ11は、ページ単位でデータの書き込みおよび読み出しを行う。ページは、複数の接続されたメモリセルの集合のメモリ空間からなり、固有の物理アドレスを割り当てられている。
【0023】
メモリ11は、複数のメモリセルからなるメモリセルアレイと、メモリセルとの間でデータの入出力を行うページバッファとを備えている。ページバッファは、1ページ分のデータを保持する。メモリ11へのデータの書き込みを行う場合、メモリ・コントローラ12は、書き込みコマンドとともに、書き込み先を示すページアドレスと1ページ分の書き込みデータとをメモリ11に送信する。メモリ11は、メモリ・コントローラ12から受信した書き込みデータをページバッファに格納し、ページバッファ内の書き込みデータをページアドレスで指定されたメモリセルへと書き込む。このメモリセルへの書き込み動作を開始すると、メモリ11はメモリ・コントローラ12に対して動作中であることを示すビジー信号を出力する。引き続きデータを書き込む場合、ビジー信号がレディー信号に切り替わった後、次のページアドレスに対して上記と同様の動作を行う。
【0024】
メモリ11からのデータの読み出しを行う場合、メモリ・コントローラ12は、読み出しコマンドとともに、読み出し先を示すページアドレスをメモリ11に送信する。メモリ11は、ページアドレスで指定されたメモリセルからページバッファに1ページ分のデータを読み出す。このメモリセルからの読み出し動作を開始すると、メモリ11はメモリ・コントローラ12に対してビジー信号出力する。そして、ビジー信号がレディー信号に切り替わった後、ページバッファに格納された読み出しデータがメモリ・コントローラ11に出力される。引き続きデータを読み出す場合、次のページアドレスに対して上記と同様の動作を行う。
【0025】
また、メモリ11がNAND型フラッシュメモリである場合、メモリ11は、ブロック単位でデータの消去を行う。各ブロックは、連続する物理アドレスを有する複数のページからなる。各メモリセルは、いわゆる積層ゲート構造のMOSFET(metal oxide semiconductor field effect transistor)からなる。各セルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリ11がNAND型フラッシュメモリである場合、セルトランジスタが2つ以上の閾値電圧の異なる状態を取り得る、つまりメモリセルが多値(多ビット)を記憶できるように、メモリ11が構成されていてもよい。以下の説明では、便宜上、書き込み単位をページとし、消去単位をブロックとする。しかしながら、メモリ11は、必ずしもNAND型フラッシュメモリに限られない。
【0026】
メモリ・デバイス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およびコア・ロジック部31に供給される電源電圧である。VDDi、VDDi2、VDDi3は、コア・ロジック部31に供給され、コア・ロジック部31内に電圧レギュレータが設けられる際の入力端子である。
【0027】
コア・ロジック部22は、メモリ・コントローラ12のうちのI/Oを除く主要部分である。I/O23は、メモリ・コントローラ12がメモリ11と接続するためのハードウェア上の構成を含んでいる。コア・ロジック部22は、ホスト・インターフェース31、バッファ32、データ・バス33、メモリ・インターフェース34、バッファ35、ECC回路36、制御バス41、CPU42、ROM43、ワークRAM45、レジスタ46を含んでいる。
【0028】
I/O21は、ホスト・インターフェース31と接続されている。ホスト・インターフェース31は、メモリ・デバイス1とホスト2が通信するのに必要な処理を行なう。より具体的には、ホスト・インターフェース31は、メモリ・デバイス1とホスト2がともに準拠している通信プロトコルに則ってメモリ・デバイス1とホスト2との間の通信を担う。メモリ・デバイス1がUFSメモリ・デバイスである場合、例えば、ホスト・インターフェース31は、UFSインターフェースである。UFSインターフェースは、物理層についてはM−PHY規格に則っており、リンク層についてはUniPro規格に則っている。
【0029】
ホスト・インターフェース31は、バッファ32と接続されている。バッファ32は、ホスト2からメモリ・デバイス1に送信されたデータをホスト・インターフェース31を介して受け取り、これを一時的に保持する。また、バッファ32は、メモリ・デバイス1からホスト・インターフェース31を介してホスト2へ送信されるデータを一時的に保持する。バッファ32はデータ・バス33と接続されている。
【0030】
I/O31は、メモリ・インターフェース34と接続されている。メモリ・インターフェース34は、メモリ・コントローラ12がメモリ11と通信するのに必要な処理を行なう。より具体的には、メモリ・インターフェース34は、コア・ロジック部22からの指示をメモリ11が認識可能な形態で送信する。メモリ11がNAND型フラッシュメモリである場合、メモリ・インターフェース34は、NANDフラッシュ・インターフェースである。
【0031】
メモリ・インターフェース34は、バッファ35と接続されている。バッファ35は、メモリ11からコントローラ12に送信されたデータをメモリ・インターフェース34を介して受け取り、これを一時的に保持する。また、バッファ35は、コントローラ12からメモリ11にメモリ・インターフェース34を介して送信される予定のデータを一時的に保持する。バッファ35はデータ・バス33と接続されている。メモリ・インターフェース34およびバッファ35は、ECC(error correcting code)回路36と接続されている。ECC回路36はまた、データ・バッファ24と接続されている。ECC回路36は、ホスト1からの書き込みデータをデータ・バス33を介して受け取り、書き込みデータにエラー訂正符号を付加し、エラー訂正符号を付された書き込みデータをバッファ35に供給する。また、ECC回路36は、メモリ11から供給されたデータをバッファ35を介して受け取り、このデータに対してエラー訂正符号を用いてエラー訂正を行い、エラー訂正されたデータをデータ・バス33に供給する。
【0032】
データ・バス33は、制御バス41と接続されている。制御バス41には、CPU(central processing unit)42、ROM(read only memory)43、RAM(random acccess memory)45、レジスタ46が接続されている。CPU42、ROM43、RAM45、レジスタ46は、制御バス41を介して相互に通信する。CPU42は、メモリ・デバイス1の全体の動作を司る。そして、CPU42は、ROM43に格納されている制御プログラム(命令)に従って所定の処理を実行する。CPU42は、制御プログラムに従ってホスト2から受けたコマンドに従ってメモリ11に対する所定の処理を実行したりする。
【0033】
ROM43は、CPU42により制御されるなどを格納する。RAM45は、CPU42の作業エリアとして使用され、CPU42の作業に必要な変数等を一時的に記憶する。レジスタ46は、メモリ・デバイス1の動作に必要な種々の値を保持する。また、レジスタ46は、ホスト2が、メモリ・デバイス2を制御するのに必要な種々の値を保持する。
【0034】
制御バス41には、ホスト・インターフェース31、バッファ32、メモリ・インターフェース34、バッファ35が接続されている。CPU42は、制御プログラムやホスト2からの指示に基づいて、ホスト・インターフェース31、バッファ32、メモリ・インターフェース34、バッファ35を制御する。メモリ・コントローラ12には、アナログ・ポート回路51が設けられていてもよい。
【0035】
メモリ・デバイス1は、例えば、プリント基板上に半田実装される埋め込み型でも良いし、ホスト2に設けられたカードスロットに対して脱着可能なリムーバブル型でも良い。図5は、封止された形態のメモリ・デバイス1の例を示している。図5に示されているように、プリント基板201上にチップ状の複数のメモリ11が積層されている。各メモリ11は、プリント基板201上の配線パターン(図示せず)にワイヤ202により接続されている。チップ状のメモリ・コントローラ12も、プリント基板201上に置かれ、ワイヤ202により配線パターンに接続されている。プリント基板201の裏面には、例えば図示せぬ外部端子(例えば、BGA(ball grid array))が設けられている。外部端子には、図3に示した信号(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により封止されている。
【0036】
次に、図6に、メモリ・デバイス1の構成の別の視点を示す。より具体的には、図6は、メモリ・デバイス1の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータ・ソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【0037】
メモリ・デバイス1は、ターゲット・ポート61、ルータ62、デバイス・マネージャ63、デスクリプタ64、アトリビュート65、フラグ66、複数のLU(logical unit:論理単位)(67−1〜67−n)を含んでいる。ターゲット・ポート61は、メモリ・デバイス1がホスト1と通信可能に接続されるためのポートであり、例えばホスト・インターフェース31に対応する。ルータ62は、ホスト2から受信された通信(タスク、コマンド、データ、クエリー等)を宛先のLU67にルーティングする。ホスト2は、コマンドの処理またはタスク管理機能を、1つのLU67を宛先とする要求を通じて要求する。LU67同士は、アドレス(例えばLUN(logial unit number))により相互に識別されることが可能である。LUNは、例えば、図7に示されているように、メモリ・デバイス1とホスト2との間の通信(パケット)に含められることが可能である。図7に示されているように、パケット101は、LUN102と、実体部103を含んでいる。LUN102は、例えばパケット101のヘッダに含められることが可能である。実体部103は、パケットの機能に固有の内容、例えばコマンド、データ、各種のパラメータ等を含んでいる。各パケットの宛先のLU62は、LUNにより一意に特定される。UFSメモリ・デバイスでは、メモリ・デバイス1とホスト2との間のパケットはいずれもヘッダを含んでおり、ヘッダ内にLUNが記述されている。
【0038】
ルータ62は、ホスト2から受信された通信(タスク、コマンド、データ、クエリー)を、この通信中のLUNに基づいて、宛先のLU67にルーティングする。また、ルータ62は、複数のLU67からホスト2宛ての通信を例えば時分割によって適当な順序でターゲット・ポート61に送信する。ルータ62は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0039】
デバイス・レベル・マネージャ63は、デバイス・レベルの動作およびコンフィギュレーションの管理を行なう。デバイス・レベルの管理には、例えば、メモリ・デバイス1の電力管理、スリープ等の制御等が含まれる。デバイス・レベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイス・レベル・マネージャ63は、ホスト2からのメモリ・デバイス1のコンフィギュレーション情報の変更および出力要求であるクエリー要求のようなコマンドを処理する。デバイス・レベル・マネージャ63は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0040】
デスクリプタ64、アトリビュート65、フラグ66は、例えばワークRAM45中のデータとして実現される。デスクリプタ64は、予め定義されたフォーマットのデータ構造を有し、メモリ・デバイス1についての何らかの特徴を記述するためのものである。デスクリプタ64には、例えば、メモリ・デバイス1にアクセスするのに必要なデバイス・クラス、サブ・クラス、プロトコル等が含まれる。アトリビュート65は、メモリ・デバイス1に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート65には、例えば、メモリ・デバイス1とホスト2との間で転送可能なデータの最大値等が含まれる。フラグ66は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは「0」または「1」等により表わされる。
【0041】
各LU67は、例えばメモリ11、メモリ・インターフェース34、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46により実現される。各LU67は、相互に独立して、ホスト2からの処理を実行する。したがって、各LUはメモリ11、インターフェース31、バッファ35、ECC回路36、CPU42、ROM43、レジスタ46等の資源の一部を利用して実現される。各LUは、上記のようにホスト2からは1つのLUを特定するLUNによって相互に区別される。ホスト2からのコマンドは指定されたLU67によって実行される。
【0042】
各LU67は、デバイス・サーバ71、タスク・マネージャ72、メモリ領域73を含んでいる。メモリ領域73は、メモリ11のメモリ領域のうちの一部から構成され、ホスト2からの書き込みデータを実際に格納する。デバイス・サーバ71およびタスク・マネージャ72は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。デバイス・サーバ71は、ホスト2から受信されたLUレベルの処理を要求するコマンドを解釈し、実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。LU67はメモリ領域73を含んでいるので、デバイス・サーバ71は、少なくともメモリ領域73(メモリ11)を制御する機能を有している。タスク・マネージャ72は、複数のコマンド(タスク)の実行の順序を制御し、タスク管理機能を提供する。
【0043】
上記のように、デバイス・サーバ71は、メモリ11の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホスト2によって、ホスト2がメモリ・デバイス1に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ11の書き込み領域(ページ)または消去領域(ブロック)を特定するためのアドレスである。デバイス・サーバ71は、自身に対応するメモリ領域73によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。その管理のために、デバイス・サーバ71は、例えば論理アドレス・物理アドレス変換テーブル(以下、単に変換テーブルと称する場合がある)を保持している。
【0044】
変換の例として、例えば、図8に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレス・オフセットが割り当てられている。図8は、メモリ11の書き込み単位の大きさが16kBであり、論理アドレスが512Bサイズのデータごとに割り当てられている例を示している。
【0045】
次に、図9および図10を参照して、データ書き込みの際の動作について説明する。図9は、第1実施形態に係るLU67をより詳細に示す機能ブロック図である。図9は、第1実施形態に係るデータ書き込み時の通信の様子を示している。複数のLU67のうち、少なくとも1つ、典型的には全てが以下に図9を参照して説明する構成を有している。図9に示されているように、デバイス・サーバ71は、管理部81と、コマンド解析部82と、転送要求生成部83と、メモリ制御部84を含んでいる。
【0046】
管理部81は、デバイス・サーバ71の全体を管理する。コマンド解析部82は、ホスト2からルータ62を介してコマンドを受信する。コマンド解析部82は、受信されたコマンドを解析する。コマンド制御部82は、書き込みコマンドを受信すると、転送要求生成部83に、転送要求の決定(生成)を要求する。この転送要求生成部83への要求は、コマンド解析部82が直接行なってもよいし、管理部81により行われてもよい。転送要求生成部83は、要求を受けると、書き込みコマンドに含まれている書き込みデータのサイズおよびアドレスに基づいて転送要求を生成する。メモリ制御部84は、管理部81の指示に従って、メモリ11に対するあらゆる指示の発行を担う。
【0047】
次に、図10を参照して、データ書き込み時のシーケンスについて説明する。本例は、1つのLU67に対するデータ書き込み要求に関する。このため、各通信はいずれも、この1つのLU67とホスト2との間の通信(パケット)に相当する。
【0048】
図10に示されているように、書き込みコマンドがホスト2からメモリ・デバイス1に送信される。書き込みコマンドは、図11に示されているように、少なくとも、LUN102、書き込み指示111、アドレス112、書き込みデータ・サイズ113を含んでいる。アドレス112は、書き込みデータが書き込まれる位置(論理アドレス)である。書き込みデータ・サイズ113は、書き込みデータの全体のサイズを示す。
【0049】
UFSメモリ・システムでは、データ、コマンド、クエリー等はいずれもパケットによって転送される。メモリ・デバイス1およびホスト2がUFSメモリ・システムである場合、書き込みコマンドは、コマンド転送パケットに相当する。パケットはヘッダを含み、パケットの実体部にコマンド記述部が含まれており、コマンド記述部にSCSI(small computer system interface)コマンドが格納されている。SCSIコマンド中に、書き込みコマンド111、アドレス112、書き込みデータ・サイズ113が含まれている。
【0050】
書き込みコマンドは、宛先のLU67中のコマンド解析部82により受信される。受信されたコマンドが書き込みコマンドであると、コマンド解析部82は、直接または管理部81を介して転送要求生成部83に転送要求の生成を要求する。生成要求を受け取ると、転送要求生成部83は、メモリ11の特性を考慮して、具体的には、書き込みデータの論理アドレスおよびサイズを考慮して、転送要求を生成する。より具体的には、まず、転送要求生成部83は、書き込みデータの論理アドレスを参照して、書き込み要求が書き込み先のページの先頭からの書き込み要求に相当するかを検査する。本例では、論理アドレスは0x0000であり、これは、ブロック(すなわちページ)の先頭からの書き込み要求に相当する。転送要求生成部83は、このことを知得すると、書き込みデータのうちの、1ページのサイズに等しい部分の転送をホスト2に要求する。メモリ11は、ページ単位でデータ書き込みを行なうので、書き込みデータのうちの1ページと同じサイズの部分(書き込みデータ部分)ごとにデータを受信すると、効率よくデータを書き込めるからである。逆に、例えばページの1.5倍のサイズなどであると、書き込みデータ部分のさらに一部をバッファに一時格納する必要が生じる等の理由により、データ書き込み効率が低下する可能性がある。このように、書き込み要求が書き込み先ページの先頭からの書き込みに相当するのであれば、転送要求生成部83は、書き込みデータ全体の先頭からページ・サイズの部分の転送を要求する。より具体的には、本例に従うと、論理アドレスが0x0000からの16kBサイズの書き込みデータ部分の転送要求が生成される。この転送要求は、図10に示されているように、管理部81、ルータ62を介してホスト2に送信される。なお、書き込み要求がページの先頭からの書き込み要求に相当しない場合については、第2実施形態において説明する。
【0051】
転送要求は、図12に示されているように、LUN(ヘッダ)102、転送データ・アドレス121、転送データ・サイズ122を含んでいる。転送データ・アドレス121は、LU62が転送を要求する、書き込みデータ部分のオフセット・アドレスを示す。転送データ・サイズ122は、対応する書き込みデータ部分のサイズを示す。メモリ・デバイス1およびホスト2がUFSメモリ・システムである場合、転送要求は、転送要求パケットに相当する。転送要求パケットは、パケットの実体部において、LU62がデータ転送の準備ができたことを示すとともに、転送データ・アドレス121、転送データ・サイズ122を含んでいる。
【0052】
図10に示されているように、ホスト2は、転送要求を受信すると、この転送要求に応じた書き込みデータ部分を送信する。データ転送は、図13に示されているように、LUN(ヘッダ)102、データ131を含んでいる。メモリ・デバイス1およびホスト2がUFSメモリ・システムである場合、データ転送は、データ転送パケットにより行なわれる。データ転送パケットは、パケットの実体部において、転送すべきデータを含んでいる。
【0053】
ホスト1からの書き込みデータ部分は、メモリ・デバイス2において、より具体的には、対応する転送要求を発行したLU67によって受信される。受信された書き込みデータ部分は、メモリ制御部84の制御によってメモリ領域73の適切な位置に書き込まれる。
【0054】
次いで、転送要求生成部83は、次の転送要求を生成する。この転送要求は、書き込みデータ全体のうちの最初の書き込みデータ部分に続くページ・サイズの部分の転送を要求する。この2番目の書き込みデータ部分は、論理アドレスが0x0020からの16kBのサイズの書き込みデータ部分に相当する。転送要求はホスト2に送信される。次いで、対応するデータ部分が、1番目のデータ部分を参照して説明したのと同様の手順でメモリ領域73に書き込まれる。
【0055】
以下、同様の処理が繰り返される。すなわち、転送要求生成部83は、2番目の書き込みデータ部分に続く論理アドレス0x0040からの16kBサイズの3番目の書き込みデータ部分の転送の要求を生成する。これに応じて、対応するデータ部分が、メモリ領域73に書き込まれる。さらに、転送要求生成部83は、3番目の書き込みデータ部分に続く論理アドレス0x0060からの16kBの16kBサイズの最後の書き込みデータ部分の転送の要求を生成する。これに応じて、対応するデータ部分が、メモリ領域73に書き込まれる。最後の書き込みデータ部分の大きさも16kBである。書き込みデータのサイズがページ・サイズの整数倍であり、かつ書き込み要求がページの先頭からの書き込み要求に相当していたからである。最後の書き込みデータ部分の転送要求の送信および書き込みが終了すると、対応するLU67のデバイス・サーバ(より具体的には管理部81)は、書き込み成功の旨のレスポンスをホスト2に送信する。こうして、データ書き込みが完了する。
【0056】
以上説明したように、第1実施形態に係るメモリ・デバイスは、ホスト2からのデータ書き込み要求に対して転送されるべき各書き込みデータ部分の大きさを決定する権限を有しており、かつページ・サイズの書き込みデータ部分の転送を要求する。このため、1度に転送される書き込みデータ部分は、ページ・サイズを有するとともにその先頭および終端が書き込み先のページの先頭および終端と一致する。すると、メモリ・デバイス2は、受信された書き込みデータ部分をメモリ11に書き込むのと並行して次の書き込みデータ部分を受信できる。データの書き込み中はメモリはビジー状態となるが、メモリ11は書き込みデータを受け取れることに基づく。このような書き込みシーケンスにより、メモリ11は効率よく書き込みを行なえる。
【0057】
また、データを書き込む部分にデータが既に記憶されているかにかかわらず、一度データが書き込まれたページに対してそのデータを消去せずに再度データを書き込むことが禁止されているメモリにおいては、メモリのページのサイズ以上の単位で論理アドレスと物理アドレスとの変換を行う場合、ページの部分的な書き込みが生じないようにホスト2から書き込みデータ部分が転送されないと、書き込み効率が低下する。例えば、論理アドレスと物理アドレスの変換において、0x0000から0x0019までの論理アドレスがメモリ11の第1ページの物理アドレスに対応し、0x0020から0x0039までの論理アドレスがメモリ11の第2ページの物理アドレスに対応しているとする。ここで、論理アドレス0x0010からの16kBサイズの書き込みデータ部分がホストから転送されると、論理アドレス0x0010から0x0019までのデータが第1ページの半分に記憶され、論理アドレス0x0020から0x0029までのデータが第2ページの半分に記憶される。この後、メモリ・デバイスは、論理アドレス0x0000から8kBサイズの書き込みデータ部分をホストから受信すると、第1ページへの再書き込みが禁止されているため、第1ページに記憶された論理アドレス0x0010から0x0019までのデータを読み出して、ホストから受信した論理アドレス0x0000から0x0009までの書き込みデータ部分とともに、新たな第3ページに記憶しなければならない。この第3ページへの書き込み後、x0000から0x0019までの論理アドレスはメモリ11の第3ページの物理アドレスに対応付けられる。このように、ページの部分的な書き込みを行うと、ページの未書き込み部分に対する書き込み要求をホストから受けたときに、メモリ・デバイスは、既書き込みデータを新たなページにコピーしなければならない。また、論理アドレスと物理アドレスとの変換をメモリのブロック単位で行う場合は、ブロック単位で、既書き込みデータを新たなブロックにコピーしなければならないため、書き込み効率の低下はより顕著となる。
【0058】
一方、第1実施形態に係るメモリ・デバイスがホスト2に転送を要求する書き込みデータ部分は、ページ・サイズを有するとともに、その論理アドレスの先頭がページの先頭の物理アドレスに対応し、終端がページの終端の物理アドレスに対応している。このため、ページの部分的な書き込みが生じず、既書き込みデータのコピーに伴う書き込み効率の低下を回避できる。
【0059】
<データ分割判断フロー>
次に、図14のフローに則して、第1実施形態に係るデータ分割判断動作について、説明する。第1実施形態に係るメモリ・デバイスは、図示するフローに則して、データ分割判断を行う。
【0060】
まず、ステップS11の際、メモリ・デバイス1は、ホスト・デバイス2から、書き込み(WRITE)コマンドを受信する。書き込みコマンドは、例えば、上記図11に図示するようなものがある。
【0061】
続いて、ステップS12の際、メモリ・デバイス1は、上記受信した書き込みコマンド中の全てのコマンドキューの内容を確認する。具体的には、図11に示したように、メモリ・デバイス1は、書き込みコマンド中の、LUN102、書き込み指示111、アドレス112、書き込みデータ・サイズ113を確認する。
【0062】
続いて、ステップS13の際、メモリ・デバイス1は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・デバイス1は、各Logical Unit(67)のコマンドキューにキューイングされているコマンドのうち書き込み(write)コマンドの数を調べ、その数によってデータ書き込み処理の分割を判定する。本例の場合、分割する否かの判定基準は、例えば、次の通りである:
1.キューイングされているWriteコマンドが2つ以上ある場合
2.各々のWriteコマンドによる書き込みサイズが、1ページ以上ある場合
このような上記2つの条件を満たす場合、メモリ・デバイス1は、書き込みデータを分割し、データ書き込みを行う。ここで、詳細については後述するが、本例の場合、分割して書き込むデータ・サイズは、ページ単位である。なお、図15に示すように、1つのロジカルユニット(LU)に対するホスト・デバイス2からの書き込みコマンドは1つである。
【0063】
続いて、ステップS14の際、上記ステップS13の際にデータ処理の分割が必要であると判定される場合(Yes)、メモリ・デバイス1は、分割サイズでデータ転送を実行する。
【0064】
続いて、ステップS15の際、上記ステップS13の際にデータ処理の分割が必要でない判定される場合(No)、メモリ・デバイス1は、ホスト・デバイス2から要求されたデータ転送を実行する。この際、メモリ・デバイス1は、書き込みデータの単位を最大化(本例では、ページ単位)してデータ書き込みを行う。そのため、データ転送効率を向上することができる。
【0065】
<データ分割判断の具体例>
次に、より具体的に、図15を用いて、上記第1実施形態に係るデータ分割判断動作について説明する。ここでは、ロジカル・ユニット67−1(LUN=1)とロジカル・ユニット67−2(LUN=2)に対して、ホスト1から2つのwriteコマンドが発行され、上記ステップS13の際としてwriteコマンドを2つに分割する場合を一例に示す。
【0066】
図示するように、まず、メモリ・デバイス1のメモリ・コントローラ12は、ホスト・デバイス(UFS HOST)2から発行された2つのロジカル・ユニット67−1(LUN=1)とロジカル・ユニット67−2(LUN=2)とに対しての2つのwriteコマンド(1)、(2)を受信する。
【0067】
続いて、メモリ・コントローラ12は、受信したwriteコマンド(1)、(2)の全てのコマンドキューを確認する。
【0068】
続いて、メモリ・コントローラ12は、受信したwriteコマンド(1)、(2)のデータ処理の分割が必要であるか否かを判定する。図示する場合では、メモリ・コントローラ12は、各Logical Unit(67)のコマンドキューにキューイングされているコマンドのうち書き込み(write)コマンドの数が2つ以上((1)、(2))あり、各々のWriteコマンドによる書き込みサイズが1ページ以上ある場合である。
【0069】
そのため、メモリ・コントローラ12は、受信したWriteコマンド(1)、(2)を分割する必要があると判定する。
【0070】
そのため、続いて、受信したwriteコマンド(1)、(2)を2つに分割し、ホスト2に対して、まず、ロジカル・ユニット67−1(LUN=1)の分割した前段の書き込みデータの転送要求(Ready to Transfer LUN=1)を送信する。
【0071】
続いて、ホスト・デバイス2は、受信した転送要求に従い、メモリ・コントローラ12に、ロジカル・ユニット67−1(LUN=1)の前段の書き込みデータ(Data Out UPIU LUN=1)を送信する。
【0072】
続いて、メモリ・コントローラ12は、受信した前段の書き込みデータを、対応するロジカル・ユニット67−1に書き込む(書き込みその1 LUN=1)。この際、メモリ・コントローラ12により、分割した書き込みデータを一度に書き込まれるサイズは、ページ単位を基本とする。そのため、ホスト・デバイスから見れば、メモリ・デバイス1は、ここからビジィ(BUSY)期間(1)が開始される。メモリ・デバイス1は、ビジィ(BUSY)をホスト・デバイス2に送信する。
【0073】
ここで、図中の破線で囲って示すように、メモリ・コントローラ12は、ロジカル・ユニット67−1(LUN=1)に上記データ書き込みのためにアクセスしているビジィ(BUSY)期間(1)に、次のデータ書き込み対象であるロジカル・ユニット67−2(LUN=2)の前段のデータ要求を行い、書き込みデータの受信を同様にホスト・デバイス2に対して行う。
【0074】
すなわち、メモリ・コントローラ12は、上記ビジィ(BUSY)期間(1)に、次のデータ書き込み対象であるロジカル・ユニット67−2(LUN=2)のデータ転送要求(Ready to Transfer LUN=2)をホスト・デバイス2に行い、ホスト・デバイス2から書き込みデータの受信(Data Out UPIU LUN=2)を同様に受信する。
【0075】
このように、図示した例では、メモリ・デバイス1へのアクセスサイズを前段および後段の2つに分割し、始めにロジカル・ユニット67−1(LUN=1)に対して書き込みを行い、このロジカル・ユニット67−1(LUN=1)の前段の書き込みの最中に、次のロジカル・ユニット67−2(LUN=2)の前段の書き込みデータのリクエストとそのデータ受信を行う。これにより、メモリ・デバイス1へのアクセスの効率化を図ることができ、ホスト・デバイス1への応答性能も向上することができる。
【0076】
続いて、ロジカル・ユニット67−1(LUN=1)に対しての前段のデータ書き込みが終了すると、即座に、メモリ・コントローラ12は、ホスト・デバイス2から受信した書き込みデータ(Data Out UPIU LUN=2)を対応するロジカル・ユニット67−2(LUN=2)に書き込む(書き込みその1 LUN=2)ことができる。メモリ・デバイス1は、ここからビジィ(BUSY)期間(2)が開始される。メモリ・デバイス1は、同様に、ビジィ(BUSY)をホスト・デバイス2に送信する。
【0077】
ここで、上記と同様に、メモリ・コントローラ12は、ロジカル・ユニット67−2(LUN=2)に上記データ書き込みのためにアクセスしているビジィ(BUSY)期間(2)に、次のデータ書き込み対象であるロジカル・ユニット67−1(LUN=1)の分割した後段のデータ要求(Ready to Transfer LUN=1)を行い、書き込みデータの受信(Data Out UPIU LUN=1)を同様にホスト・デバイス2に対して行う。
【0078】
続いて、ロジカル・ユニット67−2(LUN=2)の前段のデータ書き込みが終了すると、即座に、メモリ・コントローラ12は、ホスト・デバイス2から受信した後段の書き込みデータ(Data Out UPIU LUN=1)を対応するロジカル・ユニット67−1(LUN=1)に書き込む(書き込みその2 LUN=1)ことができる。メモリ・デバイス1は、ここからビジィ(BUSY)期間(3)が開始される。メモリ・デバイス1は、同様に、ビジィ(BUSY)をホスト・デバイス2に送信する。
【0079】
ここで、上記と同様に、メモリ・コントローラ12は、ロジカル・ユニット67−1(LUN=1)に上記後段のデータ書き込みのためにアクセスしているビジィ(BUSY)期間(3)に、次のデータ書き込み対象であるロジカル・ユニット67−2(LUN=2)の分割した後段のデータ要求(Ready to Transfer LUN=2)を行い、書き込みデータの受信(Data Out UPIU LUN=2)を同様にホスト・デバイス2に対して行う。
【0080】
続いて、ロジカル・ユニット67−1(LUN=1)の後段のデータ書き込みが終了すると、即座に、メモリ・コントローラ12は、ホスト・デバイス2から受信した後段の書き込みデータ(Data Out UPIU LUN=2)を対応するロジカル・ユニット67−2(LUN=2)に書き込む(書き込みその2 LUN=2)ことができる。メモリ・デバイス1は、ここからビジィ(BUSY)期間(4)が開始される。メモリ・デバイス1は、同様に、ビジィ(BUSY)をホスト・デバイス2に送信する。
【0081】
続いて、メモリ・コントローラ12は、ロジカル・ユニット67−2(LUN=2)の後段の書き込みデータ(Data Out UPIU LUN=2)の完了によりビジィ(BUSY)期間(4)が終了し、ホスト・デバイス2にデータ書込みの終了を送信する。
【0082】
尚、第1実施形態では、データ書き込み(Write)の場合を一例に挙げて説明した。しかしながら、データ読み出し(Read)の場合は、メモリ・デバイス1の都合が良いデータサイズで分割してホスト2へデータを送信すれば良い。そのため、データ読み出しの場合では、データ書き込みのような書き込みデータの要求は行わない。
【0083】
<作用効果>
第1の実施形態に係るメモリ・デバイスによれば、少なくとも下記(1)の効果が得られる。
【0084】
(1)メモリ・デバイス1へのアクセスの効率化を図ることができ、ホスト・デバイス2への応答性能も向上することができる。
上記のように、本例に係るメモリ・コントローラ12は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・コントローラ12は、各Logical Unit(67)のコマンドキューにキューイングされているコマンドのうち書き込み(write)コマンドの数を調べ、その数によってデータ書き込み処理の分割を判定する。データ書き込み処理の分割の条件を満たす場合、メモリ・コントローラ12は、受信した書き込みデータを分割し、データ書き込みを行う。
【0085】
具体的には、図15で示したような場合、メモリ・コントローラ12は、受信したWriteコマンド(1)、(2)を分割する必要があると判定する。その結果、図15中の破線で囲って示したように、メモリ・コントローラ12は、ロジカル・ユニット67−1(LUN=1)に前段のデータ書き込みのためにアクセスしているビジィ(BUSY)期間(1)に、次のデータ書き込み対象であるロジカル・ユニット67−2(LUN=2)の前段のデータ要求を行い、書き込みデータの受信を同様にホスト・デバイス2に対して行う。
【0086】
すなわち、メモリ・コントローラ12は、上記ビジィ(BUSY)期間(1)に、次のデータ書き込み対象であるロジカル・ユニット67−2(LUN=2)のデータ転送要求(Ready to Transfer LUN=2)をホスト・デバイス2に行い、ホスト・デバイス2から書き込みデータの受信(Data Out UPIU LUN=2)を同様に受信する。
【0087】
このように、本例では、メモリ・デバイス1へのアクセスサイズを前段および後段の2つに分割し、始めにロジカル・ユニット67−1(LUN=1)に対して前段の書き込みを行い、このロジカル・ユニット67−1(LUN=1)の前段の書き込みの最中に、次のロジカル・ユニット67−2(LUN=2)の前段の書き込みデータのリクエストとそのデータ受信を行う。
【0088】
そのため、例えば、図16に示すように、時刻t1とt2との間のビジィ期間(Busy (1))のロジカル・ユニット67−1(LUN=1)に前段のデータ書き込みのためにアクセスしている間(書き込みデータ:DT1〜DTn)に並行して、次のデータ書き込み対象であるロジカル・ユニット67−2(LUN=2)の前段のデータ要求を行い、書き込みデータの受信を行うことができる。
【0089】
よって、即座に、時刻t3とt4との間のビジィ期間(Busy (2))のロジカル・ユニット67−2(LUN=2)に前段のデータ書き込むこと(書き込みデータ:DT1〜DTn)ができる。同様に、このビジィ期間(Busy (2))の間に並行して、次のデータ書き込み対象であるロジカル・ユニット67−1(LUN=1)の後段のデータ要求を行い、書き込みデータの受信を行うことができる。
【0090】
これにより、メモリ・デバイス1へのアクセスの効率化を図ることができ、ホスト・デバイス1への応答性能も向上することができる。
【0091】
このように、本例に係るUFS規格等では、データの送受信に関して、メモリ・デバイス1側が主導権を握っている。そこで、本例では、特性を生かし、NAND型フラッシュメモリへのアクセス性能が向上するページ単位でのサイズで書き込み、読み出し処理を分割する。そのため、1つの処理だけでメモリ・デバイス1が占有されることを防止することで、メモリ・デバイス1のアクセス効率を向上することができる。あわせて、ホスト・デバイス2への応答性能も向上することができる。
【0092】
ここで、本例で説明したUFS規格では、ホスト・デバイス2は、メモリ・デバイス1上の異なるロジカルユニット(LU)に対して独立にコマンドを発行することができる。また、各パーティションは、コマンドをキューイングすることができる。各々のパーティションに発行されたコマンドは、ホスト・デバイス2から見て、独立に動作するように見える必要がある。
【0093】
この制約をクリアするために、メモリ・デバイス1へのアクセスを伴うコマンドは、メモリ・デバイス1の内部状態に応じて、NAND型フラッシュメモリへのアクセス処理を分割する。分割の単位は、本例では、NAND型フラッシュメモリへの最大のアクセス単位であるページ単位や、消去ブロック単位などとすることが望ましい。これは、一度のデータ書き込み/データ読み出しのアクセスのサイズが大きい方が、NAND型フラッシュメモリ11へのデータ書き込み/データ読み出しの際のパフォーマンスが向上するという性質があるからである。
【0094】
このため、本例では、ステップS14の際、ホスト・デバイス(Application Client)2が発行しているコマンドが少なく、データ分割が必要でないときは、メモリ・デバイス1へアクセスするデータ単位を最大化(本例では、ページ単位)して、データ転送効率を上げる。
【0095】
一方、ステップS15の際、発行されているコマンドが多く、データ分割が必要なときは、ホスト・デバイス2への応答性能を上げるために、メモリ・デバイス1へのアクセス単位を分けるのである。
【0096】
(2)NAND型フラッシュメモリだけではなく、次世代の不揮発性メモリに対しても有利である。
ここで、UFS規格は、不揮発性メモリに対応するインターフェース規格である。UFSメモリ・デバイスとしては、例えば、本例で説明したNAND型フラッシュメモリ11とコントローラ12とで構成されることを想定されている。
【0097】
しかしながら、本例に説明したNAND型フラッシュメモリ11だけではなく、例えば、ReRAM(Resistance Random Access Memory)、MRAM(Magnetic Random Access Memory)等の次世代の不揮発性メモリを使用することも視野に入れているものである。
【0098】
そのため、NAND型フラッシュメモリ11だけでなく、上記のような次世代の不揮発性メモリに対しても有利である。
【0099】
[第2実施形態(更にReadコマンドに関する一例)]
次に、第2実施形態に係るメモリ・デバイスについて、図17を用いて説明する。第2実施形態は、更にReadコマンドに関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
【0100】
<データ分割判断フロー>
図17のフローに則して、第2実施形態に係るデータ分割判断動作について、説明する。
【0101】
まず、ステップS21の際、メモリ・デバイス1は、ホスト・デバイス2から、書き込み(WRITE)コマンドまたは読み出し(READ)コマンドを受信する点で、上記第1の実施形態と相違する。
【0102】
続いて、ステップS22の際、メモリ・デバイス1は、上記受信した書き込みコマンドおよび読み出し(READ)コマンド中の全てのコマンドキューの内容を確認する。
【0103】
続いて、ステップS23の際、メモリ・デバイス1は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・デバイス1は、各Logical Unit(67)のコマンドキューにキューイングされているコマンドのうちwriteコマンドとreadコマンドの数を調べ、その数によって書き込み処理の分割を決める。本例の場合、分割する否かの判定基準は、例えば、次の通りである:
1.キューイングされているWriteコマンドとReadコマンドの合計が2つ以上ある場合
2.各々のWriteコマンド、Readコマンドによる書き込みサイズ、読み込みサイズが、1ページ以上ある場合
このような上記2つの条件を満たす場合、メモリ・デバイス1は、Writeコマンド/Readコマンドを分割して、書き込みデータ/読み出しデータを分割し、データ書き込み/データ読み出しを行う。ここで、同様に、分割して書き込む/読み出すデータ・サイズは、ページ単位である。
【0104】
以後、上記第1実施形態と同様の処理を行い、データ分割判断を終了する。
【0105】
その他の構成、動作等に関しては、上記第1の実施形態と実質的に同様である。
【0106】
<作用効果>
上記のように、第2実施形態に係るメモリ・デバイスによれば、少なくとも上記(1)乃至(2)と同様の効果が得られる。さらに、第2実施形態に説明したように、必要に応じて、データ読み出しの場合にも同様に適用でき、同様の効果を得ることが可能である。
【0107】
[第3実施形態(更にクエリーリクエストに関する一例)]
次に、第3実施形態に係るメモリ・デバイスについて説明する。第3実施形態は、更にクエリーリクエストを判断基準に入れて判定するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
【0108】
<データ分割判断フロー>
図示は省略するが、上記ステップS13等の際、メモリ・デバイス1は、データ処理の分割が必要であるか否かを判定する。具体的には、メモリ・デバイス1は、各Logical Unit(67)のコマンドキューにキューイングされているコマンドのうちwriteコマンドとreadコマンドの数を調べ、その数によって書き込み処理の分割を決める。本例の場合、分割する否かの判定基準は、例えば、クエリーリクエスト(Query Request)を加えた、次の通りである点で、相違する:
1.キューイングされているWriteコマンド、Readコマンド合計が1つ以上ある場合
2.キューイングされているQuery Request(READ DESCRIPTOR/WRITE DESCRIPTOR)コマンドが1つ以上ある場合
3.各々のWriteコマンド、Readコマンドによる書き込みサイズ、読み込みサイズが、1ページ以上ある場合
ここで、クエリーリクエスト(Query Request)とは、主にメモリ・デバイス1の情報の取得のために用いられるものである。例えば、ホスト2からのメモリ・デバイス1のコンフィギュレーション情報の変更および出力要求等をいう。クエリーリクエストと上記データ転送要求との関係については、クエリーリクエストの方の処理が問い合わせの処理で処理時間も短いので、優先的に処理をされる。また、データを分割したライト/リード動作においてクエリーリクエストがいつ実行されるのかについては、仕掛中のwrite/ read処理が終わり次第、クエリーの処理を行う。
【0109】
このような上記3つの条件を満たす場合、メモリ・デバイス1は、書き込みデータ/読み出しデータを分割し、データ書き込/データ読み出しみを行う。ここで、同様に、分割して書き込む/読み出すデータ・サイズは、ページ単位である。
【0110】
以後、上記第1実施形態と同様の処理を行い、データ分割判断を終了する。
【0111】
その他の構成、動作等に関しては、上記第1の実施形態と実質的に同様である。
【0112】
<作用効果>
上記のように、第3実施形態に係るメモリ・デバイスによれば、少なくとも上記(1)乃至(2)と同様の効果が得られる。さらに、第3実施形態に説明したように、必要に応じて、クエリーリクエストを判断に加え、同様に適用でき、同様の効果を得ることが可能である。
【0113】
[第4実施形態(更にReadコマンドに関する一例)]
次に、第4実施形態に係るメモリ・デバイスについて説明する。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
【0114】
<データ分割判断フロー>
ここで、ロジカル・ユニット67にはアクセスの優先度が設定できる。
【0115】
そこで、本例では、例えば、上記ステップS13の際などに、より高優先のロジカル・ユニット67に対するアクセス処理の場合には分割を行わない点で、上記実施形態と相違する。
【0116】
例えば、ロジカル・ユニット67−1(LUN=1)の方が、ロジカル・ユニット67−2(LUN=2)よりもより優先度が高い場合を一例に挙げる。
【0117】
この場合、ロジカル・ユニット67−1(LUN=1)とロジカル・ユニット67−2(LUN=2)に対して、ホスト1から2つのwriteコマンド(1)、(2)が発行されると、例えば、上記ステップS13の際に、メモリ・コントローラ12は、上記のようなデータ分割処理を行わない。この場合、メモリ・コントローラ12は、まず、writeコマンド(1)に対するロジカル・ユニット67−1(LUN=1)のデータ書き込みを行う。
【0118】
<作用効果>
上記のように、第4実施形態に係るメモリ・デバイスによれば、少なくとも上記(1)乃至(2)と同様の効果が得られる。さらに、必要に応じて、第4実施形態を適用することが可能である。
【0119】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0120】
例えば、上記の実施形態では、メモリ・デバイスがホストに転送を要求する書き込みデータ部分は、メモリの1ページ分のサイズであるが、この書き込みデータ部分のサイズは1ページ分に限られず、ページ・サイズの整数倍であっても良い。また、上記の実施形態では、書き込み要求がページの先頭からの書き込み要求に相当しない場合、書き込みデータの先頭から、書き込み先のページの終端までに相当するサイズの部分を1番目の書き込みデータ部分として要求しているが、その書き込み先のページの終端までに相当するサイズの部分と、それに続くページ・サイズ(または、ページ・サイズの整数倍)のデータとを合わせて、1番目の書き込みデータ部分として要求しても良い。
【符号の説明】
【0121】
1…メモリ・デバイス、2…ホスト・デバイス、11…NAND型フラッシュメモリ、12…メモリ・コントローラ、67…ロジカル・ユニット(コントローラによりメモリ11のメモリ空間を複数のパーティションに区切って管理されるもの)。

【特許請求の範囲】
【請求項1】
複数のセルを単位としてデータ書き込みまたはデータ読み出しがされる不揮発性のメモリと、
前記メモリを制御し、前記メモリのメモリ空間を複数のパーティションに区切って管理するコントローラとを具備し、前記コントローラは、
データ書き込み要求がされた場合、書き込みデータのデータサイズを分割し、
前記区切って管理される第1パーティションのデータ書き込みを行う期間に、前記区切って管理される第2パーティションの書き込みデータのデータ要求を行って前記書き込みデータの受信を行う
メモリ・デバイス。
【請求項2】
前記コントローラは、
データ読み出し要求がされた場合、読み出しデータのデータサイズを分割して、前記メモリからデータ読み出しを行う
請求項1に記載のメモリ・デバイス。
【請求項3】
前記コントローラは、前記データサイズの分割が必要でない場合、書き込みデータまたは読み出しデータのデータサイズを最大化した前記複数のセルを単位としてデータ書き込みまたはデータ読み出しを行う
請求項1または2に記載のメモリ・デバイス。
【請求項4】
前記データサイズを分割する単位は、前記データ書き込みまたはデータ読み出しが行われる複数のセルの単位である
請求項1乃至3のいずれか1項に記載のメモリ・デバイス。
【請求項5】
前記コントローラが前記データサイズの分割が必要であるか否かを判定する基準は、以下の2つの条件を満たす場合である:
1.少なくとも2つ以上の前記パーティションにデータ書き込みまたはデータ読み出しが要求されている場合
2.前記データ書き込み要求または前記データ読み出し要求の各々のデータサイズが、前記複数のセルの単位以上ある場合
請求項1乃至4のいずれか1項に記載のメモリ・デバイス。
【請求項6】
前記コントローラが前記データサイズ分割が必要であるか否かを判定する基準は、以下の3つの条件を満たす場合である:
1.少なくとも1つ以上の前記パーティションにデータ書き込みまたはデータ読み出しが要求されている場合
2.少なくとも1つ以上のクエリー要求がある場合
3.前記データ書き込み要求または前記データ読み出し要求の各々のデータサイズが、前記複数のセルの単位以上ある場合
請求項1乃至4のいずれか1項に記載のメモリ・デバイス。

【図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

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate