(57)【要約】【課題】不揮発性メモリからデータを効率的に読み出し可能とする。【解決手段】本実施形態に係る情報処理装置は、参照部と変換部と評価部とを備える。参照部は、メモリに記憶されており複数の論理アドレスと複数の物理アドレスとを互いに関連付けたアドレス変換データを参照する。変換部は、アドレス変換データに基づいて、評価対象の複数の論理アドレスを評価対象の複数の物理アドレスへ変換する。算出部は、不揮発性メモリにおける並列読み出し可能な複数の領域を特定する情報に基づいて、前記評価対象の複数の物理アドレスに関する並列読み出し性能を示す評価値を算出する。【選択図】  図１
2019164715.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶されており複数の論理アドレスと複数の物理アドレスとを互いに関連付けたアドレス変換データを参照する参照部と、
前記アドレス変換データに基づいて、評価対象の複数の論理アドレスを評価対象の複数の物理アドレスへ変換する変換部と、
不揮発性メモリにおける並列読み出し可能な複数の領域を特定する情報に基づいて、前記評価対象の複数の物理アドレスに関する並列読み出し性能を示す評価値を算出する算出部と、
を具備する情報処理装置。
【請求項２】
評価対象の論理アドレス空間を、読み出しコマンドにしたがって前記不揮発性メモリに対して並列読み出しを試みる単位に分割し、当該分割の結果から前記評価対象の複数の論理アドレスを選択する選択部をさらに具備する、請求項１の情報処理装置。
【請求項３】
前記評価値は、前記複数の領域に対して割り当てられている前記評価対象の複数の物理アドレスの分散度合いを表す、請求項１又は請求項２の情報処理装置。
【請求項４】
前記評価値は、前記評価対象の複数の物理アドレスに対する非並列になる読み出し回数の予測値を表す、請求項１乃至請求項３のいずれか１項の情報処理装置。
【請求項５】
前記メモリは、前記不揮発性メモリを備えるストレージデバイスから取得された前記アドレス変換データを記憶するユニファイドメモリである、請求項１乃至請求項４のいずれか１項の情報処理装置。
【請求項６】
前記不揮発性メモリを備えるストレージデバイスへコマンドを送信し、前記コマンドに対応する特定範囲の前記アドレス変換データを前記メモリへ記憶する、請求項１乃至請求項４のいずれか１項の情報処理装置。
【請求項７】
前記評価値が閾値以上の場合に、前記評価対象の複数の論理アドレスに関するデータの再配置を、前記不揮発性メモリを備えるストレージデバイスに命令する再配置部をさらに具備する、請求項１乃至請求項６のいずれか１項の情報処理装置。
【請求項８】
前記再配置部は、
前記評価対象の複数の物理アドレスより前記並列読み出し性能が高い更新用の複数の物理アドレスを求め、
前記評価対象の複数の物理アドレスの示す位置からデータを読み出し、当該読み出されたデータを前記更新後の複数の物理アドレスの示す位置へ再配置する、請求項７の情報処理装置。
【請求項９】
外部装置から、評価コマンドと、評価対象の複数の論理アドレスを受信した場合に、メモリに記憶されており複数の論理アドレスと複数の物理アドレスとを互いに関連付けたアドレス変換データを参照する参照部と、
前記アドレス変換データに基づいて、前記評価対象の複数の論理アドレスを評価対象の複数の物理アドレスへ変換する変換部と、
不揮発性メモリにおける並列読み出し可能な複数の領域を特定する情報に基づいて、前記評価対象の複数の物理アドレスに関する並列読み出し性能を示す評価値を算出する算出部と、
を具備するストレージデバイス。
【請求項１０】
前記評価対象の複数の物理アドレスより前記並列読み出し性能が高い更新用の複数の物理アドレスを求め、前記評価対象の複数の物理アドレスの示す位置からデータを読み出し、前記読み出したデータを前記更新後の複数の物理アドレスの示す位置へ再配置し、前記更新用の複数の物理アドレスに応じて前記アドレス変換データを更新する再配置部をさらに具備する、請求項９のストレージデバイス。
【請求項１１】
不揮発性メモリを備えるストレージデバイスと、前記ストレージデバイスと接続される情報処理装置とを具備するコンピュータシステムにおけるデータ記憶位置の評価値算出方法であって、
前記ストレージデバイス又は前記情報処理装置が、メモリに記憶されており複数の論理アドレスと複数の物理アドレスとを互いに関連付けたアドレス変換データを参照することと、
前記アドレス変換データに基づいて、評価対象の複数の論理アドレスを評価対象の複数の物理アドレスへ変換することと、
前記ストレージデバイス又は前記情報処理装置が、前記不揮発性メモリにおける並列読み出し可能な複数の領域を特定する情報に基づいて、前記評価対象の複数の物理アドレスに関する並列読み出し性能を示す評価値を算出することと、
を具備する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、情報処理装置、ストレージデバイス、及び、データ記憶位置の評価値算出方法に関する。
【背景技術】
【０００２】
近年、様々な情報処理装置のメインストレージとして、不揮発性メモリを備えるストレージデバイスが広く利用されている。
【０００３】
また、情報処理装置のメモリを、情報処理装置とストレージデバイスとが共有して使用することが可能な技術も開発されている。ストレージデバイス内のコントローラの処理に必要なデータの一部を情報処理装置のメモリ上に格納することにより、ストレージデバイスの性能を改善することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９７７９０２１号明細書
【特許文献２】米国特許出願公開第２０１７／００７５８０７号明細書
【特許文献３】米国特許出願公開第２０１４／０１７３１７８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、不揮発性メモリからデータを効率的に読み出し可能な情報処理装置、ストレージデバイス、及び、データ記憶位置の評価値算出方法を提供する。
【課題を解決するための手段】
【０００６】
本実施形態に係る情報処理装置は、参照部と変換部と評価部とを備える。参照部は、メモリに記憶されており複数の論理アドレスと複数の物理アドレスとを互いに関連付けたアドレス変換データを参照する。変換部は、アドレス変換データに基づいて、評価対象の複数の論理アドレスを評価対象の複数の物理アドレスへ変換する。算出部は、不揮発性メモリにおける並列読み出し可能な複数の領域を特定する情報に基づいて、前記評価対象の複数の物理アドレスに関する並列読み出し性能を示す評価値を算出する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係るコンピュータシステムの構成の一例を示すブロック図。
【図２】ストレージデバイスに備えられる不揮発性メモリの構成の一例を示すブロック図。
【図３】第１の実施形態に係る評価対象ファイルの論理アドレス空間の分割状態の一例を示す図。
【図４】評価対象の論理アドレス集合に基づく不揮発性メモリに対する書き込み状態と評価値との関係の一例を示す図。
【図５】再配置部による再配置の前と後との書き込み状態の一例を示す図。
【図６】再配置部による再配置の前と後との評価値の変化の一例を示す図。
【図７】第１の実施形態に係るデフラグプログラムによって実行される処理の一例を示すフローチャート。
【図８】第１の実施形態に係る並列読み出し性能の評価に関する有効性の一例を示すグラフ。
【図９】第３の実施形態に係るコンピュータシステムの構成の一例を示すブロック図。
【図１０】第４の実施形態に係るコンピュータシステムの構成の一例を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、説明を省略するか、又は、必要に応じて説明を行う。
【０００９】
（第１の実施形態）
本実施形態に係るコンピュータシステムは、不揮発性メモリに対するデータ読み出しの並列性を高くするために、評価値を算出し、評価値に基づいてデータを再配置する。
【００１０】
本実施形態において、評価値は、例えば、評価対象の物理アドレス集合（複数の物理アドレス）に対して非並列になる読み出し回数の予測値を表すとする。
【００１１】
本実施形態において、並列読み出しに関する評価対象の単位はファイルである場合を説明するが、評価対象の単位はこれに限定されるものではなく、ディレクトリなど他の単位でもよい。
【００１２】
図１は、本実施形態に係るコンピュータシステム１の構成の一例を示すブロック図である。
【００１３】
コンピュータシステム１は、ストレージデバイス２と情報処理装置３とを備える。
【００１４】
ストレージデバイス２は、不揮発性メモリ４とコントローラ５とを備える。ストレージデバイス２は、例えば、メモリシステム又はＳＳＤ（Solid State Drive）でもよい。
【００１５】
不揮発性メモリ４としては、例えば、ＮＡＮＤフラッシュメモリなどが用いられる。しかしながら、不揮発性メモリ４は、例えば、ＭＲＡＭ（Magnetoresistive Random Access Memory）などのように、複数の位置に対して並列にアクセス可能な他の種類のメモリでもよい。
本実施形態において、不揮発性メモリ４は、並列化されている。
【００１６】
図２は、ストレージデバイス２に備えられる不揮発性メモリ４の構成の一例を示すブロック図である。
【００１７】
不揮発性メモリ４は、例えば複数のメモリチップＣ1〜Ｃ4を備える。メモリチップＣ1はプレーンＰ1，Ｐ2を含み、メモリチップＣ2はプレーンＰ3，Ｐ4を含み、メモリチップＣ3はプレーンＰ5，Ｐ6を含み、メモリチップＣ4はプレーンＰ7，Ｐ8を含む。プレーンＰ1〜Ｐ8のそれぞれは、ブロック集合（複数のブロック）Ｂ1〜Ｂ8を含む。ここで、ブロックとは、物理ブロックであるとする。本実施形態では、複数のプレーンＰ1〜Ｐ8に対応するブロック集合Ｂ1〜Ｂ8に対して、並列に書き込み及び読み出しが可能であるとする。ブロックは、複数のページを備える。なお、不揮発性メモリ４において、データの書き込みは、「プログラム」と表記してもよい。不揮発性メモリ４では、ブロック単位でデータを消去可能であり、ページ単位でデータの書き込み及びデータの読み出しが可能である。
【００１８】
本実施形態では、メモリチップが４つであり、１つのメモリチップに２つのプレーンが含まれ、８つのブロック集合に対して並列に読み出し可能な場合を例として説明するが、不揮発性メモリ４が並列に読み出し可能な複数の領域を持てば、これらの数は適宜変更可能である。
【００１９】
このように、本実施形態では、ブロック集合Ｂ1〜Ｂ8に対して並列にデータの読み出しが可能であり、この並列に読み出し可能なブロック集合Ｂ1〜Ｂ8の数が不揮発性メモリ４の内部並列数となる。読み出しコマンドによって読み出されるデータを、なるべく複数のブロック集合Ｂ1〜Ｂ8間に散らばった状態で、かつ、ページ単位でまとまった状態で配置し、なるべく多くのデータを並列に読み出し可能とすることで、読み出し効率を向上させることができる。
【００２０】
本実施形態では、並列に読み出し可能なブロック集合Ｂ1〜Ｂ8の数を、内部並列数Ｍ（＝８）とする。ｋ番目のブロック集合をＢkと表現する。上記図２の場合、ｋは１，２，３，４，５，６，７，８のいずれかである。評価対象ファイル全体のデータ容量をＸバイトとする。そして、１ページのデータ容量をＹバイトとする。
【００２１】
図１で示すように、不揮発性メモリ４は、例えば、アドレス変換データ６、デバイスデータ８、ファイルデータ９を記憶する。
【００２２】
アドレス変換データ６は、例えば、不揮発性メモリ４に書き込まれている複数のデータに関する複数の論理アドレスと複数の物理アドレスとを関連付けている。より具体的には、アドレス変換データ６は、例えば、論理物理アドレス管理テーブルでもよい。アドレス変換データ６を用いることで、情報処理装置３によって指定される論理アドレスを物理アドレスへ変換可能である。当該アドレス変換データ６は、評価対象ファイルに関する論理アドレスと、評価対象ファイルに関する物理アドレスとを含む。
【００２３】
論理アドレスは、例えば、ＬＢＡ（Logical Block Addressing）であるとし、物理アドレスは、例えば、ＰＢＡ（Physical Block Addressing）であるとしてもい。
【００２４】
デバイスデータ８は、不揮発性メモリ４における並列読み出し可能な複数の領域（本実施形態ではブロック集合Ｂ1〜Ｂ8）を特定する情報を含む。デバイスデータ８は、例えば、不揮発性メモリ４の並列性の情報と物理アドレスの帰属に関する情報（具体例としては、物理アドレスが並列読み出し可能な複数の領域のうちのどの領域に属するか、及び、物理アドレスがどのページに属するかを表す情報）とを含む。このデバイスデータ８を用いることにより、並列に読み出し可能な物理アドレスを識別可能である。
【００２５】
なお、デバイスデータ８は、不揮発性メモリ４に記憶されているのではなく、コントローラ５が保持してもよい。デバイスデータ８は、情報処理装置３のいずれかのメモリ、ＯＳ（オペレーティングシステム）１１、又は、デバイスドライバ１２などが保持してもよい。デバイスデータ８は、例えば、情報処理装置３の電源投入後に、情報処理装置３のデフラグプログラム１３を実行するプロセッサ１４によって取得されてもよい。より具体的には、デバイスデータ８は、例えば、デフラグプログラム１３がストレージデバイス２の品番などから決定してもよく、デフラグプログラム１３がデバイスドライバ１２に問い合わせてデバイスドライバ１２から取得してもよい。
【００２６】
ファイルデータ９は、不揮発性メモリ４に書き込まれたデータであり、例えば文書データ、画像データなどでもよい。
【００２７】
コントローラ５は、不揮発性メモリ４を制御し、例えばコマンド、データ、情報、アドレス、信号などを情報処理装置３から受信し、例えばコマンド、データ、情報、アドレス、信号などを情報処理装置３へ送信する。より具体的には、コントローラ５は、例えば、情報処理装置３からの読み出しコマンドと論理アドレスとを受信し、アドレス変換データ６を用いて論理アドレスを物理アドレスに変換し、不揮発性メモリ４から物理アドレスの示す位置のデータを読み出す。そして、コントローラ５は、読み出したデータを情報処理装置３へ送信する。
【００２８】
コントローラ５は、不揮発性メモリ４におけるアドレス変換データ６、デバイスデータ８などの各種のデータを、情報処理装置３のメモリ１５のユニファイドメモリ領域１０にキャッシュ可能である。そして、コントローラ５は、ユニファイドメモリ領域１０にキャッシュされたアドレス変換データ６、デバイスデータ８などの各種のデータを参照し、各種の処理を実行してもよい。
【００２９】
このように、本実施形態では、アドレス変換データ６、デバイスデータ８などの各種のデータがユニファイドメモリ領域１０にキャッシュされるが、例えば、後述する第２の実施形態のように、情報処理装置３は、ストレージデバイス２へデータの取得を要求する専用コマンドをストレージデバイス２へ送信し、ストレージデバイス２から受信したデータを、情報処理装置３のユニファイドメモリ領域１０ではない他のメモリ領域に記憶し、使用してもよい。
【００３０】
情報処理装置３は、ストレージデバイス２と通信可能に接続されている。情報処理装置３は、例えば、ストレージデバイス２のホスト装置として機能する。情報処理装置３は、例えば、ストレージデバイス２を内蔵してもよく、ストレージデバイス２を外付けで利用可能としてもよい。情報処理装置３は、メモリ１５とプロセッサ１４とを備える。
【００３１】
メモリ１５は、プロセッサ１４によってキャッシュメモリとして用いられてもよい。メモリ１５としては、例えば、ＤＲＡＭ（Dynamic Random Access Memory）が用いられる。
【００３２】
メモリ１５は、複数のメモリから構成されてもよく、例えば、不揮発性のメモリと揮発性メモリとの混合でもよい。
【００３３】
本実施形態において、メモリ１５は、ユニファイドメモリ領域１０を含む。ユニファイドメモリ領域１０は、プロセッサ１４のみに用いられるのではなく、例えばストレージデバイス２などのような他のデバイスと共有可能である。
【００３４】
ユニファイドメモリ領域１０には、上述したように、例えば、情報処理装置３がストレージデバイス２から受信したアドレス変換データ６、デバイスデータ８がキャッシュされてもよい。
【００３５】
メモリ１５は、例えば、情報処理装置３で用いられるＯＳ１１と、ファイルシステムデータ７と、デバイスドライバ１２と、デフラグプログラム１３とを記憶している。しかしながら、ＯＳ１１と、ファイルシステムデータ７と、デバイスドライバ１２と、デフラグプログラム１３のうちの一部又は全部は、情報処理装置３の図示されていない他のメモリに記憶されていてもよく、ストレージデバイス２から読み出されてメモリ１５又は情報処理装置３の他のメモリに記憶されてもよい。
【００３６】
メモリ１５は、例えば、プロセッサ１４によって実行されたデフラグプログラム１３によって算出された評価値を記憶してもよい。
【００３７】
プロセッサ１４は、ＯＳ１１、デバイスドライバ１２、デフラグプログラム１３を実行する。
【００３８】
ＯＳ１１は、並列性データ１６を含むとしてもよい。並列性データ１６は、例えば、情報処理装置３で用いられるＯＳ１１の読み出し並列性に関する情報を含み、より具体的には、ストレージデバイス２が一度に処理可能なＩ／Ｏの量を示すQueue Depth及びデータを分割するサイズであるコマンドチャンクサイズを含む。なお、ＯＳ１１と並列性データ１６とは、分離して別々に記憶・管理されてもよい。
【００３９】
ファイルシステムデータ７は、不揮発性メモリ４に書き込まれるファイルとディレクトリとの関係を表す情報、及び、それらの論理アドレスを含み、ＯＳ１１によって管理される。ディレクトリは、例えば、フォルダでもよい。
【００４０】
デバイスドライバ１２は、ストレージデバイス２をＯＳ１１によって制御可能とするためのソフトウェアである。
【００４１】
デフラグプログラム１３は、ユニファイドメモリ領域１０にキャッシュされているアドレス変換データ６及びデバイスデータ８と、メモリ１５上でＯＳ１１によって管理されているファイルシステムデータ７とを参照する。デフラグプログラム１３は、評価対象ファイルを選択し、評価対象ファイルの論理アドレス空間内の評価対象の論理アドレス集合を物理アドレス集合に変換し、物理アドレス集合から時間的に並列に読み出すことができない読み出し回数（例えばパラメータ値Ｐ）を算出する。ここで、時間的に並列に読み出すとは、読み出し動作の実行時間が重複することを意味し、時間的に並列に読み出すことができないとは、読み出し動作の実行時間が重複しないことを意味するものとする。
そして、デフラグプログラム１３は、時間的に並列に読み出すことができない読み出し回数が閾値以上の場合に、物理アドレス集合の示す位置に書き込まれていたデータを他の位置へ再配置（再書き込み）し、読み出し性能を向上させる。この読み出し性能を向上させるためのデータの再配置は、最適化と称してもよい。データの再配置は、デフラグプログラム１３からの命令（コマンド）に応じてストレージデバイス２のコントローラ５が実行してもよく、デフラグプログラム１３によって実行されてもよい。
【００４２】
プロセッサ１４は、デフラグプログラム１３を実行することにより、初期化部１７、選択部１８、評価部１９、再配置部２０として機能する。
【００４３】
本実施形態において、初期化部１７、選択部１８、評価部１９、再配置部２０によって読み出し並列性の評価及びデータの再配置が行われる対象は、上述したように、ファイル又はディレクトリでもよく、あるいは、ストレージデバイス２の記憶領域を区分けするドライブなどでもよい。
【００４４】
初期化部１７は、例えばストレージデバイス２又はメモリ１５から、ファイルシステムデータ７、デバイスデータ８、ＯＳ１１で用いられる並列性データ１６、参照先となるアドレス変換データ６のアドレスを取得する。また、初期化部１７は、例えば、選択部１８、評価部１９、再配置部２０を初期化する。そして、初期化部１７は、ファイルシステムデータ７及び並列性データ１６を選択部１８に設定し、デバイスデータ８に含まれているデータ及びアドレス変換データ６のアドレスを評価部１９に設定する。
【００４５】
例えば、不揮発性メモリ４が上記図２の構成を持つ場合、デバイスデータ８は、チップ数４個、各チップ内のプレーン数２個、内部並列性Ｍ＝８、ブロック集合Ｂ1〜Ｂ8に対して並列読み出し可能であること、ストレージデバイス２が１回で読み出し可能なページサイズがＹバイトであること、を示す。初期化部１７は、デバイスデータ８に含まれているこれらのデータを、評価部１９に設定する。
【００４６】
選択部１８は、例えば、初期化部１７による設定により、メモリ１５のファイルシステムデータ７を取得し、取得したファイルシステムデータ７からファイルの構造及びファイルリストを取得する。選択部１８は、ファイルリストから評価対象ファイルを選択する。ここで、評価対象ファイルは、適宜選択可能であり、あるいは、ユーザによって指定されてもよい。
【００４７】
選択部１８は、ファイルシステムデータ７から評価対象ファイルの論理アドレス空間を求める。
【００４８】
選択部１８は、初期化部１７による設定により、メモリ１５の並列性データ１６を取得し、評価対象ファイルに対応する論理アドレス空間を読み出し単位に分割し、複数の論理アドレス集合を得る。ここで、読み出し単位とは、情報処理装置３がストレージデバイス２へ発行する読み出しコマンドにしたがってストレージデバイス２が並列読み出しを試みるデータ単位とする。本実施形態では、分割によって得られた１つの論理アドレス集合が、評価対象の論理アドレス集合の１単位となる。
【００４９】
図３は、本実施形態に係る評価対象ファイルの論理アドレス空間ＦＬの分割状態の一例を示す図である。この図３の例では、評価対象ファイルの論理アドレス空間ＦＬが矩形で概念的に表記されており、この論理アドレス空間ＦＬが２次元のマトリクス状に分割されている。論理アドレス空間ＦＬを複数に分割して得られる１つの要素が、１つの読み出し単位、すなわち論理アドレス集合ＬＧであるとする。選択部１８は、例えば、マトリクス状に図示されている論理アドレス空間ＦＬの１行目左から右方向へ順に論理アドレス集合ＬＧを選択し、次に、２行目左から右方向へ順に論理アドレス集合を順に選択し、以下同様の規則にそって論理ドレス集合ＬＧを選択する。
【００５０】
例えば、並列性データ１６がQueue Depth＝１、コマンドチャンクサイズ＝１ＭｉＢを示す場合、選択部１８は、評価対象ファイルに対応する論理アドレス空間ＦＬを１ＭｉＢごとに分割し、１ＭｉＢの評価対象の論理アドレス集合ＬＧを選択する。そして、選択部１８は、評価対象の論理アドレス集合ＬＧを、評価部１９と再配置部２０とに提供する。
【００５１】
図１に示す評価部１９は、初期化部１７によってデバイスデータ８に基づいて設定されており、デバイスデータ８の内容を取得している。また、評価部１９は、初期化部１７による設定によりメモリ１５のアドレス変換データ６のアドレスを取得し、アドレス変換データ６を用いて選択部１８から取得した評価対象の論理アドレス集合ＬＧを物理アドレス集合へ変換する。そして、評価部１９は、論理アドレス集合ＬＧを変換して得られた物理アドレス集合に関して、デバイスデータ８の内容を用いて、ストレージデバイス２においてデータが時間的に並列に読み出せない配置になっている程度を評価する。
具体的には、評価部１９は、例えば、参照部１９Ａと変換部１９Ｂと算出部１９Ｃとを備える。
【００５２】
参照部１９Ａは、メモリ１５のユニファイドメモリ領域１０にキャッシュされたアドレス変換データ６を参照する。
変換部１９Ｂは、アドレス変換データ６を用いて評価対象の論理アドレス集合ＬＧを物理アドレス集合に変換する。
【００５３】
算出部１９Ｃは、デバイスデータ８に基づく設定内容を用いて、求めた物理アドレス集合の示す各位置の偏りとページ中のデータ有効度を評価する。
ここで、データ有効度は、Ｚ／Ｙで表される。Ｚは、１ページあたりの情報処理装置３から読み出しが要求されるデータの量（バイト）である。Ｙは、上記のように、１ページのデータ容量（バイト）であり、例えば、ストレージデバイス２が不揮発性メモリ４に対して読み出しを実行するデータ単位である。
算出部１９Ｃは、物理アドレスから、例えば、データが不揮発性メモリ４のどのページに書かれているか、及び、どの並列化単位（例えば、ブロック集合Ｂk)に属するかを特定可能とする。具体例として、算出部１９Ｃは、物理アドレス集合の示す各位置の偏りとページ中のデータ有効度を評価する評価値としてパラメータ値Ｐを計算する。そして、算出部１９Ｃは、パラメータ値Ｐを再配置部２０へ提供する。
【００５４】
図４は、評価対象の論理アドレス集合ＬＧに基づく不揮発性メモリ４に対する書き込み状態とパラメータ値Ｐとの関係の一例を示す図である。
【００５５】
パラメータ値Ｐは、論理アドレス集合ＬＧを変換して得られる物理アドレス集合ＰＧのうちブロック集合Ｂkに属する部分集合の要素数をＡkとする場合に、Ｐ＝ＭＡＸ（Ａk）−［Ｘ／（Ｍ×Ｙ）］＋１を計算して得られる値である。ここで［］はガウス記号である。パラメータ値Ｐが大きいほど、時間的に並列にならない不揮発性メモリ４へのデータ読み出しが必要となることを示す。図４の例では、物理ブロック集合ＰＧで示されるデータがブロック集合Ｂ1に偏って配置されており、物理ブロック集合ＰＧに対するリードを行うには、ブロック集合Ｂ1からのデータ読み出しが性能上のボトルネックになり得ることを示している。なお、パラメータ値Ｐの理想値は、ゼロである。不揮発性メモリ４は、１ページサイズ未満の読み出しコマンドを受けても１ページ分の読み出し時間がかかり、データ有効度の小さい読み出しが多くなるとスループット（所定時間内に読み出し可能なデータ量）が低下する。パラメータ値Ｐは、並列読み出し性能とともに、このスループットも評価できる。
【００５６】
再配置部２０は、選択部１８から評価対象の論理アドレス集合ＬＧを取得し、評価部１９からパラメータ値Ｐを取得する。再配置部２０は、パラメータ値Ｐが閾値Ｔ以上の場合、すなわち、時間的に並列にならない不揮発性メモリ４へのデータ読み出しの回数が閾値Ｔ以上の場合に、評価対象の論理アドレス集合ＬＧに対する再配置の命令を、ストレージデバイス２のコントローラ５へ送信する。この命令にしたがって、コントローラ５は、アドレス変換データ６を用いて評価対象の論理アドレス集合ＬＧを物理アドレス集合ＰＣに変換し、物理アドレス集合ＰＣに対応するデータを不揮発性メモリ４から読み出し、さらに、アドレス変換データ６を更新するとともに読み出したデータを不揮発性メモリ４へ再書き込みする。
なお、再配置部２０とコントローラ５とによる再配置の制御の例は、適宜変更可能である。例えば、パラメータ値Ｐが閾値Ｔ未満となるようにデータを再配置する位置は、再配置部２０がアドレス変換データ６及びデバイスデータ８を参照して決定してもよく、あるいは、コントローラ５が決定してもよい。例えば、再配置によるアドレス変換データ６の更新は、再配置部２０が実行してもよく、あるいは、コントローラ５が実行してもよい。例えば、再配置部２０は、再配置を行うデータを不揮発性メモリ４からコントローラ５経由で読み出し、並列性が確保されるように再配置を行うデータの再配置位置を決定し、再配置を行うデータをコントローラ５経由で不揮発性メモリ４の再配置位置へ書き込んでもよい。
【００５７】
図５は、再配置部２０による再配置の前と後との書き込み状態の一例を示す図である。
【００５８】
評価対象の論理アドレス集合ＬＧは、複数の論理アドレス（ＬＢＡ）を含む。評価対象の論理アドレス集合ＬＧは、１つの読み出しコマンドで情報処理装置３からストレージデバイス２へ通知される。評価対象の論理アドレス集合ＬＧに含まれている複数の論理アドレスに対する読み出しは、なるべく並列に実行されることが好ましい。
【００５９】
再配置前においては、評価対象の論理アドレス集合ＬＧを変換して得られた物理アドレス集合ＰＧに対応するデータは、ブロック集合Ｂ1に偏って配置されている。このため、ブロック集合Ｂ1に対する読み出し回数が、他のブロック集合Ｂ2〜Ｂ8よりも多くなり、並列ではない読み出しが多く発生する。このような場合に、再配置部２０及びコントローラ５は、評価対象の論理アドレス集合ＬＧに対応する物理アドレス集合ＰＧを、当該複数の物理アドレスが複数のブロック集合Ｂ1〜Ｂ8に散らばり、かつ、並列に読み出されるべきデータがなるべく同じページ内となるように、物理アドレス集合ＰＧＵに更新し、更新後の物理アドレス集合ＰＧＵに基づいてアドレス変換データ６を更新し、更新後の物理アドレス集合ＰＧＵの示す位置にデータを再配置（再書き込み）、すなわち移動する。これにより、並列読み出しにおいてボトルネックになり得るデータの偏りが解消され、あるページに対する読み出しを行うことでより多くの並列に読み出されるべきデータを取得することができる。
【００６０】
再配置部２０は、パラメータ値Ｐが閾値Ｔ未満の場合には、その旨を選択部１８に通知する。選択部１８は、次の評価対象の論理アドレス集合を選択し、次の評価対象の論理アドレス集合を評価部１９及び再配置部２０へ提供する。
【００６１】
図６は、再配置部２０による再配置の前と後とのパラメータ値Ｐの変化の一例を示す図である。この図６に例示される論理アドレス空間ＦＬは、上記の図３に例示される論理アドレス空間ＦＬと同様の条件にしたがって図示されている。
【００６２】
図６の上図に示す再配置前の論理アドレス空間ＦＬのうち、斜線の付されている論理アドレス集合では、パラメータ値Ｐが閾値Ｔ以上であり、再配置部２０は、パラメータ値Ｐが閾値Ｔ以上の論理アドレス集合に対して再配置が必要と判断する。斜線の付されていない論理アドレス集合では、パラメータ値Ｐが閾値Ｔ未満であり、再配置は実行されなくてもよい。図６の下図に示すように、再配置後においては、論理アドレス空間ＦＬの全ての論理アドレス集合ＬＧのパラメータ値Ｐが、閾値Ｔ未満となることが好ましい。
【００６３】
図７は、本実施形態に係るデフラグプログラム１３によって実行される処理の一例を示すフローチャートである。
【００６４】
ステップＳ７０１において、初期化部１７は、例えばストレージデバイス２又はメモリ１５から、ファイルシステムデータ７、デバイスデータ８、並列性データ１６、アドレス変換データ６のアドレスを取得する。
【００６５】
ステップＳ７０２において、初期化部１７は、例えば、選択部１８、評価部１９、再配置部２０を初期化し、取得した上記の各種データに基づいて、必要なデータを選択部１８、評価部１９に設定する。具体的には、初期化部１７は、例えば、ファイルシステムデータ７及び並列性データ１６を選択部１８に設定し、デバイスデータ８に含まれているデータ及びアドレス変換データ６のアドレスを評価部１９に設定する。
【００６６】
ステップＳ７０３からステップＳ７１０までは、評価対象ファイルの論理アドレス空間を、読み出し単位に分割して得られる複数の評価対象の論理アドレス集合に対して、繰り返し実行される。
【００６７】
ステップＳ７０４において、選択部１８は、評価対象の論理アドレス集合を選択する。
【００６８】
ステップＳ７０５において、評価部１９の参照部１９Ａは、アドレス変換データ６を参照する。
ステップＳ７０６において、評価部１９の変換部１９Ｂは、アドレス変換データ６を用いて評価対象の論理アドレス集合ＬＧを物理アドレス集合ＰＧへ変換する。
【００６９】
ステップＳ７０７において、評価部１９の算出部１９Ｃは、最適なばらつきからの乖離のレベルを示すパラメータ値Ｐを算出する。
【００７０】
ステップＳ７０８において、再配置部２０は、パラメータ値Ｐが閾値Ｔ以上か否か判断する。
【００７１】
パラメータ値Ｐが閾値Ｔ未満の場合には、物理アドレス集合ＰＧの示す位置は並列性が確保されていると判断し、処理はステップＳ７１０へ移動する。
【００７２】
パラメータ値Ｐが閾値Ｔ以上の場合には、ステップＳ７０９において、再配置部２０は、評価対象の論理アドレス集合ＬＧを再配置するための命令を、ストレージデバイス２のコントローラ５へ送信する。ストレージデバイス２のコントローラ５は、評価対象の論理アドレス集合ＬＧを物理アドレス集合ＰＧに変換し、現在の物理アドレス集合ＰＧの示す位置に書き込まれているデータを読み出し、並列性が確保されていると判断可能となり、かつ、なるべく同じページに格納される状態となる更新後の物理アドレス集合ＰＧＵを決定し、更新後の物理アドレス集合ＰＧＵの示す位置に、読み出されたデータを書き込む。この際、コントローラ５は、更新後の物理アドレス集合ＰＧＵに基づいてアドレス変換データ６を更新する。なお、このコントローラ５の動作の一部は、情報処理装置３のプロセッサ１４で実行されてもよい。
【００７３】
以上説明した本実施形態においては、情報処理装置３が取得可能なデータを用いて、情報処理装置３からストレージデバイス２へ読み出しコマンドを発行することなく、評価対象の物理アドレス集合ＰＧで示されるデータに関する並列読み出し性能を評価することができる。
【００７４】
本実施形態においては、情報処理装置３からストレージデバイス２へ送信される読み出しコマンドで読み出される読み出し単位に対して、並列読み出し性能を評価し、並列読み出しが多くなるように再配置を行うことができる。これにより、本実施形態においては、読み出しコマンドを発行することなく、読み出しを行うパターンにそって並列読み出し性能を評価及び向上させることができる。
【００７５】
本実施形態においては、ストレージデバイス２が保持する各種のデータがメモリ１５のユニファイドメモリ領域１０にキャッシュされる。これにより、情報処理装置３は、ストレージデバイス２が保持する各種のデータを用いて、ストレージデバイス２における並列読み出し性能を評価することができる。
【００７６】
例えば、ＨＤＤのような機械式のストレージデバイスにおいては、データの論理アドレスの連続性がファイルシステムの性能に影響を与える。このため、ＨＤＤでは、ファイルシステムのデフラグメンテーション処理によりデータの論理アドレスが連続性を保つようにファイルを再配置することによって、ディスクヘッドのシーク時間を低減し、性能の回復を図る。これに対して、ＳＳＤでは、論理アドレスの連続性によって読み出し性能が向上することは期待できない。
【００７７】
本実施形態においては、情報処理装置３が、アドレス変換データ６、デバイスデータ８などのストレージデバイス２で保持されるデータを取得し、また、ファイルシステムデータ７、並列性データ１６などを保持する。情報処理装置３は、この取得した及び保持している各種のデータに基づいて、読み出しコマンドをストレージデバイス２に発行することなく、ユースケースにそった読み出し性能を評価することができ、性能が低いと判断された場合に、データを再配置して読み出し性能を向上させることができる。
本実施形態においては、並列に読み出されるべきデータがなるべく同じページ内に配置されるように、再配置が行われる。これにより、１回のページ読み出しにより得られる並列に読み出されるべきデータの数を多くすることができ、読み出し回数を削減することができ、ストレージデバイス２のデータ読み出し処理を高速化することができる。
【００７８】
図８は、本実施形態に係る並列読み出し性能の評価に関する有効性の一例を示すグラフである。
この図８において、横軸は、並列読み出し性能の評価値であり、例えばパラメータ値Ｐである。横軸の値が小さいほど並列読み出し性能は高いと評価される。
図８の縦軸は、読み出しコマンドが発行されてからその応答（例えば読み出しデータ）が受信されるまでの時間（レイテンシ）である。
本実施形態に係る並列読み出し性能の評価値とレイテンシとの間には、相関関係がある。この図８では、パラメータ値Ｐが小さいほどレイテンシが短くなっており、パラメータ値Ｐが並列読み出し性能の評価値として有効であることが示されている。
【００７９】
（第２の実施形態）
本実施形態は、上記第１の実施形態の変形例である。
上記第１の実施形態において、ストレージデバイス２が保持する各種のデータ(具体的には、アドレス変換データ６、デバイスデータ８）は、メモリ１５のユニファイドメモリ領域１０にキャッシュされる。情報処理装置３は、ユニファイドメモリ領域１０に記憶された各種のデータを参照し、並列読み出し性能の評価及び評価に基づくデータの再配置を実行する。
【００８０】
これに対して、本実施形態では、情報処理装置３は、ユニファイドメモリ領域１０を備えなくてもよい。
【００８１】
本実施形態において、情報処理装置３は、例えば、専用コマンドを用いてストレージデバイス２から必要な各種のデータ(具体例としては、専用コマンドに対応する特定範囲のアドレス変換データ６、デバイスデータ８）を受信し、当該受信したデータをメモリ１５における特定のアドレス範囲に記憶し、メモリ１５に記憶された各種のデータに基づいて、上記図７のステップＳ７０３〜Ｓ７１０を実行する。
【００８２】
より具体的には、初期化部１７は、例えば、アドレス変換データ６の取得を要求する専用コマンド、及び、ストレージデバイス２に対してデバイスデータ８の取得を要求する専用コマンドを送信し、評価部１９を初期化し、ストレージデバイス２から受信したアドレス変換データ６及びデバイスデータ８を用いて評価部１９に対する設定を行ってもよい。
【００８３】
なお、情報処理装置３は、アドレス変換データ６とデバイスデータ８とのうちの一部分をユニファイドメモリ領域１０で管理し、他の部分を専用コマンドにより受信し、メモリ１５のうちユニファイドメモリ領域１０ではない他の領域に記憶し、メモリ１５を参照しつつ上記図７のステップＳ７０３〜Ｓ７１０を実行してもよい。
【００８４】
以上説明した本実施形態においては、情報処理装置３がユニファイドメモリ領域１０を備えない場合であっても、上記第１の実施形態と同様の作用により同様の効果を得ることができる。
【００８５】
なお、本実施形態において、初期化部１７は、例えば、ストレージデバイス２に対して、並列性データ１６、ファイルシステムデータ７の取得を要求する専用コマンドを送信し、選択部１８を初期化し、ストレージデバイス２から受信した並列性データ１６及びファイルシステムデータ７を用いて選択部１８に対する設定を行ってもよい。
【００８６】
（第３の実施形態）
本実施形態は、上記第１又は第２の実施形態の変形例である。
【００８７】
本実施形態において、評価部１９は、情報処理装置３ではなくストレージデバイス２に備えられる。
【００８８】
図９は、本実施形態に係るコンピュータシステム１Ａの構成の一例を示すブロック図である。
【００８９】
コンピュータシステム１Ａにおいて、プロセッサ１４は、メモリ１５Ａに記憶されているデフラグプログラム１３Ａを実行し、初期化部１７、選択部１８、再配置部２０としての機能を実現する。
【００９０】
コントローラ５は、不揮発性メモリ４、又は、図示しないストレージデバイス２の他のメモリに記憶されているデフラグプログラム１３Ｂを実行し、評価部１９としての機能を実現する。
【００９１】
ストレージデバイス２は、評価部１９を備えるため、本実施形態においてはアドレス変換データ６を情報処理装置３へ送信する必要がない。
【００９２】
本実施形態において、初期化部１７は、例えば、デバイスデータ８をストレージデバイス２から取得し、専用コマンドを用いてストレージデバイス２の評価部１９を初期化及び設定する。
【００９３】
本実施形態において、選択部１８は、ストレージデバイス２に対して、評価対象の論理アドレス集合ＬＧを通知するとともに評価値の送信を要求する専用コマンドを送信する。
【００９４】
ストレージデバイス２の評価部１９の参照部１９Ａは、評価対象の論理アドレス集合ＬＧと専用コマンドとを受信し、不揮発性メモリ４又はストレージデバイス２の他のメモリに記憶されているアドレス変換データ６を参照する。
評価部１９の変換部１９Ｂは、受信した専用コマンドに基づいて、アドレス変換データ６を用いて情報処理装置３から通知された評価対象の論理アドレス集合ＬＧを物理アドレス集合ＰＧに変換する。
評価部１９の算出部１９Ｃは、物理アドレス集合ＰＧに対するパラメータ値Ｐを算出し、専用コマンドの応答として、パラメータ値Ｐを情報処理装置３の再配置部２０へ送信する。
【００９５】
再配置部２０は、パラメータ値Ｐを受信し、パラメータ値Ｐが閾値Ｔより大きい場合に、評価対象の論理アドレス集合ＬＧに関するパラメータ値Ｐを閾値Ｔより小さくするための再配置の命令を、ストレージデバイス２に送信する。
【００９６】
以上説明した本実施形態においては、上記第１又は第２の実施形態と同様の作用により同様の効果を得ることができるとともに、情報処理装置３とストレージデバイス２との間で処理を分散させることができ、アドレス変換データ６をストレージデバイス２から情報処理装置３へ送信することを省略することができる。
【００９７】
（第４の実施形態）
本実施形態は、上記第３の実施形態の変形例である。
【００９８】
本実施形態において、再配置部２０は、情報処理装置３ではなくストレージデバイス２に備えられている。
【００９９】
図１０は、本実施形態に係るコンピュータシステム１Ｂの構成の一例を示すブロック図である。
【０１００】
コンピュータシステム１Ｂにおいて、プロセッサ１４は、メモリ１５Ａに記憶されているデフラグプログラム１３Ｃを実行し、初期化部１７、選択部１８としての機能を実現する。
【０１０１】
コントローラ５は、不揮発性メモリ４、又は、図示しないストレージデバイス２の他のメモリに記憶されているデフラグプログラム１３Ｄを実行し、評価部１９及び再配置部２０としての機能を実現する。
【０１０２】
本実施形態では、ストレージデバイス２に再配置部２０が備えられている。再配置の際に、この再配置部２０が、再配置の位置決定、データ再配置（再書き込み）、アドレス変換データ６の更新を実行する。
【０１０３】
本実施形態において、情報処理装置３のプロセッサ１４によって実現される初期化部１７又は選択部１８は、ストレージデバイス２のコントローラ５によって実現される評価部１９及び再配置部２０で用いられるデータ（例えば、再配置の際に用いられる閾値Ｔなど）を、ストレージデバイス２へ通知する機能を実現してもよい。
【０１０４】
選択部１８は、ストレージデバイス２に対して、評価対象の論理アドレス集合を通知する専用コマンドを送信する。
【０１０５】
ストレージデバイス２の評価部１９は、受信した専用コマンドに基づいて、アドレス変換データ６を参照し、情報処理装置３から通知された評価対象の論理アドレス集合ＬＧを物理アドレス集合ＰＧに変換し、デバイスデータ８の内容にしたがって物理アドレス集合ＰＧに対するパラメータ値Ｐを算出し、パラメータ値Ｐを再配置部２０へ提供する。
【０１０６】
ストレージデバイス２の再配置部２０は、情報処理装置３から受信した閾値Ｔと、評価部１９によって算出されたパラメータ値Ｐとに基づいて、評価対象の論理アドレス集合に対応するデータの物理的配置を再配置し、アドレス変換データ６を更新する。
【０１０７】
以上説明した本実施形態においては、上記第１又は第２の実施形態と同様の作用により同様の効果を得ることができる。
【０１０８】
また、本実施形態においては、情報処理装置３とストレージデバイス２との間で処理を分散させることができる。
【０１０９】
さらに、本実施形態においては、アドレス変換データ６をストレージデバイス２から情報処理装置３へ送信することを省略することができ、再配置に関するコマンド及びデータを情報処理装置３からストレージデバイス２へ送信することを省略することができる。
【０１１０】
上記の各実施形態は自由に組み合わせることができる。上記の各構成要素は、複数に分割してもよく、複数の構成要素を組み合わせてもよい。また、上記の各構成要素の配置は、適宜変更可能である。
【０１１１】
例えば、初期化部１７の機能を選択部１８、評価部１９、再配置部２０に分散し、選択部１８、評価部１９、再配置部２０のそれぞれが初期化とデータ取得とを行うとしてもよい。
例えば、情報処理装置３のプロセッサ１４で初期化部１７、選択部１８、評価部１９が実現され、ストレージデバイス２のコントローラ５で再配置部２０が実現されてもよい。
【０１１２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１３】
１，１Ａ，１Ｂ…コンピュータシステム、２…ストレージデバイス、３…情報処理装置、４…不揮発性メモリ、５…コントローラ、６…アドレス変換データ、７…ファイルシステムデータ、８…デバイスデータ、９…ファイルデータ、１０…ユニファイドメモリ領域、１１…ＯＳ、１２…デバイスドライバ、１３，１３Ａ〜１３Ｄ…デフラグプログラム、１４…プロセッサ、１５，１５Ａ…メモリ、１６…並列性データ、１７…初期化部、１８…選択部、１９…評価部、１９Ａ…参照部、１９Ｂ…変換部、１９Ｃ…算出部、２０…再配置部、Ｃ1〜Ｃ4…メモリチップ、Ｐ1〜Ｐ8…プレーン、Ｂ1〜Ｂ8…ブロック集合、ＦＬ…評価対象の論理アドレス空間、ＬＧ…論理アドレス集合、ＰＧ，ＰＧＵ…物理アドレス集合、Ｔ…閾値。
【図１】
2019164715.tif 000003
【図２】
2019164715.tif 000004
【図３】
2019164715.tif 000005
【図４】
2019164715.tif 000006
【図５】
2019164715.tif 000007
【図６】
2019164715.tif 000008
【図７】
2019164715.tif 000009
【図８】
2019164715.tif 000010
【図９】
2019164715.tif 000011
【図１０】
2019164715.tif 000012