説明

情報処理装置

【課題】ホスト装置と半導体記憶装置間のインターフェイスバンド幅を増大させることなく、半導体記憶装置のバッファメモリの容量を低減させる。
【解決手段】ホスト装置は、半導体記憶装置に対するライト要求をライトコマンドとライトコマンドに対応するライトデータに分離し、ライトコマンドを半導体記憶装置に出力し、ライトデータをメインメモリに記憶させる。半導体記憶装置は、ホスト装置から転送されるライトコマンドを受信し、該ライトコマンドの実行時にメインメモリに記憶された該ライトコマンドに対応するライトデータを半導体記憶装置に転送させ、不揮発性半導体メモリに書き込む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メインメモリを有するホスト装置と、不揮発性半導体メモリを有する半導体記憶装置とを備える情報処理装置に関する。
【背景技術】
【0002】
複数の演算プロセッサが集積されるGPU(Graphical Processing Unit)などで、複数の演算プロセッサ間で一つのメモリを共有するUMA(Unified Memory Architecture)という技術がある。UMAによれば、メモリコストの低減を図ることができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−269165号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一つの実施形態は、ホスト装置と半導体記憶装置間のインターフェイスバンド幅を増大させることなく、半導体記憶装置のバッファメモリの容量を低減させることを目的とする。
【課題を解決するための手段】
【0005】
本発明の一つの実施形態によれば、情報処理装置は、ホスト装置と、半導体記憶装置とを備える。ホスト装置は、メインメモリと、前記半導体記憶装置に対するライト要求をライトコマンドと前記ライトコマンドに対応するライトデータに分離し、ライトコマンドを前記半導体記憶装置に出力し、ライトデータを前記メインメモリに記憶させる第1の制御部とを備える。前記半導体記憶装置は、不揮発性半導体メモリと、前記ホスト装置から転送される前記ライトコマンドを受信し、該ライトコマンドの実行時に前記メインメモリに記憶された該ライトコマンドに対応するライトデータを半導体記憶装置に転送させ、前記不揮発性半導体メモリに書き込む第2の制御部とを備える。
【図面の簡単な説明】
【0006】
【図1】図1は、情報処理装置の構成例を示すブロック図である。
【図2】図2は、ライト処理の際の情報処理装置側の動作例を示すフローチャートである。
【図3】図3は、ライト処理の際の半導体記憶装置及び情報処理装置側の動作例を示すフローチャートである。
【図4】図4は、リード処理の際の半導体記憶装置及び情報処理装置側の動作例を示すフローチャートである。
【発明を実施するための形態】
【0007】
(実施形態)
図1に、本実施形態の情報処理装置の構成例を示す。本情報処理装置は、ホスト装置(以下、ホストと略す)10と、ホスト10の記憶装置として機能するメモリシステム(半導体記憶装置)20とを備える。メモリシステム20は、eMMC(Embedded Multi Media Card)規格に準拠した組み込み用途のフラッシュメモリや、SSD(Solid State Drive)などである。情報処理装置は、例えば、パーソナルコンピュータ、携帯電話、撮像装置などである。
【0008】
メモリシステム20は、不揮発性半導体メモリとしてのNANDフラッシュ21、NANDインタフェース(NANDI/F)24、DMAコントローラ25、バッファメモリ26、ECC回路27、ストレージコントローラ28、ストレージインタフェース(ストレージI/F)29を有する。
【0009】
NANDフラッシュ21は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有する。個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDフラッシュ21は、データ消去の単位であるブロックを複数配列して構成される。さらに、各ブロックは、複数のページより構成されている。各ページは、データの書き込み及び読み出しの単位である。NANDフラッシュ21は、例えば、複数のメモリチップによって構成される。
【0010】
NANDフラッシュ21は、ホスト10から送信されるユーザデータ、メモリシステム20の管理情報、ホスト10で使用するOS23を記憶する。
【0011】
OS23は、ホスト10の制御プログラムとして機能する。
【0012】
論理物理変換テーブル(L2Pテーブル)22は、ホスト10がメモリシステム20にアクセスする際に使用する論理ブロックアドレス(LBA:Logical block address)と、NANDフラッシュ21内の物理アドレス(ブロックアドレス+ページアドレス+ページ内記憶位置)とを対応づけるアドレス変換情報である。これ以降、NANDフラッシュに記憶されているL2Pテーブル22をL2P本体と呼称する。
【0013】
NANDI/F24は、ストレージコントローラ28の制御に基づき、NANDフラッシュ21に対してデータおよび管理情報のリード/ライトを実行する。
【0014】
バッファメモリ26は、NANDフラッシュ21にライトするデータあるいはNANDフラッシュ21からリードされたデータを記憶するためのバッファとして用いられる。また、バッファメモリ26は、ホスト10から入力されるライト要求、リード要求などに関わるコマンドをキューイングするコマンドキュー26aと、後述するホスト10のメインメモリ13にキャッシュされるL2P情報のタグ情報26bを記憶する。例えば、バッファメモリ26は、SRAM又はDRAM等で構成されるが、レジスタ等で構成してもよい。
【0015】
ECC回路27は、バッファメモリ26から転送されてNANDフラッシュに21にライトすべきデータに対して、ECC処理(誤り訂正処理)におけるエンコード処理を行い、エンコード結果をデータに付加してNANDインタフェース24に出力する。また、ECC回路27は、NANDインタフェース24を介してNANDフラッシュ21からリードされたデータに対して、ECC処理におけるデコード処理(誤り訂正符号を用いた誤り訂正処理)を行い、誤り訂正されたデータをバッファメモリ26に出力する。
【0016】
DMAコントローラ25は、NANDインタフェース24と、ECC回路27と、バッファメモリ26との間のデータ転送を制御する。なお、ホスト10のストレージインタフェース(ストレージI/F)14内のレジスタ14aとバッファメモリ26との間のデータ伝送を、DMAコントローラ25によって行わせるようにしてもよいが、この実施形態では、レジスタ14aとバッファメモリ26との間のデータ伝送は、ストレージI/F29が行うこととする。
【0017】
ストレージインタフェース(ストレージI/F)29は、ホスト10と接続するためのインタフェースである。ストレージI/F29は、ホスト10のストレージI/F14内のレジスタ14aとメモリシステム20のバッファメモリ26との間のデータ伝送を制御する機能を有する。
【0018】
ストレージコントローラ28は、ファームウェアでその機能を実現され、バス30に接続されたメモリシステム20内の各構成要素を統括的に制御する。
【0019】
メモリシステム20では、論理アドレス(LBA)と物理アドレス(NANDフラッシュ21の記憶位置)との関係は静的に決定されておらず、データの書込み時に動的に関係付けられる。例えば、同じLBAのデータを上書きする場合は、つぎのような処理が行われる。論理アドレスA1にブロックサイズの有効なデータが割当られており、記憶領域としてはNANDフラッシュ21のブロックB1が使用されていたとする。ホスト10から論理アドレスA1のブロックサイズの更新データを上書きするコマンドを受信した場合、NANDフラッシュ21の未使用のフリーブロック(ブロックB2とする)を1個確保し、そのフリーブロックにホスト10から受信したデータを書き込む。その後、論理アドレスA1とブロックB2を関係付ける。その結果、ブロックB2は、内部に有効データを含む、アクティブブロックになり、ブロックB1に保存されたデータは無効になるためブロックB1はフリーブロックとなる。
【0020】
このように、メモリシステムでは、同じ論理アドレスA1のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。なお、ブロックサイズの更新データ書き込みでは、必ず書き込み先ブロックが変化するが、ブロックサイズ未満の更新データ書き込みでは、同じブロックに更新データが書き込まれることもある。例えばブロックサイズ未満のページデータが更新される場合、当該ブロック内において同じ論理アドレスの旧ページデータが無効化され、新たに書き込まれた最新のページデータが有効ページとして管理される。ブロック内の全データが無効化されると、当該ブロックはフリーブロックとして解放される。
【0021】
また、メモリシステム20ではブロック整理が実行される。メモリシステムにおいて、データの消去単位(ブロック)と、データの管理単位が異なる場合、NANDフラッシュ21の書き換えが進むと、無効な(最新ではない)データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、NANDフラッシュ21の記憶領域を有効利用できなくなる。そこで、例えば、NAND21のフリーブロックが所定の閾値より少なくなった場合、有効な最新のデータを集めて、違うブロックに書き直すコンパクション、ガベージコレクションなどのブロック整理を実行し、フリーブロックを確保する
【0022】
また、メモリシステム20では、ページ内の一部セクタの更新を行うときなどには、NANDフラッシュ21の記憶データを読み取って、変更を加えて、NANDフラッシュ21に書き戻すリード・モディファイ・ライト(RMW)を実行する。RMW処理においては、まず、更新セクタを含むページまたはブロックをNANDフラッシュ21からリードし、リードしたデータを、ホスト10から受信したライトデータと統合する。そして、この統合データをNANDフラッシュ21の新たなページまたは新たなブロックに書き込む。
【0023】
ホスト10は、CPU11、メインメモリインタフェース12、メインメモリ13、ストレージインタフェース(ストレージI/F)14、およびこれらを接続するバス16を備える。メインメモリI/F12は、メインメモリ13をバス16に接続するためのインタフェースである。
【0024】
メインメモリ13は、CPU11が直接アクセス可能な主記憶装置であり、本例では、DRAM(Dynamic random access memory)を使用する。メインメモリ13は、CPU11が使用する主記憶としての機能の他に、L2Pキャッシュ13a、ライトキャッシュ13bの格納領域として用いられる。また、メインメモリ13は、作業領域13cとしても用いられる。L2Pキャッシュ13aは、メモリシステム20のNANDフラッシュ21に格納されているL2P本体22の一部又は全部である。メモリシステム20のストレージコントローラ28は、メインメモリ13にキャッシュされたL2Pキャッシュ13aとNANDフラッシュ21に格納されているL2P本体22を使用して、NANDフラッシュ21に記憶されているデータにアクセスする際ののアドレス解決を行う。
【0025】
ライトキャッシュ13bには、ホスト10からメモリシステム20に書き込まれるライトデータが一時的に保存される。作業領域13cは、NANDフラッシュ21にデータを書き込む際の作業領域であり、具体的には、前述したブロックの整理やRMWなどを実行する際に使用される。
【0026】
ストレージI/F14は、メモリシステム20と接続するためのインタフェースである。ストレージI/F14は、DMAコントローラ15と、レジスタ14aを有する。DMAコントローラ15は、メインメモリ13のL2Pキャッシュ13a、ライトキャッシュ13b、作業領域13cとストレージI/F14内のレジスタ14aとの間でのデータ転送制御を実行する。
【0027】
CPU11は、ホスト10の動作を制御するプロセッサであり、NANDフラッシュ21からメインメモリ13にロードされるOS23を実行する。OS23にはメモリシステム20を制御するデイバスドライバ23aが含まれる。デバイスドライバ23aは、OS23またはOS23上のアプリケーションからメモリシステム20に対するライト要求を受け付けると、ライト要求をライトコマンドとライトデータに分離する。コマンドには、コマンドの種類(リード、ライトなど)を識別するフィールド、先頭LBAを指定するフィールド、データ長を指定するフィールドなどが含まれる。そして、デバイスドライバ23aは、コマンドはストレージI/F14を介してメモリシステム20に直接送信する。一方、デバイスドライバ23aは、分離したデータについては、メインメモリ13のライトキャッシュ13bに一旦格納する。
【0028】
図2は、ライト要求を受け付けた際のデバイスドライバ23aの動作手順を示すものである。デバイスドライバ23aは、OS23またはOS23上のアプリケーションからメモリシステム20に対するライト要求を受け付けると、ライト要求をコマンドとデータに分離する(ステップS100)。つぎに、デバイスドライバ23aは、コマンドはストレージI/F14を介してメモリシステム20に直接送信する。また、デバイスドライバ23aは、分離したデータをメインメモリ13のライトキャッシュ13bに一旦格納する(ステップS110)。ライトキャッシュ13bにキャッシュされたデータについては、この後、メモリシステム20のストレージコントローラ28の制御によって、メモリシステム20側に転送される。
【0029】
図3は、ライトコマンドを受信した際のメモリシステム20側の動作手順を示すものである。ホスト10からメモリシステム20に送信されたライトコマンドは、ストレージI/F29によってバッファメモリ26のコマンドキュー26aにセットされる(ステップS200、S210)。ストレージコントローラ28は、コマンドキュー26aにセットされた当該ライトコマンドの実行順番になり、当該ライトコマンドの実行が可能となると(ステップS220)、ライトコマンドに含まれるLBAが未書き込み状態であるか否かを判定する(ステップS230)。ここで、LBAが未書き込み状態とは、このLBAに対応する有効なデータがNANDフラッシュ21に記憶されていない状態である。
【0030】
LBAが未書き込み状態であるか否かの判定は、具体的には、例えば以下の手順で行われる。即ち、ストレージコントローラ28は、ライトコマンドに含まれるLBAがタグ情報26bにヒットするか否かを判定し、ヒットしない場合は、NANDフラッシュ21に記憶されているL2P本体22にヒットするか否か判定する。なお、タグ情報26bは、ホスト10のメインメモリ13のL2Pキャッシュ13bにキャッシュされているL2P情報が登録されたデータであり、タグ情報26bを検索することにより、L2Pキャッシュ13bにLBAに対応するL2P情報が格納されているか否か判定することが可能である。
【0031】
このようにタグ情報26b及びL2P本体22の検索により、LBAがヒットしないと判定された場合(ステップS230:Yes)、ストレージコントローラ28は、ホスト10のDMAコントローラ15に対し、ライトコマンドに対応するライトデータをライトキャッシュ13bから転送するためのデータ転送指令を出力する(ステップS240)。このデータ転送指令を受信したDMAコントローラ15は、メインメモリ13のライトキャッシュ13bに記憶されているライトデータをメインメモリ13のライトキャッシュ13bからストレージI/F14のレジスタ14aに転送する。このレジスタ14aにデータがセットされると、その旨がストレージI/F14からストレージI/F29に通知され、この通知を受けたストレージI/F29は、レジスタ14aにセットされたライトデータをバッファメモリ26に転送する(ステップS250)。
【0032】
ストレージコントローラ28が、メインメモリ13上のライトキャッシュ13bに記憶されたライトデータの記憶位置を特定できるようにするために、ライトコマンドにメインメモリ13での記憶位置を含ませるようにしてもよい。また、ライトキャッシュ13bをFIFO構造やリングバッファ構造とすることによりストレージコントローラ28がライトデータの記憶位置を特定可能とすることもできる。つまり、ライトデータは、FIFO構造のライトキャッシュ13bに対し、ライトコマンドが発生した順にセットする。ライトコマンドには、データ長が含まれているので、ストレージコントローラ28が、FIFO構造のライトキャッシュ13bの初期アドレスを認識していれば、ライトコマンドを受信する度に、データ長ずつアドレスに加算することで、ライトデータのメインメモリ13上での記憶位置に把握することができる。
【0033】
ステップS250の処理によってライトデータがバッファメモリ26にセットされると、ストレージコントローラ28はライトデータをECC回路27でECC符号化した後、NANDI/F24を介して、NANDフラッシュのフリーブロックに書き込む(ステップS350)。その後、このフリーブロックにライトコマンドで指定されたLBAを対応付けるようL2Pキャッシュ13a、タグ情報26b、さらにはL2P本体22を更新する(ステップS360)。なお、L2P本体に関しては、NANDフラッシュ21に対する書き込みの度に更新するのではなく、定期的に更新するようにしてもよい。
【0034】
L2Pキャッシュ13aの更新は次のようにして行われる。ストレージコントローラ28は、バッファメモリ26で新たなL2P情報を作成後、そのタグ情報をバッファメモリ26のタグ情報26bに追加し、ストレージI/F29にその旨を通知し、さらにホスト10のDMAコントローラ15に対しL2P情報を転送するための転送指令を出力する。これにより、ストレージI/F29は、バッファメモリ26で作成された新たなL2P情報をストレージI/F14のレジスタ14aにセットする。DMAコントローラ15は、レジスタ14aにセットされたL2P情報をメインメモリ13に転送し、L2P情報をL2Pキャッシュ13aにキャッシュする。
【0035】
一方、ステップS230において、ライトコマンドに含まれるLBAがタグ情報26bにヒットする場合(ステップS230:No)、ストレージコントローラ28は、ホスト10のDMAコントローラ15に対しL2P情報の転送指令を出力する。これにより、DMAコントローラ15は、メインメモリ13のL2Pキャッシュ13aに記憶されている、ヒットしたL2P情報をメインメモリ13からストレージI/F14のレジスタ14aに転送する。前述したように、レジスタ14aにデータがセットされると、その旨がストレージI/F14からストレージI/F29に通知され、この通知を受けたストレージI/F29は、レジスタ14aにセットされたL2P情報をバッファメモリ26に転送する。ストレージコントローラ28は、バッファメモリ26に転送されたL2P情報を用いてアドレス解決を行う。
【0036】
次に、ストレージコントローラ28は、アドレス解決により得られたLBAに対応する物理アドレスに記憶されたデータを含むページまたはブロックをNANDフラッシュ21から読み出してバッファメモリ26に転送させる(ステップS260)。つぎに、ストレージコントローラ28は、ホスト10のDMAコントローラ15に対しライトキャッシュ13bに記憶されているライトデータを転送するためのデータ転送指令を出力する(ステップS270)。このデータ転送指令を受信したDMAコントローラ15は、メインメモリ13のライトキャッシュ13bに記憶されているライトデータをメインメモリ13からストレージI/F14のレジスタ14aに転送する。このレジスタ14aにセットされたデータは、前記と同様にして、ストレージI/F29によってバッファメモリ26に転送される(ステップS280)。
【0037】
つぎに、ストレージコントローラ28は、NANDフラッシュ21から読み出してバッファメモリ26に書き込んだデータと、ライトキャッシュ13bから転送してバッファメモリ26に書き込んだデータとをバッファメモリ26上で合成する(ステップS290)。この合成が終了すると、ストレージコントローラ28は、その旨をストレージI/F29に通知し、さらにホスト10のDMAコントローラ15に対しデータを転送するための転送指令を出力する(ステップS300)。これにより、ストレージI/F29は、バッファメモリ26で合成されたデータをストレージI/F14のレジスタ14aにセットする。DMAコントローラ15は、レジスタ14aにセットされた合成データをメインメモリ13に転送し、この合成データを作業領域13cに記憶する(ステップS310)。
【0038】
この後、ストレージコントローラ28は、データの合成処理が終了したか否かを判定し(ステップS320)、データ合成処理が終了していない場合は、ステップS260〜S310の手順をデータ合成処理が終了するまで繰り返す。このようにして、メインメモリ13の作業領域13c上にできるだけ多くのブロック単位のデータを作成する。
【0039】
ストレージコントローラ28は、データの合成処理が終了すると、ホスト10のDMAコントローラ15に対しメインメモリ13の作業領域13cに記憶されている合成データを転送するためのデータ転送指令を出力する(ステップS330)。このデータ転送指令を受信したDMAコントローラ15は、メインメモリ13の作業領域13cに記憶されている合成データをメインメモリ13からストレージI/F14のレジスタ14aに転送する。このレジスタ14aにセットされたデータは、前記と同様にして、ストレージI/F29によってバッファメモリ26に転送される(ステップS340)。
【0040】
ステップS340の処理によって合成データがバッファメモリ26にセットされると、ストレージコントローラ28はライトデータをECC回路27でECC符号化した後、NANDI/F24を介して、NANDフラッシュのフリーブロックに書き込む(ステップS350)。その後、このフリーブロックにLBAを対応付け、旧アクティブブロックを無効化するようL2Pキャッシュ13a、タグ情報26b、さらにはL2P本体22を更新する(ステップS360)。
【0041】
なお、合成処理が、メインメモリ13からバッファメモリ26への1回のデータ転送で終了する場合は、バッファメモリ26で合成したデータをNANDフラッシュ21に直接書き込むようにしてもよい。
【0042】
図4は、リードコマンドを受信した際のメモリシステム20側の動作手順を示すものである。ストレージI/F29を介してメモリシステム20で受信されたリードコマンドは、ストレージI/F29によってバッファメモリ26のコマンドキュー26aにセットされる。このリードコマンドが実行可能な状態になると、ストレージコントローラ28は、リードコマンドに含まれるLBAがタグ情報26bにヒットするか否かを判定する(ステップS420)。ヒットする場合(ステップS420:Yes)、ストレージコントローラ28は、ホスト10のDMAコントローラ15に対しL2P転送指令を出力する(ステップS430)。これにより、DMAコントローラ15は、メインメモリ13のL2Pキャッシュ13aに記憶されている、ヒットしたL2P情報をメインメモリ13からストレージI/F14のレジスタ14aに転送する。レジスタ14aにセットされたL2P情報は、前記と同様にして、ストレージI/F29によってバッファメモリ26に転送される(ステップS440)。
【0043】
ストレージコントローラ28は、バッファメモリ26に転送されたL2P情報を用いてアドレス解決を行う。すなわち、ストレージコントローラ28は、LBAに対応付けれた物理アドレスをL2P情報から取得し、取得した物理アドレスに対応するデータをNANDフラッシュ21からリードさせる。ECC回路27は、NANDインタフェース24を介してNANDフラッシュ21からリードされたデータに対して、ECC処理におけるデコード処理を行い、誤り訂正されたデータをバッファメモリ26に出力する。この後、ストレージコントローラ28は、バッファメモリ26に記憶されたリードデータをホスト10に出力する。
【0044】
一方、ステップS420において、リードコマンドに含まれるLBAがタグ情報26bにヒットしない場合(ステップS420:No)、ストレージコントローラ28は、NANDフラッシュ21に記憶されているL2P本体の一部又は全てをバッファメモリ26にリードして検索する(ステップS460)。LBAがL2P本体でヒットしない場合は、リード処理を終了し、ホスト10にエラーを返信する。ストレージコントローラ28は、LBAがL2P本体でヒットした場合(ステップS470)、ヒットしたL2P情報を用いてアドレス解決を行う。すなわち、ストレージコントローラ28は、LBAに対応付けれた物理アドレスをL2P情報から取得し、取得した物理アドレスに対応するデータをNANDフラッシュ21からリードさせる。ECC回路27は、NANDインタフェース24を介してNANDフラッシュ21からリードされたデータに対して、ECC処理におけるデコード処理を行い、誤り訂正されたデータをバッファメモリ26に出力する。この後、ストレージコントローラ28は、バッファメモリ26に記憶されたリードデータをホスト10に出力する(ステップS480)。
【0045】
ストレージコントローラ28は、バッファメモリ26に読み出したL2P本体のうちの、リードコマンドに含まれるLBAに対応するL2P情報、あるいはリードコマンドに含まれるLBAを含む周辺LBAに対応するL2P情報をストレージI/F14のレジスタ14aに転送するようストレージI/F29に指令するとともに、ホスト10のDMAコントローラ15に対しL2P情報を転送するための転送指令を出力する。これにより、ストレージI/F29は、バッファメモリ26にバッファリングされているL2P情報をストレージI/F14のレジスタ14aにセットする。DMAコントローラ15は、レジスタ14aにセットされたL2P情報をメインメモリ13に転送し、このL2P情報をL2Pキャッシュにキャッシュする。これに伴い、ストレージコントローラ28は、バッファメモリ26のタグ情報26bを更新する。
【0046】
なお、メインメモリ13上に形成された作業領域13cは、前述したブロック整理、RMW等を行う際の作業領域としても使用される。また、上記実施形態では、L2Pキャッシュ13aのタグ情報26bをメモリシステム20側で持つこととしたが、タグ情報26bを持たずに、L2Pキャッシュ13aを直接検索するようにしてもよい。また、メモリシステム20のストレージI/F29がレジスタ14aと、バッファメモリ26間のデータ転送を行うこととしたが、ストレージコントローラ28にこのデータ転送を行わせるようにしてもよい。また、メインメモリ13とバッファメモリ26との間で直接データ転送を行わせるようにしてもよい。
【0047】
このようにこの実施形態においては、ホスト10のメインメモリ13がライトキャッシュ13b及びL2Pキャッシュ13aの格納領域として用いられる。これにより、バッファメモリ26のメモリ容量の低減を図ることができる。さらに、本実施形態では、ライト要求時にライトコマンドとライトデータとを分離し、ライトデータをホスト10のメインメモリ13に記憶し、ライトコマンドをメモリシステムのバッファメモリ26に記憶する。そして、メモリシステム20においてライトコマンドの実行時にホスト10のメインメモリ13からライトデータを読み出し、NANDフラッシュ21に書き込みを行う。これにより、ライトコマンドとライトデータを分離しない場合に比べ、ホスト10とメモリシステム20の間のインターフェイスバンド幅を低減することができる。つまり、ライトコマンドとライトデータを分離しない場合には、ライト要求時にホストからメモリシステムにライトコマンド及びライトデータが転送され、次いでメモリシステムがライトコマンドとライトデータを分離し、分離したライトデータをホスト10のメインメモリ13に転送するという動作になる。この場合、一度のライト要求に対して、ライトデータは、ホスト10とメモリシステム20の間のバスを3回転送されることとなり、インターフェイスバンド幅を増加させてしまう。これに対し、本実施形態の構成によれば、そのような課題を解決できる。
【0048】
なお、メモリシステムの起動時に、NANDフラッシュ21に記憶されているL2P本体22を、ホストのメインメモリ13にロードするようにしてもよい。また、メモリシステム20側に、L2P情報の一次キャッシュを設け、ホストのメインメモリにL2P情報の二次キャッシュを設ける、一次キャッシュ、二次キャッシュでヒットしない場合に、NANDフラッシュ21に記憶されているL2P本体22を検索するようにしてもよい。
【0049】
また、この実施形態では、メモリシステム20のストレージコントローラ28が使用する作業領域13cをメインメモリ13上に設けるようにしたので、メモリシステム側での作業領域のためのバッファの容量をおよび専有面積を低減することが可能となる。
【0050】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0051】
10 ホスト装置、、11 CPU、13 メインメモリ、13a L2Pキャッシュ、13b ライトキャッシュ、13c 作業領域、14 ストレージインタフェース、14a レジスタ、15 DMAコントローラ、20 メモリシステム、21 NANDフラッシュ、22 L2P本体、23a デバイスドライバ、25 DMAコントローラ、26 バッファメモリ、26a コマンドキュー、26b タグ情報、27 ECC回路、28 ストレージコントローラ。

【特許請求の範囲】
【請求項1】
ホスト装置と、半導体記憶装置とを備える情報処理装置において、
前記ホスト装置は、
メインメモリと、
前記半導体記憶装置に対するライト要求をライトコマンドと前記ライトコマンドに対応するライトデータに分離し、ライトコマンドを前記半導体記憶装置に出力し、ライトデータを前記メインメモリに記憶させる第1の制御部と
を備え、
前記半導体記憶装置は、
不揮発性半導体メモリと、
前記ホスト装置から転送される前記ライトコマンドを受信し、該ライトコマンドの実行時に前記メインメモリに記憶された該ライトコマンドに対応するライトデータを半導体記憶装置に転送させ、前記不揮発性半導体メモリに書き込む第2の制御部
を備えることを特徴とする情報処理装置。
【請求項2】
前記ホスト装置は、前記メインメモリにアドレス変換情報を保持し、
前記第2の制御部は、前記ライトコマンドの実行時に、前記メインメモリに保持されたアドレス変換情報を用いて前記ライトコマンドに含まれる論理アドレスを物理アドレスに変換することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記ホスト装置は、前記半導体記憶装置に対してリード要求を行い、
前記第2の制御部は、前記リード要求のリードコマンドの実行時に、前記メインメモリに保持されたアドレス変換情報を用いて前記リードコマンドに含まれる論理アドレスを物理アドレスに変換することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記メインメモリに保持されたアドレス変換情報は、前記不揮発性半導体メモリに格納されているアドレス変換情報の一部であることを特徴とする請求項2又は3に記載の情報処理装置。
【請求項5】
前記第2の制御部は、前記メインメモリを、前記不揮発性半導体メモリにデータをライトする際の作業領域として使用することを特徴とする請求項1〜4の何れか一つに記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−109419(P2013−109419A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−252001(P2011−252001)
【出願日】平成23年11月17日(2011.11.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】