JP2011095853A - 不揮発性記憶装置、ホスト装置および不揮発性記憶システム - Google Patents

不揮発性記憶装置、ホスト装置および不揮発性記憶システム Download PDF

Info

Publication number
JP2011095853A
JP2011095853A JP2009246941A JP2009246941A JP2011095853A JP 2011095853 A JP2011095853 A JP 2011095853A JP 2009246941 A JP2009246941 A JP 2009246941A JP 2009246941 A JP2009246941 A JP 2009246941A JP 2011095853 A JP2011095853 A JP 2011095853A
Authority
JP
Japan
Prior art keywords
allocation unit
write
unit
data
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009246941A
Other languages
English (en)
Inventor
Masayuki Toyama
昌之 外山
Takuji Maeda
卓治 前田
Hirokazu So
広和 宗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Original Assignee
Panasonic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp filed Critical Panasonic Corp
Priority to JP2009246941A priority Critical patent/JP2011095853A/ja
Publication of JP2011095853A publication Critical patent/JP2011095853A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで複数のファイルを交互に高速に書き込むことが可能な不揮発性記憶装置、ホスト装置および不揮発性記憶システムを提供する。
【解決手段】不揮発性記憶システム1000では、データの書き込み順を考慮したアロケーションユニットを設定し、そのアロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。そして、不揮発性記憶システム1000では、不揮発性記憶装置1とホスト装置2とが連続書込アロケーションユニット情報を元に不揮発性メモリの物理アロケーションユニットの状態を管理し、当該物理アロケーションユニットの状態に基づいて書き込みを制御するため、高速なデータの書込みが可能となる。
【選択図】図1

Description

本発明は、ホスト装置の命令に応じて不揮発性メモリへのデータの書き込みおよび読み出しを行う、不揮発性メモリを備えた不揮発性記憶装置、該不揮発性記憶装置と接続して不揮発性メモリへのデータの書き込みおよび読み出しを行うホスト装置、および、該ホスト装置と不揮発性記憶装置を含んで構成される不揮発性記憶システムに関する。
近年、不揮発性メモリを用いた不揮発性記憶装置の記憶容量が増加し動画記録用途への応用が広がっている。
このような記憶装置では、不揮発性メモリとしてNANDフラッシュメモリが多く使われている。NANDフラッシュメモリは、ページ単位で書き込みや読み出しを行い、ブロック単位で一括消去を行うデバイスである。NANDフラッシュメモリは、微細化により仕様が頻繁に変更されている。このため、NANDフラッシュメモリ仕様の変化によらず、常に、ホスト装置が同一のインタフェースでデータを読み書きできるように、不揮発性メモリとメモリコントローラ部とを搭載した不揮発性記憶装置が増えている。このような不揮発性記憶装置では、ホスト装置が発行する読み出しおよび書き込みコマンドに含まれる論理アドレスを、NANDフラッシュメモリのブロックやページ位置を示す物理アドレスに変換してデータの読み出しや書き込みを行う、いわゆる「アドレス変換処理」をメモリコントローラ部が行っている。従って、ホスト装置では、NANDフラッシュメモリの仕様を気にせず、論理アドレス空間上でファイルシステム情報に基づいてメモリ領域を管理してデータの読み書きを行えばよく、制御が容易となる。
ところで、NANDフラッシュメモリでは、一度データを書き込んだページを上書きするためには、そのページを含むブロックを消去する必要がある。このような場合、上書きするデータおよび元のデータが存在するブロック中の有効なデータを別のブロックにコピーした後、元のブロックの消去を行うため、ホスト装置にとっては書き込み性能が低下することになる。従って、NANDフラッシュメモリに対しては、ブロック内のページにできるだけ連続的にデータを追記する書き込みを行うのが最も効率がよい。
特許文献1には、ファイルシステム上で複数のブロックをまとめてユニットとして管理し、リアルタイム性が要求されるデータは、空きユニットに書き込むことで、高速な書き込みを実現する技術が開示されている。
特開2005−050383
しかし、特許文献1に開示された従来技術では、以下のような課題がある。すなわち、不揮発性記憶装置内のメモリコントローラ部がアドレス変換処理を行うため、ホスト装置は、NANDフラッシュメモリのブロックやページの実際の書き込み状態を知ることはできない。
例えば、不揮発性記憶装置にデータの書き込みを繰り返した後、ファイルシステム上で論理フォーマット処理を行い、データをすべて消去した場合、NANDフラッシュメモリのブロック、ページには、データが存在していることがある。従って、ファイルシステム上で空きユニットと判定される領域にデータを書き込んだ場合でもデータのコピー処理やブロックの消去処理が発生して書き込み性能が低下するという課題がある。
また、近年では、不揮発性記憶装置に動画を記録する機器が増加しており、不揮発性記憶装置に対して複数の動画を異なるファイルとして記録することが考えられる。このような場合、データは、論理アドレス空間上で離散的な位置に交互に記録されることになるが、特許文献1に開示された従来技術では、ユニット単位でデータを連続に書き込むため、ホスト装置では、(記録するファイル数)×(ユニットサイズ)に相当する容量のバッファを持つ必要がある。特に、ユニットサイズは、物理的なブロックサイズに依存し、NANDフラッシュメモリでは、微細化に伴いブロックサイズが大きくなる傾向にあるため、ホスト装置の備えるバッファサイズは、ブロックサイズ(ユニットサイズ)に比例して増大するという課題がある。
本発明は、以上の問題点を解決し、ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで複数のファイルを交互に高速に書き込むことが可能な不揮発性記憶装置、ホスト装置および不揮発性記憶システムを提供することを目的とする。
第1の発明は、ホスト装置と通信することができるように接続されており、ホスト装置から発行されるコマンドに従ってデータの書き込みおよび/または読み出しを行う不揮発性記憶装置であって、1または複数の不揮発性メモリと、メモリコントローラ部と、ホストインターフェース部と、を備える。
複数の不揮発性メモリは、データの書き込みおよび読み出し単位である物理ページを複数含む物理ブロックであって、データの消去単位である物理ブロックを複数含む。メモリコントローラ部は、不揮発性メモリに対してデータの書き込みおよび/または読み取り制御を行う。ホストインターフェース部は、ホスト装置とコマンドおよび/またはデータの送受信を行う。
メモリコントローラ部は、メモリ管理部と、連続書込アロケーションユニット管理部と、を備える。
メモリ管理部は、論理アドレス空間に含まれ、物理ブロックの整数倍のサイズである論理アロケーションユニットと、物理アドレス空間に含まれ、物理ブロックの整数倍のサイズである物理アロケーションユニットと、を対応付けることにより、アドレス管理を行い、ホスト装置から発行される書き込みおよび/または読み出しコマンドに含まれる論理アドレスを、論理アロケーションユニットおよび物理アロケーションユニットの対応付けに基づいて、物理アドレスに変換する。
連続書込アロケーションユニット管理部は、エントリ毎に、論理アロケーションユニットを識別する情報である論理アロケーションユニット番号と、物理アロケーションユニット内における次にデータを書き込むアドレスを示す情報である次書込アドレスと、当該エントリが有効であるか否かを示す有効フラグと、を含む連続書込アロケーションユニット情報を保持するための記憶領域を備える。そして、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、論理アロケーションユニット番号を指定する連続書込アロケーションユニット指定コマンドを受信すると、当該コマンドにより指定される論理アロケーションユニット番号を、当該コマンドで指定される連続書込アロケーションユニット情報のエントリに登録し、連続書込アロケーションユニット情報に含まれる当該エントリの有効フラグを“有効”とする。
この不揮発性記憶装置では、論理アドレス空間および物理アドレス空間において、複数の不揮発性メモリに並行してデータを書き込む場合をも考慮したアロケーションユニットを設定し、そのアロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。そして、この不揮発性記憶装置では、連続書込アロケーションユニット情報を元に不揮発性メモリの物理アロケーションユニットの状態を管理し、当該物理アロケーションユニットの状態に基づいて書き込みを制御することができるため、高速なデータの書込みが可能となる。
特に、この不揮発性記憶装置では、連続的に書き込むデータに対して、連続書込アロケーションユニット情報に基づいて、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とを一致させるように、容易に制御することができる。したがって、この不揮発性記憶装置をホスト装置とともに用いることで、ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで高速にデータを書き込むことが可能な不揮発性記憶システムも実現することができる。
なお、論理アロケーションユニットおよび物理アロケーションユニットのサイズは、次書込アドレスの管理単位の整数倍であることが好ましい。
第2の発明は、第1の発明であって、メモリ管理部は、ホストインターフェース部が、ホスト装置から連続書込アロケーションユニット情報読出コマンドを受信すると、連続書込アロケーションユニット情報をホスト装置へ送信する。
これにより、容易に、連続書込アロケーションユニット情報をホスト装置へ送信することができる。
第3の発明は、第1または第2の発明であって、次書込アドレスの管理単位は、ホスト装置と不揮発性記憶装置がデータ転送を行う単位であるセクタの整数倍のサイズである。
第4の発明は、第1または第2の発明であって、次書込アドレスの単位は、不揮発性記憶装置の備える不揮発性メモリの物理ページのサイズである。
第5の発明は、第1または第2の発明であって、次書込アドレスの単位は、ホスト装置が不揮発性記憶装置のファイルを管理するファイルシステムのクラスタのサイズである。
第6の発明は、第1から第5のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが次書込アドレスに合致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて次書込アドレスを更新する。
これにより、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とを一致させることができる。
例えば、ホスト装置からの書き込みコマンドの書込みアドレスが0x10であり、書き込みデータサイズが次書込アドレスの管理単位である64KBであり、次書込アドレスが0x10である場合、この不揮発性記憶装置では、当該書き込みコマンドによるデータ書き込み処理を実行した後、次書込アドレスを、0x11(=0x10+0x01(次書込アドレスの管理単位分のデータサイズ(64KB)に相当))に更新する。したがって、更新後においても、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とが一致する。なお、ホスト装置から指示される書き込みアドレス(例えば、書き込みコマンドにより指示される書き込みアドレス)が連続であれば、ホスト装置から指示されるデータの書き込みサイズと、次書込みアドレスの管理単位のサイズとが一致していなくてもよい。つまり、このような場合、不揮発性記憶装置では、正常なデータ書き込み処理が実行されていると判断し、当該エントリの次書込アドレスの更新処理を行うようにしてもよい。
第7の発明は、第1から第5のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが次書込アドレスに合致し、当該書き込みコマンドで指定された書き込みサイズが次書込アドレスの管理単位の整数倍と一致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて次書込アドレスを更新する。
これにより、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とを一致させることができる。
例えば、ホスト装置からの書き込みコマンドの書込みアドレスが0x10であり、書き込みデータサイズが次書込アドレスの管理単位である64KBの2倍の128KBであり、次書込アドレスが0x10である場合、この不揮発性記憶装置では、当該書き込みコマンドによるデータ書き込み処理を実行した後、次書込アドレスを、0x12(=0x10+0x02(次書込アドレスの管理単位2個分のデータサイズ(64KB×2)に相当))に更新する。したがって、更新後においても、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とが一致する。
第8の発明は、第1から第7のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが次書込アドレスに合致しない場合は、エントリの有効フラグを“無効”に更新する。
これにより、この不揮発性記憶装置では、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とが一致していないエントリを使用することがない。
第9の発明は、第1から第8のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットの全部または一部を消去対象として含む消去処理を指示するコマンドを受信した場合、消去処理が完了すると、エントリの有効フラグを“無効”に更新する。
これにより、この不揮発性記憶装置では、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とが一致していないエントリを使用することがない。
第10の発明は、第1から第9のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示するコマンドを受信した場合、当該コマンドによる書込み処理により論理アロケーションユニットの書込み可能な領域が所定サイズ未満になると、エントリの有効フラグを“無効”に更新する。
第11の発明は、第1から第10のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット指定コマンドを受信すると、連続書込アロケーションユニット情報の更新が完了するまでホスト装置へビジー状態を通知する。
第12の発明は、第1から第11のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット指定コマンドの引数に含まれるエントリ番号と論理アロケーションユニット番号とに基づいて、連続書込アロケーションユニット情報を更新する。
第13の発明は、第1から第11のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット指定コマンドと共に送られるデータに含まれるエントリ番号と論理アロケーションユニット番号とに基づいて連続書込アロケーションユニット情報を更新する。
第14の発明は、第1から第13のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報読み出しコマンドを受信すると、当該コマンドの引数に含まれるエントリ番号の示す連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスを当該コマンドへの応答で返信する。
第15の発明は、第1から第13のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報読み出しコマンドを受信すると、ホスト装置へ応答を返すと共に、当該コマンドの引数に含まれるエントリ番号の示す連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する。
第16の発明は、第1から第13のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報読み出しコマンドを受信すると、ホスト装置へ応答を返すと共に、連続書込アロケーションユニット情報の複数のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する。
第17の発明は、第1から第16のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報を更新すると、当該更新した連続書込アロケーションユニット情報を不揮発性メモリの所定の領域に書き込み、不揮発性記憶装置の電源投入時に不揮発性メモリの所定の領域に書き込んだ連続書込アロケーションユニット情報を読み出してメモリ管理部の記憶領域に書き込む。
この不揮発性記憶装置では、連続書込アロケーションユニット情報を不揮発性メモリの所定の領域に書き込むので、不揮発性記憶装置の電源がOFFになっても連続書込アロケーションユニット情報を保持することができる。したがって、この不揮発性記憶装置では、不揮発性記憶装置の電源をOFFした後に、再度電源投入した場合でも、電源をOFFする前の連続書込アロケーションユニット情報を取得することができ、取得した情報に基づいて書き込みを行うことができる。
第18の発明は、第1から第17のいずれかの発明である不揮発性記憶装置と通信することができるように接続されており、不揮発性記憶装置へコマンドを発行してデータの書き込みおよび/または読み出しを行うホスト装置である。このホスト装置は、不揮発性記憶装置から読み出した連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリがある場合は、有効なエントリに登録されている論理アロケーションユニットと次書込みアドレスに基づいて、書込みアドレスを決定する。一方、このホスト装置は、連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリが無い場合は、ファイルシステム情報に基づいて未書込みの論理アロケーションユニットを検索して書き込みアドレスとすると共に、検索した未書き込みの論理アロケーションユニットを連続書込アロケーションユニットとして、不揮発性記憶装置へ指定する。
このホスト装置では、連続的に書き込むデータに対して、連続書込アロケーションユニット情報に基づいて、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とを一致させるように、不揮発性記憶装置の制御を行うことができる。したがって、このホスト装置では、不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで高速にデータを書き込むことができる。
第19の発明は、第1から第17のいずれかの発明である不揮発性記憶装置と、第18の発明であるホスト装置と、を備える不揮発性記憶システムである。
本発明によれば、ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで高速にデータを書き込むことが可能な不揮発性記憶装置、ホスト装置および不揮発性記憶システムを提供することができる。
第1実施形態に係る不揮発性記憶システム100の概略構成図。 不揮発性メモリ12の構成およびアロケーションユニットを説明するための図。 物理アロケーションユニットへのデータの書込み処理を説明するための図。 論理アドレス空間の物理アドレス空間への割付を説明するための図。 連続書込アロケーションユニット管理部115の動作を説明するための図。 連続書込アロケーションユニット管理部115の動作を説明するための図。 連続書込アロケーションユニット管理部115の動作を説明するための図。 連続書込アロケーションユニット管理部115の動作を説明するための図。 連続書込アロケーションユニット情報制御用コマンドを説明するための図。 連続書込アロケーションユニット情報制御用コマンドを説明するための図。 ホスト装置2の書き込み処理フローを説明するための図。
以下、本発明の実施形態について、図面を参照しながら説明する。
[第1実施形態]
<1.1:不揮発性記憶システムの構成>
図1は、本発明の実施形態に係る不揮発性記憶システム(メモリシステム)1000の構成を示すブロック図である。
図1において、本実施形態に係る不揮発性記憶システム1000は、不揮発性記憶装置1とホスト装置2とを備え、不揮発性記憶装置1とホスト装置2とは、バス3により接続されて、双方向に通信を行うことができる。
なお、以降の説明に用いる図面においては、本発明に関連しない構成要素については図示を省略している。また、本発明は、以下に示す実施形態に限定されないことは言うまでもない。
(1.1.1:不揮発性記憶装置)
不揮発性記憶装置1は、図1に示すように、メモリコントローラ部11と、1以上の不揮発性メモリ12とを備える。
メモリコントローラ部11は、図1に示すように、ホストIF部111と、メモリ管理部112と、データ制御部113と、を備える。
ホストIF部111は、ホスト装置2とバス3を介して接続されており、ホスト装置2と通信を行う。ホストIF部111は、ホスト装置2が発行したコマンドをバス3を介して受信すると、当該コマンドを解釈してホスト装置2へ返信する応答(レスポンス)を生成し、当該応答(レスポンス)を、バス3を介して、ホスト装置2に送信する。また、ホストIF部111は、バス3を介して、ホスト装置2とデータの送受信を行う。
また、ホストIF部111は、コマンドの解釈結果や、コマンドの引数等から取得した論理アドレスなどの情報を、メモリ管理部112およびデータ制御部113へ出力する。
メモリ管理部112は、不揮発性メモリ12にデータを読み書きするための不揮発性メモリ12のメモリ領域管理を行う。
メモリ管理部112は、不揮発性メモリ12のメモリ領域管理を行うための情報を保持するRAMやレジスタ、および、アドレス管理部114を備える。
アドレス管理部114は、ホスト装置2の発行するコマンドに含まれる論理アドレスと不揮発性メモリ12上の物理アドレスとの対応付けを、後述するアロケーションユニット単位で管理する。
また、アドレス管理部114は、ホスト装置2の指示により、後述する連続書込アロケーションユニットを管理する連続書込アロケーションユニット管理部115を備える。
データ制御部113は、ホストIF部111と不揮発性メモリ12との間のデータの入出力を行うためのバッファRAMを備えており、データ制御部113は、当該バッファRAMを用いて、メモリ管理部112の指示に従い、不揮発性メモリ12に対してデータの書き込み処理/読み出し処理を行う。
なお、メモリコントローラ部11の各機能部は、その全部または一部を、LSI等の半導体部品で構成してもよく、あるいは一部をソフトウェアで実現してもよい。
不揮発性メモリ12は、図2(a)に示すように、消去単位である複数の物理ブロック120により構成され、各物理ブロック120は、データの書き込みおよび読み出し単位である複数のページ121により構成されている。不揮発性メモリ12として、例えば、NANDフラッシュメモリが考えられる。
(1.1.2:ホスト装置)
ホスト装置2は、図1に示すように、ホスト装置2全体の制御を行うCPU21と、ROM22と、RAM23と、記憶装置1とデータの送受信を行うためのバッファRAM24と、記憶装置1とバス3を介してコマンド・応答やデータの送受信を行う記憶装置制御部25とを備える。
記憶装置制御部25は、不揮発性記憶装置1に対して後述するアロケーションユニット単位での書込み制御を行うメモリユニット制御部26を備える。
なお、ホスト装置2の各機能部は、その全部または一部をLSI等の半導体部品で構成してもよく、あるいは一部をソフトウェアで実現してもよい。
(1.1.3:バス)
バス3は、例えば、不揮発性記憶装置1とホスト装置2とがコマンド・応答、データの送受信を行うための1以上の信号線の組により構成される。本実施形態に係る不揮発性記憶システム1000において、バス3は、クロック信号CLKを伝送するためのクロックラインと、コマンド・応答信号CMDを伝送するためのコマンドラインと、データ信号DATを伝送するためのデータ信号ラインと、を含んで構成される。なお、バス3のデータ信号ラインは、必ずしも1本である必要はなく、バス3が、複数のデータ信号ラインを含むものであってもよい。また、バス3は、コマンド・応答信号とデータ信号とが共通の信号線で多重化されて転送されるように構成にしてもよい。
<1.2:不揮発性記憶システムの動作>
以上のように構成された不揮発性記憶システム1000の動作について、図面を参照しながら、以下、説明する。
(1.2.1:不揮発性メモリのデータ書き込み処理)
まず、不揮発性メモリ12におけるデータ書き込み処理について、説明する。
図2(a)に示すように、不揮発性メモリ12は、消去単位である複数の物理ブロック120により構成され、各物理ブロック120は、データの書き込みおよび読み出し単位である複数のページ121により構成されている。図2(a)では、1ブロックは、Nページで構成されている。より具体的には、物理ブロックのサイズは、例えば、512KBであり、物理ページのサイズは、例えば、4KBである。すなわち、不揮発性メモリ12のデータの書き込みまたは読み出しは4KB単位で行われ、データの消去は512KB単位で行われることになる。不揮発性メモリ12において、512KBより小さい範囲のデータを消去する場合には、消去するデータ以外のデータを別の物理ブロックにコピーした後に、該消去データを含むブロックが消去される。
図2(b)、(c)は、メモリコントローラ部11と複数の不揮発性メモリ12との接続およびデータの書き込み順を説明するための図である。図2(b)、(c)では、ともに、2つの不揮発性メモリ12がメモリコントローラ部11と接続されているが、2つの不揮発性メモリ12に対してデータを書き込む順が異なっている。
図2(b)では、不揮発性メモリ12内の各物理ブロック120には、Nページ分(Nは、自然数)の連続するデータが書き込まれる。
一方、図2(c)では、2つの不揮発性メモリ12内の2つの物理ブロック120に対して連続する2Nページ分のデータがページ単位で交互に書き込まれる。
すなわち、連続するデータを基にした消去単位は、図2(b)では、1つの物理ブロック120であるのに対し、図2(c)では、2つの物理ブロック120となる。
本実施形態に係る不揮発性記憶システム1000では、不揮発性記憶装置1、ホスト装置2ともこの連続するデータを元にした消去単位をアロケーションユニット122として設定し、アロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。
なお、図2(c)の場合は、2つの不揮発性メモリ12に対して、並行して(連続する)データを書き込む場合を例に挙げたが、これに限定されることはなく、例えば、2^N(Nは自然数)個の不揮発性メモリ12に対して、並行して(連続する)データを書き込む場合であっても同様である。この場合、不揮発性記憶システム1000では、2^N個の物理ブロック120が消去単位となり、この消去単位を基準にして、アロケーションユニット122が設定される。
また、同一の不揮発性メモリ12内の複数ブロックに並行してデータを書く場合や、さらに、同一の不揮発性メモリ12内の複数ブロックおよび複数の不揮発性メモリに並行してデータを書く場合も、上記と同様の手法により、アロケーションユニット122を設定し、アロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。
以下の説明では、ホスト装置2で管理する論理アドレス空間上のアロケーションユニットを「論理アロケーションユニット」と呼び、不揮発性記憶装置1内で管理される、不揮発性メモリの物理アドレス空間上のアロケーションユニットを「物理アロケーションユニット」と呼ぶ。
図3(a)〜(c)は、ある物理アロケーションユニットへのデータの書込み処理を説明する図である。
図3(a)は、物理アロケーションユニット1221において、物理ページが2Nページ存在しており、その2Nページのうちページ1〜4にデータが書き込まれている状態を示している。
≪データ追記処理≫
図3(b)は、データを追記する場合の書き込み処理を説明するための図である。具体的には、図3(b)は、ホスト装置2がページ4に書いたデータの次のアドレスからデータを追記する場合の書き込み処理を説明するための図である。図3(b)に示すように、ホスト装置2がページ4に書いたデータの次のアドレスからデータを追記する場合、ページ5〜2Nまではデータが書かれていないため、メモリコントローラ部11は、物理アロケーションユニット1221のページ5〜2Nへ逐次データを書き込む。
≪データ更新処理≫
一方、図3(c)は、データを上書き更新する場合の書き込み処理を説明するための図である。具体的には、図3(c)は、ホスト装置2がページ1、2に書いたデータを上書き更新する場合の書き込み処理を説明するための図である。図3(c)に示すように、ホスト装置2がページ1、2に書いたデータを上書き更新する場合、以下の(1)〜(3)の処理が実行される。
(1)まず、メモリコントローラ部11は、新たな物理アロケーションユニット1222に対して、ページ1、2に更新後のデータを書込む。
(2)その後、更新しないページ3、4のデータを物理アロケーションユニット1221から別の物理アロケーションユニットである物理アロケーションユニット1222へコピーする。
(3)その後、物理アロケーションユニット1221を消去し再利用可能な状態とする。
ここで、物理アロケーションユニット1221の消去は、実際には、物理アロケーションユニット1221を構成する1以上の物理ブロックを、不揮発性メモリ12の備える消去コマンドを用いて消去することを意味する。そして、消去コマンドによる消去処理では、1以上の物理ブロックを一括して消去することも、逐次消去することも可能である。
以上のようにして、不揮発性記憶システム1000では、不揮発性メモリ12におけるデータ書き込み処理が実行される。
(1.2.2:論理アドレス空間と物理アドレス空間との対応)
次に、論理アドレス空間と物理アドレス空間との対応について、説明する。
図4は、本実施形態に係る不揮発性記憶装置1において、メモリコントローラ部11内のアドレス管理部114が行う論理アドレス空間と物理アドレス空間との対応付けを説明する図である。
図4において、アドレス管理部114は、前述したアロケーションユニット単位で論理アドレス空間と物理アドレス空間との対応付けを行う。アロケーションユニットのサイズは、不揮発性記憶装置1内での不揮発性メモリ12へのデータの書き込み順に依存して決まる。例えば、2つの512KBの物理ブロックに交互にデータを書き込む場合は、アロケーションユニットのサイズは1MBあるいはその整数倍(例えば、4MB)となる。ホスト装置2は、不揮発性記憶装置1に対してコマンドを発行してアロケーションユニットのサイズを取得した後に、不揮発性記憶装置1との間でデータの読み出しや書き込みを行う。このアロケーションユニットサイズは、メモリ管理部112内のレジスタやRAMなどに保持されていてもよく、不揮発性メモリ12の所定の領域に保持されていてもよい。なお、アロケーションユニットサイズは、不揮発性記憶装置毎に異なっていてもよく、あるいは、すべての不揮発性記憶装置で共通となるよう標準化してもよい。
物理アロケーションユニットの構成アルゴリズムは、不揮発性メモリの制御アルゴリズムに依存し様々な方法が可能である。たとえば、決まったアドレスの物理ブロック同士を組み合わせて物理アロケーションユニットを構成するようにしてもよく、あるいは任意の消去済み物理ブロックを組み合わせて物理アロケーションユニットを構成するようにしてもよい。
図4(a)に示すように、アドレス管理部114は、アロケーションユニットサイズに基づいて論理アドレス空間および物理アドレス空間をアロケーションユニット単位で分割して論理アロケーションユニット30、物理アロケーションユニット31の単位での対応付けを行う。
通常は、不揮発性記憶装置1内では、不良物理ブロックの発生やウェアレベリング用の予備の物理ブロックを持つため、論理アロケーションユニット数(ここではM個)より物理アロケーションユニット数のほうが多くなる。
図4(a)では、アドレス管理部114は、論理アロケーションユニット0を物理アロケーションユニット1に、論理アロケーションユニット(M−1)を物理アロケーションユニット3に対応付けて、論理アロケーションユニット0、M−1に書かれるデータを物理アロケーションユニット1、3に書き込んでいる。
また、メモリ管理部112は、この対応状態を図4(b)に示すテーブルとして保持している。そして、アドレス管理部114は、図4(b)に示すテーブルによりアドレス管理を行う。
図4(b)では、論理アロケーションユニット番号0〜M−1のデータが書き込まれる物理アロケーションユニット番号が保持されている。なお、物理アロケーションユニット番号FFFFは、論理アロケーションユニットに対応する物理アロケーションユニットが未割付であることを示している。
(1.2.3:連続書込アロケーションユニット)
図5は、本実施形態に係る不揮発性記憶装置1において、連続書込アロケーションユニット管理部115が管理する連続書込アロケーションユニット情報を説明する図である。
連続書込アロケーションユニットは、ホスト装置2がデータを連続的に記録する論理アロケーションユニットであり、ホスト装置2は、不揮発性記憶装置1に対して、コマンドを用いて該アロケーションユニットの指定を行う。
連続書込アロケーションユニット管理部115は、ホスト装置2による連続書込アロケーションユニット指定コマンドおよびその後の書き込みコマンドに従って、連続書込アロケーションユニット情報を更新する。
以下、図5〜図8を用いて連続書込アロケーションユニット管理部115の動作を説明する。
図5〜図8は、それぞれ、連続書込アロケーションユニット管理部115が管理する連続書込アロケーションユニット情報とその時の論理アロケーションユニットおよび物理アロケーションユニットの状態を示す図である。
図5(a)は、最初の状態を示す図である(この状態を「状態A」という)。
図5(b)は、エントリ1に新規登録するときの状態を示す図である(この状態を「状態B」という)。
図6(a)は、エントリ1に書き込むときの状態を示す図である(この状態を「状態C」という)。
図6(b)は、エントリ1を追記するときの状態を示す図である(この状態を「状態D」という)。
図7(a)は、フォーマット(論理フォーマット)を行うときの状態を示す図である(この状態を「状態E」という)。
図7(b)は、エントリ1を消去するときの状態を示す図である(この状態を「状態F」という)。
図8(a)は、領域フルであるときの状態を示す図である(この状態を「状態G」という)。
図8(b)は、同じアドレスに上書きするときの状態を示す図である(この状態を「状態H」という)。
図5〜図8において、連続書込アロケーションユニット情報は、エントリ、有効フラグ、論理アロケーションユニット番号、次書込アドレスを含む。
「エントリ」は、連続書込アロケーションユニット管理部115が管理する連続書込アロケーションユニットの識別子である。連続書込アロケーションユニット管理部115の管理するエントリの数は、レジスタやRAMなど不揮発性記憶装置1内のリソースで決まる1以上の任意の整数である。あるいは、不揮発性記憶装置1の備えるエントリ数を標準化してもよい。
「有効フラグ」は、該エントリに登録されている情報が有効かどうかを示す情報であり、例えば、1ビットのフラグであれば、“1”なら有効、“0”なら無効を示す。
「論理アロケーションユニット番号」は、連続書込アロケーションユニットとして登録されている論理アロケーションユニットの番号である。
「次書込アドレス」は、該論理アロケーションユニットにおいてデータ未書き込み領域の先頭を示している。ここで、次書込アドレスの管理単位は、不揮発性記憶装置1とホスト装置2がデータ転送を行う単位であるセクタ(例えば512バイト)や、不揮発性メモリ12の物理ページサイズ(例えば4KB)、あるいはファイルシステムのクラスタサイズ(例えば32KB)や、セクタの整数倍である所定の書込ユニット(例えば64KBや128KB)などを用いることが可能である。以降の説明では、次書込アドレスの管理単位を書込ユニット単位として説明する。
図5(a)において、エントリ3は、有効フラグが“有効”、論理アロケーションユニット番号が0x1、次書き込みアドレスが0x30となっている。このとき、不揮発性記憶装置1内では、論理アロケーションユニット1が物理アロケーションユニットA+2に割り付けられており、論理アロケーションユニット1、物理アロケーションユニットA+2ともに、0〜2F番目の書込みユニットにデータが書き込まれており、0x30番目の書込ユニットから該物理アロケーションユニットの最終書込ユニットまではデータが未書き込みの状態になっている。
(1.2.4:連続書き込みアロケーションユニットの指定)
図5(b)において、ホスト装置2がエントリ1に新たに論理アロケーションユニット番号0x40を指定すると、連続書込アロケーションユニット管理部115は、エントリ1の有効フラグを“有効”とし、論理アロケーションユニット番号に0x40、次書き込みアドレスに0x0を格納する。このとき、不揮発性記憶装置1内では、論理アロケーションユニット0x40が物理アロケーションユニットBに割り付けられ、論理アロケーションユニット0x40、物理アロケーションユニットBともに、未書き込みの状態になっている。なお、不揮発性メモリ装置1内において、指定された論理アロケーションユニットにデータがある状態(例えば、論理フォーマット後のように、論理アドレス空間と物理アドレス空間とがミスマッチしている状態)になっている場合、不揮発性記憶システム1000では、そのデータを無効とみなす。
さらに、図6(a)において、ホスト装置2が論理アロケーションユニット0x40の先頭から16個の書込ユニット分のデータを書き込むと、メモリコントローラ部11では、メモリ管理部112とデータ制御部113とが動作してデータを物理アロケーションユニットBの先頭から16個の書込ユニット分データを書き込む。そして、その後、連続書込アロケーションユニット管理部115は、エントリ1の次書込アドレスを0x10に更新する。なお、不揮発性記憶システム1000において、ホスト装置から指示される書き込みアドレス(例えば、書き込みコマンドにより指示される書き込みアドレス)が連続であれば、ホスト装置から指示されるデータの書き込みサイズと、次書込みアドレスの管理単位のサイズとが一致していなくてもよい。つまり、このような場合、不揮発性記憶システム1000において、正常なデータ書き込み処理が実行されていると判断し、上記のように、エントリの次書込アドレスの更新処理を行うようにしてもよい。
(1.2.5:連続書き込みアロケーションユニットへの追記)
さらに、図6(b)において、ホスト装置2が論理アロケーションユニット0x40の0x10番目の書込ユニットから112個(0x70個)の書込ユニット分のデータを書き込むと、メモリコントローラ部11では、メモリ管理部112とデータ制御部113とが動作してデータを物理アロケーションユニットBの0x10番目の書込ユニットから112個(0x70個)の書込ユニット分データを書き込む。そして、その後、連続書込アロケーションユニット管理部115は、エントリ1の次書込アドレスを0x80(=0x10+0x70)に更新する。
このようにして、ホスト装置2が連続書込アロケーションユニットとして指定した論理アロケーションユニットに対して書き込みを行うと、該論理アロケーションユニット、および、該論理アロケーションユニットが割り付けられた物理アロケーションユニットにおいて、同じ書込ユニット位置に同じデータが書かれる。つまり、このように処理することで、不揮発性記憶システム1000では、論理アロケーションユニット内の状況(データ記録状態)と、物理アロケーションユニット内の状況(データ記録状態)とが、一致することが保証される。
(1.2.6:論理フォーマット)
図7(a)は、ホスト装置2が不揮発性記憶装置1に対して論理フォーマットを行った後の連続書込アロケーションユニット情報および論理アロケーションユニット、物理アロケーションユニットの状態を説明する図である。
図7(a)において、ホスト装置2が論理フォーマットを行うと、ファイルシステム上の操作により論理アドレス空間上の所定の領域が未書き込み領域となる。ここで、「所定の領域」とは、不揮発性記憶装置1の記憶容量や、ホスト装置2が用いるファイルシステムの種類やパラメータによって決まる領域である。
このようなフォーマット処理は、不揮発性記憶装置1では、ファイルシステムを管理する領域への書き込み処理として認識され、その他の領域のデータの状態は変化しない。
したがって、連続書込アロケーションユニットのエントリ1に登録された論理アロケーションユニット番号、次書込アドレスおよび有効フラグは、図6(b)に示す状態(状態D)と同じ状態のままである。つまり、論理アドレス空間上では、論理アロケーションユニット0x40が未書込状態であるのに対して、対応する物理アロケーションユニットBでは、0〜7F番目の書込ユニットまでデータが書かれた状態となっている。
したがって、ホスト装置2が論理アロケーションユニット0x40にデータを書きこむ場合に、0x80番目の書込ユニットから書き込みを行えば、図3(a)や図6(b)(状態D)のような追記書込みが行われる。この場合、データの書き込み以外の処理が発生せず、高速な書き込みが可能となる。
一方、例えば、論理アロケーションユニット0x40の先頭書込ユニットからデータの書き込みを行うと、図3(c)で説明したような書き込みと消去が不揮発性記憶装置1の中で行われる。このとき、書き込むデータのサイズやアドレスによってはデータのコピーも発生するため、データ書き込み性能が低下する。つまり、このようなデータ書き込み処理を行うと、いわゆる巻き込み退避処理(集約処理)の発生により、データ書き込み性能が低下する。
(1.2.7:連続書込アロケーションユニットの消去)
図7(b)は、ホスト装置2が論理アロケーションユニット0x40を消去コマンドによって消去した後の連続書込アロケーションユニット情報および論理アロケーションユニット、物理アロケーションユニットの状態を説明する図である。
図7(b)において、ホスト装置2が論理アロケーションユニット0x40の消去を行うと、連続書込アロケーションユニット管理部115は、消去処理が連続書込アロケーションユニット情報のエントリ1に“有効”として登録されている論理アロケーションユニットの消去であることを認識して、エントリ1の有効フラグを“無効”に変更する。なお、論理アロケーションユニット0x40の一部のデータを消去した場合もエントリ1の有効フラグを“無効”に変更する。
また、メモリコントローラ部11では、メモリ管理部112が物理アロケーションユニットBの消去処理を行い、アドレス管理部114が論理アロケーションユニット0x40と物理アロケーションユニットBとの対応付けを解消する。これにより、論理アロケーションユニット0x40、および、物理アロケーションユニットBは、ともにデータが未書き込みの状態となる。また、アドレス管理部114は、論理アロケーションユニット0x40に対応する物理アロケーションユニットを未割付の状態にする。これにより、論理アロケーションユニット0x40は、対応する物理アロケーションユニットが割り付けられていない状態(未割付の状態)となる。
以上の処理を行うことで、不揮発性記憶システム1000では、連続書込アロケーションユニット情報のエントリの有効フラグが”無効”である場合、該論理アロケーションユニットと物理アロケーションユニットとの状態の一致が保証されていないことを認識することができる。
(1.2.8:連続書込アロケーションユニットの無効化)
図8(a)、(b)は、連続書込アロケーションユニット管理部115が、連続書込アロケーションユニット情報に保持している有効なエントリを無効化する処理を説明する図である。
図8(a)において、エントリ0に登録されている論理アロケーションユニット0x100に対して、ホスト装置2が論理アロケーションユニット内の最終書込ユニットまでデータを書き込むと、不揮発性記憶装置1内では、物理アロケーションユニットC+2の最終書込ユニットまでデータが書き込まれ、該論理アロケーションユニット、および、該物理アロケーションユニットは、ともにこれ以上データを追記できない状態となる。このようなこれ以上データを追記できない状態となった場合、連続書込アロケーションユニット管理部115は、エントリ0の有効フラグを"無効“にする。
また、図8(b)は、エントリ3に登録されている論理アロケーションユニット0x1のデータを上書きする場合を示す。
図5(a)(状態A)では、論理アロケーションユニット0x1は、物理アロケーションユニットA+2に割り付けられ、0〜2F番目の書込ユニットまでデータが書き込まれていた。
ここで、例えば、ホスト装置2が論理アロケーションユニット0x1の0〜2F番目の書込ユニットの一部または全てのデータを上書きした場合、メモリコントローラ部11内のメモリ管理部112とデータ制御部113とが動作して、図3(c)で説明したような書き込みと消去とが不揮発性記憶装置1の中で行われ、論理アロケーションユニット0x1が新たに物理アロケーションユニットA+4に割り付けられる(図8(b)の右図の状態)。このとき、更新データのサイズやアドレスによっては、元の物理アロケーションユニットA+2からデータのコピーも発生する。このような書き込み処理が実行された場合、連続書込アロケーションユニット管理部115は、連続書込アロケーションユニット情報に登録された論理アロケーションユニットに対して、次書込アドレス以外への書き込み(連続書込アロケーションユニット情報の「次書込アドレス」に相当する物理アドレス以外の物理アドレスへの書き込み)が発生したことを認識して、エントリ3の有効フラグを“無効”にする。
なお、この「連続書込アロケーションユニット情報に登録された論理アロケーションユニットに対して次書込アドレス以外への書き込み」に加えて、書き込みデータサイズが次書き込みアドレスの管理単位(この場合書き込みユニット)のサイズ未満の場合も有効フラグを“無効”としてもよい。例えば、次書き込みアドレスの管理単位が、書き込みユニットのサイズであり、64KBである場合に、書き込みデータサイズが32KBであると、当該32KBのデータを書き込んだ後の論理アロケーションユニット内の状況(データ記録状態)と、物理アロケーションユニット内の状況(データ記録状態)とが、一致しなくなる。このため、書き込みデータサイズが次書き込みアドレスの管理単位(この場合書き込みユニット)のサイズ未満の場合、有効フラグを“無効”にすることが好ましい。
また、ホスト装置2から不揮発性記憶装置1に対して発行される書き込みコマンドにより指定された、有効なエントリの論理アロケーションユニット内の書込アドレスと、当該エントリの論理アロケーションユニット内の書込アドレス(連続書込アロケーションユニット情報の「次書込アドレス」)と、が不一致である場合、当該エントリの有効フラグを“無効”としてもよい。
例えば、図8(a)の場合において、ホスト装置2から不揮発性記憶装置1に対して、エントリ3(有効なエントリ)(論理アロケーションユニット番号0x1)に次書込アドレスを0x20として、データ書き込み処理を指示する書き込みコマンドが発行されたとする。この場合、図8(a)に示すように、エントリ3の「次書込アドレス」は、0x30であり、0x20と一致しない。したがって、この場合、当該エントリ(エントリ3)の有効フラグを“無効”としてもよい。このようにすることで、不揮発性記憶システム1000では、不正規なコマンド(例えば、間違った書込アドレスを指定する書込コマンド)が発行された場合等にも対応することができる。なお、不揮発性記憶システム1000において、以下の基準により、エントリの有効フラグを“無効”とするようにしてもよい。すなわち、
(1)書込みコマンドの指示するアドレスと次書込みアドレスとが不一致の場合、常に、エントリの有効フラグを“無効”とする。
(2)(書込みコマンドの指示するアドレス)<(次書込みアドレス)の場合(つまり、データを上書きする場合)のみ、エントリの有効フラグを“無効”とし、それ以外の場合については、エントリの有効フラグを“無効”としない。
以上のように、不揮発性記憶システム1000では、不揮発性記憶装置1が、連続書込アロケーションユニット情報を用いて、追記可能な論理アロケーションユニットを物理アロケーションユニットの状態に基づいて管理・更新する。つまり、不揮発性記憶システム1000では、論理アロケーションユニット内の状況(データ記録状態)と、物理アロケーションユニット内の状況(データ記録状態)とが、一致するように、不揮発性記憶装置1が、追記可能な論理アロケーションユニットを物理アロケーションユニットの状態に基づいて管理・更新する。
したがって、ホスト装置2は、連続書込アロケーションユニット情報によって、不揮発性メモリ12の物理アロケーションユニットの状態を知ることができ、追記が可能な論理アロケーションユニットを選択して書き込み(データ書き込み処理)を行うことで、不揮発性記憶装置1内でのデータコピーや消去処理の発生を抑えて高速にデータを書き込むことが可能となる。
連続書込アロケーションユニット管理部115は、連続アロケーションユニット情報をアドレス管理部114のレジスタまたはRAMに保持してもよく、さらに、所定のタイミング(例えば情報を更新するたびや、有効フラグをかきかえるたび、など)に不揮発性メモリ12の所定の領域に格納してもよい。この場合は、不揮発性記憶装置1の電源がいったんOFFされてからONされると、メモリコントローラ部11のアドレス管理部114が起動処理を行う際に連続アロケーションユニット情報を不揮発性メモリ12から読み出してレジスタまたはRAMに格納する。
<1.3:連続書込アロケーションユニット制御用コマンド>
次に、不揮発性記憶システム1000で用いられる連続書込アロケーションユニット制御用コマンドについて、説明する。
図9は、本実施形態に係るホスト装置2が、不揮発性記憶装置1に対して、連続書込アロケーションユニットを指定し、あるいは、不揮発性記憶装置1の保持する連続書込アロケーションユニット情報を読み出すためのコマンド、応答、データの構成を説明する図である。
(1.3.1:連続書込アロケーションユニット指定コマンド)
図9(a)、(b)は、ホスト装置2が、不揮発性記憶装置1に対して、連続書込アロケーションユニットを指定するための、連続書込アロケーションユニット指定コマンドを説明する図である。
図9(a)に示すように、ホスト装置2は、コマンドとして、コマンド番号、エントリ番号、論理アロケーションユニット番号を含むコマンドを不揮発性記憶装置1へ送信する。
ここで、「コマンド番号」は、当該コマンドが連続書込アロケーションユニット指定コマンドであることを示す識別子である。
「エントリ番号」は、図5〜図8で説明した連続書込アロケーションユニット情報のエントリの番号である。なお、コマンドで、エントリ番号を指示しない(エントリ番号を含めない)ようにしてもよい。この場合、不揮発性記憶システム1000において、不揮発性記憶装置1では、以下の(1)、(2)の処理を行うようにしてもよい。
(1)空きエントリがあれば、その空きエントリを連続書込アロケーションユニット情報に登録する。
(2)空きエントリがなければ、いずれかのエントリと入れ替えて、その入れ替えたエントリを連続書込アロケーションユニット情報に登録する。この場合、例えば、一番残量が少ないエントリ、あるいは、一番古いエントリ、などを入れ替えるエントリの候補として選び、その候補の中から入れ替えるエントリを決定するようにしてもよい。なお、入れ替えエントリの候補は、上記例に限定されないことは言うまでもない。
「論理アロケーションユニット番号」は、当該コマンドで指定したエントリに連続書込アロケーションユニットとして登録する論理アロケーションユニット番号である。
また、図9(b)に示すように、エントリ番号および論理アロケーションユニット番号は、コマンドではなくデータとして不揮発性記憶装置1へ送られてもよい。この場合、図9(b)の(i)および(ii)に示したように、エントリ番号および論理アロケーションユニット番号は、1または複数個を指定することができる。
図9(a)、(b)のいずれの場合も、不揮発性記憶装置1は、ホスト装置2へ応答を返し、連続書込アロケーションユニット情報を更新する。この際、不揮発性記憶装置1内の制御情報やステータス更新のために、不揮発性メモリ12への書き込み処理や消去処理が発生する場合は、不揮発性記憶装置1は、ホスト装置2へ処理が完了するまでビジー状態であることを通知する。
(1.3.2:連続書込アロケーションユニット情報読出コマンド)
図10(a)〜(c)は、ホスト装置2が、不揮発性記憶装置1から、連続書込アロケーションユニット情報を読み出すための、連続書込アロケーションユニット情報読出コマンドを説明する図である。
図10(a)、(b)に示すように、ホスト装置2は、コマンドとしてコマンド番号、エントリ番号を含むコマンドを不揮発性記憶装置1へ送信する。
ここで、「コマンド番号」は、当該コマンドが連続書込アロケーションユニット情報読出コマンドであることを示す識別子である。
「エントリ番号」は、図5〜図8で説明した連続書込アロケーションユニット情報のエントリの番号である。当該コマンドを受信すると、不揮発性記憶装置1は、コマンドで指定されたエントリ番号と有効フラグ、当該エントリに保持している論理アロケーションユニット番号および次書込アドレスを、図10(a)では応答で、図10(b)ではデータで、それぞれ、ホスト装置2へ返信する。
あるいは、図10(c)に示すように、ホスト装置2は、エントリ番号指定無しで連続書込アロケーションユニット情報読出コマンドを不揮発性記憶装置1へ送信することも可能である。この場合、不揮発性記憶装置1は、保持する連続書込アロケーションユニット情報をデータとしてホスト装置2へ返信する。この場合、返信するデータには、複数のエントリの有効フラグ、論理アロケーションユニット番号、次書込アドレスが含まれる。
このようにして、不揮発性記憶システム1000では、不揮発性記憶装置1とホスト装置2とがコマンドを用いて連続書込アロケーションユニット情報を読み出し、あるいは更新することで、図5〜図8を用いて説明したように高速な書き込みを実現することができる。
<1.4:書込アドレス決定処理フロー>
次に、不揮発性記憶システム1000における書込アドレス決定処理について、図11を用いて説明する。
図11は、本実施形態に係るホスト装置2が不揮発性記憶装置1へデータを書き込む際の書込アドレス決定と書き込みの処理フローを説明する図である。
図11に示すように、ホスト装置2は、まず、連続書込アロケーションユニット情報を不揮発性記憶装置1から読み出す(S601)。なお、ホスト装置2は、書き込みを行う際に、その都度、連続書込アロケーションユニット情報を読み出してもよく、あるいは読み出した情報をホスト装置2内のRAMに保持して自ら更新するようにしてもよい。
ホスト装置2は、読み出した連続書込アロケーションユニット情報を参照して(S602)、有効なエントリがあれば、当該エントリに保持されている論理アロケーションユニット番号と次書込アドレスとを、書込アドレスとして使用する(S603)。
一方、有効なエントリがない場合、ホスト装置2は、ファイルシステム情報に基づいて空き論理アロケーションユニットを検索し、見つかった論理アロケーションユニットを書込アドレスとして選択する(S604)。この場合、当該論理アロケーションユニットの先頭から書き込みが開始される。そして、ホスト装置2は、不揮発性記憶装置1に対して、連続書込アロケーションユニット指定コマンドを発行して、当該論理アロケーションユニットを任意のエントリに登録する(S605)。
このようにして書込アドレスを決定した後、ホスト装置2は、不揮発性記憶装置1に対して、書き込みコマンドとデータとを送信してデータの書き込みを行う(S606)。
データの書き込みにおいては、未書き込みデータが残っているか(S607)、および、書き込みを行う論理アロケーションユニットの終端までデータを書いたか(S608)の確認を行い、未書き込みデータがなくなれば処理を終了する。なお、不揮発性記憶システム1000において、S608の処理で、書き込みを行う論理アロケーションユニットの終端までデータを書き込まれていない状態であっても、当該論理アロケーションユニットの残容量(データ記録残容量)がある一定量より少なくなったら、連続書込アロケーションユニット情報の該エントリの有効フラグを”無効”にするようにしてもよい。例えば、不揮発性記憶システム1000において、次書込みアドレスをセクター単位で管理しているが、書き込みサイズがクラスタ単位である場合(クラスタ単位でデータ書き込みを行う場合)、当該論理アロケーションユニットの残容量(データ記録残容量)がクラスタサイズ未満になったら、連続書込アロケーションユニット情報の該エントリの有効フラグを”無効”にするようにしてもよい。
また、未書き込みデータが残っていて書き込みを行う論理アロケーションユニットの終端までデータを書いた場合には、再度連続書込アロケーションユニット情報を元に書き込みアドレスを決定する処理(S601〜S605)を行った後に、データ書き込みを継続する。
以上説明したように、不揮発性記憶システム1000では、複数の不揮発性メモリに並行してデータを書き込む場合をも考慮したアロケーションユニットを設定し、そのアロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。そして、不揮発性記憶システム1000では、不揮発性記憶装置1とホスト装置2とが連続書込アロケーションユニット情報を元に不揮発性メモリの物理アロケーションユニットの状態を管理し、当該物理アロケーションユニットの状態に基づいて書き込みを制御するため、高速なデータの書込みが可能となる。
また、不揮発性記憶システム1000では、ホスト装置が複数ファイルのデータを交互に不揮発性記憶装置1へ書き込む場合でも、連続書込アロケーションユニット情報の複数のエントリに登録されている有効な論理アロケーションユニットに対して、次書込アドレスから順にデータを書込ユニット単位で追記できるため、ホスト装置2は複数ファイルを少ないバッファサイズで高速に書き込むことができる。
つまり、従来のデータ書き込み処理では、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とが一致している保証がないため、不揮発性記憶装置1からすると、論理アドレス空間において連続するアドレスにデータを記録している場合であっても、ランダムアクセスしているようなデータ書き込み処理を行わなければならず、高速データ書き込み処理を実現しにくい。
また、従来のデータ書き込み処理では、1つの物理アロケーションユニット内において先頭から終端まで連続的にデータを書き込むので、複数のファイルのデータを書き込む場合、1つの物理アロケーションユニット内において先頭から終端まで連続的にデータを書き込んだ後、別の物理アロケーションユニット内において先頭から終端まで連続的にデータを書き込む、という処理を繰り返すことで、複数のファイルのデータを書き込む。したがって、不揮発性記憶システムにおいて、実際に物理アロケーションユニットにデータ書き込み処理を行うまでの待ち時間分のバッファを持つ必要がある。
それに対して、本実施形態の不揮発性記憶システム1000では、論理アロケーションユニット内の状況(データ記録状態)と物理アロケーションユニット内の状況(データ記録状態)とが一致していることが保証されているため、ホスト装置が複数ファイルのデータを交互に不揮発性記憶装置1へ書き込む場合でも、連続書込アロケーションユニット情報の複数のエントリに登録されている有効な論理アロケーションユニットに対して、次書込アドレスから順にデータを書込ユニット単位で追記できる。したがって、不揮発性記憶システム1000において、ホスト装置2は、複数ファイルを少ないバッファサイズで高速に書き込むことができる。
[他の実施形態]
なお、上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置およびホスト装置において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る不揮発性記憶システム、不揮発性記憶装置およびホスト装置をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
本発明によると、ホスト装置のバッファサイズ増大を抑えながら、複数ファイルのリアルタイム記録が可能な不揮発性記憶装置、ホスト装置およびメモリシステムを提供することができ、特に大容量の不揮発性メモリに動画を記録するテレビやDVRなどのホスト装置と、リムーバブルなメモリカードやエンベデッドデバイスなど不揮発性メモリを有する不揮発性記憶装置に有用である。
1000 不揮発性記憶システム(メモリシステム)
1 不揮発性記憶装置
11 メモリコントローラ部
111 ホストIF部
112 メモリ管理部
113 データ制御部
114 アドレス管理部
115 連続書込アロケーションユニット管理部
12 不揮発性メモリ
120 物理ブロック
121 物理ページ
122 アロケーションユニット
2 ホスト装置
21 CPU
22 ROM
23 RAM
24 バッファRAM
25 記憶装置制御部
26 メモリユニット制御部
3 バス
30 論理アロケーションユニット
31 物理アロケーションユニット

Claims (19)

  1. ホスト装置と通信することができるように接続されており、前記ホスト装置から発行されるコマンドに従ってデータの書き込みおよび/または読み出しを行う不揮発性記憶装置であって、
    データの書き込みおよび読み出し単位である物理ページを複数含む物理ブロックであって、データの消去単位である物理ブロックを複数含む、1または複数の不揮発性メモリと、
    前記不揮発性メモリに対してデータの書き込みおよび/または読み取り制御を行うメモリコントローラ部と、
    前記ホスト装置とコマンドおよび/またはデータの送受信を行うホストインターフェース部と、
    を備え、
    前記メモリコントローラ部は、
    論理アドレス空間に含まれ、前記物理ブロックの整数倍のサイズである論理アロケーションユニットと、物理アドレス空間に含まれ、前記物理ブロックの整数倍のサイズである物理アロケーションユニットと、を対応付けることにより、アドレス管理を行い、前記ホスト装置から発行される書き込みおよび/または読み出しコマンドに含まれる論理アドレスを、前記論理アロケーションユニットおよび前記物理アロケーションユニットの対応付けに基づいて、物理アドレスに変換するメモリ管理部と、
    エントリ毎に、前記論理アロケーションユニットを識別する情報である論理アロケーションユニット番号と、前記物理アロケーションユニット内における次にデータを書き込むアドレスを示す情報である次書込アドレスと、当該エントリが有効であるか否かを示す有効フラグと、を含む連続書込アロケーションユニット情報を保持するための記憶領域を備え、前記ホストインターフェース部が、前記ホスト装置から、前記論理アロケーションユニット番号を指定する連続書込アロケーションユニット指定コマンドを受信すると、当該コマンドにより指定される前記論理アロケーションユニット番号を、当該コマンドで指定される前記連続書込アロケーションユニット情報のエントリに登録し、前記連続書込アロケーションユニット情報に含まれる当該エントリの有効フラグを“有効”とする連続書込アロケーションユニット管理部と、
    を備える、
    不揮発性記憶装置。
  2. 前記メモリ管理部は、前記ホストインターフェース部が、前記ホスト装置から連続書込アロケーションユニット情報読出コマンドを受信すると、前記連続書込アロケーションユニット情報を前記ホスト装置へ送信する、
    請求項1に記載の不揮発性記憶装置。
  3. 前記次書込アドレスの管理単位は、前記ホスト装置と前記不揮発性記憶装置がデータ転送を行う単位であるセクタの整数倍のサイズである、
    請求項1または2に記載の不揮発性記憶装置。
  4. 前記次書込アドレスの単位は、前記不揮発性記憶装置の備える不揮発性メモリの物理ページのサイズである、
    請求項1または2に記載の不揮発性記憶装置。
  5. 前記次書込アドレスの単位は、前記ホスト装置が前記不揮発性記憶装置のファイルを管理するファイルシステムのクラスタのサイズである、
    請求項1または2に記載の不揮発性記憶装置。
  6. 前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが前記次書込アドレスに合致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて前記次書込アドレスを更新する、
    請求項1から5のいずれかに記載の不揮発性記憶装置。
  7. 前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが前記次書込アドレスに合致し、当該書き込みコマンドで指定された書き込みサイズが前記次書込アドレスの管理単位の整数倍と一致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて前記次書込アドレスを更新する、
    請求項1から5のいずれかに記載の不揮発性記憶装置。
  8. 前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが前記次書込アドレスに合致しない場合は、前記エントリの前記有効フラグを“無効”に更新する、
    請求項1から7のいずれかに記載の不揮発性記憶装置。
  9. 前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットの全体または一部を消去対象として含む消去処理を指示するコマンドを受信した場合、前記消去処理が完了すると、前記エントリの前記有効フラグを“無効”に更新する、
    請求項1から8のいずれかに記載の不揮発性記憶装置。
  10. 前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示するコマンドを受信した場合、当該コマンドによる書込み処理により前記論理アロケーションユニットの書込み可能な領域が所定サイズ未満になると、前記エントリの前記有効フラグを“無効”に更新する、
    請求項1から9のいずれかに記載の不揮発性記憶装置。
  11. 前記メモリコントローラ部は、前記連続書込アロケーションユニット指定コマンドを受信すると、前記連続書込アロケーションユニット情報の更新が完了するまで前記ホスト装置へビジー状態を通知する、
    請求項1から10のいずれかに記載の不揮発性記憶装置。
  12. 前記メモリコントローラ部は、前記連続書込アロケーションユニット指定コマンドの引数に含まれるエントリ番号と論理アロケーションユニット番号とに基づいて、前記連続書込アロケーションユニット情報を更新する、
    請求項1から11のいずれかに記載の不揮発性記憶装置。
  13. 前記メモリコントローラ部は、前記連続書込アロケーションユニット指定コマンドと共に送られるデータに含まれるエントリ番号と論理アロケーションユニット番号とに基づいて前記連続書込アロケーションユニット情報を更新する、
    請求項1から11のいずれかに記載の不揮発性記憶装置。
  14. 前記メモリコントローラ部は、前記連続書込アロケーションユニット情報読み出しコマンドを受信すると、当該コマンドの引数に含まれるエントリ番号の示す前記連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスを当該コマンドへの応答で返信する、
    請求項1から13のいずれかに記載の不揮発性記憶装置。
  15. 前記メモリコントローラ部は、前記連続書込アロケーションユニット情報読み出しコマンドを受信すると、前記ホスト装置へ応答を返すと共に、当該コマンドの引数に含まれるエントリ番号の示す前記連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する、
    請求項1から13のいずれかに記載の不揮発性記憶装置。
  16. 前記メモリコントローラ部は、前記連続書込アロケーションユニット情報読み出しコマンドを受信すると、前記ホスト装置へ応答を返すと共に、前記連続書込アロケーションユニット情報の複数のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する、
    請求項1から13のいずれかに記載の不揮発性記憶装置。
  17. 前記メモリコントローラ部は、前記連続書込アロケーションユニット情報を更新すると、当該更新した連続書込アロケーションユニット情報を前記不揮発性メモリの所定の領域に書き込み、前記不揮発性記憶装置の電源投入時に前記不揮発性メモリの所定の領域に書き込んだ前記連続書込アロケーションユニット情報を読み出して前記メモリ管理部の記憶領域に書き込む、
    請求項1から16のいずれかに記載の不揮発性記憶装置。
  18. 請求項1から17のいずれかに記載の不揮発性記憶装置と通信することができるように接続されており、前記不揮発性記憶装置へコマンドを発行してデータの書き込みおよび/または読み出しを行うホスト装置であって、
    前記不揮発性記憶装置から読み出した連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリがある場合は、前記有効なエントリに登録されている前記論理アロケーションユニットと前記次書込みアドレスに基づいて、書込みアドレスを決定し、前記連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリが無い場合は、ファイルシステム情報に基づいて未書込みの論理アロケーションユニットを検索して書き込みアドレスとすると共に、前記検索した未書き込みの論理アロケーションユニットを連続書込アロケーションユニットとして、前記不揮発性記憶装置へ指定する、
    ホスト装置。
  19. 請求項1から17のいずれかに記載の不揮発性記憶装置と、
    請求項18に記載のホスト装置と、
    を備える不揮発性記憶システム。
JP2009246941A 2009-10-27 2009-10-27 不揮発性記憶装置、ホスト装置および不揮発性記憶システム Pending JP2011095853A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009246941A JP2011095853A (ja) 2009-10-27 2009-10-27 不揮発性記憶装置、ホスト装置および不揮発性記憶システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009246941A JP2011095853A (ja) 2009-10-27 2009-10-27 不揮発性記憶装置、ホスト装置および不揮発性記憶システム

Publications (1)

Publication Number Publication Date
JP2011095853A true JP2011095853A (ja) 2011-05-12

Family

ID=44112711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009246941A Pending JP2011095853A (ja) 2009-10-27 2009-10-27 不揮発性記憶装置、ホスト装置および不揮発性記憶システム

Country Status (1)

Country Link
JP (1) JP2011095853A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014112319A (ja) * 2012-12-05 2014-06-19 Fuji Xerox Co Ltd 記憶制御装置及び記憶制御プログラム
US9715341B2 (en) 2014-10-29 2017-07-25 Samsung Electronics Co., Ltd. Operating a memory device using a program order stamp to control a read voltage
US9858014B2 (en) 2014-10-29 2018-01-02 Samsung Electronics Co., Ltd. Memory system and method of operating same using program order information
US9921749B2 (en) 2014-10-29 2018-03-20 Samsung Electronics Co., Ltd. Memory system and method including determining a read voltage based on program order information and a plurality of mapping tables
US11302369B2 (en) 2020-09-14 2022-04-12 Kioxia Corporation Memory system and controlling method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014112319A (ja) * 2012-12-05 2014-06-19 Fuji Xerox Co Ltd 記憶制御装置及び記憶制御プログラム
US9715341B2 (en) 2014-10-29 2017-07-25 Samsung Electronics Co., Ltd. Operating a memory device using a program order stamp to control a read voltage
US9858014B2 (en) 2014-10-29 2018-01-02 Samsung Electronics Co., Ltd. Memory system and method of operating same using program order information
US9921749B2 (en) 2014-10-29 2018-03-20 Samsung Electronics Co., Ltd. Memory system and method including determining a read voltage based on program order information and a plurality of mapping tables
US11302369B2 (en) 2020-09-14 2022-04-12 Kioxia Corporation Memory system and controlling method

Similar Documents

Publication Publication Date Title
JP4533956B2 (ja) フラッシュメモリシステムのデータ記憶容量の解放
US7515500B2 (en) Memory device performance enhancement through pre-erase mechanism
JP5907255B2 (ja) Lsb及びmsbページにおける選択的データ記憶
US9021187B2 (en) Logical block address remapping
KR100877448B1 (ko) 비휘발성 기억 시스템
US20060187738A1 (en) Memory management device and memory device
TWI584122B (zh) 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US9110781B2 (en) Memory device and controlling method of the same
KR20080032636A (ko) 논리 어드레스 공간 전반에 걸쳐 그리고 직접 데이터 파일기반 위에서 동작하는 인터페이싱 시스템
KR20060127760A (ko) 기억장치
CA2563277A1 (en) Storage device and host apparatus
JP5443998B2 (ja) 不揮発性記憶装置、ホスト装置、不揮発性記憶システム、データ記録方法、およびプログラム
US20080025706A1 (en) Information recording apparatus and control method thereof
US20110258372A1 (en) Memory device, host device, and memory system
JP2009503743A (ja) データファイルを直接記憶するメモリブロックの管理
JP4441577B2 (ja) 固定サイズ格納ブロックを有するメモリシステムにおける変換データ単位格納
CN110515550B (zh) 一种sata固态硬盘冷热数据分离的方法及其装置
JP2011095853A (ja) 不揮発性記憶装置、ホスト装置および不揮発性記憶システム
JP2010515162A (ja) 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
KR20180126656A (ko) 데이터 저장 장치 및 그것의 동작 방법
JP2009503740A (ja) データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け
JP2005115561A (ja) フラッシュrom制御装置
JP4308780B2 (ja) 半導体メモリ装置、メモリコントローラ及びデータ記録方法
US9798470B2 (en) Memory system for storing and processing translation information
JP2005115562A (ja) フラッシュrom制御装置