(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024154307
(43)【公開日】2024-10-30
(54)【発明の名称】記憶装置
(51)【国際特許分類】
G06F 12/02 20060101AFI20241023BHJP
G06F 12/00 20060101ALI20241023BHJP
【FI】
G06F12/02 530A
G06F12/02 510A
G06F12/00 597U
【審査請求】未請求
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2023068076
(22)【出願日】2023-04-18
(71)【出願人】
【識別番号】311010981
【氏名又は名称】ハギワラソリューションズ株式会社
(74)【代理人】
【識別番号】100095614
【弁理士】
【氏名又は名称】越川 隆夫
(72)【発明者】
【氏名】吉井 謙一郎
(72)【発明者】
【氏名】織部 浩道
(72)【発明者】
【氏名】鬼頭 佳宏
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160AA12
(57)【要約】
【課題】記憶装置が保持する空き容量に関する情報と外部機器である情報処理装置が保持する空き容量に関する情報とを一致させ、情報処理装置が所望する書き込み性能を保証することができる記憶装置を提供する。
【解決手段】不揮発性記憶媒体の空き容量を計算し、その計算した空き容量を保持する空き容量管理部を備えるとともに、所定の外部機器である情報処理装置100と接続され、空き容量管理部に記録された空き容量の情報を外部機器としての情報処理装置100に通知する機能を備えるもので、情報処理装置100に通知する空き容量の情報は、情報処理装置100が要求する書き込み性能を実現可能か否か判別可能な空き容量情報である。
【選択図】
図1
【特許請求の範囲】
【請求項1】
搭載する記憶媒体の空き容量を計算し、その計算した空き容量を保持する空き容量管理部を備えるとともに、所定の外部機器と接続され、前記空き容量管理部に保持された前記空き容量の情報を前記外部機器に通知する機能を備える、記憶装置。
【請求項2】
前記外部機器が要求する書き込み性能に関する情報を取得するとともに、前記外部機器に通知する前記空き容量の情報は、前記外部機器が要求する書き込み性能を実現可能か否か判別可能な空き容量情報であることを特徴とする請求項1に記載の記憶装置。
【請求項3】
前記外部機器に通知する前記空き容量の情報は、書き込み性能と、前記書き込み性能を実現可能な空き容量情報であることを特徴とする請求項1に記載の記憶装置。
【請求項4】
前記空き容量情報は、前記外部機器が所望する書き込み性能を満たすデータの書き込みを実施可能なデータのサイズであることを特徴とする請求項2または請求項3に記載の記憶装置。
【請求項5】
前記空き容量情報は、前記外部機器との間で予め設定したデータのサイズを単位とした単位サイズで示されることを特徴とする請求項4に記載の記憶装置。
【請求項6】
前記単位サイズは、変更可能であることを特徴とする、請求項5に記載の記憶装置。
【請求項7】
前記単位サイズは、複数の値から選択可能であることを特徴とする請求項6に記載の記憶装置。
【請求項8】
前記単位サイズは、NANDフラッシュメモリのブロックサイズであることを特徴とする請求項5に記載の記憶装置。
【請求項9】
前記外部機器に対する前記空き容量情報の通知は、前記外部機器からの空き容量の通知要求に応じて行うことを特徴とする請求項2または請求項3に記載の記憶装置。
【請求項10】
前記外部機器に通知する前記空き容量情報は、前記外部機器からの前記空き容量の通知要求を受領した時点における前記記憶媒体の空き容量に基づいた情報であることを特徴とする請求項9に記載の記憶装置。
【請求項11】
前記空き容量の通知要求には、前記外部機器が要求するデータの書き込みに必要とされる空き容量の情報が含まれるとともに、前記空き容量の通知要求に含まれる空き容量と、前記空き容量の通知要求を受領した時点における前記空き容量管理部で保持された空き容量とを比較し、その比較した2つの前記空き容量が等しいか否かの判別情報を前記空き容量情報として通知することを特徴とする請求項9に記載の記憶装置。
【請求項12】
前記空き容量の通知要求には、前記外部機器が要求するデータの書き込みに必要とされる空き容量の情報が含まれるとともに、前記空き容量の通知要求に含まれる空き容量と、前記空き容量の通知要求を受領した時点における前記空き容量管理部で保持された空き容量とを比較し、前記空き容量の通知要求に含まれる空き容量の方が大きいか否かの判別情報を前記空き容量情報として通知することを特徴とする請求項9に記載の記憶装置。
【請求項13】
前記空き容量の通知要求には、前記外部機器が要求するデータの書き込みに必要とされる空き容量の情報が含まれるとともに、前記空き容量の通知要求に含まれる空き容量と、前記空き容量の通知要求を受領した時点における前記空き容量管理部で保持された空き容量とを比較し、前記空き容量の通知要求に含まれる空き容量の方が小さいか否かの判別情報を前記空き容量情報として通知することを特徴とする請求項9に記載の記憶装置。
【請求項14】
前記外部機器からの空き容量の通知要求、および前記外部機器に対する前記空き容量情報の通知は、専用の目的のコマンドを用いることを特徴とする請求項9に記載の記憶装置。
【請求項15】
前記外部機器からの空き容量の通知要求、および前記外部機器に対する前記空き容量情報の通知は、他の目的のコマンドに含ませることを特徴とする請求項9に記載の記憶装置。
【請求項16】
前記外部機器に対する前記空き容量情報の通知は、前記空き容量の通知要求の有無に関わらず予め設定した所定の条件を満たしたときに行われることを特徴とする請求項9に記載の記憶装置。
【請求項17】
前記外部機器からの空き容量の通知要求、および前記外部機器に対する前記空き容量情報の通知は、データ読み出し要求およびデータ書き込み要求の対象データを送受信するための通信路を用いることを特徴とする請求項9に記載の記憶装置。
【請求項18】
前記外部機器からの前記空き容量の通知要求、および前記外部機器に対する前記空き容量情報の通知は、データ読み出し要求およびデータ書き込み要求の対象データを送受信するための通信路とは異なる他の通信路を用いることを特徴とする請求項9に記載の記憶装置。
【請求項19】
前記外部機器が所望する書き込み性能に対応するデータ書き込みを実現することを保証する書き込み性能保証状態と、前記外部機器が所望する書き込み性能に対応するデータ書き込みを実現することを保証しない書き込み性能非保証状態との間で遷移可能とされることを特徴とする請求項2または請求項3に記載の記憶装置。
【請求項20】
前記外部機器に対する前記空き容量情報の通知は、前記書き込み性能保証状態において行われることを特徴とする請求項19に記載の記憶装置。
【請求項21】
前記空き容量情報は、前記外部機器が所望する書き込み性能を満たすデータの書き込みを実施可能な時間を示すものであることを特徴とする請求項2または請求項3に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NANDフラッシュメモリなどの不揮発性記憶媒体を主たる記憶媒体とし、書き込み性能の保証を必要とする用途で使用される記憶装置に関するものである。
【背景技術】
【0002】
データを高速に情報処理装置から記憶装置に記録するための技術は、例えば特許文献1および特許文献2等に開示されている。情報処理装置は、記憶装置にデータを書き込むとき、および記憶装置からデータを読み出すときに、記憶装置に対して、アクセス対象のデータを論理ブロックアドレス(Logical Block Address、本明細書においては、以降LBAと表記)と論理ブロック数とで指定する。
【0003】
情報処理装置は、例えば「LBA=0x100から8セクタの書き込み」や「LBA=0x0から256セクタの読み出し」という要求を記憶装置に送信する。このように情報処理装置は、記憶装置に記録されているデータをLBA空間上で管理する。すなわち、情報処理装置は、有効なデータを書き込んでいないLBA空間上の領域を、記憶装置の「空き領域」であると認識するのである。なお、接頭子“0x”はそれを冠した数値が16進数表記であることを示す。
【0004】
一方、記憶装置は、LBAと当該LBAに対応する最新データが記録されている記憶媒体上の位置の対応関係を管理している。記憶装置は、例えば「LBA=0x100の最新データは記憶媒体上のアドレスAに記録されている」、或いは「LBA=0x0の最新データは記憶媒体上のアドレスBに記憶されている」のように、対応関係を管理する。すなわち、記憶装置は、記憶装置に記録されているデータを、LBA空間上ではなく記憶媒体上のアドレスで管理しているのである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005-190331号公報
【特許文献2】特開2016-009280号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記従来技術においては、情報処理装置が保持する空き容量に関する情報(LBA空間上の管理)と記憶装置が保持する空き容量に関する情報(LBA空間上ではなく記憶媒体上のアドレスで管理)とが必ずしも一致していないため、情報処理装置が記憶装置にデータを書き込む際、情報処理装置が所望する書き込み性能が保証されないという不具合があった。
【0007】
本発明は、このような事情に鑑みてなされたもので、記憶装置が保持する空き容量に関する情報と外部機器である情報処理装置が保持する空き容量に関する情報とを一致させ、情報処理装置が所望する書き込み性能を保証することができる記憶装置を提供することにある。
【課題を解決するための手段】
【0008】
本発明に係る記憶装置は、搭載する記憶媒体の空き容量を計算し、その計算した空き容量を保持する空き容量管理部を備えるとともに、所定の外部機器と接続され、空き容量管理部に保持された空き容量の情報を外部機器に通知する機能を備えるものである。
【発明の効果】
【0009】
本発明によれば、空き容量の情報を外部機器に通知する機能を備えたので、記憶装置が保持する空き容量に関する情報と外部機器である情報処理装置が保持する空き容量に関する情報とを一致させ、情報処理装置が所望する書き込み性能を保証することができる。
【図面の簡単な説明】
【0010】
【
図1】本発明が解決しようとする課題を説明するための構成図
【
図2】情報処理装置が記憶装置に記録したデータを管理するために使用するLBA空間の模式図
【
図3】NANDフラッシュメモリを記憶媒体とする記憶装置内のデータ記録状態を示す模式図
【
図6】記憶装置200の書き込み性能保証状態に関する状態遷移図
【
図7】情報処理装置100による、記憶装置200の書き込み性能状態を書き込み性能保証状態252に遷移させる手順を示したフローチャート
【
図8】記憶装置200における、記憶装置200の書き込み性能状態を書き込み性能非保証状態251に遷移させる手順を示したフローチャート
【
図9】情報処理装置100における、記憶装置200の空き容量情報を取得して、受領した空き容量情報から空き容量を算出する手順を示したフローチャート
【
図10】記憶装置200における、空き容量の更新手順を示したフローチャート
【
図11】情報処理装置100における、ユーザによるデータ記録モードの選択から当該記録モードでの残記録可能時間をユーザに提示するまでの手順を示したフローチャート
【
図12a】情報処理装置100における、ユーザが指定したデータ記録モードが要するビットレートを保証しながら記憶装置200にデータを書き込む処理の手順を示したフローチャート
【
図12b】情報処理装置100における、ユーザが指定したデータ記録モードが要するビットレートを保証しながら記憶装置200にデータを書き込む処理の手順を示したフローチャート
【
図14】第4の実施の形態における、複数の空き容量情報の単位サイズを保持する表の模式図
【
図15】第11の実施の形態における、情報処理装置100の内部構成図
【
図16】第11の実施の形態における、記憶装置200の内部構成図
【
図17】第13の実施の形態における、記憶装置200から情報処理装置100に返送する空き容量情報の模式図
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について図面を参照しながら具体的に説明する。
図1は、本発明に係る記憶装置とそれに接続される情報処理装置とを示す構成図である。情報処理装置100は、記憶装置200との間で、通信路300を介してデータの読み書きを行うよう構成されている。情報処理装置100と記憶装置200を接続する通信路300は、有線(ケーブル)及び無線の何れであってもよい。なお、記憶装置200は、カードの形状で情報処理装置100に挿し込む形態や、記憶装置200を情報処理装置100内のプリント基板にはんだ付けする形態等であってもよい。
【0012】
以下、情報処理装置100におけるLBA空間の管理方法について説明する。
情報処理装置100は、記憶装置200にデータを書き込むとき、および記憶装置200からデータを読み出すときに、記憶装置200に対して、アクセス対象のデータを論理ブロックアドレス(LBA)と論理ブロック数とで指定する。この論理ブロックのことはセクタと呼ばれ、セクタのサイズは例えば512バイトとされている。
【0013】
情報処理装置100は、例えば「LBA=0x100から8セクタの書き込み」や「LBA=0x0から256セクタの読み出し」という要求を記憶装置200に送信する。このように情報処理装置100は、記憶装置200に記録されているデータをLBA空間上で管理する。すなわち、情報処理装置100は、有効なデータを書き込んでいないLBA空間上の領域を、記憶装置200の「空き領域」であると認識する。
【0014】
次に、情報処理装置100による記憶装置200の「空き領域」の認識状況について、
図2を用いて説明する。なお、同図では、説明を簡潔にするために、記憶装置200の容量を5メガバイト(以降MBと表記)とし、情報処理装置100はその5MBをLBA空間400で管理している。セクタサイズを512バイトとすると、LBAは0x0から0x27FFまでとなる。
【0015】
図2(A)は、データが書き込まれていない状態を示している。このとき情報処理装置100は、記憶装置200の空き領域量が5MBであると認識している。
図2(B)は、
図2(A)の状態から、情報処理装置100が記憶装置200に対してLBA=0x800から2MB分(0x1000セクタ)書き込んだあとの状態を示している。このとき情報処理装置100は、記憶装置200の空き領域量が3MBであると認識している。
図2(C)は、
図2(B)の状態から、情報処理装置100がさらに記憶装置200に対してLBA=0x800から1.5MB分のデータを書き込んだあとの状態を示している。情報処理装置100は、以前データを書き込んだLBA領域に新しいデータを書き込んだだけなので、記憶装置200の空き領域量はまだ3MBであると認識している。
【0016】
ところで、情報処理装置100には、静止画を撮影して記録するスチルカメラ、動画を撮影して記録するビデオレコーダー、音声を記録するボイスレコーダー、または各種時系列データを取得して記録するデータロガーなど、記憶装置200へのデータ書き込みが所望の時間内に完了することが必要とされるものがある。
【0017】
例えば、スチルカメラには、1秒間に20枚の連写を行う連写モードと称される記録モードが設定されている。この記録モードでは、1枚の写真データのサイズが1MBである場合、1秒間に1MB×20枚=20MBのデータが生成されるため、この記録モードのビットレートは毎秒20MBである、と表現される。かかるスチルカメラが連写モードで撮影している間において、撮影したデータの記録先である記憶装置は、連写モードのビットレート、つまり毎秒20MB以上の書き込み性能を発揮しなければならない。
【0018】
記憶装置200の書き込み性能が記録モード(連写モード)のビットレート未満に低下した場合、生成したデータの記憶装置への書き込みに失敗することになり、データの欠損が発生し、スチルカメラのユーザにとって不利益が生じる。したがって、情報処理装置100にとって記憶装置200の書き込み性能は重要である。しかるに、スチルカメラのように特定のビットレート以上での書き込み性能を求める情報処理装置100に対して、記憶装置200がビットレート以上でデータが書き込めることを保証することを、書き込み性能保証と称する。
【0019】
一方、記憶装置200は、LBAと当該LBAに対応する最新データが記録されている記憶媒体上の位置の対応関係を管理している。本実施形態に係る記憶装置200は、例えば「LBA=0x100の最新データは記憶媒体上のアドレスAに記録されている」或いは「LBA=0x0の最新データは記憶媒体上のアドレスBに記憶されている」のように、対応関係を管理している。すなわち、記憶装置200は、記憶装置200に記録されているデータを、LBA空間400上ではなく記憶媒体上のアドレスで管理しているのである。
【0020】
例えば、記憶装置200がNANDフラッシュメモリを記憶媒体とする場合、
図3に示すように、NANDフラッシュメモリのブロックを単位として記憶媒体を管理することができる。なお、同図においては、説明を簡潔にするためにNANDフラッシュメモリのブロックのサイズを1MBとし、5個のブロック21からブロック25で5MBの記憶容量を示している。
【0021】
そして、記憶装置200は、データ書き込み可能なNANDフラッシュメモリのブロック数にNANDフラッシュメモリのブロックサイズを掛け算することにより自身の空き容量を算出している。
図3(A)は、データが書き込まれていない状態(
図2(A)に対応する)を示している。このとき、記憶装置200は、空き容量が5MBであると認識しているので、情報処理装置100が認識する空き領域量と、記憶装置200が認識する空き容量は、5MBで等しい。
【0022】
図3(B)は、
図3(A)の状態から、情報処理装置100が記憶装置200に対してLBA=0x800から2MB分のデータを書き込んだあとの状態を示している。記憶装置200は、書き込みを要求されたデータに対して記憶領域を割り当てるが、LBAとそのLBAのデータが書き込まれる記憶媒体のアドレスが常に同じであるとは限らない。この
図3(B)では、LBA=0x800から2MB分のデータに対してブロック21とブロック22が割り当てられてデータが書き込まれたことが示されており、このとき記憶装置200は、空き容量を3MBと認識している。
【0023】
図3(B)は
図2(B)に対応する状態を示しており、情報処理装置100が認識する空き領域量と記憶装置200が認識する空き容量は、それぞれ3MBで等しい。
図3(C)は、
図3(B)の状態から、情報処理装置100がさらに記憶装置200に対してLBA=0x800から1.5MB分のデータを書き込んだあとの状態を示している。NANDフラッシュメモリのブロック21とブロック22は、既にデータを書き込んだあとであり、消去しないとデータを書き込むことができない。このため、記憶装置200は新しいブロックを割り当ててデータを書き込むこととなる。
【0024】
図3(C)では、情報処理装置100から書き込まれたLBA=0x800からの1.5MBのデータに対してNANDフラッシュメモリのブロック23とブロック24を割り当てて書き込んだことが示されている。このとき、古い「LBA=0x800から1.5MB分のデータ」は、ブロック21とブロック22に書き込まれたままである。しかるに、ブロック21は消去処理を実施するまで再利用できず、ブロック22はまだLBA=0x1400から0x17FFまでの0.5MBの最新データを記録しているため、この0.5MBのデータをほかのブロックにコピーしたうえで消去処理を実施するまで再利用できない。
【0025】
このように、あるブロックに記録されている最新データを別のブロックにコピーして前者(コピー元)のブロックを再利用可能にする記憶装置200の内部処理の一例として、ガーベッジコレクションが挙げられる。記憶装置200が前記内部処理のためにNANDフラッシュメモリにアクセスしている間は、情報処理装置100から受領した書き込みデータをNANDフラッシュメモリに書き込むことはできないので、情報処理装置100から見た記憶装置200の書き込み性能が低下することとなる。
【0026】
記憶装置200は、書き込み性能を保証するために内部処理が実行できない場合、再利用するには内部処理が必要なブロック22のことを空き容量とは認識しないので、その場合、記憶装置200は、
図3(C)の状態において空き容量は1.5MBであると認識する。こうして、
図2(C)と
図3(C)はともに同じ状態(
図2(A)と
図3(A))から同じ書き込み処理が行われた結果であるにもかかわらず、情報処理装置100は記憶装置200の空き領域量を3MBと認識し、記憶装置200は空き容量を1.5MBと認識している。
【0027】
この状態で、仮に情報処理装置100が情報処理装置100自身の認識に従って記憶装置200に3MBの追加の書き込みを要求すると、その時点で記憶装置200が持つ空き容量は1.5MBしかないため、残りの1.5MBを書き込むためにブロック21やブロック22に対する内部処理が必要となる。前述の通り、NANDフラッシュメモリのブロックを再利用するための内部処理はデータのコピー処理(読み出し処理と書き込み処理)や消去処理をともない、前記内部処理中は情報処理装置100から受領したデータをNANDフラッシュメモリに書き込めないため、情報処理装置100から見た書き込み性能が低下して、保証していた書き込み性能を下回り、書き込み性能の保証が破綻する虞がある。
【0028】
本実施形態にかかる記憶装置200は、このような書き込み性能の保証が破綻するのを防止し得るもので、記憶媒体としてのメディア(本実施形態においては、半導体メモリなどの不揮発性記憶媒体)の空き容量を計算し、その計算した空き容量を保持する空き容量管理部を備えるとともに、情報処理装置100(所定の外部機器)と接続され、空き容量管理部に保持された空き容量の情報を情報処理装置100(外部機器)に通知する機能を備えている。
【0029】
第1の実施形態に係る情報処理装置100は、
図4に示すように、センサー101、センサー制御部102、ユーザインターフェース103、ユーザインターフェース制御部104、データバッファ105、データ制御部106,記憶装置制御部107、空き容量管理部108、デバイスドライバ109、インターフェース110、データバス111、制御バス112、を有して構成されている。
【0030】
センサー101は、画像、音声、光、温度、湿度、などを観測可能な装置であり、このセンサー101で取得したデータがデータバス111を経由してデータバッファ105に転送されて蓄えられる。センサー制御部102は、センサー101でデータを取得する時間頻度や生成する(取得する)データ量を制御し、画像の解像度や動画における単位時間あたりのデータ量(ビットレート)を変化させるよう構成されている。
【0031】
ユーザインターフェース103は、例えばボタン、タッチパネルまたはダイヤル等から成り、情報処理装置100のユーザはこのユーザインターフェース103を用いて情報処理装置100の操作や動作設定を変更(選択)することとなる。ユーザインターフェース制御部104は、ユーザの入力内容をデータ制御部106に通知するとともに、データ制御部106からの指示にしたがいユーザインターフェース103を変化させるよう構成されている。
【0032】
データバッファ105は、センサー101から入力されたデータや、データ制御部106により加工もしくは生成されたデータを一時的に溜めるメモリである。記憶装置200との間でのデータ書き込みやデータ読み出し時には、このデータバッファ105がデータ置き場として使用される。このデータバッファ105は、典型的には揮発性メモリ(DRAMなど)で実現される。
【0033】
データ制御部106は、ユーザインターフェース103を通じて取得したユーザの選択を、センサー制御部102に伝える機能や、センサー101から取得したデータのデータバッファ105内での記録位置決定などの機能を有するものである。記憶装置制御部107は、LBA空間400を管理するもので、LBA空間400上での空き領域量を管理するよう構成されている。また、記憶装置制御部107は、記憶装置200との間でデータを読み書きする際に指定する先頭LBAとセクタ数を決める機能を有するもので、例えば、ファイルシステムの機能を備える。
【0034】
空き容量管理部108は、記憶装置200の空き容量情報を管理するもので、記憶装置200から取得した空き領域情報を保持し、データ制御部106にその内容を通知するよう構成されている。デバイスドライバ109は、記憶装置200が準拠する仕様を理解し、記憶装置制御部107が望む記憶装置200の操作を実際のコマンドなどに変換する機能を有する。
【0035】
また、デバイスドライバ109は、記憶装置200から受領した返答や情報を記憶装置制御部107に伝える機能も有する。なお、デバイスドライバ109として、例えばSerial ATA(SATA)ドライバ、Small Computer System Interface(SCSI)ドライバ、NVM Express(NVMe)ドライバなどを用いることができる。
【0036】
インターフェース110は、通信路300を介して情報処理装置100と記憶装置200とを接続する機能を有するものである。例えば、SATAホストコントローラやPCI Express(PCIe)のルートコンプレックスなどを用いることができる。データバス111は、センサー101とデータバッファ105とインターフェース110とを接続するデータの経路である。なお、データバス111によりデータ制御部106とデータバッファ105とを接続してもよい。また、制御バス112は、各種制御用データやモジュール間通信用のバスである。
【0037】
上記のように、情報処理装置100を構成するこれらの各要素は、ハードウェアで実装されたものであってもよく、ソフトウェアで実装されるものであってもよい。ソフトウェアで実装されたものの場合は、それらソフトウェアを実行するプロセッサもしくはコントローラを別途備えることとなる。
【0038】
本実施形態に係る記憶装置200は、
図5に示すように、ホストインターフェース201、コマンド制御部202、データ管理部203、空き容量管理部204、メディア管理部205、装置制御部206、データバッファ207、RAM208、メディアインターフェース209、データバス210、制御バス211、メディア212、メディアチャネル213、を有して構成される。
【0039】
ホストインターフェース201は、通信路300を介して情報処理装置100と記憶装置200を接続する機能を有する。コマンド制御部202は、情報処理装置100から受領した各種コマンドを解釈し、記憶装置200内の各モジュールへの指示送出や返答受領を行うものである。データ管理部203は、記憶装置200が記録しているデータとメディア上の記録位置の対応関係を管理するもので、少なくとも、LBA空間400上の各セクタの最新データが記録されているメディア上の位置を、そのLBAと対応付けて管理するよう構成されている。
【0040】
空き容量管理部204は、データ管理部203が有する最新データとメディア上の記録位置情報と、後述するメディア管理部205が管理するメディアの使用状況情報と、情報処理装置100から与えられたもしくは記憶装置200に予め設定されている単位時間あたりの記録データサイズ(ビットレート)に基づいて、記憶装置200の空き容量(すなわち、メディア212の空き容量)を計算し、その計算した空き容量を保持するよう構成されている。また、空き容量管理部204は、情報処理装置100からの「空き容量の通知要求」を受領するのに伴って、保持された空き容量の情報を情報処理装置100に返答する機能を有している。
【0041】
メディア管理部205は、記憶装置200が搭載するメディア212(不揮発性記憶媒体、本実施形態においてはNANDフラッシュメモリ等の半導体メモリ)の管理を行うもので、メディア固有の情報や処理を行い得るよう構成されている。装置制御部206は、前述の各モジュールを制御して記憶装置200の記憶機能を実現する機能を有するものである。なお、記憶装置200は情報処理装置100から送信されたコマンドの処理以外にも、メディア212に記録されたデータの整理や信頼性保証処理、加えて統計情報処理などの内部処理を行う必要があり、本実施形態に係る装置制御部206は、これらの処理とコマンド処理の調停を行う機能も有している。
【0042】
データバッファ207は、情報処理装置100とメディア212との間でデータ転送を行う際に、一時的にデータを溜める機能を有している。データバッファ207は、例えばDRAMなどのRAMで実現される。また、RAM208は、各モジュールの動作に必要なデータの配置に用いられるものである。メディアインターフェース209は、メディア212へのデータ転送やコマンド発出、さらには返答受領を行うためのプロトコル変換装置から成る。メディア212がNANDフラッシュメモリであれば、このメディアインターフェース209はNANDインターフェースとされる。
【0043】
データバス210は、データ転送に使用する経路であり、制御バス211は、データ以外のコマンド、指示、返答、などをやり取りするための経路である。メディア212は、半導体メモリから成る不揮発性記憶媒体であり、記憶装置200はこのメディア212にデータを書き込み、さらにはメディア212からデータを読み出すことで記憶装置としての機能を実現する。メディアチャネル213は、メディアインターフェース209とメディア212とを接続するバスである。かかるメディアチャネル213は、データバスと制御バスが分離されているものであっても、同一の信号線をデータと制御で共用するものであってもよい。
【0044】
なお、本実施例では、具体的には、メディア212はNANDフラッシュメモリとされる。すなわち、メディアインターフェース209は、NANDインターフェース、メディア管理部205は、NAND管理部、およびメディアチャネル213は、NANDチャネルとなる。本実施例ではメディア212をNANDフラッシュメモリであるとしたが、他の不揮発性記憶媒体でも同様である。例えば、メディア212は、Magnetoresistive Random Access Memory(MRAM)またはPhase-change Memory(PCM)であってもよく、他の半導体メモリや非半導体の不揮発性記憶媒体でもよい。
【0045】
ここで、
図1~3を用いて説明したように、記憶装置200は、空き容量が少なくなるとガーベッジコレクションに代表される内部処理を自身の判断で実行して空き容量を増やす必要がある。しかし、記憶装置200が当該内部処理を実行している間は、当該内部処理のために一時的にメディア212が占有され、情報処理装置100からのアクセス要求に基づくメディア212へのアクセスを実行できない。
【0046】
この結果、当該内部処理実行中は当該内部処理を実行していないときと比較して、情報処理装置100から見た記憶装置200の書き込み性能が低下してしまう。この内部処理の影響による書き込み性能の低下は、情報処理装置100が求める書き込み性能の保証を困難にすることが多い。さらに、情報処理装置100には、記憶装置200の書き込み性能が、内部処理を実行しても保証できるのか、内部処理を少しなら実行しても保証できるのか、そもそも所望の書き込み性能を保証できるのか、などを把握できない。そこで、記憶装置200の書き込み性能に関する状態、つまり書き込み性能状態として、情報処理装置100の要求する書き込み性能を保証する状態と保証しない状態の2状態を定義し、前者を「書き込み性能保証状態」、後者を「書き込み性能非保証状態」と称することとする。
【0047】
図6は、書き込み性能保証状態を含む、記憶装置200の書き込み性能に関する状態遷移を示している。記憶装置200の書き込み性能状態は、少なくともこの書き込み性能保証状態252と書き込み性能非保証状態251の2つの状態を有する。この2つの状態のほかに、複数の状態を備えてもよいが、それらの状態の書き込み性能は保証されるか保証されないかの何れかに分類されるため、本実施形態においては、この2状態のみ図示する。
【0048】
そして、書き込み性能保証状態252と書き込み性能非保証状態251は、それぞれ一方から他方に遷移できる(状態遷移253および状態遷移254)ものとされている。情報処理装置100は、記憶装置200によるデータ書き込み性能の保証が必要である場合、記憶装置200の書き込み性能状態を、書き込み性能非保証状態251から書き込み性能保証状態252に遷移させる(状態遷移253)。
【0049】
また、情報処理装置100は、記憶装置200によるデータ書き込み性能の保証が不要な場合や、記憶装置200の空き容量が少ないと判断した場合に、記憶装置200の書き込み性能状態を、書き込み性能保証状態252から書き込み性能非保証状態251に遷移させる(状態遷移254)。情報処理装置100が、記憶装置200の空き容量が少ないと判断した場合に記憶装置200の書き込み性能状態を書き込み性能非保証状態に遷移させるのは、書き込み性能を保証しない状態に明示的に遷移させることで、記憶装置200に対して空き容量を回復するために必要な内部処理を実行してもよいと通知するためである。
【0050】
さらに、記憶装置200は、書き込み性能状態が書き込み性能保証状態252のときに、空き容量が予め記憶装置200自身が定めた閾値を下回ると、書き込み性能状態を書き込み性能非保証状態251に遷移させる(状態遷移254)。記憶装置200が自身の判断で書き込み性能状態を書き込み性能非保証状態251に遷移させるのは、空き容量の低下に伴い、情報処理装置100の要求する書き込み性能を保証できないと記憶装置200自身が判断した場合や、記憶装置としての機能継続に内部処理が必須であると判断した場合とされる。
【0051】
そして、記憶装置200は、自身の書き込み性能状態が書き込み性能非保証状態251と書き込み性能保証状態252の何れであるのかを情報処理装置100に通知する機能を備えている。なお、記憶装置200は、装置制御部206が現在の書き込み性能状態を記録している。以下、情報処理装置100による、記憶装置200の書き込み性能状態を書き込み性能保証状態に遷移させる手順について、
図7のフローチャートに基づいて説明する。
【0052】
情報処理装置100は、記憶装置200の書き込み性能を保証する必要があるかどうかを判断する(ステップS1101)。記憶装置200の書き込み性能を保証する必要がある場合として、所望のビットレートで記憶装置200へデータを記録する場合が挙げられる。情報処理装置100が記憶装置200の書き込み性能保証を必要と判断した場合(ステップS1101、Yes)、記憶装置200から取得した空き容量が当該ビットレートで十分な時間記録できるだけ残っているかどうかを判断する(ステップS1102)。このステップS1102においては、情報処理装置100は、たとえば所望のビットレートで1秒間撮影可能であるか、或いは5秒間撮影可能であるかなどの基準で記録時間の残量の多少を判断する。
【0053】
そして、空き容量が十分である場合(ステップS1102、Yes)、情報処理装置100は、記憶装置200の書き込み性能状態が既に書き込み性能保証状態か否かをチェックする(ステップS1103)。記憶装置200の書き込み性能状態が既に書き込み性能保証状態であった場合(ステップS1103、Yes)は、このまま処理を終了するとともに、記憶装置200の書き込み性能状態が書き込み性能非保証状態であった場合(ステップS1103、No)は、記憶装置200に対して、書き込み性能状態を書き込み性能保証状態に遷移する要求を送出する(ステップS1104)。記憶装置200から受領した書き込み性能状態の遷移要求の結果が成功であれば(ステップS1105、Yes)、書き込み性能が保証される状態への遷移が完了したことになり、処理を終了する。
【0054】
一方、書き込み性能状態の遷移要求が失敗したとき(ステップS1105、No)は、その旨を通知して(ステップS1106)、処理を終了する。記憶装置200の書き込み性能保証が必要であるにもかかわらず、記憶装置200の空き容量が足りないと判明した場合(ステップS1102、No)、記憶装置200の書き込み性能状態が書き込み性能非保証状態かどうかチェックする(ステップS1107)。
【0055】
そして、既に書き込み性能状態が書き込み性能非保証状態だった場合(ステップS1107、Yes)、記憶装置200の空き容量が足りないことを通知して(ステップS1108)、終了する。また、書き込み性能状態が書き込み性能保証状態だった場合(ステップS1107、No)は、記憶装置200に、書き込み性能状態を書き込み性能非保証状態に遷移する要求を送出する(ステップS1109)。
【0056】
記憶装置200から受領した書き込み性能状態の遷移要求の結果が成功であれば(ステップS1110、Yes)、書き込み性能が保証されない状態への遷移が完了したことになり、空き容量が不足していることをユーザに通知して(ステップS1108)、処理を終了する。一方、書き込み性能状態の遷移要求が失敗したとき(ステップS1110、No)は、遷移に失敗したことを通知し(ステップS1111)、また空き容量が不足していることを通知して(ステップS1108)、処理を終了する。
【0057】
また、書き込み性能保証が不要である場合(ステップS1101、No)は、記憶装置200の書き込み性能状態が書き込み性能非保証状態か否かをチェックする(ステップS1112)。記憶装置200の書き込み性能状態が書き込み性能非保証状態だった場合(ステップS1112、Yes)は、そのまま処理を終了するとともに、記憶装置200の書き込み性能状態が書き込み性能保証状態だった場合(ステップS1112、No)は、情報処理装置100は記憶装置200に書き込み性能状態を書き込み性能非保証状態に遷移させるよう要求する(ステップS1113)。
【0058】
そして、記憶装置200から遷移処理の結果を受領し、その結果が成功であれば(ステップS1114、Yes)、そのまま処理を終了するとともに、遷移処理が失敗だった場合は(ステップS1114、No)、状態遷移に失敗したことをユーザに通知し(ステップS1115)、処理を終了する。このように、情報処理装置100から記憶装置200に対する書き込み性能状態の確認要求や書き込み性能状態の遷移要求は、通信路300を介して、専用のコマンドで実行される。
【0059】
すなわち、情報処理装置100の記憶装置制御部107から、デバイスドライバ109に要求送出が指示され、デバイスドライバ109が適切なコマンドと引数を使用してインターフェース110を介して通信路300に要求を送出するのである。記憶装置200では、情報処理装置100から送出された前記要求を示すコマンドを、ホストインターフェース201を介してコマンド制御部202が受領し、要求内容を解釈して実行する。
【0060】
なお、記憶装置200が準拠するコマンド仕様には、通常、読み出し(Read)や書き込み(Write)などの良く使用されるコマンドのほかに、「ベンダ固有コマンド(Vendor Specific Command)」なるコマンドがある。ベンダ固有コマンドは、システムの必要に応じて、システム固有のコマンドを定義するために使用されるものとされ、例えば、NVMeにもベンダ固有コマンドが存在する。
【0061】
本実施形態においては、情報処理装置100から記憶装置200への書き込み性能状態の確認要求や書き込み性能状態の遷移要求は、このベンダ固有コマンドを使用して実現することができる。また、NVMeであれば、記憶装置200の状態や統計情報(Log)を取得するためのGet Log Pageなるコマンド、記憶装置200が備える機能(Feature)の状態取得や設定を行うためのGet Featuresコマンド、さらにはSet Featuresコマンドがある。
【0062】
記憶装置200の書き込み性能状態の取得には、このGet Log PageコマンドやGet Featuresコマンドを使用し、書き込み性能状態の状態遷移にSet Featuresコマンドを使用することもできる。Get Log PageコマンドやSetおよびGet Featuresコマンドを使用して実現する場合は、それぞれベンダ固有Log Pageとベンダ固有Featureを使用して実現することができる。
【0063】
次に、記憶装置200によって、記憶装置200の書き込み性能状態を書き込み性能保証状態252から書き込み性能非保証状態251に遷移させる手順について、
図8のフローチャートに基づいて説明する。
【0064】
記憶装置200は、記憶装置200自身が予め設定した閾値を空き容量が下回っているかどうかをチェックする(ステップS2051)。空き容量が予め設定した閾値以上の場合(ステップS2051、No)は、書き込み性能状態を非保証状態に遷移させる必要はないためそのまま処理を終了する。記憶装置200自身が予め設定した閾値を空き容量が下回っていた場合(ステップS2051、Yes)、予め設定された書き込み性能を保証しながら書き込み処理を継続することは記憶装置200が記憶装置としての機能を継続提供するにあたり不可能と判断する。
【0065】
そこで、書き込み性能状態が書き込み性能保証状態252かどうかをチェックし(ステップS2052)、書き込み性能状態が書き込み性能保証状態252であれば(ステップS2052、Yes)、情報処理装置100からの要求がない状態でも、書き込み性能状態を書き込み性能非保証状態251に遷移させる(ステップS2053)とともに、書き込み性能状態が書き込み性能非保証状態251であれば(ステップS2052、No)、そのまま処理を終了する。
【0066】
記憶装置200自身が設定する空き容量の閾値とは、前述の通り、空き容量がこの値を下回ると情報処理装置100が所望する書き込み性能を保証できないことを示す値である。情報処理装置100が記憶装置200の書き込み性能状態を書き込み性能保証状態252に遷移させた時(ステップS1104)に設定することが想定される。このように、記憶装置200は、情報処理装置100から書き込み性能状態を遷移させる要求を受領しなくても、空き容量の低下により予め設定された書き込み性能を保証できないことを検出すると、自ら書き込み性能状態を書き込み性能非保証状態251に遷移させるようになっている。
【0067】
次に、情報処理装置100が記憶装置200から空き容量を取得する手順について、
図9のフローチャートに基づいて説明する。情報処理装置100は、例えば起動時にこの手順の処理を行うことで、記憶装置200の空き容量の初期値を取得できる。もちろん、起動時以外の任意のタイミングにおいてこの処理を行うことで、適宜、記憶装置200の空き容量を把握するようにしてもよい。
【0068】
まず、データ制御部106は、空き容量管理部108に対して接続されている記憶装置200の空き容量を取得するよう指示をする(ステップS1001)。このときデータ制御部106は、空き容量管理部108に対して記憶装置200への記録対象データのビットレートをあわせて示すようになっている。かかる記録対象データには、動画や静止画や音声などの主たるデータのほかに、それらデータの付加情報も含む。この付加情報はメタデータと呼ばれ、たとえば、位置情報、時刻情報が挙げられる。
【0069】
そして、指示を受けた空き容量管理部108は、記憶装置制御部107に対して、前記ビットレートを提示し、記憶装置200から空き容量情報を取得するよう指示をする(ステップS1002)とともに、指示を受けた記憶装置制御部107は、デバイスドライバ109に対して、記憶装置200が準拠するプロトコルに従い空き容量情報を取得するコマンドを発出するよう指示をする(ステップS1003)。
【0070】
なお、記憶装置制御部107は、LBA空間400の管理用データを記憶装置200に書き込む必要があれば、空き容量管理部108から受領したビットレートに加え、管理用データのビットレートを追加してもよい。管理用データには、たとえばFile Allocation Table(FAT)が含まれる。デバイスドライバ109は、指示に基づいて適切なコマンドや引数を準備して、インターフェース110を介して通信路300経由で記憶装置200にコマンドを発出する(ステップS1004)。
【0071】
デバイスドライバ109は、ステップS1004で発出したコマンドの返答を受領し(ステップS1005)、受領した返答の中から空き容量情報を抽出した後、空き容量管理部108に返答する(ステップS1006)。デバイスドライバ109から返答を受領した空き容量管理部108は、受領した空き容量情報の内容に従い適切に換算して、データ制御部106に返答する(ステップS1007)。なお、ステップS1007で行われる換算処理は、例えば受領した空き容量情報の単位がギガバイトで、データ制御部106が求める空き容量の単位がMBであるときに、取得した空き容量情報を1024倍すること、などとされるが、換算処理が不要である場合は、換算処理は行わなくても良い。
【0072】
このようにして、情報処理装置100は、情報処理装置100が記憶装置200に所望する書き込み性能を保証可能な、記憶装置200の本当の空き容量(メディア212(不揮発性記憶媒体)の空き容量)を把握することができる。なお、情報処理装置100が複数のデータ記録モードを備え、複数のデータ記録モードのそれぞれについて記憶装置200がその書き込み性能を保証可能な空き容量情報を取得してもよい。複数のデータ記録モードそれぞれについて空き容量を取得する場合は、
図9の手順を各記録モードについて繰り返すことにより実現できる。
【0073】
次に、記憶装置200における、空き容量計算の手順について、
図10のフローチャートに基づいて説明する。記憶装置200は、例えば起動時にこの処理を行うことで空き容量の初期値を算出することができる。もちろん、情報処理装置100からの空き容量取得要求の有無にかかわらず、起動時以外の任意のタイミングでこの処理を行うことにより、適宜空き容量を最新の状態に保つことができる。
【0074】
まず、記憶装置200の装置制御部206は、メディア管理部205にメディア212の使用状況を更新するよう指示する(ステップS2001)とともに、指示を受けたメディア管理部205は、メディア212の使用状況を更新する(ステップS2002)。メディア212の使用状況を示す情報には、例えば、有効なデータを保持しておらず新たなデータの記録に使用できるブロック(フリーブロックと称する)の数、有効なデータを保持しており新たなデータの記録には使用できないブロック(アクティブブロック)の数、書き込まれている有効(最新)データの総サイズ、書き込まれている無効(古い)データの総サイズ、などが挙げられる。これらの情報の一部、またここに記載されない他の情報を使用してもよい。
【0075】
そして、メディア管理部205がメディア212の使用状況を示す情報を最新に更新すると、装置制御部206は、空き容量管理部204に、空き容量の計算と更新を指示する(ステップS2003)。空き容量管理部204は、予め決められた方法で空き容量を計算して保持する(ステップS2004)。空き容量の計算方法の具体例としては、フリーブロックの数にメディア212のブロックサイズを掛け算する方法が挙げられる。
【0076】
この方法を使用した場合、空き容量は具体的なデータのサイズで表現される。例えば、フリーブロック数が10でメディア212のブロックサイズが32MBであれば、空き容量は10x32=320MBとなる。また、空き容量の計算方法の別の例としては、情報処理装置100から別途指定されたビットレートにより計算方法を変更することも考えられる。
【0077】
例えば、提示されたビットレートでのデータ書き込みを保証するために内部処理を実行できない場合は、前記のような単純な掛け算の結果を空き容量とし、提示されたビットレートでの書き込みを保証しつつも内部処理を実行できる場合は前記単純な掛け算結果にある程度の容量を追加した値を空き容量とする、などの方法が挙げられる。このように、空き容量は、必ずしも記憶装置200が内部処理を一切行わない場合に記憶装置200に書き込むことができる残データサイズとは限らない。
【0078】
情報処理装置100は、
図7で示す手順で取得した記憶装置200の空き容量を使用して、動画の連続撮影可能時間、静止画の連続撮影可能枚数、気象データ(温度、湿度、大気圧)の連続記録可能時間、などを計算可能とされている。これは、取得した記憶装置200の空き容量と、記憶装置200に記録を要求するデータのビットレートとから計算することができる。例えば記録を要求するデータのビットレートが1秒間に4MBの場合、記憶装置200から受領した空き容量が800MBであれば、800÷4=200秒だけ連続記録可能であると計算することができる。
【0079】
次に、情報処理装置100による記憶装置200に記録するデータの残連続記録時間の計算手順について、
図11に示すフローチャートに基づいて説明する。
まず、ユーザインターフェース103は、ユーザに対して記録モードの変更方法を提示する(ステップS1051)。このユーザによる記録モードの変更は、例えばタッチパネルに対するタッチ操作、操作つまみの回動操作、操作ボタンの押圧操作、などによる実施が考えられる。
【0080】
ユーザインターフェース制御部104は、ユーザが記録モードを変更したかどうか確認し(ステップS1052)、記録モードを変更した場合(ステップS1053、Yes)、ユーザインターフェース制御部104は、データ制御部106に記録モードが変更されたことを通知する(ステップS1054)。このときユーザインターフェース制御部104は、データ制御部106に対して、新たに選択された記録モードを特定可能な情報を送信する。
【0081】
記録モードの変更通知を受領したデータ制御部106は、空き容量管理部108に最新の空き容量の取得を指示する(ステップS1055)。最新の空き容量の取得指示を受けた空き容量管理部108は、記憶装置200から空き容量情報を取得する必要があるかどうかを判断する(ステップS1056)。この判断には、例えば最後に空き容量を受領してから予め定めた時間が経過しているかどうか、或いは最後に空き容量を受領してから記憶装置200にデータ書き込みを実施したかどうか、などの条件を用いることができる。
【0082】
そして、最新の空き容量を受領する必要があると判断した場合(ステップS1056、Yes)、
図7の手順を実行して最新の空き容量を受領し(ステップS1057)、その後、空き容量管理部108は、受領して算出した空き容量をデータ制御部106に通知する(ステップS1058)。一方、空き容量の再取得は不要であると判断した場合(ステップS1056、No)、空き容量管理部108はデータ制御部106に、保持している空き容量を通知する(ステップS1059)。
【0083】
次に、データ制御部106は、ユーザインターフェース制御部104から通知された新しい記録モードのビットレートを取得する(ステップS1060)。データ制御部106は、例えば処理可能な記録モードと各記録モードのビットレートを対応付けた一覧表を保持しており、新しい記録モードのビットレートを当該表を参照して取得することができる。空き容量管理部108に空き容量取得指示を送る際に新しい記録モードのビットレートを取得していた場合は、既に新しい記録モードのビットレートは明らかになっているのでこのステップを実行する必要はない。
【0084】
その後、データ制御部106は、ステップS1058もしくはステップS1059で取得した空き容量と、ステップS1060で取得したビットレートとから、新しい記録モードで連続記録可能時間を計算する(ステップS1061)。前述の通り、例えば新しい記録モードのビットレートが1秒間に8MBで、空き容量が800MBであれば、800÷8=100秒が残連続記録可能時間となる。
【0085】
そして、データ制御部106は、計算した残連続記録可能時間をユーザインターフェース制御部104に通知する(ステップS1062)とともに、ユーザインターフェース制御部104は、データ制御部106から受領した残連続記録可能時間を、ユーザインターフェース103を通じてユーザに通知する(ステップS1063)。一方、記録モードが変更されていなかった場合(ステップS1053、No)、現在の録画モードでの残連続記録時間を更新する必要があるかどうか判断する(ステップS1064)。この判断の条件には、例えば最後に空き容量を受領してから予め定めた時間が経過しているかどうか、或いは最後に空き容量を受領してから記憶装置200にデータ書き込みを実施したかどうか、などの条件を用いることができる。
【0086】
残連続記録時間を更新する必要があると判断した場合(ステップS1064、Yes)、ステップS1055に進み、残連続記録時間を更新する必要がないと判断した場合、ユーザが記録モードを変更したかどうかのチェック(S1052)に戻る。以上により、情報処理装置100による記憶装置200に対する残連続記録時間の計算手順とユーザへの提示処理の手順が終了する。なお、本実施形態においては、残連続記録時間の計算の例として動画を使用したが、記録データが静止画でも、気象データ(温度、湿度、大気圧)などにおいても、情報処理装置100が同様の手順により連続記録可能枚数や連続記録可能時間を計算し、ユーザに提示することができる。
【0087】
本実施形態によれば、上記手順を経ることにより、記憶装置200の空き容量の情報を記憶装置200と情報処理装置100とで共有することができ、その結果、情報処理装置100から記憶装置200への書き込み性能を保証することができる。
【0088】
次に、情報処理装置100から記憶装置200へ書き込み性能保証を実現しながらデータを書き込む処理の手順について、
図12(a)(b)のフローチャートに基づいて説明する。
先ず、情報処理装置100は、記憶装置200に記録するデータのビットレートを取得する(ステップS3001)。情報処理装置100が書き込むデータのビットレートを取得する方法および手順は、
図11のフローチャートで説明したような、ユーザインターフェース103を使用した方法および手順が使用される。
【0089】
次に、情報処理装置100は、記憶装置200から空き容量を取得する(ステップS3002)。この情報処理装置100による記憶装置200の空き容量取得処理の手順は、
図9のフローチャートで説明した通りである。情報処理装置100は、記憶装置200から空き容量を取得すると、次に残記録可能時間を計算してユーザに提示する(ステップS3003)。残記録可能時間の計算とユーザへの提示処理は、
図11のフローチャートで説明した通りである。
【0090】
そして、算出した残記録可能時間を確認し、ゼロもしくは少なすぎる場合(ステップS3004、Yes)は、ユーザにその旨を提示する(ステップS3005)。情報処理装置100は、たとえば、残記録可能時間が1秒存在することを記録実施の条件としていれば、残記録可能時間が1秒より少なければユーザに空き容量が足りないことを通知する。
その後、ユーザがユーザインターフェース103を操作して異なる記録モードを選択するまで待ち(ステップS3006)、ユーザが異なる記録モードを選択した場合、ステップS3001に戻り、処理を継続する。これは、ユーザがよりビットレートの低い(時間あたりの記録データ量が少ない)記録モードを選択すれば、残記録可能時間がより長くなるからである。
【0091】
続いて、算出した残記録可能時間が十分である場合(ステップS3004、No)、情報処理装置100は記憶装置200の書き込み性能状態を書き込み性能保証状態252に遷移させる(ステップS3007)。情報処理装置100による記憶装置200の書き込み性能状態の遷移処理の手順は、
図7のフローチャートを用いて説明した通りである。なお、このステップS3007の処理は、ユーザによる操作(ユーザインターフェース103を使用した操作)を契機に実施してもよい。例えば、記録開始準備を意味する操作ボタンをユーザが押圧操作することを契機に実施するようにしてもよい。
【0092】
記憶装置200の書き込み性能状態の遷移に失敗した場合は(ステップS3008、No)、ユーザにその旨を提示して(ステップS3009)、処理を終了するとともに、記憶装置200の書き込み性能状態の遷移に成功した場合は(ステップS3008、Yes)、書き込み性能が保証された状態での書き込みを開始する(ステップS3010)。情報処理装置100は、性能が保証された書き込みが行われている期間中においても、定期的に、もしくは何かのイベント発生時に、記憶装置200の空き容量を確認することができる(ステップS3011)。これにより、例えば、残記録可能時間の更新や、記録を停止するタイミングを計ることができる。
【0093】
情報処理装置100が予め定めた閾値を空き容量が下回った時は(ステップS3012、Yes)、情報処理装置100は記録を停止し(ステップS3013)、記憶装置200の書き込み性能状態を書き込み性能非保証状態に遷移させる(ステップS3014)。かかる閾値は、ステップS3004での条件判断で使用した条件と同じものを使用することができる。
【0094】
そして、空き容量不足により書き込み性能保証ができないことをユーザに提示し(ステップS3015)、その後、情報処理装置100は、ステップS3001に戻り、処理を継続する。さらに、空き容量が引き続き十分に存在する場合は(ステップS3012、No)、ユーザが撮影を停止していないかチェックする(ステップS3016)。ユーザが撮影を停止していた場合(ステップS3016、Yes)、情報処理装置100は、記憶装置200の書き込み性能状態を書き込み性能非保証状態に遷移させ(ステップS3017)、書き込み性能が保証されていない状態に遷移したことをユーザに提示する(ステップS3018)。情報処理装置100による記憶装置200の書き込み性能状態の遷移処理の手順は、
図7のフローチャートを用いて説明した通りである。その後情報処理装置はステップS3001に戻り、処理を継続する。
【0095】
次に、
図12のフローチャートを用いて説明したように、記憶装置200が書き込み性能を保証可能な空き容量を情報処理装置100と記憶装置200が共有することで情報処理装置100が所望のビットレートを維持しながら記憶装置200にデータを書き込むことができる手順が実際に動作することを、具体的な例を使用して説明する。
【0096】
図13は、
図12で示した情報処理装置100から記憶装置200へのデータ書き込みの様子を時系列で示した一連の図であり、(A)→(B)→(C)→(D)→(E)→(F)の順が時間経過の順序である。なお、
図13の例では、記憶装置の全容量は6MBであり、情報処理装置100がデータ書き込み時に記憶装置にデータの書き込み先を指定するLBAの空間も6MB(0x0から0x2FFFまで)である。さらに、
図13では、記憶装置200が搭載する不揮発記憶媒体であるNANDフラッシュメモリのブロックのサイズは1MBとするとともに、情報処理装置100が書き込みを停止する基準とする残記録時間の閾値は1.5秒とする。
【0097】
図13(A)は、情報処理装置100による記憶装置200へのデータ書き込みが開始される前の状態を示している。LBA空間には使用中領域はなく、6つのNANDフラッシュメモリブロックも全て空きブロックである。以降、
図12に示した手順と
図13に示した模式図とを参照しつつ説明する。情報処理装置100は記録するデータのビットレートを取得する(ステップS3001)。ここではビットレートは毎秒1MBとし、記憶装置200は、前記毎秒1MBの書き込み性能を保証するためには記憶装置200での内部処理をする余裕がないものとする。
【0098】
情報処理装置100は、記憶装置200の空き容量を取得する(ステップS3002)。
図13(A)を参酌すると、この時点での空き容量は6MBであるので、記憶装置200は情報処理装置100に「空き容量は6MBである」と返答する。この空き容量を取得したことを受けると、情報処理装置100は、空き容量から残記録可能時間を計算する(ステップS3003)。
【0099】
このとき、空き容量が6MBで、ビットレートは毎秒1MBであるから、このビットレートで記録可能な残時間は6÷1=6秒である。この6秒という残記録可能時間は、情報処理装置100がデータの記録を停止する残記録時間の閾値である1.5秒よりも長い(ステップS3004、No)ので、情報処理装置100は、記憶装置200の書き込み性能状態を書き込み性能保証状態252に遷移させる(ステップS3007)。
【0100】
ここでは、記憶装置200による状態遷移が成功したものとする(ステップS3008、Yes)。情報処理装置100は、記憶装置200が書き込み性能保証状態252への状態遷移に成功したことを把握すると、前記ビットレートでのデータ書き込みを開始する(ステップS3010)。まず、情報処理装置100が記憶装置200のLBA=0x800から1MB(0xFFFまで)の領域にデータを書き込んだとすると、記憶装置200はこのデータをNANDフラッシュメモリの0番のブロックに書き込む。この書き込んだ後の状態を
図13(B)で示す。
【0101】
現在の記憶装置200の書き込み性能状態は書き込み性能保証状態252であり、この書き込みは情報処理装置100が期待する1秒以内に完了することとなり、情報処理装置100は、記憶装置200の空き容量を確認する(ステップS3011)。しかるに、
図13(B)に示すように、記憶装置200の空き容量は5MBであるから、記憶装置200は情報処理装置100に対して「空き容量は5MBである」と通知する。
【0102】
この通知を受領した情報処理装置100は再び空き容量つまり残記録時間が閾値を上回っているかどうかを確認する(ステップS3011)。現在のビットレートは毎秒1MBであり、この例では情報処理装置100がデータの記録を停止する残記録時間の閾値は1.5秒であるから、必要な空き容量の最低値は1×1.5=1.5MBである。したがって、現在の空き容量5MBは十分に残っていることになる(ステップS3012、No)。
【0103】
次に、情報処理装置100は、ユーザが記録を停止していないかを確認する(ステップS3016)。ここではユーザは記録を停止していないとする(ステップS3016、No)と、情報処理装置100は所望のビットレートでのデータ記録を継続する(ステップS3010)。その後、情報処理装置100が以下の順でデータ書き込みを実施したとする。まずLBA0x1000から1MB(0x17FFまで)の領域に書き込み、記憶装置200は、このデータをNANDフラッシュメモリの1番のブロックに書き込む。この書き込みの直後の状態を
図13(C)で示す。空き容量は4MBであり情報処理装置100がデータ記録を停止する閾値の1.5MBよりも大きいので、データ記録処理は継続される。
【0104】
次に、LBA=0x2800から1MB(0x2FFFまで)の領域に書き込み、記憶装置200は、このデータをNANDフラッシュメモリの2番のブロックに書き込む。この書き込みの直後の状態を
図13(D)で示す。空き容量は3MBであり情報処理装置100がデータ記録を停止する閾値の1.5MBよりも大きいので、データ記録処理は継続される。
【0105】
次に、LBA=0x1400から1MB(0x1BFFまで)の領域に書き込み、記憶装置200は、このデータをNANDフラッシュメモリの3番のブロックに書き込む。この書き込みの直後の状態を
図13(E)で示す。
図13(C)の時点でLBA=0x1400から0x17FFまでの領域に書き込まれていたデータは、この書き込み(上書き)により「古いデータ」となる。このことはLBA空間400上には表れないが、記憶装置200ではNANDフラッシュメモリの1番のブロックに書き込まれていた上記「古いデータ」はそのまま放置される。このため空き容量は2MBである。この空き容量は情報処理装置100がデータ記録を停止する閾値の1.5MBよりも大きいので、データ記録処理は継続される。
【0106】
次に、LBA=0x1000から1MB(0x17FF)までの領域に再度データを書き込み(ステップS3010)、記憶装置200は、このデータをNANDフラッシュメモリの4番のブロックに書き込む。この書き込み直後の状態を
図13(F)に示す。この書き込みにより、NANDフラッシュメモリの1番のブロックに記録されている全てのデータと、3番のブロックに記録されている一部のデータが「古いデータ」となる。
【0107】
記憶装置200は、現在のビットレートでの書き込み性能を保証するためには内部処理を実行できず、全データが「古いデータ」となったNANDフラッシュメモリの1番のブロックや、一部のデータが「古いデータ」となった3番のブロックを再利用できないので、記憶装置200の空き容量は1MBとなる。そして、情報処理装置100が記憶装置200の空き容量を確認する(ステップS3011)と、空き容量は1MBであり、情報処理装置100がデータ記録を停止する閾値である1.5MB未満である(ステップS3012)。
【0108】
そこで、情報処理装置100は、データ記録を停止し(ステップS3013)、記憶装置200に対して書き込み性能保証状態を書き込み性能非保証状態251に遷移させる(ステップS3014)。ここでは状態遷移は成功するものとする。そして、情報処理装置100は、ユーザに対して、記憶装置200の空き容量不足で当該ビットレートでのデータ記録を停止したことを通知する(ステップS3015)。
【0109】
その後、情報処理装置100は、ステップS3001からステップS3006の手順において、記録するデータのビットレートをユーザが変更したかどうか、或いは記憶装置200の空き容量が回復したかどうかの確認を実施し、書き込み性能を保証した記憶装置200へのデータ書き込みを再実行できるかどうかをチェックする。以上が、
図12に示した手順による、情報処理装置100から記憶装置200に対する、書き込み性能を保証したデータ書き込み時の状態である。
【0110】
ここで、
図13(F)を参照すると、LBA空間には空き領域サイズが2.5MB分存在する。しかし、記憶装置200の空き容量は1.5MBしか存在しない。情報処理装置100が記録を停止する空き容量の閾値は1.5MBであるため、LBA空間400の空き領域サイズだけで判断すると、情報処理装置100は、この
図13(F)の状態でもデータ書き込みを続けてしまう可能性がある。
【0111】
その場合、書き込もうとしていたデータの欠損や、記憶装置200そして情報処理装置100の動作が不安定になるなどの悪影響が生じてしまい、情報処理装置100のユーザが不利益を被る虞があったが、本実施形態によれば、書き込もうとしていたデータの欠損や、記憶装置200そして情報処理装置100の動作が不安定になるなどの悪影響を防止することができる。
【0112】
次に、本発明の第2の実施形態について説明する。
第1の実施形態においては、
図9に示すように、記憶装置200から情報処理装置100に通知される空き容量情報が具体的なサイズ(メガバイトなどを単位とする値)であるので、大きなサイズを表現するためには必要な情報量が多くなる。このような状況に鑑み、第2の実施例では、記憶装置200から情報処理装置100に通知する空き容量情報の単位を予め設定されたサイズとし、記憶装置200から情報処理装置100に通知する空き容量情報はその単位サイズの何倍かを示す情報とする。
【0113】
例えば記憶装置の空き容量が128ギガバイトであった場合、この値をバイト単位で表現すると、128ギガバイトは2の37乗バイトであることから37ビット必要となる。
ここで、情報処理装置100と記憶装置200との間で空き容量の単位サイズを1ギガバイトと予め決めておけば、128ギガバイトの空き容量のことは128だけ通知すればよいことになる。
【0114】
したがって、128は2の7乗であり7ビットで済むことから、大幅な情報量の削減が実現でき、かつ大容量を容易に表現可能となる。具体的な実現方法としては、情報処理装置100が記憶装置200の空き容量情報を取得する処理(
図9で示すフローチャートで説明した処理)において、デバイスドライバ109が記憶装置200に空き容量情報取得コマンドを送出する際(ステップS1004)に、単位サイズ情報をあわせて送出する方法が考えられる。
【0115】
次に、本発明の第3の実施形態について説明する。
第2の実施形態においては、記憶装置200から情報処理装置100に通知する空き容量情報に単位サイズを設定するものであるのに対し。第3の実施形態は、この単位サイズを任意に変更可能とされている。具体的な実現方法としては、情報処理装置100が記憶装置200の空き容量情報を取得する処理(
図9のフローチャートで説明した処理)において、デバイスドライバ109が記憶装置200に空き容量情報取得コマンドを送出する際(ステップS1004)に、毎回単位サイズ情報も送出する方法が考えられる。
【0116】
次に、本発明の第4の実施形態について説明する。
第3の実施形態においては、単位サイズを変更するために単位サイズそのものの情報を空き容量情報取得コマンドに追加するものであるのに対し、第4の実施形態は、情報処理装置100と記憶装置200とが空き容量情報の単位サイズについての同じ表を共有し、空き容量情報取得コマンドを送出する際に当該表の番号(インデックス)も通知するよう構成されている。
【0117】
本実施形態においては、
図14で示すように、空き容量情報取得コマンドで指定する番号と単位サイズの対応関係を示した表を情報処理装置100と記憶装置200が共有するものが好ましい。この場合、情報処理装置100は、記憶装置200に空き容量情報取得コマンドを発出する処理(ステップS1004)において、
図14を参照し、所望の単位サイズの番号を指定する。
【0118】
また、記憶装置200は、情報処理装置100から受領したコマンドから所望の単位サイズの番号を抽出し、空き容量管理部204は自身が持つ
図14の表から単位サイズを特定し、空き容量情報をこの単位サイズの何倍かという形で表現し、情報処理装置100に返答する。この第4の実施例によれば、
図14の表を更新することで様々な単位サイズに対応可能となる。
【0119】
次に、本発明の第5の実施形態について説明する。
第2の実施形態においては、記憶装置200から情報処理装置100に通知する空き容量情報に単位サイズを設定するものであるのに対し、第5の実施形態は、単位サイズとしてNANDフラッシュメモリのブロックサイズやその整数倍を使用するものである。この第5の実施形態によれば、NANDフラッシュメモリのブロックサイズを空き容量情報の単位サイズに設定するので、NANDフラッシュメモリを不揮発性記憶媒体とする記憶装置を有効活用することができる。
【0120】
次に、本発明の第6の実施形態について説明する。
第1の実施形態においては、記憶装置200から情報処理装置100に通知する空き容量情報が空き容量のサイズそのものの情報なのに対し、第6の実施形態は、記憶装置200から情報処理装置100に通知する空き容量情報として、現在の空き容量が、予め情報処理装置100から記憶装置200に設定されたサイズと等しいかどうかを示す情報(等しいか、等しくないか)としたものである。
【0121】
この第6の実施形態によれば、空き容量情報が1ビットで表示可能になるほか、空き容量が十分に残っているときの情報処理装置100の処理を少なくすることができる。比較対象のサイズは、例えば
図9における空き容量情報取得コマンド送出(ステップS1004)時に併せて記憶装置200に通知する方法が考えられる。その場合、記憶装置200は、受領した比較対象サイズと、記憶装置200の空き容量管理部204が保持する空き容量を比較して、その結果(等しいか、等しくないか)を情報処理装置100に返答する。
【0122】
次に、本発明の第7の実施形態について説明する。
第6の実施形態においては、記憶装置200から情報処理装置100に通知する空き容量情報は、予め設定されたサイズと等しいか否かを示す情報であるのに対し、第7の実施形態は、記憶装置200から情報処理装置100に通知する空き容量情報を、空き容量が予め設定した閾値を下回っているか否かを示すものである。
【0123】
例えば、空き容量の閾値として1ギガバイトに設定した場合、空き容量が2ギガバイト残っている状態で情報処理装置100が空き容量情報を取得すると、記憶装置200からは「閾値を下回っていない」という情報を取得することができる。また、例えば、空き容量の閾値として同じく1ギガバイトに設定した場合、空き容量が500メガバイト残っている状態で情報処理装置100が空き容量情報を取得すると、記憶装置200からは「閾値を下回っている」という情報を取得することができる。
【0124】
このようにすることで、情報処理装置100は記憶装置200の空き容量について、その後の対応(アクション)に直結する情報を取得でき、かつ状態変化を取りこぼす可能性が低下し、情報処理装置100の動作が安定する。また、本実施形態においても、比較対象のサイズは、例えば
図9における空き容量情報取得コマンド送出(ステップS1004)時に併せて記憶装置200に通知する方法が考えられる。その場合、記憶装置200は、受領した比較対象サイズと、記憶装置200の空き容量管理部204が保持する空き容量とを比較して、その結果(下回っているか、いないか)を情報処理装置100に返答する。
【0125】
次に、本発明の第8の実施形態について説明する。
第7の実施形態においては、記憶装置200が情報処理装置100に通知する空き容量情報が、予め設定した閾値を下回っているか否かを示す情報であるのに対し、第8の実施形態は、記憶装置200が情報処理装置100に通知する空き容量情報は、空き容量がある閾値を上回っているか否かを示す情報である。
【0126】
比較対象のサイズ(閾値)は、例えば
図9における空き容量情報取得コマンド送出(ステップS1004)時に併せて記憶装置200に通知する方法が考えられる。その場合、記憶装置200は、受領した比較対象サイズと、記憶装置200の空き容量管理部204が保持する空き容量を比較して、その結果(上回っているか、いないか)を情報処理装置100に返答する。
【0127】
次に、本発明の第9の実施形態について説明する。
第1の実施形態においては、記憶装置200から情報処理装置100に空き容量情報を通知する方法として、空き容量情報の取得を目的とした専用のコマンドを実行するのに対し、第9の実施形態は、情報処理装置100から記憶装置200に対して送出される書き込みコマンドの返答(レスポンス)に空き容量情報を含ませるものである。例えばNVMeでは、Writeコマンドの返答は16バイトで定義されているが、そのうち4バイトの領域は未使用である。この4バイトの領域に空き容量情報を書き込む方法が考えられる。
【0128】
すなわち、第1の実施形態においては、情報処理装置100からの空き容量の通知要求、および情報処理装置100に対する空き容量情報の通知は、専用の目的のコマンドを用いるのに対し、本実施形態においては、情報処理装置100からの空き容量の通知要求、および情報処理装置100に対する空き容量情報の通知を他の目的のコマンドに含ませるものとされている、なお、既存コマンドの返答に空き容量情報を埋め込む方法と、空き容量情報の取得を目的したコマンドを使用して空き容量情報を取得する方法の両方を併用するのが好ましい。
【0129】
次に、本発明の第10の実施形態について説明する。
第6の実施形態においては、記憶装置200の空き容量情報として、現在の空き容量が予め情報処理装置100から記憶装置200に設定されたサイズと等しいか否かを示す情報(等しいか、等しくないか)(第7の実施形態においては閾値を下回っているか否か、第8の実施形態においては、閾値を上回っているか否か)とされていたのに対し、第10の実施形態は、記憶装置200の空き容量情報を、予め情報処理装置100が設定した条件を満たしたときに、記憶装置200から情報処理装置100に通知するものである。
【0130】
かかる第10の実施形態によれば、情報処理装置100が能動的に記憶装置200から空き容量情報を取得する必要がなくなる。例えば、
図12aのフローチャートで説明する処理において、ステップS3011の空き容量確認処理時に、記憶装置200から空き容量情報を取得するのではなく、記憶装置200から予め設定した条件を満たす事象が発生したことを示す通知を受領しているかどうかを確認することとなる。
【0131】
次に、本発明の第11の実施形態について説明する。
上記した一連の実施形態においては、情報処理装置100と記憶装置200との間で記憶装置200の空き容量情報に関する要求(コマンド)やその返答(レスポンス)などを送受信する経路として、通常の読み出し(Read)や書き込み(Write)のコマンドおよび読み出したデータや書き込むデータを送受信する経路(通信路300)を使用するものであったのに対し、第11の実施形態は、情報処理装置100と記憶装置200との間で記憶装置200の空き容量情報に関してコマンドや返答を送受信する経路として、ReadやWriteなど通常コマンドとそれに付随したデータを送受信する通信路とは別の通信路を用いることとする。この別通信路のことをサイドバンドと称する。
【0132】
このサイドバンドとしては、例えばUniversal Asynchronous Receiver Transmitter(UART)、Inter-Integrated Circuit(I2C)、またはSystem Management Bus(SMBus)などの方式が挙げられる。ここで記載した何れの方式も、必要な信号線は数本であり、動作周波数も比較的低く規約も簡潔で標準化されていることから、記憶装置200の空き容量情報に関するコマンドや情報の送受信に適している。
【0133】
かかる第11の実施形態に係る情報処理装置100は、
図15に示すように、上記実施形態の構成要素に加え、サイドバンドインターフェース113、サイドバンドインターフェースデバイスドライバ114を備え、サイドバンド301で記憶装置200と接続するよう構成されている。なお、
図15においては、
図4で示す構成要素と同様のものに同一の符号を付している。
【0134】
サイドバンドインターフェース113は、使用するサイドバンド、すなわち前記したUARTやI2CやSMBusの通信規約に基づき、記憶装置200のサイドバンドインターフェースとサイドバンド301を介して接続する。サイドバンドインターフェースデバイスドライバ114は、記憶装置制御部107からの空き容量取得コマンド送出要求に基づき、サイドバンドインターフェース113経由でサイドバンド301の通信規約に基づいた処理を行う。
【0135】
また、第11の実施形態に係る記憶装置200は、
図16に示すように、上記実施形態の構成要素に加え、サイドバンドインターフェース214を備え、サイドバンド301で情報処理装置100と接続する。なお、
図15においては、
図5で示す構成要素と同様のものに同一の符号を付している。
【0136】
サイドバンドインターフェース214は、サイドバンド301経由で情報処理装置100から受領したコマンドのコマンド制御部202への送信、およびコマンド制御部202から受領した返答のサイドバンド301を経由した情報処理装置100への送信、を行う。このサイドバンド301を使用して記憶装置200の空き容量情報を取得する方法は、第1の実施形態における通常コマンドなどを送受信する通信路をサイドバンド301に変更するだけで実現可能であるため、上記実施例で説明した手順をほぼそのまま適用可能であり、ここでは詳細な説明を省略する。
【0137】
次に、本発明の第12の実施形態について説明する。
第1の実施形態においては、情報処理装置100が記憶装置200から取得する空き容量情報は、情報処理装置100が所望する書き込み性能を保証可能なデータサイズを示す情報とされていたのに対し、第12の実施形態は、情報処理装置100が空き容量情報と、所望の書き込み性能(ビットレート)から残記録可能時間を算出するものである(具体的には、
図12aのステップS3002およびステップS3003に相当する)。
【0138】
第12の実施形態に係る記憶装置200は、情報処理装置100から空き容量情報取得の要求を受領した際に、空き容量管理部204が保持する空き容量と、情報処理装置100から受領したビットレートから、残記録可能時間を算出して情報処理装置100に返答する。記憶装置200による残記録可能時間の算出方法は、情報処理装置100における残記録可能時間の算出方法と同様でよく、たとえば空き容量が800MBで、情報処理装置100から受領したビットレートが毎秒10MBであれば、800MB÷10=80秒と計算できる。
【0139】
さらに、情報処理装置100の種類によっては、残記録可能時間ではなく残記録可能枚数として管理するものもある。その場合も同様に、記憶装置200は、情報処理装置100から受領したビットレートから、残記録可能枚数を算出して情報処理装置100に返答する。すなわち、本実施形態において記憶装置200から情報処理装置100に通知される空き容量情報は、残データサイズに関する情報、残記録可能時間、残記録可能枚数、の何れであってもよい。
【0140】
次に、本発明の第13の実施形態について説明する。第1の実施形態においては、情報処理装置100が記憶装置200に対して空き容量情報を要求する際に、情報処理装置100が所望する書き込み性能を通知した(
図9およびその説明参照)。これに対し本実施例では、情報処理装置100は所望する書き込み性能を通知するのではなく、情報処理装置100からの空き容量情報要求に対して、記憶装置200が1つ以上の書き込み性能と前記書き込み性能を保証可能な空き容量情報の組を返答する。
【0141】
本実施形態は、
図17に示すように、書き込み性能1701と各書き込み性能に対応する空き容量情報1702から構成されるものである。なお、
図17は、前記情報処理装置100からの空き容量情報要求に対して記憶装置200が返答する空き容量情報の例を示している。また、
図17では、書き込み性能1701の単位はMB/秒、空き容量情報1702の単位はMB、と記載しているが、この単位が
図17の例と異なってもよい。
【0142】
記憶装置200は、情報処理装置100からの空き容量情報要求に対して、書き込み性能1701の各書き込み性能を保証可能な空き容量とそれに対応する空き容量情報1702を算出し、
図17のような表の形式で、空き容量情報として情報処理装置100に返送する。
図17の形式の空き容量情報を受領した情報処理装置100は、情報処理装置100が保証を望む所望の書き込み性能と、
図17の書き込み性能1701を比較し、前記所望の書き込み性能の保証を実現しうる値を選出し、対応する空き容量情報1702を抽出
する。
【0143】
例えば、150MB/秒の書き込み性能の保証を所望する情報処理装置100が
図17の空き容量情報を受領した場合、まず、150MB/秒を超えてかつ最も小さい書き込み性能の要素を探し、200MB/秒と記載された要素を発見する。次に、書き込み性能200MB/秒に対応する空き容量情報として、5000MBを抽出する。以上より、情報処理装置100は、
図17の空き容量情報を返送した記憶装置200が150MB/秒の書き込み性能を保証可能な空き容量情報として5000MBを取得する。取得した空き容量情報の、情報処理装置100による使用方法は、他の実施例に記載した内容と同様であるため、詳細な説明を省略する。
【0144】
以上のように、情報処理装置100が記憶装置200の空き容量情報を取得する際に情報処理装置100自身の所望の書き込み性能を提示する代わりに、記憶装置200がいくつかの書き込み性能とその書き込み性能を保証可能な空き容量情報の組を返答する実施例であっても、情報処理装置100が記憶装置200にデータを書き込む際の書き込み性能保証を実現可能である。
【0145】
第1~13の実施形態に係る記憶装置200によれば、不揮発性記憶媒体の空き容量を計算し、その計算した空き容量を保持する空き容量管理部を備えるとともに、情報処理装置100(所定の外部機器)と接続され、空き容量管理部に保持された空き容量の情報を情報処理装置100に通知する機能を備えるので、記憶装置200が保持する空き容量に関する情報と情報処理装置100が保持する空き容量に関する情報とを一致させ、情報処理装置100が所望する書き込み性能を保証することができる。
【0146】
また、記憶装置200は、情報処理装置100(外部機器)が要求する書き込み性能に関する情報を取得するとともに、情報処理装置100(外部機器)に通知する空き容量の情報は、情報処理装置100が要求する書き込み性能を実現可能か否か判別可能な空き容量情報である。特に、情報処理装置100(外部機器)に通知する空き容量の情報は、書き込み性能と、書き込み性能を実現可能な空き容量情報である。さらに、空き容量情報は、不揮発性記憶媒体に書き込み可能なデータのサイズ、情報処理装置100(外部機器)との間で予め設定したデータのサイズを単位とした単位サイズで示される。
【0147】
単位サイズは、変更可能とすることができ、複数の値から任意に選択可能であるものであってもよく、さらには、NANDフラッシュメモリのブロックサイズであってもよい。また、情報処理装置100(外部機器)に対する空き容量情報の通知は、情報処理装置100(外部機器)からの空き容量の通知要求に応じて行うものとすることができる。さらに、情報処理装置100(外部機器)に通知する空き容量情報は、情報処理装置100(外部機器)からの空き容量の通知要求を受領した時点における不揮発性記憶媒体の空き容量に基づいた情報とされている。
【0148】
加えて、空き容量の通知要求には、情報処理装置100(外部機器)が要求する(情報処理装置100により生成された)データの書き込みに必要とされる空き容量の情報が含まれるとともに、空き容量の通知要求に含まれる空き容量と、空き容量の通知要求を受領した時点における空き容量管理部で保持された空き容量とを比較し、その比較した2つの空き容量が等しいか否かの判別情報を空き容量情報として通知することができる。
【0149】
また、空き容量の通知要求には、情報処理装置100(外部機器)が要求する(情報処理装置100により生成され)たデータの書き込みに必要とされる空き容量の情報が含まれるとともに、空き容量の通知要求に含まれる空き容量と、空き容量の通知要求を受領した時点における空き容量管理部で保持された空き容量とを比較し、空き容量の通知要求に含まれる空き容量の方が大きいか否かの判別情報を空き容量情報として通知することができる。
【0150】
さらに、空き容量の通知要求には、情報処理装置100(外部機器)が要求する(情報処理装置100により生成された)データの書き込みに必要とされる空き容量の情報が含まれるとともに、空き容量の通知要求に含まれる空き容量と、空き容量の通知要求を受領した時点における空き容量管理部で保持された空き容量とを比較し、空き容量の通知要求に含まれる空き容量の方が小さいか否かの判別情報を空き容量情報として通知することができる。
【0151】
しかるに、情報処理装置100(外部機器)からの空き容量の通知要求、および情報処理装置100(外部機器)に対する空き容量情報の通知は、専用の目的のコマンドを用いることができ、または他の目的のコマンドに含ませることもできる。さらに、情報処理装置100(外部機器)に対する空き容量情報の通知は、空き容量の通知要求の有無に関わらず予め設定した所定の条件を満たしたときに行われるようにしてもよい。
【0152】
また、情報処理装置100(外部機器)からの空き容量の通知要求、および情報処理装置100(外部機器)に対する空き容量情報の通知は、データ読み出し要求およびデータ書き込み要求の対象データを送受信するための通信路を用いてもよく、またはデータ読み出し要求およびデータ書き込み要求の対象データを送受信するための通信路とは異なる他の通信路を用いるようにしてもよい。
【0153】
またさらに、情報処理装置100(外部機器)が所望する書き込み性能に対応するデータ書き込みを実現することを保証する書き込み性能保証状態と、情報処理装置100(外部機器)が所望する書き込み性能に対応するデータ書き込みを実現することを保証しない書き込み性能非保証状態との間で遷移可能とされるとともに、情報処理装置100(外部機器)に対する空き容量情報の通知は、書き込み性能保証状態において行われるものであってもよい。しかるに、空き容量情報は、情報処理装置100(外部機器)が所望する書き込み性能を満たすデータの書き込みを実施可能な時間を示すものとすることができる。
【産業上の利用可能性】
【0154】
本発明と同様の趣旨であれば、他の機能が付加されたもの等にも適用することができる。
【符号の説明】
【0155】
100 情報処理装置
101 センサー
102 センサー制御部
103 ユーザインターフェース
104 ユーザインターフェース制御部
105 データバッファ
106 データ制御部
107 記憶装置制御部
108 空き容量管理部
109 デバイスドライバ
110 インターフェース
111 データバス
112 制御バス
113 サイドバンドインターフェース
114 サイドバンドインターフェースデバイスドライバ
200 記憶装置
201 ホストインターフェース
202 コマンド制御部
203 データ管理部
204 空き容量管理部
205 メディア管理部
206 装置制御部
207 データバッファ
208 RAM
209 メディアインターフェース
210 データバス
211 制御バス
212 メディア
213 メディアチャネル
214 サイドバンドインターフェース
251 書き込み性能非保証状態
252 書き込み性能保証状態
253 書き込み性能非保証状態から書き込み性能保証状態への遷移
254 書き込み性能保証状態から書き込み性能非保証状態への遷移
300 通信路
301 サイドバンド
400 LBA空間
1301 空き容量の単位サイズの表の番号(インデックス)
1302 空き容量の単位サイズ
1701 書き込み性能
1702 書き込み性能を保証可能な空き容量の情報