(57)【要約】【課題】ウェアレベリングを適切に機能させると共にシステムのパフォーマンスの低下を抑止することを目的とする。【解決手段】不揮発性のストレージの論理空き領域を特定する特定手段と、ストレージに対してデータの書き込み命令が有った場合、データの書き込み命令ごとにデータの保管領域を特定手段により特定されたストレージの論理空き領域に対して動的に割り当て、割り当てに基づいてデータをストレージの論理空き領域に書き込む制御手段と、を有することによって課題を解決する。【選択図】図９
2017207948.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のストレージの論理空き領域を特定する特定手段と、
前記ストレージに対してデータの書き込み命令が有った場合、前記データの書き込み命令ごとに前記データの保管領域を前記特定手段により特定された前記ストレージの論理空き領域に対して動的に割り当て、前記割り当てに基づいて前記データを前記ストレージの論理空き領域に書き込む制御手段と、
を有するストレージ制御装置。
【請求項２】
前記制御手段は、前記ストレージの論理空き領域のブロックサイズ単位で前記データの保管領域を動的に割り当てる請求項１記載のストレージ制御装置。
【請求項３】
前記制御手段は、前記データを前記ストレージの論理空き領域に書き込んだ後、書き込み前に前記データが保管されていた旧領域上のデータの論理消去を行う請求項１又は２記載のストレージ制御装置。
【請求項４】
前記ストレージに対して設定されたデータの書き込み命令が有るか否かを判定する判定手段を更に有し、
前記制御手段は、前記判定手段により前記ストレージに対して設定されたデータの書き込み命令が有ったと判定された場合、前記ストレージに対してデータの書き込み命令が有ったとして、前記データの書き込み命令ごとに前記データの保管領域を前記特定手段により特定された前記ストレージの論理空き領域に対して動的に割り当て、前記割り当てに基づいて前記データを前記ストレージの論理空き領域に書き込む請求項１乃至３何れか１項記載のストレージ制御装置。
【請求項５】
前記設定されたデータは、ログデータである請求項４記載のストレージ制御装置。
【請求項６】
前記設定されたデータは、設定データである請求項４記載のストレージ制御装置。
【請求項７】
前記特定手段により特定された前記ストレージの論理空き領域のうち、特定の論理アドレス領域に対するアクセス頻度が閾値より大きい場合、前記特定の論理アドレス領域に対するアクセスに係るデータを書き換え処理用のデータとして選択する選択手段を更に有し、
前記制御手段は、前記選択手段により選択された前記データの書き込み命令が有った場合、前記データの書き込み命令ごとに前記データの保管領域を前記特定手段により特定された前記ストレージの論理空き領域に対して動的に割り当て、前記割り当てに基づいて前記データを前記ストレージの論理空き領域に書き込む請求項１乃至３何れか１項記載のストレージ制御装置。
【請求項８】
前記ストレージは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である請求項１乃至７何れか１項記載のストレージ制御装置。
【請求項９】
前記ストレージ制御装置は、画像形成装置である請求項１乃至８何れか１項記載のストレージ制御装置。
【請求項１０】
ストレージ制御装置が実行する情報処理方法であって、
不揮発性のストレージの論理空き領域を特定する特定工程と、
前記ストレージに対してデータの書き込み命令が有った場合、前記データの書き込み命令ごとに前記データの保管領域を前記特定工程により特定された前記ストレージの論理空き領域に対して動的に割り当て、前記割り当てに基づいて前記データを前記ストレージの論理空き領域に書き込む制御工程と、
を含む情報処理方法。
【請求項１１】
コンピュータを、請求項１乃至９何れか１項記載のストレージ制御装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、画像形成装置内にＨＤＤが搭載され、プログラムを格納すると共に画像データの保存、編集等を実現するストレージ機能を実現している。
近年、大容量化と低価格化が進んでモバイルＰＣを中心に急速に普及が進んでいるＳＳＤはＨＤＤと比べて高速なランダムアクセスが可能であり、低消費電力、耐衝撃性、軽量、省スペースといった点に特長がある。特にシステム起動時においてＨＤＤで必要なスピンアップ等の初期動作が必要無いため、高速なデータ転送と相まって起動時間の短縮化に効果があるため、画像形成装置のストレージデバイスとして採用されてきている。
但し、ＳＳＤに搭載されている記憶デバイスであるＮＡＮＤ型フラッシュメモリには書き込み可能回数に上限がある（ＳＬＣで約１０万回、ＭＬＣで約1万回）。更に、プロセスの微細化によりフラッシュメモリは将来的に現在の書き換え可能回数から減少する傾向にある。これに対して、ＳＳＤに搭載されているフラッシュメモリ・コントローラは同じ領域への書き込み頻度が集中しないように書き込み先を平均化させてストレージデバイスの寿命を延伸化させるウェアレベリングという技術が用いられている。
ウェアレベリングには、主にダイナミック・ウェアレベリングとスタティック・ウェアレベリングとの２種類の方法がある。一般的にＳＳＤは上記２種類のウェアレベリングの内の何れか一方、又は組み合わせて使用している。
ダイナミック・ウェアレベリングを採用するＳＳＤにおいては搭載されるフラッシュメモリの未使用ブロックが多い場合は極めて有効的に平準化が機能するが、未使用ブロック数が少ない状態になると平準化が適切に機能しなくなってしまう。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１０６９１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、論理的空き領域に対して周期的に所定容量のダミーデータのライトとダミーデータの論理的消去とを繰り返すことにより徐々に使用済み物理領域を未使用状態に解放する技術が開示されている。しかし、特許文献１の技術では、ダミーデータの書き込み及び論理的消去を行う必要があり、ＳＳＤのアクセスが多くなり、システムのパフォーマンスが低下する問題があった。
本発明は、ウェアレベリングを適切に機能させると共にシステムのパフォーマンスの低下を抑止することを目的とする。
【課題を解決するための手段】
【０００５】
本発明のストレージ制御装置は、不揮発性のストレージの論理空き領域を特定する特定手段と、前記ストレージに対してデータの書き込み命令が有った場合、前記データの書き込み命令ごとに前記データの保管領域を前記特定手段により特定された前記ストレージの論理空き領域に対して動的に割り当て、前記割り当てに基づいて前記データを前記ストレージの論理空き領域に書き込む制御手段と、を有する。
【発明の効果】
【０００６】
本発明によれば、ウェアレベリングを適切に機能させると共にシステムのパフォーマンスの低下を抑止することができる。
【図面の簡単な説明】
【０００７】
【図１】ダイナミック・ウェアレベリングの一例を示す図である。
【図２】スタティック・ウェアレベリングの一例を示す図である。
【図３】ＳＳＤのデータ構造を簡略的に示した一例を示す図（その１）である。
【図４】ＳＳＤにディスクコピーを行った場合の一例を示す図である。
【図５】ＳＳＤのデータ構造を簡略的に示した一例を示す図（その２）である。
【図６】ダイナミック・ウェアレベリングが効果的に機能しない一例を示す図である。
【図７】画像形成装置のコントローラ部の一例を示す図である。
【図８】ＳＳＤの内部構成の一例を示す図である。
【図９】実施形態１の情報処理の一例を示すフローチャートである。
【図１０】図９の処理を行った後のＳＳＤのデータ構造の一例を示す図である。
【図１１】実施形態２の情報処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
図１は、ダイナミック・ウェアレベリングの一例を示す図である。ダイナミック・ウェアレベリングは、書き込みアドレスに割り当てられた物理メモリの範囲でウェアレベリングを実行するのが特徴である。つまり、ダイナミック・ウェアレベリングは、オペレーション・システム(以下、ＯＳという)のような頻繁に更新されないスタティック（静的）データはそのままで、ダイナミックデータ（新しいデータ）のみ分散化する。このため、物理メモリに対して必要な書き換えのみ行うので書き換え回数を抑制できる長所を持つ半面、物理メモリの使用状況によってウェアレベリングの有効範囲が狭くなる可能性があるという短所を持つ。
図２は、スタティック・ウェアレベリングの一例を示す図である。スタティック・ウェアレベリングは 図２に示すように書き込みを行わないアドレスの物理メモリに対してもデータの移し変えをして、全領域においてウェアレベリングを実行する。このとき、スタティック・ウェアレベリングでは、各ブロックの書き換え回数を記録し、なるべく書き換えの少ないブロックにデータを書き込んでいく。必要に応じて書き換えられていないブロックのデータ（スタティックデータ）を別のブロックに移し変えて、書き込み回数の均等化を図る。これによって、ダイナミック・ウェアレベリングに対してウェアレベリング有効範囲の制限が無い長所をもつが、スタティックデータの移動に伴い物理メモリの無駄な書き換えが頻繁に発生するという短所を持つ。また、書き換え頻度が高いため、ダイナミック・ウェアレベリングと比べてパフォーマンスダウンを起こしやすいという短所も持つ。
【００１０】
図３は、ＳＳＤのデータ構造を簡略的に示した一例を示す図である。
ユーザープログラム＆データ領域１１００と論理空き領域１１０１とを合わせた領域がＯＳの管理するデータ領域（ユーザー解放領域１１０３）である。
ユーザープログラム＆データ領域１１００は、ＯＳを含むユーザープログラムやデータ等の有効データが格納されている領域であり、ファイルシステムの管理情報もここに格納される。
ファイルシステムの管理情報は主にＯＳが管理する論理アドレス上のファイルの保管先や使用状況等を管理するための情報である。
ＳＳＤシステム領域１１０２は、フラッシュ制御部１０００のみが利用できる予約領域であり、フラッシュ制御部１０００の管理情報の格納やウェアレベリングやガベージコレクションで使用するための予備領域として使用される。フラッシュ制御部１０００の管理情報とは主に論理アドレスと物理アドレスとのリンク情報や物理ブロックの消去回数及び使用状況等を管理するための情報である。ＳＳＤは、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅの略である。
【００１１】
ここで、図４のようにマスターディスクからデュプリケータ７００等のディスクコピー専用機でＳＳＤにディスクコピーを行った場合においてはコピー先のＳＳＤにはマスターディスク全領域分のディスクイメージがコピーされる場合がある。このとき、コピー先のＳＳＤは図５のようなマスターディスクから読み出されたユーザープログラム＆データ領域１１００と共に論理空き領域１１０１にもデータが書き込まれた状態となる（領域１２０１）。これにより、ＳＳＤの管理情報には全領域使用状態と記録されるため、フラッシュ制御部１０００からみるとユーザー開放領域の全物理ブロックが使用済み状態となる。
そのため、図６のようにウェアレベリングは書き換え領域１１１０とＳＳＤシステム領域１１０２の一部のブロックを使って平準化を行うことになるため、ダイナミック・ウェアレベリングが効果的に機能しない状態となる。この状態でシステムに組み込んで動作させた場合に、ＯＳ等が特定領域に書き換え処理を集中して行うと、ウェアレベリングによる平準化が機能しないことからその特定領域に割り当てられた物理ブロックの寿命が著しく疲弊する。
【００１２】
また、ユーザーに開放された全物理領域に空き領域が無い状態では、スタティック・ウェアレベリングで平準化を行ったとしても、データの書き換えが生じる度にウェアレベリングのためのスタティックデータの書き換えが頻発する。これによってスループットパフォーマンスが大幅にダウンし、ＳＳＤが持つ本来のパフォーマンスを発揮することができない。
このような問題を解決するためには、論理的空き領域に割り当てられている物理領域を使用済み状態から未使用状態に戻す必要ある。使用済み物理領域の解放には、ファイルシステム上の論理的空き領域全域に対して、任意のデータをライトした後でその領域を論理的に解放するデータの書き換え処理を行うことで可能となる。しかしながらフラッシュメモリへのライト処理は処理速度が遅いため、書き換え対象となる論理空き領域が大きい場合においてはこの処理の実施によってシステム的なパフォーマンスダウンが生じる可能性がある。
【００１３】
図７は、マスターディスクからコピーされたＳＳＤ４１３が組み込まれる画像形成装置のコントローラ部４００の一例を示す図である。コントローラ部４００、又はコントローラ部４００を含む画像形成装置は、ストレージ制御装置の一例である。また、ＳＳＤは、不揮発性のストレージの一例である。
コントローラ部４００は、操作部や外部コンピュータからの指示に基づいて原稿搬送装置を制御する原稿搬送装置制御部、イメージリーダを制御するイメージリーダ制御部と通信し、入力される原稿の画像データを取得する。また、コントローラ部４００は、プリンタ部を制御するプリンタ制御部と通信を行い、画像データをシートに印刷する。また、コントローラ部４００は、折り装置を制御する折り装置制御部、フィニッシャを制御するフィニッシャ制御部と通信を行い、印刷されたシートにステイプルやパンチ穴といった所望の出力を実現する。
外部Ｉ／Ｆ４５１は、外部のコンピュータと接続するインターフェースである。例えば、外部Ｉ／Ｆ４５１は、ネットワークやＵＳＢ等の外部バスで接続し外部コンピュータからのプリントデータを画像に展開して出力する他、後述するＳＳＤ４１３内の画像データを外部コンピュータに送信することを行う。
コントローラ部４００は、ＣＰＵ４０１を有し、ＯＳで制御される。ＣＰＵ４０１には、バスブリッジ４０４が接続され、バスブリッジ４０４を介して、ＣＰＵ４０１の初期起動プログラムを格納しているＲＯＭ４０２から、初期起動プログラムを読み出す。また、制御に伴う演算の作業領域として用いられるＲＡＭ４０３、ストレージ機器を制御するストレージ制御部４１２もまたバスブリッジ４０４と接続されている。
ＳＳＤ４１３は、ＣＰＵ４０１のＯＳを含むメインプログラムの格納と、イメージリーダや外部Ｉ／Ｆ４５１より取得した画像データや操作部で画像を編集したときの保存用やアプリケーションプログラムの格納先として使用される。また、ＳＳＤ４１３は、ユーザープリファレンスデータの格納先としても使用される。ＳＳＤ４１３は、ＣＰＵ４０１からアクセスができるように構成されている。
また、バスブリッジ４０４は、ネットワークやＵＳＢインターフェースを制御する外部Ｉ／Ｆ制御部４０５、操作部を制御する操作部制御部４０６が接続されている。
デバイス制御部４１１は、原稿搬送装置制御部、イメージリーダ制御部、プリンタ制御部、折り装置制御部、フィニッシャ制御部と接続され、これらの制御を司る。
ＣＰＵ４０１がＲＯＭ４０２又はＳＳＤ４１３に記憶されたプログラムに基づき処理を実行することによりコントローラ部４００の機能、又は後述する図９、図１１のフローチャートの処理が実行される。
【００１４】
図８は、ＳＳＤ４１３の内部構成の一例を示す図である。ＳＳＤは、ストレージの一例である。
ＳＳＤ４１３は、フラッシュ制御部１０００及び複数のフラッシュメモリ１００３を有している。フラッシュ制御部１０００は、ストレージＩ／Ｆ１００１及びメモリ制御部１００２を備えている。ストレージＩ／Ｆ１００１は、ストレージ制御部４１２に接続されている。つまり、ストレージＩ／Ｆ１００１は、ストレージ制御部４１２との通信するためのモジュールである。図８の例では、ストレージＩ／Ｆ１００１として、シリアルＡＴＡ（Ｓｅｒｉａｌ  ＡＴ  Ａｔｔａｃｈｍｅｎｔ）インターフェースが用いられている。
【００１５】
＜実施形態１＞
図９は、実施形態１の情報処理の一例を示すフローチャートである。
Ｓ１０１において、ＣＰＵ４０１は、ストレージ制御部４１２を介してＳＳＤ４１３に記録されているファイルシステムの管理情報にアクセスしてＳＳＤ４１３の論理空き領域を特定する。
Ｓ１０２において、ＣＰＵ４０１は、ＳＳＤ４１３へのライトアクセスを監視する。
Ｓ１０３において、ＣＰＵ４０１は、予め設定されたデータの書き込み命令が有ったか否かを判定する。ＣＰＵ４０１は、予め設定されたデータの書き込み命令が有った場合（Ｓ１０３においてＹｅｓ）、Ｓ１０４に処理を進め、予め設定されたデータの書き込み命令が無かった場合、Ｓ１０２に処理を戻す。
Ｓ１０４において、ＣＰＵ４０１は、前記予め設定されたデータの保管先をＳ１０１で特定したＳＳＤ４１３の論理空き領域上に設定する。Ｓ１０４において、ＣＰＵ４０１は、論理空き領域への保管先アドレスの設定を、論理空き領域の先頭アドレスから順に、ＳＳＤ４１３に搭載されるフラッシュメモリのブロックサイズ単位でインクリメントを行って前記論理空き領域全域を網羅するように設定する。
Ｓ１０５において、ＣＰＵ４０１は、前記データを保管先にライトする。
ここで、予め設定されたデータはシステムのログデータや設定データ等の様なデータの書き換え更新頻度が所定の更新頻度より高いデータを想定している。
前記データの新領域へのライト処理が完了すると、Ｓ１０６において、ＣＰＵ４０１は、ＳＳＤ４１３にアクセスして更新前の前記データが記録されていた旧領域上のデータの論理消去を行う。
Ｓ１０７において、ＣＰＵ４０１は、Ｓ１０４からＳ１０６までの処理をＳ１０１にて特定した論理空き領域全域に対して行ったかを判定する。ＣＰＵ４０１は、未処理領域が有る場合（Ｓ１０７においてＹｅｓ）、Ｓ１０２に処理を戻し、未処理領域が無い場合（Ｓ１０７においてＮｏ）、Ｓ１０８に処理を進める。
Ｓ１０８において、ＣＰＵ４０１は、前記予め設定されたデータの保管領域を固定化する。
【００１６】
図１０は、図９の処理を行った後のＳＳＤのデータ構造の一例を示す図である。Ｓ１０２〜Ｓ１０６の処理を行うことにより、データの書き込み命令ごとにデータの保管領域をストレージの論理空き領域に対して動的に割り当て、割り当てに基づいてデータをストレージの論理空き領域に書き込む処理が行われる。このことにより、データの書き換えが行われ、拡張されたウェアレベリング領域が順次、増加する。その結果、ウェアレベリングを適切に機能させることができる。また、ダミーデータの書き込みを行うのではなく、実際のデータの書き換えを行うことにより、システムのパフォーマンスの低下を抑止することができる。
【００１７】
＜実施形態２＞
図１１は、実施形態２の情報処理の一例を示すフローチャートである。
Ｓ２０１において、ＣＰＵ４０１は、ストレージ制御部４１２を介してＳＳＤ４１３に記録されているファイルシステムの管理情報にアクセスしてＳＳＤ４１３の論理空き領域を特定する。
Ｓ２０２において、ＣＰＵ４０１は、ＳＳＤ４１３の特定の論理アドレス領域に対する集中的なアクセスがあるかを監視する。ＣＰＵ４０１は、特定の論理アドレス領域への集中的なアクセスの有無を検知し、その頻度及びデータサイズをＲＡＭ４０３又はＳＳＤ４１３に保持する。例えば、ＣＰＵ４０１は、設定された時間内に、設定されたアクセス以上のアクセスがあった場合、集中的なアクセスがあったと判定する。ＣＰＵ４０１は、集中アクセスが有ったと判定した場合（Ｓ２０２においてＹｅｓ）、Ｓ２０４に処理を進め、集中アクセスが無かったと判定した場合（Ｓ２０２においてＮｏ）、図１１に示すフローチャートの処理を終了する。
Ｓ２０４において、ＣＰＵ４０１は、特定の論理アドレス領域に対する単位時間当たりのアクセス頻度が設定された閾値αより大きいか否かを判定する。ＣＰＵ４０１は、アクセス頻度が設定された閾値αより大きいと判定した場合（Ｓ２０４においてＹｅｓ）、Ｓ２０５に処理を進める。一方、ＣＰＵ４０１は、アクセス頻度が設定された閾値αより大きくないと判定した場合（Ｓ２０４においてＮｏ）、図１１に示すフローチャートの処理を終了する。
Ｓ２０５において、ＣＰＵ４０１は、特定の論理アドレス領域に対するアクセスに係るデータを論理空き領域の書き換え処理用のデータとして選択する。
【００１８】
Ｓ２０６において、ＣＰＵ４０１は、ＳＳＤ４１３へのライトアクセスを監視する。
Ｓ２０７において、ＣＰＵ４０１は、Ｓ２０５にて選択したデータの書き込み命令（ライトアクセス）を受け取ったか否かを判定する。ＣＰＵ４０１は、Ｓ２０５にて選択したデータの書き込み命令を受け取ったと判定した場合（Ｓ２０７においてＹｅｓ）、Ｓ２０８に処理を進め、受け取っていないと判定した場合（Ｓ２０７においてＮｏ）、Ｓ２０６に処理を戻す。
Ｓ２０８において、ＣＰＵ４０１は、前記予め設定されたデータの保管先をＳ２０１で特定したＳＳＤ４１３の論理空き領域上に設定する。Ｓ２０８において、ＣＰＵ４０１は、論理空き領域への保管先アドレスの設定を、論理空き領域の先頭アドレスから順に、ＳＳＤ４１３に搭載されるフラッシュメモリのブロックサイズ単位でインクリメントを行って前記論理空き領域全域を網羅するように設定する。
Ｓ２０９において、ＣＰＵ４０１は、前記データを保管先にライトする。
前記データの新領域へのライト処理が完了すると、Ｓ２１０において、ＣＰＵ４０１は、ＳＳＤ４１３にアクセスして更新前の前記データが記録されていた旧領域上のデータの論理消去を行う。
Ｓ２１１において、ＣＰＵ４０１は、Ｓ２０８からＳ２１０までの処理をＳ２０１にて特定した論理空き領域全域に対して行ったかを判定する。ＣＰＵ４０１は、未処理領域が有る場合（Ｓ２１１においてＹｅｓ）、Ｓ２０６に処理を戻し、未処理領域が無い場合（Ｓ２１１においてＮｏ）、Ｓ２１２に処理を進める。
Ｓ２１２において、ＣＰＵ４０１は、前記予め設定されたデータの保管領域を固定化する。
【００１９】
実施形態１、実施形態２の処理の実行後、ＳＳＤ４１３に対してＴｒｉｍコマンドを実行することにより、前記論理空き領域に紐づけられた物理領域内のデータ消去処理が行われる。これによって、ＳＳＤ４１３の空き領域はクリーンな状態となる。
【００２０】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００２１】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
【００２２】
以上、上述した各実施形態によれば、ウェアレベリングを適切に機能させると共にシステムのパフォーマンスの低下を抑止することができる。
【符号の説明】
【００２３】
４００  コントローラ部
４０１  ＣＰＵ
４１３  ＳＳＤ
【図１】
2017207948.tif 000003
【図２】
2017207948.tif 000004
【図３】
2017207948.tif 000005
【図４】
2017207948.tif 000006
【図５】
2017207948.tif 000007
【図６】
2017207948.tif 000008
【図７】
2017207948.tif 000009
【図８】
2017207948.tif 000010
【図９】
2017207948.tif 000011
【図１０】
2017207948.tif 000012
【図１１】
2017207948.tif 000013