説明

メモリ・デバイス、ホスト・デバイス

【課題】ポーリング中の負担を軽減できるメモリ・デバイス、ホスト・デバイスを提供する。
【解決手段】実施形態によれば、メモリ・デバイスは、複数のメモリセルを備える不揮発性メモリ11と、前記不揮発性メモリを制御するコントローラ12とを具備する。コントローラ12は、ブート動作の際に、デバイスの初期化が要求されると、前記初期化の終了まで前記要求の返信を返さず、初期化が終了したら前記要求の返信を行い、ホスト・デバイス2からの論理アドレスを割り当てられた書き込みデータを前記メモリに書き込む要求に対して前記書き込みデータの分割された部分である書き込みデータ部分をそのサイズを指定して送信することを前記ホスト・デバイス2に要求する。

【発明の詳細な説明】
【技術分野】
【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】
実施形態によれば、一態様に係るメモリ・デバイスは、複数のメモリセルを備える不揮発性のメモリと、前記不揮発性のメモリを制御するコントローラとを具備し、前記コントローラは、ブート動作の際に、デバイスの初期化が要求されると、前記初期化の終了まで前記要求の返信を返さず、初期化が終了したら前記要求の返信を行い、ホスト・デバイスからの論理アドレスを割り当てられた書き込みデータを前記メモリに書き込む要求に対して前記書き込みデータの分割された部分である書き込みデータ部分をそのサイズを指定して送信することを前記ホスト・デバイスに要求する。
【図面の簡単な説明】
【0008】
【図1】参考例に係るBootシーケンス例を示すフロー図。
【図2】参考例のクライアント・サーバ・モデルに基づくメモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を示すフロー図。
【図3】第1の実施形態に係るメモリ・デバイスのハードウェア上の構成を示すブロック図。
【図4】第1の実施形態に係るメモリ・デバイスが封止された形態の例を示す図。
【図5】第1の実施形態に係るメモリ・デバイス機能ブロックを示す図。
【図6】第1の実施形態に係るメモリ・デバイスのパケットの例を示す図。
【図7】第1の実施形態に係る論理アドレスと物理ブロックの変換テーブルの例を示す図。
【図8】第1の実施形態に係るLUをより詳細に示す機能ブロック図。
【図9】第1の実施形態に係るBootシーケンス例を示すフロー図。
【図10】第2の実施形態に係るBootシーケンス例を示すフロー図。
【発明を実施するための形態】
【0009】
[参考例]
実施形態の説明に先立ち、図1および図2を用い、参考例について簡単に説明する。
【0010】
図1は、Universal Flash Memory (UFS)におけるブート(Boot)シーケンス例を示すフロー図である。
【0011】
図示するように、ホストおよびデバイスは、ステップSt1〜St2.2において、デバイス初期化に必要な動作を行う。
【0012】
続いて、ステップSt3の際に、ホストは、デバイスに対してQuery Requestを発行し、初期化開始を指示する。この際、ホストは、UPIUを通じて、フラグ値としてbDeviceInit='1'を設定する。
【0013】
続いて、ステップSt3.1の際に、デバイスは、デバイス初期化を開始し、ホストに対して、Query Responseを返信する。
【0014】
続いて、ステップSt4の際に、ホストは、デバイスに対してQuery Request を発行し、UPIUを通じて、デバイスの初期化が終了したかどうかを問い合わせる。
【0015】
これに対して、ステップSt4.1の際に、デバイスは、ホストに対して、Query Responseを返信し、初期化終了したかどうかの状態を示す。
【0016】
続いて、ステップSt5の際に、同様に、ホストは、デバイスに対してQuery Request を発行し、UPIUを通じて、デバイスの初期化が終了したかどうかを問い合わせる。
【0017】
これに対して、ステップSt5.1の際に、同様に、デバイスは、ホストに対して、Query Responseを返信し、初期化終了したかどうかの状態を示す。
【0018】
続いて、ステップSt6の際に、同様に、ホストは、デバイスに対してQuery Request を発行し、UPIUを通じて、デバイスの初期化が終了したかどうかを問い合わせる。
【0019】
これに対して、ステップSt6.1の際に、同様に、デバイスは、ホストに対して、Query Responseを返信し、デバイス初期化終了したことを示す。この際、デバイスは、UPIUを通じて、フラグ値としてbDeviceInit='0'を設定する。
【0020】
これを受けて、ホストは、デバイスの初期化が完了したことを検出し、Boot処理が終了する。
【0021】
上記のように、参考例では、ホスト側は、デバイスの初期化が完了したかどうかをポーリングして待たなければならない(フラグ値としてのbDeviceInit='1'のポーリング)。より具体的には、この参考例では、ホスト側は、デバイスに対して初期化指示後、Query Requestによる初期化終了の確認を3回行い、3回目でホストが初期化終了を認識する。すなわち、このポーリングをしている間、ホスト側は、デバイス側の監視のためにリソースを割り当てる必要がある。
【0022】
次に、図2を用い、クライアント・サーバ・モデルに基づくメモリ・デバイスとホスト・デバイスとの間のデータ書き込みの際の通信の例を説明する。
【0023】
図2に示されているように、ホスト・デバイスは書き込みコマンドを発行することにより、書き込みを開始する。書き込みコマンドは、書き込みの位置を指定する論理アドレスおよび、この書き込みコマンドの対象の書き込みデータのサイズの情報を含んでいる。書き込みコマンドを受け取ると、メモリ・デバイスは、書き込みデータの転送要求の内容を決定する。転送要求には、書き込みデータのうちのメモリ・デバイスがホスト・デバイスからの転送を望む部分の大きさおよびオフセット・アドレスが含まれることになっている。オフセット・アドレスは、メモリ・デバイスが転送を望む部分の位置を特定するためのものである。ホスト・デバイスは、転送要求を受け取ると、要求されたデータ部分をメモリ・デバイスに転送する。メモリ・デバイスは、受け取ったデータ部分をメモリに書き込むことと、別のデータ部分の転送要求を送信することと、を実行する。この書き込みと転送要求は、書き込みデータ全体が書き込まれるまで継続する。書き込みデータ全体の書き込みの成功または失敗に応じて、メモリ・デバイスはホスト・デバイスに相応するレスポンスを送信する。
【0024】
このように、図2の例では、メモリ・デバイスが書き込みデータ部分を決定し、転送要求を送信する。この書き込みにおいて、規格によって定められている事項と定められていない事項がある。例えば、メモリ・デバイスによる転送要求内のオフセット・アドレスがシーケンシャルであるかランダムであるかはホスト・デバイスにおいて任意に設定され、オフセット・アドレスの選択は、この設定に従わなければならない。一方、例えば、転送要求によって指定されるデータ部分の大きさは、仕様において定められていない場合がある。
【0025】
なお、クライアント・サーバ・モデルに基づかないメモリ・デバイスとして、SDTMカードおよびeMMCが一例としてある。
【0026】
以下に、このような知見に基づいて構成された実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0027】
[第1の実施形態]
次に、第1の実施形態について説明する。
まず、図3は、第1の実施形態に係るメモリ・デバイスを概略的に示している。図3は、メモリ・デバイスのハードウェア上の構成を示している。
【0028】
図示するように、メモリ・デバイス1は、ホスト・デバイス(以下、単にホストと称する場合がある)2と通信できるように構成されている。メモリ・デバイス1とホスト2は、少なくとも、ホスト2からの書き込み要求に対して、メモリ・デバイス1が書き込みデータの部分のサイズおよび位置を指定できる方式でホスト2と通信する。例えば、メモリ・デバイス1は、ホスト・デバイス2からの論理アドレスを割り当てられた書き込みデータをメモリに書き込む要求に対して、書き込みデータの分割された部分である書き込みデータ部分を、そのサイズを指定して送信することをホスト・デバイス2に要求すること等が可能である。より具体的には、メモリ・デバイス1とホスト2、クライアント・サーバ・モデルに基づいて通信する。メモリ・デバイス1は、ターゲットとして動作し、ホスト2はイニシエータとして動作する。さらに具体的な例として、メモリ・デバイス1はUFSメモリ・デバイスであり、ホスト2はUFSメモリ・デバイスをサポートするホストである。
【0029】
メモリ・デバイス1は、少なくとも、不揮発性の半導体メモリ11と、メモリ11を制御するためのメモリ・コントローラ12とを含んでいる。メモリ11は、複数ビットからなる特定の書き込み単位でデータの書き込みおよび読み出しを行う。さらに、メモリ11は、複数の書き込み単位からなる消去単位でデータを消去する。
【0030】
例えば、メモリ11は1つまたは複数のNAND型フラッシュ・メモリからなる。メモリ11がNAND型フラッシュ・メモリである場合、メモリ11は、ページ単位でデータの書き込みおよび読み出しを行う。ページは、複数の接続されたメモリセルの集合のメモリ空間からなり、固有の物理アドレスを割り当てられている。また、メモリ11がNAND型フラッシュ・メモリである場合、メモリ11は、ブロック単位でデータの消去を行う。各ブロックは、連続する物理アドレスを有する複数のページからなる。各メモリセルは、いわゆる積層ゲート構造のMOSFET(metal oxide semiconductor field effect transistor)からなる。各セルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリ11がNAND型フラッシュ・メモリである場合、セルトランジスタが2つ以上の閾値電圧の異なる状態を取り得る、つまりメモリセルが多値(多ビット)を記憶できるように、メモリ11が構成されていてもよい。以下の説明では、便宜上、書き込み単位をページとし、消去単位をブロックとする。しかしながら、メモリ11は、必ずしもNAND型フラッシュ・メモリに限られない。
【0031】
メモリ・デバイス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内に電圧レギュレータが設けられる際の入力端子である。
【0032】
コア・ロジック部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を含んでいる。
【0033】
I/O21は、ホスト・インターフェース31と接続されている。ホスト・インターフェース31は、メモリ・デバイス1とホスト2が通信するのに必要な処理を行なう。より具体的には、ホスト・インターフェース31は、メモリ・デバイス1とホスト2がともに準拠している通信プロトコルに則ってメモリ・デバイス1とホスト2との間の通信を担う。メモリ・デバイス1がUFSメモリ・デバイスである場合、例えば、ホスト・インターフェース31は、UFSインターフェースである。UFSインターフェースは、物理層についてはM−PHY規格に則っており、リンク層についてはUniPro規格に則っている。
【0034】
ホスト・インターフェース31は、バッファ32と接続されている。バッファ32は、ホスト2からメモリ・デバイス1に送信されたデータをホスト・インターフェース31を介して受け取り、これを一時的に保持する。また、バッファ32は、メモリ・デバイス1からホスト・インターフェース31を介してホスト2へ送信されるデータを一時的に保持する。バッファ32はデータ・バス33と接続されている。
【0035】
I/O31は、メモリ・インターフェース34と接続されている。メモリ・インターフェース34は、メモリ・コントローラ12がメモリ11と通信するのに必要な処理を行なう。より具体的には、メモリ・インターフェース34は、コア・ロジック部22からの指示をメモリ11が認識可能な形態で送信する。メモリ11がNAND型フラッシュ・メモリである場合、メモリ・インターフェース34は、NANDフラッシュ・インターフェースである。
【0036】
メモリ・インターフェース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に供給する。
【0037】
データ・バス33は、制御バス41と接続されている。制御バス41には、CPU42、ROM43、RAM45、レジスタ46が接続されている。CPU42、ROM43、RAM45、レジスタ46は、制御バス41を介して相互に通信する。CPU42は、メモリ・デバイス1の全体の動作を司る。CPU42は、ROM43に格納されている制御プログラム(命令)に従ってホスト2から受けたコマンドに従ってメモリ11に対する所定の処理を実行する。CPU42は、制御プログラムに従ってホスト2から受けたコマンドに従ってメモリ11に対する所定の処理を実行したりする。
【0038】
ROM43は、CPU42により制御される制御プログラムなどを格納する。RAM45は、CPU42の作業エリアとして使用され、CPU42の作業に必要な変数等を一時的に記憶する。レジスタ46は、メモリ・デバイス1の動作に必要な種々の値を保持する。また、レジスタ46は、ホスト2が、メモリ・デバイス2を制御するのに必要な種々の値を保持する。
【0039】
制御バス41には、ホスト・インターフェース31、バッファ32、メモリ・インターフェース34、バッファ35が接続されている。CPU42は、制御プログラムやホスト2からの指示に基づいて、ホスト・インターフェース31、バッファ32、メモリ・インターフェース34、バッファ35を制御する。メモリ・コントローラ12には、アナログ回路51が設けられていてもよい。
【0040】
<メモリ・デバイスの封止された形態について>
メモリ・デバイス1は、例えば、プリント基板上に半田実装される埋め込み型でも良いし、ホスト2に設けられたカードスロットに対して脱着可能なリムーバブル型でも良い。
【0041】
図4は、封止された形態のメモリ・デバイス1の例を示している。図4に示されているように、プリント基板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との間で信号を通信する。BGA(ball grid array)が設けられている。プリント基板201、メモリ11、メモリ・コントローラ12、ワイヤ202は、例えば樹脂製のパッケージ203により封止されている。
【0042】
<メモリ・デバイスの機能ブロックについて>
次に、図5に、メモリ・デバイス1の構成の別の視点を示す。より具体的には、図5は、メモリ・デバイス1の論理構成、すなわち機能ブロックを示している。各ブロックは、ハードウェア、コンピュータ・ソフトウェアのいずれかまたは両者を組み合わせたものとして実現されることが可能である。各機能ブロックが、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も実施形態の範疇に含まれる。また、各機能ブロックが、以下の具体例のように区別されていることは、必須ではない。例えば、一部の機能が以下の説明において例示されている機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示のブロックがさらに細かい機能サブブロックに分割されていてもよい。どのブロックによって特定されるかによって実施形態が限定されるものではない。
【0043】
図示するように、メモリ・デバイス1は、ターゲット・ポート61、ルータ62、デバイス・マネージャ63、デスクリプタ64、アトリビュート65、フラグ66、複数のロジカル・ユニット(LU:logical unit)67を含んでいる。
【0044】
ターゲット・ポート61は、メモリ・デバイス1がホスト1と通信可能に接続されるためのポートであり、例えばホスト・インターフェース31に対応する。ルータ62は、ホスト2から受信された通信(タスク、コマンド、データ、クエリー等)を宛先のLU67にルーティングする。ホスト2は、コマンドの処理またはタスク管理機能を、1つのLU67を宛先とする要求を通じて要求する。
【0045】
LU67同士は、アドレス(例えばLUN(logial unit number))により相互に識別されることが可能である。LUNは、例えば、図6に示されているように、メモリ・デバイス1とホスト2との間の通信(パケット)に含められることが可能である。図6に示されているように、パケット101は、LUN102と、実体部103とを含んでいる。LUN102は、例えばパケット101のヘッダに含められることが可能である。実体部103は、パケットの機能に固有の内容、例えばコマンド、データ、各種のパラメータ等を含んでいる。各パケットの宛先のLU62は、LUNにより一意に特定される。UFSメモリ・デバイスでは、メモリ・デバイス1とホスト2との間のパケットはいずれもヘッダを含んでおり、ヘッダ内にLUNが記述されている。
【0046】
ルータ62は、ホスト2から受信された通信(タスク、コマンド、データ、クエリー)を、この通信中のLUN103に基づいて、宛先のLU67にルーティングする。また、ルータ62は、複数のLU67からホスト2宛ての通信を例えば時分割によって適当な順序でターゲット・ポート61に送信する。ルータ62は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0047】
デバイス・レベル・マネージャ63は、デバイス・レベルの動作およびコンフィギュレーションの管理を行なう。デバイス・レベルの管理には、例えば、メモリ・デバイス1の電力管理、スリープ等の制御等が含まれる。デバイス・レベルのコンフィギュレーションには、デスクリプタの組を保持すること等が含まれる。デバイス・レベル・マネージャ63は、ホスト2からのメモリ・デバイス1のコンフィギュレーション情報の変更および出力要求であるクエリー要求のようなコマンドを処理する。デバイス・レベル・マネージャ63は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。
【0048】
デスクリプタ64、アトリビュート65、フラグ66は、例えばワークRAM45中のデータとして実現される。デスクリプタ64は、予め定義されたフォーマットのデータ構造を有し、メモリ・デバイス1についての何らかの特徴を記述するためのものである。デスクリプタ64には、例えば、メモリ・デバイス1にアクセスするのに必要なデバイス・クラス、サブ・クラス、プロトコル等が含まれる。アトリビュート65は、メモリ・デバイス1に与えられた設定を示す変更可能または読み出し専用のパラメータである。アトリビュート65には、例えば、メモリ・デバイス1とホスト2との間で転送可能なデータの最大値等が含まれる。フラグ66は、種々の項目についての択一的な論理値からなり、例えば「真」または「偽」、あるいは「0」または「1」等により表わされる。
【0049】
各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によって実行される。
【0050】
各LU67は、デバイス・サーバ71、タスク・マネージャ72、メモリ領域73を含んでいる。メモリ領域73は、メモリ11のメモリ領域のうちの一部から構成され、ホスト2からの書き込みデータを実際に格納する。デバイス・サーバ71およびタスク・マネージャ72は、例えばCPU42、ROM43、レジスタ46により実現される。すなわち、CPU42によって、ROM43中のプログラムが、レジスタ46中の値を参照しながら実行されることを通じて実現される。デバイス・サーバ71は、ホスト2から受信されたLUレベルの処理を要求するコマンドを解釈し、実行する。そのような処理には、例えば、データの書き込み、読み出し、消去等が含まれる。LU67はメモリ領域73を含んでいるので、デバイス・サーバ71は、少なくともメモリ領域73(メモリ11)を制御する機能を有している。タスク・マネージャ72は、複数のコマンド(タスク)の実行の順序を制御し、タスク管理機能を提供する。
【0051】
上記のように、デバイス・サーバ71は、メモリ11の制御に関する処理を行なう。そのような処理には、論理アドレスと物理アドレスの変換が含まれる。論理アドレスは、ホスト2によって、ホスト2がメモリ・デバイス1に書き込むことを望むデータに割り当てられるアドレスである。物理アドレスは、上記のように、メモリ11の書き込み領域(ページ)または消去領域(ブロック)を特定するためのアドレスである。デバイス・サーバ71は、自身に対応するメモリ領域73によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。その管理のために、デバイス・サーバ71は、例えば論理アドレス・物理アドレス変換テーブル(以下、単に変換テーブルと称する場合がある)を保持している。
【0052】
変換の例として、例えば、図7に示されているように、割り当てをブロックとすることができる。各ブロック中の各ページに対して、固定の論理アドレス・オフセットが割り当てられている。図7は、メモリ11の書き込み単位の大きさが16kBであり、論理アドレスが512Bサイズのデータごとに割り当てられている例を示している。
【0053】
<通信の時のロジカル・ユニットLU67について>
次に、図8を参照して、通信の際のLU67について説明する。図8は、第1実施形態に係る通信時のロジカル・ユニットLUの詳細を示す機能ブロック図である。複数のLU67のうち、少なくとも1つ、典型的には全てが以下に図8を参照して説明する構成を有している。
【0054】
図示するように、デバイス・サーバ71は、管理部81と、コマンド解析部82と、転送要求生成部83と、メモリ制御部84を含んでいる。
【0055】
管理部81は、デバイス・サーバ71の全体を管理する。コマンド解析部82は、ホスト2からルータ62を介してコマンドを受信する。コマンド解析部82は、受信されたコマンドを解析する。コマンド制御部82は、書き込みコマンドを受信すると、転送要求生成部83に、転送要求の決定(生成)を要求する。この転送要求生成部83への要求は、コマンド解析部82が直接行なってもよいし、管理部81により行われてもよい。転送要求生成部83は、要求を受けると、書き込みコマンドに含まれている書き込みデータのサイズおよびアドレスに基づいて転送要求を生成する。メモリ制御部84は、管理部81の指示に従って、メモリ11に対するあらゆる指示の発行を担う。
【0056】
<ブート動作について>
次に、図9を参照して、第1の実施形態に係るBoot動作について説明する。
【0057】
図示するように、まず、ステップSt1の際に、ホスト2は、デバイスに対して、Query Request UPIUを発行し、デバイスから起動のための情報(Descriptor)を要求する。
【0058】
続いて、ステップSt1.1の際に、デバイス1は、情報(Descriptor)を読み出し(READ DESCRIPTOR)、読み出したDescriptorを、UPIUを通じて、ホスト2に送信する。この際、送信される情報(Descriptor)は、パケット101中のLUN102と共に実態部103に含められる。
【0059】
続いて、ステップSt2の際に、ホスト2は、デバイスに対して、ブートコード(boot code)の読み出しを要求する(SCSI READ (Boot LU))。
【0060】
続いて、ステップSt2.1の際に、デバイス1は、ブートコード(boot code)を読み出し、ホストに対して、読み出したboot codeを送信する。この際においても、送信される情報boot codeは、パケット101中のLUN102と共に実態部103に含められる。
【0061】
続いて、ステップSt2.1の際に、デバイス1は、全てのboot code送信後、ホスト2に対して、status信号を送信する。同様に、送信されるstatus信号は、パケット101中のLUN102と共に実態部103に含められる。
【0062】
このstatus信号を受けたホスト2は、ブートコードの読み出しを完了する。
【0063】
続いて、ステップSt3の際に、ホスト2は、デバイス1に対して、Query Requestを発行し、初期化開始を指示する。この際、ホストは、UPIUを通じて、フラグ値としてbDeviceInit='1'を設定する。
【0064】
Query Requestを受信したデバイス1は、デバイス1の初期化を開始する。
【0065】
続いて、ステップSt3.1の際に、デバイスの初期化が完了すると、デバイス1は、ホスト2に対して、Query Responseを返信し、初期化が完了できる状態であることを示す。
【0066】
このように、第1の実施形態では、デバイス1の初期化が完了したら、デバイス1がQuery Responseを返信し、ホスト2がデバイス1に対してQuery Request を発行してUPIUを通じてデバイス1の初期化が終了したかどうかを問い合わせることを行わない。そのため、参考例のように、ホストが、デバイスの初期化が完了したかどうかをポーリングして待つ(フラグ値としてのbDeviceInit='1'のポーリング)必要がない。そのため、このポーリングをしている間、ホスト2は、デバイス1の監視のためにリソースを割り当てる必要がない。
【0067】
換言すると、第1の実施形態は、ホスト2の側は、デバイス1の初期化が完了するまで、ポーリングをするシステムである。しかしながら、ホスト2は、初期化が完了するまでデバイス1がQuery Responseを返信しないため、ホスト2がデバイス1に対して初期化終了を問い合わせることがない。そのため、ホスト2は、デバイス1が初期化完了後に発行するQuery Responseの返信まで、何度もポーリングをする必要がなく、1度の確認のみで済む点で、メリットがある。
【0068】
また、Query Responseの返信があってから、ホスト2が1度目に問い合わせしたときには、すでに初期化完了が確定しているため、確実に1回の問い合わせで済む点で有利である。加えて、実装を知らない汎用ホストに対しても互換性を損なわない点でも有利である。
【0069】
続いて、ステップSt4の際に、ホスト2は、デバイス1に対してフラグ値(FLAG bDeviceInit='0')を得るためのQuery Request を発行する。
【0070】
これに対して、ステップSt4.1の際に、デバイス1は、ホスト2に対して、Query Responseを返信し、フラグ値(bDeviceInit='0')を返信する。この際においても、送信されるフラグ値(bDeviceInit='0')は、パケット101中のLUN102と共に実態部103に含められる。この際、送信されるフラグ値(bDeviceInit='0')は、デバイス1の全体の初期化のために全てのLUN102に一括して送信される。
【0071】
Query Responseを受信したホスト2は、フラグ値(bDeviceInit='0')により、デバイス1の初期化が完了したことを検出できる。
【0072】
<作用効果>
第1の実施形態によれば、少なくとも下記(1)の効果が得られる。
【0073】
(1)ポーリング中の負担を軽減できる。
このように、第1の実施形態では、デバイス1の初期化が完了するまでQuery Responseを返信せず、デバイス1の初期化が完了したらデバイス1がQuery Responseを返信する。そのため、ホスト2は、デバイス1がQuery Responseを返信するまで、デバイス1に対してQuery Request を発行してUPIUを通じてデバイス1の初期化が終了したかどうかを問い合わせることを行わない。
【0074】
そのため、参考例のように、ホスト2が、デバイスの初期化が完了したかどうかをポーリングして待つ(フラグ値としてのbDeviceInit='1'のポーリング)必要がない。そのため、このポーリングをしている間、ホスト2は、デバイス1の監視のためにリソースを割り当てる必要がない。これにより、ホスト2は、自身の処理に専念することができ、起動時間の短縮につながる。また、ポーリングの機能を削除することができるので、そのための機能を削減(コード量減、消費電力源など)することができる。
【0075】
より具体的には、第1の実施形態では、ホスト2は、初期化要求のQuery Requestを送信して、そのQuery Responseを受信したら、初期化完了終了確認のためのQuery Requestを1回発行するだけで、デバイス1の初期化が終了したかどうかを認識することができる。
【0076】
よって、ホスト2は、ポーリングのためのQuery Requestを1回発行するだけで、デバイス1の初期化終了を知ることができる。これにより、デバイス1は、初期化中にホストからのコマンド処理をせずに済むため、初期化中にホスト2のコマンドを処理するための機能(例えば、コード量、消費電力源等)を削減することができる。
【0077】
このように、第1の実施形態によれば、Boot動作において、メモリ・デバイス1およびホスト・デバイス2のいずれのポーリング中の負担を軽減することができる点で有利である。
【0078】
また、Query Responseの返信があってから、ホスト2が1度目に問い合わせしたときには、すでに初期化完了が確定しているため、確実に1回の問い合わせで済む点で有利である。
【0079】
加えて、実装を知らない汎用ホストに対しても互換性を損なわない点でも有利である。
【0080】
[第2の実施形態]
次に、第2の実施形態について、図10を用いて説明する。第2の実施形態は、ホスト2が、デバイス1が初期化を完了した後に初めてQuery Responseを返すことを認識する場合に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
【0081】
<ブート動作について>
図10を参照して、第2の実施形態に係るBoot動作について説明する。
【0082】
図示するように、第2の実施形態では、まず、ステップSt1の際に、ホスト2は、デバイスに対して、Query Request UPIUを発行し、デバイスから起動のための情報(Descriptor)を要求する。
【0083】
続いて、ステップSt1.1の際に、デバイス1は、情報(Descriptor)を読み出し(READ DESCRIPTOR)、読み出したDescriptorを、UPIUを通じて、ホスト2に送信する。この際、送信される情報(Descriptor)は、パケット101中のLUN102と共に実態部103に含められる。
【0084】
続いて、ホスト2は、受信したデバイス1からのデバイス情報(Device Descriptor)中のフラグ有無を読み出すことで、ポーリング動作が不要であると判断する点で、上記第1の実施形態と相違する。そのため、第1の実施形態の上記ステップSt4およびSt4.1をさらに省略できる。
【0085】
その他の構成、動作等に関しては、上記第1の実施形態と実質的に同様であるため、詳細な説明を省略する。
【0086】
<作用効果>
上記のように、第2の実施形態によれば、少なくとも上記(1)と同様の効果が得られる。
【0087】
さらに、第2の実施形態では、ステップSt1の際に要求した受信したデバイス1からの情報(Device Descriptor)中のフラグ有無を読み出すことで、ポーリング動作が不要であると判断する点で、上記第1の実施形態と相違する。
【0088】
そのため、第1の実施形態の上記ステップSt4およびSt4.1をさらに省略でき、さらにブート動作におけるメモリ・デバイス1およびホスト・デバイス2の負担を低減できる点で有利である。
【0089】
このように、必要に応じて、本例を適用することが可能である。
【0090】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0091】
1…メモリ・デバイス、2…ホスト・デバイス、11…メモリ、12…メモリ・コントローラ。

【特許請求の範囲】
【請求項1】
複数のメモリセルを備える不揮発性のメモリと、
前記不揮発性のメモリを制御するコントローラとを具備し、
前記コントローラは、ブート動作の際に、デバイスの初期化が要求されると、前記初期化の終了まで前記要求の返信を返さず、初期化が終了したら前記要求の返信を行い、
ホスト・デバイスからの論理アドレスを割り当てられた書き込みデータを前記メモリに書き込む要求に対して前記書き込みデータの分割された部分である書き込みデータ部分をそのサイズを指定して送信することを前記ホスト・デバイスに要求する
メモリ・デバイス。
【請求項2】
ブート動作の際に、メモリ・デバイスに要求したデバイス情報を読み出すことで、前記メモリ・デバイスの初期化を要求したとき、前記メモリ・デバイスからの前記要求の返信を受信した段階で、前記メモリ・デバイスの初期化が完了したと判断し、
論理アドレスを割り当てた書き込みデータを書き込むことをメモリ・デバイスへ要求し、前記書き込みデータの分割された部分である書き込みデータ部分をそのサイズを指定して送信することを前記メモリ・デバイスから要求される
ホスト・デバイス。
【請求項3】
前記初期化が終了した際の返信には、返信パケット中のアドレスともに送信される実体部のフラグ値が含まれる
請求項1または2に記載のメモリ・デバイスまたはホスト・デバイス。
【請求項4】
前記実体部中のフラグ値は、前記メモリ・デバイスが有する不揮発性メモリの全てのアドレスに一括して送信される
請求項3に記載のメモリ・デバイスまたはホスト・デバイス。
【請求項5】
前記メモリ・デバイスが、UFSに基づいたメモリ・デバイスである
請求項1乃至4のいずれかに記載のメモリ・デバイスまたはホスト・デバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


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