(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-14
(45)【発行日】2023-12-22
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20231215BHJP
G06F 3/08 20060101ALI20231215BHJP
G06F 13/10 20060101ALI20231215BHJP
G06F 12/06 20060101ALI20231215BHJP
【FI】
G06F3/06 301M
G06F3/08 H
G06F3/06 301K
G06F13/10 340Z
G06F12/06 550C
(21)【出願番号】P 2021554050
(86)(22)【出願日】2020-02-04
(86)【国際出願番号】 JP2020004179
(87)【国際公開番号】W WO2021079535
(87)【国際公開日】2021-04-29
【審査請求日】2021-10-26
(31)【優先権主張番号】P 2019193023
(32)【優先日】2019-10-23
(33)【優先権主張国・地域又は機関】JP
【前置審査】
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100122275
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】大塚 活志
【審査官】田名網 忠雄
(56)【参考文献】
【文献】国際公開第2011/117925(WO,A1)
【文献】国際公開第2008/026497(WO,A1)
【文献】特開2019-049787(JP,A)
【文献】特開2018-116329(JP,A)
【文献】米国特許出願公開第2015/0134857(US,A1)
【文献】特表2013-541765(JP,A)
【文献】特開2015-176378(JP,A)
【文献】特開2008-242503(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 3/08
G06F 13/10-13/14
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
複数の記憶デバイスへのアクセスを制御する情報処理装置であって、
前記複数の記憶デバイスに対するアクセス要求を受け付ける受付部と、
前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御部と、
を含み、
前記アクセス制御部は、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させ、
前記要求される性能には、少なくとも前記対象データの読み出しの遅延時間の長さに関する性能が含まれる情報処理装置であり、
前記アクセス制御部は、前記対象データを所定値以内の遅延時間で読み出すことが要求される場合、前記対象データを読み出している間に前記対象データが格納されている記憶デバイスを書き込み先として指定された他のデータの書き込み要求が受け付けられた際に、当該他のデータの書き込み先を前記対象データが格納されている記憶デバイスとは別の記憶デバイスに変更することによって、前記対象データが格納される記憶デバイスに対する前記対象データの読み出し以外のアクセスを制限する
ことを特徴とする情報処理装置。
【請求項2】
請求項
1に記載の情報処理装置において、
前記アクセス制御部は、前記他のデータの書き込み要求において指定された書き込み先アドレスを別のアドレスに変換することによって、前記他のデータの書き込み先を前記別の記憶デバイスに変更する
ことを特徴とする情報処理装置。
【請求項3】
請求項
2に記載の情報処理装置において、
前記アクセス制御部は、ページ方式のアドレス変換によって前記書き込み先アドレスを前記別のアドレスに変換する
ことを特徴とする情報処理装置。
【請求項4】
請求項1に記載の情報処理装置において、
当該情報処理装置は、複数の動作モードのいずれかで動作し、
前記複数の動作モードに応じて、前記複数の記憶デバイスのそれぞれに対する用途を、少なくとも高速読み出し及び高速書き込みを含む複数の用途のいずれかに切り替えるデバイス割り当て制御部をさらに含み、
前記アクセス要求は、前記対象データの書き込み要求を含み、
前記アクセス制御部は、前記割り当てられた用途に応じて前記対象データの書き込み先を決定する
ことを特徴とする情報処理装置。
【請求項5】
請求項1に記載の情報処理装置において、
前記アクセス制御部は、前記対象データを所定値以内の遅延時間で読み出すことが要求される場合において、前記対象データを読み出している間に他のデータの書き込み要求が受け付けられた際に、当該他のデータの書き込み先を前記対象データが格納されている記憶デバイスとは別の記憶デバイスに変更することによって、当該対象データが格納される記憶デバイスに対する書き込みアクセスを制限する場合、当該書き込みアクセスが制限されている間、前記対象データが格納されている記憶デバイスの空き容量を、前記複数の記憶デバイス全体の空き容量のカウントから除外する
ことを特徴とする情報処理装置。
【請求項6】
請求項
5に記載の情報処理装置において、
前記アクセス制御部は、前記対象データを読み出している間に当該対象データが格納されている記憶デバイスに対する書き込みアクセスを制限する場合において、当該対象データが格納されている記憶デバイスに対して書き込むべき他のデータを一時的に格納する記憶領域を保持している場合、当該記憶領域の空き容量を前記複数の記憶デバイス全体の空き容量に追加してカウントする
ことを特徴とする情報処理装置。
【請求項7】
請求項1に記載の情報処理装置において、
前記アクセス制御部は、書き込み対象のデータを書き込む際に、前記複数の記憶デバイスに対して当該データを構成する複数の部分を分散して書き込むこととし、前記対象データを所定値以内の遅延時間で読み出すことが要求される場合、前記対象データを読み出している間に他のデータの読み出し要求が受け付けられた際には、前記対象データを構成する部分を前記複数の記憶デバイスのうちのいずれかの記憶デバイスから読み出す処理と、前記他のデータを構成する部分を前記複数の記憶デバイスのうちの別の記憶デバイスから読み出す処理とを並列に実行する
ことを特徴とする情報処理装置。
【請求項8】
請求項
1から
7のいずれか一項に記載の情報処理装置において、
前記アクセス制御部は、前記対象データを読み出している間、前記対象データが格納されている記憶デバイスに格納されている他のデータの削除要求が受け付けられた場合に、当該他のデータの削除処理の実行を制限し、前記対象データの読み出し完了後に当該削除処理を実行する
ことを特徴とする情報処理装置。
【請求項9】
請求項
8に記載の情報処理装置において、
前記アクセス制御部は、前記他のデータの削除処理を、前記対象データの読み出し完了後、予め定められたタイミングで実行する
ことを特徴とする情報処理装置。
【請求項10】
請求項
8又は
9に記載の情報処理装置において、
前記アクセス制御部は、前記他のデータの削除要求が受け付けられた場合に、当該他のデータの削除処理を実行する前に、前記削除要求に対して当該他のデータを削除済みである旨の応答を返す
ことを特徴とする情報処理装置。
【請求項11】
請求項
1から
10のいずれか一項に記載の情報処理装置において、
前記アクセス制御部は、前記対象データを読み出している間、前記対象データが格納されている記憶デバイスに対する当該記憶デバイスの運用上必要な管理アクセスの実行を制限し、前記対象データの読み出し完了後に当該管理アクセスを実行する
ことを特徴とする情報処理装置。
【請求項12】
請求項
11に記載の情報処理装置において、
前記アクセス制御部は、前記管理アクセスの実行を、前記対象データの読み出し完了後、予め定められたタイミングで実行する
ことを特徴とする情報処理装置。
【請求項13】
請求項
1から
12のいずれか一項に記載の情報処理装置において、
前記アクセス制御部は、前記複数の記憶デバイスに対してデータを冗長化して書き込むこととし、前記対象データを読み出している間に他のデータの読み出し要求が受け付けられた場合、当該他のデータが冗長化して書き込まれた、前記対象データが格納されている記憶デバイスとは別の記憶デバイスから、当該他のデータを読み出す
ことを特徴とする情報処理装置。
【請求項14】
請求項1から
13のいずれか一項に記載の情報処理装置において、
前記アクセス要求には、前記対象データの読み出しの遅延時間の長さに関する要求を指定する要求性能情報が含まれ、
前記アクセス制御部は、前記要求性能情報に応じて、前記アクセスの態様を変化させる
ことを特徴とする情報処理装置。
【請求項15】
請求項
14に記載の情報処理装置において、
前記要求性能情報は、前記アクセス要求に付加されて送信される情報であって、当該アクセス要求に応じたアクセス、又は当該アクセス要求の対象となるデータを後に読み出すアクセスのいずれか少なくとも一方に要求される性能に関する情報である
ことを特徴とする情報処理装置。
【請求項16】
請求項
15に記載の情報処理装置において、
前記要求性能情報は、前記アクセス要求の対象となる複数のデータのそれぞれに対する読み出しに要求される読み出しの遅延時間の長さに関する情報を含む
ことを特徴とする情報処理装置。
【請求項17】
請求項
14から
16のいずれか一項に記載の情報処理装置において、
前記要求性能情報は、前記読み出しの遅延時間の長さに関する要求を指定する情報に加えて、読み出し速度に関する要求を指定する情報、及びベストエフォートでの読み出しを指定する情報のいずれか少なくとも一つを含む
ことを特徴とする情報処理装置。
【請求項18】
請求項
14から
17のいずれか一項に記載の情報処理装置において、
前記アクセス要求は、前記対象データの書き込み要求を含み、
前記アクセス制御部は、前記要求性能情報に応じて、前記対象データの書き込み先の記憶デバイスを変化させる
ことを特徴とする情報処理装置。
【請求項19】
請求項
18に記載の情報処理装置において、
前記アクセス制御部は、前記要求性能情報に前記対象データを所定値以内の遅延時間で読み出すことを要求する要求性能情報が含まれる場合、前記複数の記憶デバイスのうち、前記所定値以内の遅延時間での読み出し用に割り当てられた記憶デバイスに前記対象データを書き込み、前記所定値以内の遅延時間での読み出しが要求されないデータの書き込み要求が受け付けられた場合、前記所定値以内の遅延時間での読み出し用に割り当てられた記憶デバイスとは別の記憶デバイスに当該データを書き込む
ことを特徴とする情報処理装置。
【請求項20】
請求項
18又は
19に記載の情報処理装置において、
前記要求性能情報には、前記対象データの読み出しに要求される帯域に関する要求性能情報が含まれ、
前記アクセス制御部は、前記帯域に応じて特定される複数の前記記憶デバイスに対して、前記対象データを分散して書き込む
ことを特徴とする情報処理装置。
【請求項21】
請求項1から
20のいずれか一項に記載の情報処理装置において、
前記アクセス要求は前記対象データの書き込み要求を含み、かつ、当該書き込みの際に要求される帯域性能に関する要求性能情報が含まれ、
前記アクセス制御部は、前記帯域性能に応じて特定される複数の前記記憶デバイスに対して、前記対象データを分散して書き込む
ことを特徴とする情報処理装置。
【請求項22】
請求項1に記載の情報処理装置において、
前記アクセス要求のアクセス先を指定するために用いられるアドレス空間は、同じ記憶デバイスを重複して対象とする複数のアドレス範囲を含み、当該複数のアドレス範囲のそれぞれについて、予め実現すべき要求性能が対応づけられ、
前記アクセス要求の要求元は、前記複数のアドレス範囲のうち、当該アクセス要求に要求される性能に応じて選択されるアドレス範囲を指定して前記アクセス要求を行い、
前記アクセス制御部は、前記アクセス要求において指定されたアドレス範囲に対応づけられた要求性能を満たすように、当該アクセス要求に応じたアクセスを実行する
ことを特徴とする情報処理装置。
【請求項23】
複数の記憶デバイスへのアクセスを制御する情報処理方法であって、
前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、
前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、
を含み、
前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させ、
前記要求される性能には、少なくとも前記対象データの読み出しの遅延時間の長さに関する性能が含まれる情報処理方法であり
、
前記アクセス制御ステップでは、前記対象データを所定値以内の遅延時間で読み出すことが要求される場合、前記対象データを読み出している間に前記対象データが格納されている記憶デバイスを書き込み先として指定された他のデータの書き込み要求が受け付けられた際に、当該他のデータの書き込み先を前記対象データが格納されている記憶デバイスとは別の記憶デバイスに変更することによって、前記対象データが格納される記憶デバイスに対する前記対象データの読み出し以外のアクセスを制限する
、
ことを特徴とする情報処理方法。
【請求項24】
複数の記憶デバイスへのアクセスを制御するコンピュータに、
前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、
前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、
を実行させるためのプログラムであって、
前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させ、
前記要求される性能には、少なくとも前記対象データの読み出しの遅延時間の長さに関する性能が含まれるプログラムであり
、
前記アクセス制御ステップでは、前記対象データを所定値以内の遅延時間で読み出すことが要求される場合、前記対象データを読み出している間に前記対象データが格納されている記憶デバイスを書き込み先として指定された他のデータの書き込み要求が受け付けられた際に、当該他のデータの書き込み先を前記対象データが格納されている記憶デバイスとは別の記憶デバイスに変更することによって、前記対象データが格納される記憶デバイスに対する前記対象データの読み出し以外のアクセスを制限する
、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶デバイスからデータを読み出す情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【0002】
家庭用ゲーム機やパーソナルコンピュータ、スマートホン等の情報処理装置は、一般に、フラッシュメモリ等の情報を記憶する記憶デバイスを複数備えており、これらの記憶デバイスに対するデータの格納、及び格納されたデータの読み出しを行いながら動作する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
同じ記憶デバイスに対する複数のアクセス要求が競合すると、記憶デバイスからデータを読み出す際にその読み出しアクセスに遅延(レイテンシ)が生じることがある。例えば映像等のストリーミングデータや、リアルタイムでの描画更新に使用するゲームのデータを読み出す場合など、所定の要求水準を満たすレイテンシでの読み出しが期待されている場合、このようなアクセス遅延が生じると要求水準を確保することができなくなってしまい、好ましくない。
【0004】
特にNAND型フラッシュメモリ等の記憶デバイスは、メモリセルの書き換え可能回数(メモリセルの寿命)に制限があることが知られており、利用するメモリセルの分散・平準化、すなわち、ウェアレベリングの考慮が必要となる。また、読み出し・書き込みはページ単位(例えば16キロバイト単位)、消去はページよりも大きなサイズであるブロック単位(例えば1.2メガバイト単位)でしか行えない制約がある。このような中で、記憶デバイスの運用において、書き込みを繰り返していると、各ブロック内に未使用領域が断片的に発生し、記憶デバイスの利用効率やアクセス性能が低下してくる。また、各メモリセルの利用頻度の偏りにより、各メモリセルの書き換え可能寿命にも偏りが生じる。このような問題に対する対策として、書き込み済みデータを読み出して、別領域に集約して書き込み、消去可能な元領域をブロック単位で連続して確保したうえで消去をおこなう、という管理アクセス、すなわち、デフラグメンテーションやガベージコレクションと呼ばれる処理が随時必要となる。NAND型フラッシュメモリの利用においては、このような管理アクセスが不可欠であるが、この管理アクセスが通常のデータアクセスと競合することにより、通常のデータアクセスのレイテンシにばらつきが生じてしまい、アクセスに必要な時間を予測することが難しくなることがある。
【0005】
本発明はこのような事情を考慮してなされたものであって、その目的の一つは、記憶デバイスからデータを読み出す際に、管理アクセス等の競合する他のアクセスの影響を排除し、必要な要求性能を確保することのできる情報処理装置、情報処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0006】
本発明の一態様に係る情報処理装置は、複数の記憶デバイスへのアクセスを制御する情報処理装置であって、前記複数の記憶デバイスに対するアクセス要求を受け付ける受付部と、前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御部と、を含み、前記アクセス制御部は、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させることを特徴とする。
【0007】
本発明の一態様に係る情報処理方法は、複数の記憶デバイスへのアクセスを制御する情報処理方法であって、前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、を含み、前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させることを特徴とする。
【0008】
本発明の一態様に係るプログラムは、複数の記憶デバイスへのアクセスを制御するコンピュータに、前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、を実行させるためのプログラムであって、前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させることを特徴とする。このプログラムは、コンピュータ読み取り可能で非一時的な情報記憶媒体に格納されて提供されてよい。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施の形態に係る情報処理装置の構成例を表すブロック図である。
【
図2】本発明の実施の形態に係る情報処理装置の機能を表す機能ブロック図である。
【
図3】デバイス制御回路が実行するアクセス制御の一例について説明する図である。
【
図4】デバイス制御回路が実行するアクセス制御の別の例について説明する図である。
【
図5】デバイス制御回路が実行する記憶デバイスの用途割り当ての一例について説明する図である。
【
図6】アドレス空間に対する性能割り当ての一例を示す図である。
【
図7】アドレス空間に対する性能割り当ての別の例を示す図である。
【
図8】本発明の一実施形態をゲームコンソールに適用した場合の構成例を示す図である。
【
図9】本発明の一実施形態をサーバシステムに適用した場合の構成例を示す図である。
【
図10】ソフトウェア階層構成の概要を示す図である。
【
図11】ゲームコンソールのソフトウェア階層構成を示す図である。
【
図12】サーバシステムのソフトウェア階層構成を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について図面を参照しながら説明する。
【0011】
本発明の一実施形態に係る情報処理装置1は、家庭用ゲーム機やサーバコンピュータなどであって、
図1に示すように、演算部11と、メインメモリ12と、デバイス制御回路13と、複数の記憶デバイス14と、通信部15と、を含んで構成されている。
【0012】
演算部11は、CPU等のプログラム制御デバイスを含み、メインメモリ12に格納されたオペレーティングシステムやアプリケーションプログラムなどのプログラムに従って、各種の情報処理を実行する。メインメモリ12は、RAM等の揮発性記憶素子を含んで構成されており、演算部11が実行する各種のプログラムや、それらのプログラムで利用されるデータを一時的に保持する。
【0013】
デバイス制御回路13は、集積回路等であって、その内部に保持されているファームウェアプログラムに従って、記憶デバイス14の動作を制御するための処理を実行する。特にデバイス制御回路13は、後述するように、演算部11からデータの読み出し要求、書き込み要求、削除要求などのアクセス要求を受け付けて、その要求内容に応じた記憶デバイス14へのアクセスを実行する。また、ガベージコレクションやウェアレベリングなど、記憶デバイス14の管理に必要な各種の制御処理を実行する。
【0014】
複数の記憶デバイス14は、それぞれ不揮発性記憶素子によって構成されるデバイスであって、情報処理装置1が使用するプログラムや各種のデータを記憶する。記憶デバイス14は、例えばNAND型フラッシュメモリ等であってよい。記憶デバイス14に記憶されているデータは、演算部11からの要求に応じてメインメモリ12に格納されるなどして利用される。
【0015】
本実施形態において、複数の記憶デバイス14は、それぞれ独立にアクセス可能であるものとする。すなわち、一つの記憶デバイス14に対して複数のアクセス要求があった場合、それらのアクセスは同時に実行することができず、互いに競合することになる。これに対して、互いに別の記憶デバイス14に対するアクセスは競合せず、並列に実行することが可能になっている。
【0016】
通信部15は、無線又は有線で外部の通信ネットワークとの間でデータを送受信するためのインタフェースである。情報処理装置1は、通信部15を介して他の通信機器との間でデータを授受する。
【0017】
以下、本実施形態に係る情報処理装置1が実現する機能について、
図2を参照して説明する。
図2に示すように、情報処理装置1は、機能的に、アクセス要求部21と、アクセス制御部22と、デバイス割り当て制御部23と、情報記憶部24と、を含んで構成される。アクセス要求部21は、演算部11がメインメモリ12に格納されているオペレーティングシステム等のプログラムを実行することで実現される。アクセス制御部22、デバイス割り当て制御部23及び情報記憶部24は、デバイス制御回路13が内蔵するファームウェアプログラムを実行することによって実現される。
【0018】
アクセス要求部21は、上位のアプリケーションプログラムからの要求等に応じて、デバイス制御回路13に対してデータのアクセス要求を発行する。アクセス要求部21が発行するアクセス要求には、記憶デバイス14へのデータの書き込み要求、記憶デバイス14に格納されたデータの読み出し要求、及びデータの削除要求が含まれ得る。さらに本実施形態において、アクセス要求部21は、少なくとも一部のアクセス要求を発行する際に、そのアクセス要求の対象となったデータを読み出す際に要求される性能に関する情報を、アクセス要求とともにデバイス制御回路13に通知する。以下では、この要求される読み出し性能に関する情報を、要求性能情報という。
【0019】
具体的に要求性能情報は、例えば要求される帯域(単位時間あたりに読み出されるデータ量)の大きさを指定する情報や、許容される読み出し時の遅延(レイテンシ)を指定する情報を含んでもよい。あるいは、単に広帯域(すなわち、所定のデータ読み出し速度以上)での読み出しが要求されるか否か、及び低遅延(すなわち、所定値以内のレイテンシ)での読み出しが要求されるか否かのそれぞれを指定する情報であってもよい。また、要求性能情報は、ベストエフォートでの読み出しが許容される旨を指定する情報を含んでもよい。この場合には、遅延や帯域に対する要求性能は指定されないことになる。
【0020】
アクセス要求部21は、個々のアクセス要求ごとに、そのアクセス要求の対象となったデータに対する要求性能情報をそのアクセス要求に付加して通知することとしてもよい。あるいは、アクセス要求の対象とされる一連のデータごとに、そのデータに対する要求性能情報を付加してもよい。具体的に、アクセス要求がバーストアクセス要求やブロックアクセス要求、チェーンリストアクセス要求などであって、一つのアクセス要求に応じて複数のデータアクセスが分割実行される場合がある。このような場合、アクセス要求部21は、分割実行されるそれぞれのデータアクセスに対して要求性能情報を指定してもよい。また、ファイルシステムと連携したアクセス要求など、一つのファイルに対するアクセス要求に応じて複数のデータアクセスが分割実行される場合がある。このような場合にも、アクセス要求部21は、複数のデータアクセスのそれぞれに対して要求性能情報を指定してもよい。
【0021】
アクセス要求部21は、アクセス要求元のアプリケーションプログラムからの指定に応じて、要求性能情報の内容を決定してもよい。あるいは、アクセス要求元のアプリケーションプログラムの種類に応じて自動的に要求性能情報の内容を決定してもよい。一例として、ゲームプログラムなどにおいては、ゲーム画面の描画に必要なデータをゲーム処理の実行中にリアルタイムに読み出したい場合がある。このような場合、低遅延での読み出しが要求される旨を指定する要求性能情報が指定される。
【0022】
なお、アクセス要求部21は、データの書き込み要求時に、後にそのデータを読み出す際に要求される性能を指定する要求性能情報を通知してもよい。また、データの読み出し要求を行う際に、その読み出し要求の対象となったデータの読み出しに要求される性能を指定する要求性能情報を通知してもよい。
【0023】
アクセス制御部22は、アクセス要求部21が発行するアクセス要求を受け付けて、その要求内容に応じた記憶デバイス14へのアクセス制御を実行する。特に本実施形態において、アクセス制御部22は、要求性能情報を伴うデータの読み出し要求を受け付けた場合、その要求された性能での読み出しを実現するために必要な制御を行う。また、アクセス制御部22は、要求性能情報を伴うデータの書き込み要求を受け付けた場合、その要求性能情報の内容に応じて、データの書き込み先の記憶デバイス14を変化させる。
【0024】
以下、アクセス制御部22が要求性能情報を伴うアクセス要求を受け付けた場合に実行する制御内容のいくつかの具体例について、説明する。
【0025】
まず、低遅延での読み出しを指定する要求性能情報を伴うデータの読み出し要求を受け付けた場合にアクセス制御部22が実行する制御について、説明する。ここでは具体例として、複数の記憶デバイス14のうち、記憶デバイス14-1に格納されているデータD1に対して、低遅延での読み出しを必要とする読み出し要求R1が受け付けられたものとする。この場合、アクセス制御部22は、データD1の読み出しを実行中に別のアクセス要求R2を受け付けた際に、そのアクセス要求R2に応じたアクセスがデータD1の読み出しを妨げないよう制御する。そのためにアクセス制御部22は、アクセス要求R2に応じた処理を行う際に、データD1が格納されている記憶デバイス14-1に対するアクセスが生じないようにする。これにより、記憶デバイス14-1へのアクセスの競合を避け、データD1の読み出しアクセスに遅延が生じないようにすることができる。
【0026】
具体的にアクセス制御部22は、アクセス要求R2が書き込み要求であった場合、このアクセス要求R2の対象となったデータD2の書き込み先を、データD1が格納されている記憶デバイス14-1以外の記憶デバイス14に変更する。このような制御は、格納先として指定された論理アドレスを別の記憶デバイス14の物理アドレスにマッピングするアドレス変換によって実現できる。
図3は、このようなアクセス先の変更を説明する図である。この図の例では、データD2の書き込み先として、データD1の格納場所と比較的近い論理アドレスが指定されているが、アドレス変換によってデータD2の書き込み先が別の記憶デバイス14-2に変更されている。これにより、データD1の読み出しとデータD2の書き込みが並列に実行され、データD1の読み出しに必要なレイテンシ性能を確保することができる。なお、このアドレス変換は、ページ方式などで実行されるものであってもよい。
【0027】
また、アクセス要求R2が、データD1と同じ記憶デバイス14-1に格納されたデータD3の削除要求であった場合、アクセス制御部22は、データD1の読み出しが完了するまで、このアクセス要求R2に応じたデータD3の削除処理を遅延させる。具体的にアクセス制御部22は、削除要求を受け付けたタイミングでは、論理アドレス上のデータD3を削除済みのステータスに変化させる制御を行い、削除要求に対して削除済みである旨の返答を返すが、実際にデータD3へのアクセスは行わない。
図4は、このような削除の予約が行われた状態を示している。この状態でデータD3に対するアクセス要求を受け付けた場合、アクセス制御部22はデータD3が存在しない旨の応答を返す。一方、記憶デバイス14-1内のデータD3を実際に削除する処理は、データD1の読み出しが完了した後に実行する。これにより、記憶デバイス14-1へのアクセスの競合を回避できる。
【0028】
なお、アクセス制御部22は、データD1の読み出し完了後、直ちにデータD3の削除処理を実行してもよいが、予め定められたタイミングで実行してもよい。具体例として、アクセス制御部22は、記憶デバイス14に対するアクセスが少ないと想定される夜間等の予め定められた時間帯に削除処理を実行してもよい。また、記憶デバイス14の一部が非稼働になるタイミングが存在する場合、削除処理の対象となる記憶デバイス14が非稼働とされるタイミングで削除処理を実行してもよい。
【0029】
さらにアクセス制御部22は、データD1の読み出し中は、アクセス要求に応じたアクセス以外の記憶デバイス14-1へのアクセスも制限する。以下では、アクセス要求に応じたアクセス以外にアクセス制御部22が実行する、各記憶デバイス14の運用上必要となる記憶デバイス14へのアクセスを、管理アクセスという。具体的に、NAND型フラッシュメモリ等の記憶デバイスを使用する場合、ガベージコレクションやデフラグメンテーションなどを行うための管理アクセスが必要となる。また、キャッシュ領域、冗長領域、オーバープロビジョニング領域など、読み出し速度等に差がある他の記憶領域と記憶デバイス14との間でデータを移動させる管理アクセスが行われる場合がある。また、誤り検出訂正用データ(ECCデータ)の書き込みや読み出しの管理アクセスが行われる場合もある。また、記憶デバイス14のメモリセル構造によっては、メモリセルの保持内容が時間の経過や外部要因によって徐々に失われ、データ化けを起こすおそれがある。そのためアクセス制御部22は、このような状態の発生を避けるため、同一メモリセル値の再チャージ・再書き込みなどのリフレッシュ動作や、あるメモリセルに保持されている値を別のメモリセルに移動させるなどの管理アクセスを実行する場合がある。
【0030】
以上例示したような各種の管理アクセスも、他のアクセスを遅延させる要因となる。そのためアクセス制御部22は、低遅延での読み出しが要求されるデータの読み出し中は、管理アクセスの実行を制限し、読み出しが完了した後に制限されていた管理アクセスを実行することとする。アクセス制御部22は、この管理アクセスの実行についても、前述した削除処理と同様に、低遅延が要求される読み出しアクセスの完了後、予め定められたタイミングで実行してもよい。
【0031】
次に、要求性能情報を伴う書き込み要求を受け付けた場合の制御について、説明する。広帯域や低遅延での読み出しが必要である旨の要求性能情報を伴う書き込み要求を受け付けた場合、アクセス制御部22は、後にそのデータを読み出す際に必要な性能を確保できるように、書き込み先の記憶デバイス14を決定する。
【0032】
具体的に、所定値以内のレイテンシ(低遅延)での読み出しを要求する要求性能情報が書き込み要求に含まれる場合、アクセス制御部22は、その書き込み要求の対象となったデータを低遅延の読み出し用に割り当てられた記憶デバイス14に格納する。ここで、記憶デバイス14への用途の割り当ては、後述するデバイス割り当て制御部23によって実行される。逆にレイテンシについての要求がないデータの書き込み要求が受け付けられた場合、アクセス制御部22は、汎用の割り当てがなされた記憶デバイス14にそのデータを書き込むこととする。これにより、低遅延での読み出しが必要なデータとそうではないデータを別の記憶デバイス14に格納することができ、両者の間でのアクセスの競合を避けることができる。
【0033】
また、帯域の指定が要求性能情報に含まれる場合、アクセス制御部22は、指定されたデータを書き込む対象となる複数の記憶デバイス14を特定し、特定された複数の記憶デバイス14に分散して指定されたデータを書き込むこととする。これによりアクセス制御部22は、後にそのデータを読み出す際に、インターリーブの手法を用いて複数の記憶デバイス14から並列にデータを読み出すことによって、広帯域でのデータ読み出しが可能になる。
【0034】
ここで、分散して書き込みを行う記憶デバイス14の数は、要求された帯域の大きさに応じて決定されてよい。具体的に、アクセス制御部22は、要求された帯域の大きさが大きいほど、多くの記憶デバイス14に分散して書き込みを行うこととする。ここで、記憶デバイス14がNAND型フラッシュメモリの場合、1セルあたりの記憶容量(ビット数)は、SLC(シングルレベルセル)やMLC(マルチレベルセル)などと呼ばれる記憶方式によって決定される。一般に、1セルあたりの記憶容量が大きくなるほど、データ転送速度や読み出し遅延の性能は悪化する傾向があり、デバイスごとの記憶方式が異なると、データの読み出し性能にも相違が生じることになる。そこでアクセス制御部22は、各記憶デバイス14のデータ読み出し速度の情報を予め保持しておくこととし、広帯域での読み出しが必要なデータの書き込み要求を受け付けた場合、各記憶デバイス14のデータ読み出し速度を考慮して、必要な帯域を確保するための記憶デバイス14の数を決定することとする。
【0035】
具体例として、広帯域での読み出しが要求されるデータの書き込み要求を受付けた場合、アクセス制御部22は、比較的データ読み出し速度が早いSLC方式の記憶デバイス14を所定数書き込み対象にしてデータの書き込みを行う。例えば要求された帯域が10GB/sであってSLC方式の記憶デバイス14のデータ読み出し速度が1GB/sの場合、10個の記憶デバイス14に分散して書き込むことで、要求された帯域での読み出しが可能となる。
【0036】
なお、低遅延かつ広帯域の読み出しが要求されるデータの書き込み要求が受付けられた場合には、要求された帯域での読み出しに必要な数の記憶デバイス14をデバイス割り当て制御部23が低遅延の読み出し用途に割り当てることとし、アクセス制御部22はこの低遅延に割り当てられた複数の記憶デバイス14にデータを書き込むこととする。このときデバイス割り当て制御部23は、後述するように、読み出し遅延について要求された性能を確保可能な記憶デバイス14(例えばSLC方式でデータを読み書きする記憶デバイス14)を、要求された帯域での読み出しに必要な数だけ低遅延の読み出し用途に割り当てることとする。一例として、アクセス制御部22による読み出しアクセス制御の手続や転送に要する遅延(記憶デバイス14外で発生する遅延)が150μs、SLC方式の記憶デバイス14の読み出し遅延が50μs、MLC方式の読み出し遅延が100μsであることが既知である場合において、読み出し遅延が200μs以下であることを要求する要求性能情報が指定されたものとする。この場合アクセス制御部22は、SLC方式の記憶デバイス14に要求されたデータを書き込むこととする。これにより、読み出し時に前述したようなアクセス競合を抑制する制御を行うことで、要求された遅延性能を確保することができる。一方、要求された読み出し遅延が250μs以下であれば、アクセス制御部22は要求されたデータをMLC方式の記憶デバイス14に書き込んでもよい。なお、ここで例示したような各記憶デバイス14に対する読み出し性能に関する情報は、情報記憶部24によって保持される。
【0037】
また、アクセス制御部22は、データ書き込み時に指定された要求性能情報を記憶しておき、書き込まれたデータの読み出し要求を受け付けた際に、記憶されている要求性能情報を参照して読み出し制御を行ってもよい。例えば低遅延での読み出しが必要である旨の要求性能情報とともにデータD1の書き込み要求を受け付けた場合、アクセス制御部22は、前述したように低遅延の読み出しに割り当てられた記憶デバイス14にデータD1を格納するとともに、データD1について低遅延での読み出しが必要である旨を記憶しておく。そして、データD1に対する読み出し要求を受け付けた際には、その読み出し要求に要求性能情報が付加されているか否かにかかわらず、低遅延での読み出しを実行する。具体的には、前述した低遅延での読み出しを要求する要求性能情報とともに読み出し要求が行われた場合と同様に、アクセス競合を避けながらデータD1を読み出す制御を行う。これにより、書き込み時にそのデータの読み出し性能を指定する要求性能情報を付加しておけば、読み出し時に都度要求性能情報を指定する必要なく、そのデータを要求された性能で読み出すことができるようになる。
【0038】
なお、これまで説明した例では、低遅延での読み出しが要求される複数のデータが、同じ記憶デバイス14に書き込まれる可能性がある。その場合、同じ記憶デバイス14に書き込まれた複数のデータに対する読み出し要求が競合した場合、その両者を低遅延で同時に読み出すことは困難になる。そのような場合に備えてアクセス制御部22は、低遅延での読み出しが要求されるデータの書き込み要求を受け付けた場合に、このデータを複数の記憶デバイス14に冗長化させて書き込むこととしてもよい。こうすれば、そのデータに対する読み出し要求が他の読み出し要求と競合した場合に、要求されたデータが冗長化して書き込まれている複数の記憶デバイス14のうち、他の読み出し要求と競合しないような一部の記憶デバイス14から要求されたデータを読み出すことにより、一つの記憶デバイス14に対するアクセスの競合による読み出し遅延を回避することができる。
【0039】
具体的に、この例においてアクセス制御部22は、低遅延での読み出しが要求されるデータの書き込み要求を受け付けた場合に、この書き込み要求の対象となったデータを、異なる複数の記憶デバイス14へ2重以上の多重度(複数度)であらかじめ書き込むこととする。
【0040】
このような前提の下で、ある対象データ(ここではデータD4とする)を所定値以内の遅延で読み出すことが要求された場合、アクセス制御部22は、前述したように、データD4を読み出している間、読み出し対象となる記憶デバイス14に対する当該読み出し以外のアクセスを制限することで、低遅延リードを保証する。そして、このデータD4の読み出しアクセス実行中に別のデータ(ここではデータD5とする)に対する低遅延での読み出し要求が同時に受け付けられた場合、アクセス制御部22は、このデータD5がどの記憶デバイス14に多重化されて書き込まれているかを調べる。前述したように低遅延での読み出しが要求されるデータが冗長化して書き込まれていれば、データD5も2以上の記憶デバイス14に冗長に書き込まれているはずである。アクセス制御部22は、データD5が書き込まれた複数の記憶デバイス14のうち、データD4を読み出し中の記憶デバイス14(すなわち、アクセスが制限されている記憶デバイス14)と異なる記憶デバイス14から、データD5を読み出す。なお、このデータD5の読み出し中は、データD4を読み出し中の記憶デバイス14と同様に、データD5の読み出し対象となった記憶デバイス14に対するそれ以外のアクセスを制限する。
【0041】
例えば記憶デバイス14-1,14-2の2つの記憶デバイス14が低遅延アクセス用途に割り当てられている場合、アクセス制御部22は、低遅延での読み出しが指定されたデータD4を、この記憶デバイス14-1,14-2の双方に冗長に書き込む。データD5についても同様に、記憶デバイス14-1,14-2の双方に書き込んでおく。そして、データD4を記憶デバイス14-1から読み出し中にデータD5に対する読み出し要求が受け付けられた場合、このデータD5を記憶デバイス14-2から読み出すこととする。これにより、データD4及びデータD5に対する読み出しアクセスが競合しないようにすることができる。
【0042】
また、記憶デバイス14-1~14-4の4つの記憶デバイス14がデータD4及びデータD5の書き込みに利用可能な場合、アクセス制御部22は、各データを記憶デバイス14-1,14-2の2つの記憶デバイス14に分散書き込みするとともに、記憶デバイス14-3,14-4の2つの記憶デバイス14にも同じデータを分散書き込みしてもよい。この場合、アクセス制御部22は、データD4の読み出し要求が受け付けられると、そのデータD4を記憶デバイス14-1,14-2の2つの記憶デバイス14から分散読み出しする。さらに、この分散読み出しの最中にデータD5の読み出し要求が受け付けられた場合、アクセス制御部22はデータD5を記憶デバイス14-3,14-4の2つの記憶デバイス14から分散読み出しする。このように、各データが複数の記憶デバイス14に2重以上の多重度で、かつそれぞれ分散書き込みされていれば、複数のデータを並列に、かついずれも分散読み出しで読み出すことができる。
【0043】
本発明の一実施態様において、デバイス割り当て制御部23は、アクセス制御の対象となる複数の記憶デバイス14に対して、用途の割り当てを行う。この場合、デバイス割り当て制御部23は、複数の記憶デバイス14の一部を低遅延アクセス用途に割り当て、別の一部を汎用アクセス用途に割り当てる。アクセス制御部22は、データの書き込み要求を受け付けた場合に、この割り当て結果に応じてデータの書き込み先の記憶デバイス14を振り分けることとする。これにより、低遅延のアクセスが要求されるデータをそれ以外のデータと別の記憶デバイス14に記憶することができ、低遅延のアクセスが要求されるデータを読み出す際にアクセスの競合が生じないようにすることができる。
【0044】
なお、前述したNAND型フラッシュメモリの例のように、記憶方式等によって各記憶デバイス14の読み出し性能には差があることがある。この場合、デバイス割り当て制御部23は、遅延の少ない記憶デバイス14(例えばSLC方式の記憶デバイス14)を優先的に低遅延アクセスの用途に割り当てることとする。
【0045】
このような制御を実現するために、情報記憶部24は、各記憶デバイス14からのデータ読み出しの際に生じる遅延がどの程度かを示す情報を、予め記憶しているものとする。前述したように、最終的に生じる読み出し遅延には、記憶デバイス14自体で発生する読み出し遅延と、アクセス制御部22による読み出し制御の手続やデータ転送によって発生する遅延とが含まれることになる。また、読み出し制御の手続やデータ転送に要する遅延は、各記憶デバイス14の接続態様や通信経路によって異なり、複数の記憶デバイス14について共通であるとは限らない。そのため情報記憶部24は、各記憶デバイス14の純粋な読み出し性能に関する情報だけでなく、このような実際のアクセスの手続や転送によって生じる遅延に関する情報を予め保持することとし、デバイス割り当て制御部23はこのような情報を考慮して要求された低遅延アクセスを実現するための記憶デバイス14割り当てを決定することとしてもよい。
【0046】
デバイス割り当て制御部23は、低遅延のアクセスが必要なデータの書き込み要求をアクセス制御部22が受け付けた際に、動的に記憶デバイス14の割り当てを行ってもよい。この場合、まずアクセス制御部22からの要求に応じてデバイス割り当て制御部23が低遅延アクセスのための記憶デバイス14を割り当てる。その後、アクセス制御部22は割り当てられた記憶デバイス14に対して書き込み要求の対象となったデータを格納する。
【0047】
さらにこの場合、デバイス割り当て制御部23は、低遅延アクセスのための記憶デバイス14を割り当てた際に、併せて汎用アクセスのための記憶デバイス14を割り当ててもよい。前述したように、低遅延でのデータ読み出しを実行する際には、アクセスの競合を回避するために同時期に発生した別のアクセス要求については別の記憶デバイス14に書き込むことが望ましい。そのため、低遅延アクセスのための記憶デバイス14を確保する際に、併せて汎用アクセスのための記憶デバイス14を確保しておくことで、アクセスの競合を生じにくくすることができる。
【0048】
なお、この場合に確保する汎用アクセスのための記憶デバイス14の数は、低遅延アクセスのための記憶デバイス14の数に対して予め定められた割合に応じて決定されてよい。例えば、低遅延アクセスのための記憶デバイス14をn個確保するごとに汎用アクセスのための記憶デバイス14の数を1個追加するなどのルールでそれぞれの用途の記憶デバイス14を確保することとする。また、前述したように広帯域、かつ低遅延での読み出しが要求されるデータの書き込み要求が受け付けられた場合、比較的多くの記憶デバイス14を低遅延アクセス用途に確保する必要が生じる。この場合、要求された帯域に応じて必要な数の記憶デバイス14を低遅延アクセス用途に割り当て、残りの記憶デバイス14を汎用アクセス用途に割り当ててもよい。
【0049】
なお、デバイス割り当て制御部23が行う用途の割り当ては固定的なものではなく、動的に変更されるものであってよい。例えば新たに低遅延の読み出しが必要なデータの書き込み要求を受け付けた際に低遅延アクセスに割り当てた記憶デバイス14の空き容量が不足している場合、汎用アクセスに割り当てられていた記憶デバイス14を低遅延アクセス用途に切り替えてもよい。逆に、性能に関する要求のないデータの書き込み要求を受付けた際に汎用アクセスに割り当てた記憶デバイス14の空き容量が不足している場合、低遅延アクセスに割り当てられていた記憶デバイス14を汎用アクセス用途に切り替えてもよい。このような場合、他のアクセス要求と競合しないタイミングで、ガベージコレクション等の処理を実行してデータの再配置を行うこととする。また、特定の記憶デバイス14へのアクセス集中を回避するために、複数の記憶デバイス14の間でデータを入れ替えるなどして割り当てを変更してもよい。
【0050】
以上の説明では、要求性能情報はデータ読み出し時に要求される性能を指定するものとしたが、要求性能情報は書き込み時に要求される性能を指定する情報を含んでもよい。具体例として、要求性能情報は、書き込み時に要求される帯域(単位時間あたりのデータ書き込み量)を指定する情報を含んでもよい。広帯域での書き込みを要求する要求性能情報を伴うデータ書き込み要求が受け付けられた場合、アクセス制御部22は、広帯域の読み出しが要求されるデータを書き込む場合と同様に、要求された帯域と各記憶デバイス14のデータ書き込み速度を考慮して、書き込み対象の記憶デバイス14を特定する。そして、特定された記憶デバイス14に対して並列に書き込みを行う。これにより、要求された帯域を保証したデータの書き込みを実現できる。
【0051】
別の割り当て制御方法として、デバイス割り当て制御部23は、複数の記憶デバイス14に対する役割の割り当てを、複数の動作モードのそれぞれに従って切り替えてもよい。以下では具体例として、デバイス割り当て制御部23は、演算部11が実行中のアプリケーションプログラムの種類などに応じて、高速読み出しモード、高速書き込みモード、及び並列モードの3つの動作モードを切り替えることとする。この場合の制御内容について、
図5を参照して説明する。ここでは具体例として、情報処理装置1は記憶デバイス14-1~14-5の5個の記憶デバイス14を備えるものとする。
【0052】
具体的に、演算部11がゲーム等の所定のアプリケーションプログラムP1を実行している間、デバイス割り当て制御部23は、高速読み出し(低遅延・広帯域での読み出し)に適した割り当てを行う(高速読み出しモード)。このモードでは、複数の記憶デバイス14のうち、記憶デバイス14-1が汎用アクセスに割り当てられ、その他の4個の記憶デバイス14-2~14-5が高速読み出しに割り当てられている。そして、アプリケーションプログラムP1で利用されるデータは、予め高速読み出しに割り当てられた記憶デバイス14-2~14-5に分散して書き込まれているものとする。この例においてアクセス制御部22は、記憶デバイス14-2~14-5に書き込まれたデータの読み出し要求が受け付けられた場合、4個の記憶デバイス14-2~14-5から並列にデータの読み出しを行う。これにより、広帯域でのデータの読み出しを実現できる。
【0053】
さらに、この高速読み出しモードにおいては、アクセス制御部22は、アプリケーションプログラムP1からの読み出し要求以外のアクセス要求が受け付けられた場合に、記憶デバイス14-2~14-5へのアクセスを制限し、アクセスの競合が生じないように制御する。具体的には、前述した低遅延での読み出しを要求する要求性能情報が指定された場合と同様に、別の書き込み要求(例えばベストエフォートでの書き込みや読み込みを指定する要求性能情報を伴う書き込み要求)が受け付けられた場合にはその書き込み先を汎用アクセスに割り当てられた記憶デバイス14-1に設定する。なお、このような低遅延が要求されない書き込み要求の例としては、ゲームプログラムを実行中におけるゲームの途中経過を記録するセーブデータの書き込み要求などがある。また、データの削除要求に応じた削除処理や管理アクセスの実行などについては、処理の実行を遅延させる。これにより、特定のアプリケーションプログラムP1が利用するデータについては、低遅延での読み出しを保証できる。
【0054】
記憶デバイス14-2~14-5に対する読み出しアクセスが競合する場合、アクセス制御部22は以下のような制御を行うことでこれらの読み出しアクセスをいずれも低遅延で実行することができる。具体的に、この例では、低遅延での読み出しが要求されるデータは、いずれも高速読み出しに割り当てられた記憶デバイス14-2~14-5に分散して書き込まれているものとする。以下では、データA、及びデータBの2つのデータがいずれも記憶デバイス14-2~14-5に分散して書き込まれており、これらのデータに対する読み出し要求が順次受け付けられた場合を例として説明する。
【0055】
この場合、アクセス要求部21は、記憶デバイス14-2~14-5のそれぞれに格納されているデータAの読み出しを要求する。この要求に応じてアクセス制御部22は、記憶デバイス14-2~14-5に順次アクセスして、そのそれぞれからデータAを構成する一部のデータ(ここではデータフラグメントという)を読み出す。その後、データAの読み出し完了前に続いてアクセス要求部21がデータBの読み出しを要求したとする。アクセス制御部22は、データA読み出しに続行して、記憶デバイス14-3~14-5、14-2に順次アクセスして、このデータBを構成するデータフラグメントをそれぞれの記憶デバイス14から読み出す。
【0056】
ここでアクセス制御部22は、データA、及びデータBのいずれもシーケンシャルに、すなわち一度に一つの記憶デバイス14から読み出しが行われることとしているが、データAを構成するデータフラグメントの読み出しとデータBを構成するデータフラグメントの読み出しは、互いに別の記憶デバイス14を対象として並列に実行する。例えば記憶デバイス14-2に格納されているデータAのデータフラグメントを読み出している間、並行して記憶デバイス14-3に格納されているデータBのデータフラグメントを読み出す。このような制御によれば、データAとデータBは全体として同じ記憶デバイス14-2~14-5に格納されているにもかかわらず、それぞれの読み出しを互いに競合しないように並列に実行することができる。なお、ここでは各データをシーケンシャルに読み出すこととしたが、他のアクセス要求と競合しないタイミングでは複数の記憶デバイス14に分散して格納されたデータフラグメントを並列に読み出してもよい。
【0057】
なお、ここではそれぞれ分散して記憶された複数のデータを高速読み出しモードにおいて並列に読み出す例について説明した。しかしながらこれに限らず、前述したように動作モードによらずにアクセス要求部21から指定される性能要求情報に応じてアクセスの競合を回避する制御が必要になる場合においても、読み出し対象となる各データが予め分散して複数の記憶デバイス14に格納されている場合には、ここで説明した制御を行うこととしてもよい。これにより、同じ記憶デバイス14に対するアクセス競合を回避しながら複数のデータを並列に読み出すことが可能になる。
【0058】
高速書き込みモードでは、高速読み出しモードにおいて高速読み出しに割り当てることとした記憶デバイス14-2~14-5を高速書き込みアクセスに割り当てる。このモードは、演算部11が通信部15を介して外部のネットワークからプログラムやコンテンツなどの比較的大きなサイズのデータをダウンロードする場合など、書き込みアクセスがメインとなる状態において利用される。このモードにおいてアクセス制御部22は、高速での書き込みを要求されたデータを、記憶デバイス14-2~14-5に分散して書き込むこととする。これにより、広帯域でのデータ書き込みが実現できる。
【0059】
このモードにおいてアクセス制御部22は、高速書き込みの対象とされないデータの書き込み要求(例えばベストエフォートでの書き込みや読み込みを指定する要求性能情報を伴う書き込み要求)があった場合、汎用アクセスを割り当てられた記憶デバイス14-1にそのデータを書き込むこととする。これにより、アクセス競合を生じさせずに、高速書き込みが要求されたデータを広帯域で記憶デバイス14-2~14-5に書き込むことができる。なお、アクセス要求部21は、ダウンロードプログラムなど所定のプログラムが要求元となるデータについて、高速書き込みの対象となる旨の要求性能情報とともに書き込み要求を行うこととする。
【0060】
並列モードは、高速読み出しと高速書き込みを両立させるモードである。このモードは、例えばゲーム等を実行しながらその映像を記録する場合など、読み出しと書き込みを同時に実行するアプリケーションプログラムP2が実行される場合に利用される。この並列モードにおいては、他のモードと同様に記憶デバイス14-1に汎用アクセスが割り当てられる一方で、記憶デバイス14-2,14-3に高速読み出しが割り当てられ、記憶デバイス14-4,14-5に高速書き込みが割り当てられる。これにより、高速読み出しが必要なデータについて2個の記憶デバイス14-2,14-3から並列に読み出しが行われ、高速書き込みが必要なデータについて2個の記憶デバイス14-4,14-5に並列に書き込みが行われる。これにより、高速読み出しと高速書き込みを同時期に並列して実行できる。この例における高速書き込みの対象となるデータは、例えばリアルタイムでかつフレーム落ちがないように記録すべきゲームの録画データなどである。なお、他のモードと同様に、高速読み出しや高速書き込みが要求されないデータのアクセス要求(例えばベストエフォートでの書き込みや読み込みを指定する要求性能情報を伴う書き込み要求)については、汎用アクセスが割り当てられた記憶デバイス14-1に対して実行される。具体例として、リアルタイム性が要求されない単なる映像記録データについては、汎用アクセスとして記憶デバイス14-1に対して書き込みを行ってよい。このような制御によれば、汎用アクセス、高速読み出し及び高速書き込みの間のアクセス競合を回避できる。
【0061】
このような制御を実現するために、並列モードにおいて高速読み出しの対象となるデータ(すなわち、並列モードの利用を想定したアプリケーションプログラムP2が読み出し対象とするデータ)は、予め並列モードにおいて高速読み出しが割り当てられる記憶デバイス14-2,14-3に格納しておくこととする。なお、ここでは高速読み出しと高速書き込みに同数の記憶デバイス14が割り当てられることとしたが、各用途に割り当てられる記憶デバイス14の数は、要求される読み出しや書き込みの帯域と、各記憶デバイス14のデータ転送速度とに応じて決定されてよい。
【0062】
以上説明したように、
図5の例では動作モードに応じて各記憶デバイス14に割り当てられる用途を切り替えることで、それぞれの状況において要求される読み出しや書き込みの性能を確保できる。ただし、複数の記憶デバイス14のうち一部の記憶デバイス14(ここでは記憶デバイス14-1)は、どの動作モードにおいても汎用アクセスの用途を割り当てている。これにより、性能に関する要求がないデータについては、どのタイミングで書き込み要求を受け付けたとしても、常に汎用アクセスを割り当てられた記憶デバイス14に書き込むよう制御することができる。こうすれば、どの動作モードにおいても、高速読み出しや高速書き込みを要求されるデータへのアクセスが、性能に関する要求がないデータへのアクセスによって妨げられないようにすることができる。
【0063】
さらにこの例では、高速読み出しや高速書き込みの用途が割り当てられる記憶デバイス14-2~14-5に対するデータ削除のためのアクセスやガベージコレクション等の管理アクセスは、高速読み出しや高速書き込みの実行中には制限されてよい。アクセス制御部22は、例えば夜間などの特定の時間帯や、演算部11が特定のアプリケーションプログラムを実行していない状態のときなど、高速読み出しや高速書き込みのアクセス要求が発生しないと想定されるタイミングで、このような性能に関する要求のないアクセスを実行してもよい。
【0064】
これまで説明したような制御を実現するために、アクセス制御部22は、必要に応じて複数の記憶デバイス14間でデータを移動させる管理アクセスを実行してもよい。例えば高速書き込みが要求されたデータは、SLC形式の記憶デバイス14など、指定された要求を満たすことが可能な記憶デバイス14に対して書き込みを行う必要がある。しかしながら、このようなデータに対して指定される読み出しの要求性能によっては、読み出し時には別の記憶デバイス14(例えばMLC形式の記憶デバイス14)から読み出しを行っても要求された性能を確保できる場合がある。このような場合、将来の高速書き込みの要求やより高水準の高速読み出しの要求に備えて高性能な記憶デバイス14の空き容量を確保することが望ましい。そこでアクセス制御部22は、一旦要求された性能で書き込みを終えたデータを、別の記憶デバイス14に移動させる管理アクセスを行ってもよい。このような管理アクセスにより、将来的に発生し得る様々なアクセス性能の要求に対して柔軟に対応することが可能になる。
【0065】
また、アクセス制御部22は、複数の記憶デバイス14のうち、一部の記憶デバイス14が非稼働になるタイミングがある場合、そのタイミングで非稼働になる記憶デバイス14に対してデータの削除処理や各種の管理アクセスを実行することとしてもよい。サーバコンピュータ等においては、ドメインやドライブ単位で記憶デバイス14を非稼働にする制御を実行する場合がある。このようなタイミングで遅延させていたデータの削除処理や管理アクセス等を実行することとすれば、アクセスの競合をより生じにくくさせることができる。
【0066】
また、アクセス制御部22は、高速書き込み等を要求する書き込み要求を受け付けた場合、キャッシュとして利用可能な揮発性メモリに一時的にデータの書き込みを行ってもよい。この場合アクセス制御部22は、後にアクセス競合が生じないと想定される時間帯に揮発性メモリに書き込まれたデータを記憶デバイス14に移動させる管理アクセスを行う。また、アクセス制御部22は、読み出し要求を受け付けた場合に、要求されたデータをアクセス要求部21に対して転送するとともにキャッシュとして利用する揮発性メモリに同じデータを一時的に書き込んでもよい。この場合アクセス制御部22は、その後に同じデータに対する読み出し要求を受付けた場合、揮発性メモリに書き込まれたデータを読み出すこととする。この場合、キャッシュとして利用する揮発性メモリの空き容量が不足した場合や揮発性メモリに書き込まれたデータへのアクセスが一定時間なかった場合などにおいて、書き込まれたデータを削除することとする。
【0067】
以上説明したように、アクセス制御部22は、低遅延でのデータ読み出しを実行している間、アクセス競合を回避するために、当該読み出しの対象となっている記憶デバイス14への書き込みを制限することとする。そこで、このように低遅延でのデータ読み出しを実行中には、当該読み出しの対象となっている記憶デバイス14の空き容量を、書き込み可能な容量のカウントから除外することとしてもよい。このような制御によれば、低遅延でのデータ読み出し実行中は、そのタイミングで書き込みが制限される空き容量の分だけアクセス要求部21側からは複数の記憶デバイス14全体の書き込み可能な空き容量が減少したように認識される。
【0068】
なお、前述したキャッシュとして利用可能な記憶領域や、冗長性のあるデータを書き込むための別の記憶デバイスなどを確保することで、低遅延でのデータ読み出し中にも書き込みアクセスを受け付け可能な記憶容量が存在する場合、その記憶容量は書き込み可能な空き容量としてカウントすることとしてもよい。このような空き容量の提示は、ファイルシステムを介在して実現されてもよい。
【0069】
ここまでの説明では、アクセス要求部21は性能要求情報を通知することによってアクセスに要求される性能を指定するものとした。しかしながら、これに限らず、アクセス先を特定するアドレス空間内の範囲(アドレス範囲)に要求される性能を予め対応づけることによって、アクセス要求部21はアクセス要求に都度性能要求情報を付加せずとも、アドレス範囲を指定することによってアクセスに要求される性能を指定することとしてもよい。この場合、アクセス制御部22は、予め複数の記憶デバイス14内のアクセス先を指定するためのアドレス空間内に、複数のアドレス範囲を設定する。そして、アクセス制御部22はこの複数のアドレス範囲のそれぞれに予め実現すべき要求性能を対応づけて記憶しておく。さらにアクセス制御部22は、設定されたアドレス範囲と要求性能の対応関係を予めアクセス要求部21に対して通知する。
【0070】
アクセス要求部21は、アクセス要求を発行する際に、複数のアドレス範囲のうち、当該アクセスの対象データに対する要求性能に応じて選択されるアドレス範囲をアクセス先として指定して、アクセス要求を発行する。アクセス要求を受け付けたアクセス制御部22は、アクセス要求で指定されたアドレス範囲に対応づけられた要求性能を満たすように、これまで説明したような各種の手法を用いて当該アクセス要求に応じたアクセスを実行する。これにより、アクセス要求部21が都度性能要求情報を通知せずとも、要求される性能を満たすアクセス制御が可能になる。
【0071】
図6は、アドレス空間に対する性能割り当ての一例を示す図である。この図の例では、セグメント方式によって同じ記憶デバイス14が多重にアドレス空間に割り当てられている。具体的にこの図では、上位アドレスビット(セグメントアドレス)によって3種類の要求性能(すなわち、要求性能A、B、C)のいずれかが指定される。そして、下位アドレスビット(オフセットアドレス)によってどの記憶デバイス14を使うか、また記憶デバイス14内のアクセス位置が指定される。アクセス要求部21は、上位アドレスビットと下位アドレスビットの組み合わせによって、要求性能を指定するとともに、アクセス対象の記憶デバイス14及びアクセス位置を指定することができる。
【0072】
図7は、アドレス空間に対する性能割り当ての別の例を示している。この図の例では、ページ方式によって同じ記憶デバイス14が多重にアドレス空間に割り当てられている。この図においても、上位アドレスビット(ページアドレス)によって3種類の要求性能(すなわち、要求性能A、B、C)のいずれかが指定される。そして、下位アドレスビット(オフセットアドレス)によってどの記憶デバイス14を使うか、また記憶デバイス14内のアクセス位置が指定される。
【0073】
以上説明した本実施形態に係る情報処理装置1によれば、アクセス対象となるデータに対して要求される遅延や帯域などの性能に応じて、書き込み、及び読み出しの制御内容を変化させることで、読み出しや書き込みの際に必要な性能を保証することができるようになる。
【0074】
本発明の実施の形態は、以上説明したものに限られない。例えば以上の説明では、アクセス制御部22は、演算部11がメインメモリ12に格納されたプログラムを実行することによって実現されるアクセス要求部21から記憶デバイス14に対するアクセス要求を受け付けることとした。しかしながらこれに限らず、リモートDMA(Direct Memory Access)のアーキテクチャーなどに基づいてその他のデータ転送主体から発行されるアクセス要求を受け付けて、その要求に応じたアクセスを実行してもよい。この場合にも、アクセス要求部21から受け付けるアクセス要求と同様に、アクセス制御部22は要求性能情報を含んだアクセス要求を別のデータ転送主体から受け付けて、その要求に応じた制御内容でアクセス制御を実行する。
【0075】
また、以上の説明においてデバイス制御回路13が実行することとした処理の少なくとも一部は、演算部11がオペレーティングシステム等のプログラムを実行することによってソフトウェア的に実現されることとしてもよい。具体的に、例えば各記憶デバイス14への役割の割り当ては、現在実行中のアプリケーションプログラムの種類に応じて演算部11自身が決定することとし、その決定内容をデバイス制御回路13に通知することとしてもよい。この場合、デバイス制御回路13は、通知された決定内容に応じて、書き込み要求を受け付けた際に要求されたデータを書き込む対象となる記憶デバイス14を決定する。
【0076】
また、以上の説明では複数の記憶デバイス14は、物理的に互いに独立したNAND型フラッシュメモリであることとしたが、これに限らず記憶デバイス14は、MRAM、FeRAM、FRAM(登録商標)、PCM、Xpoint、ReRAM、RRAM(登録商標)等の各種の不揮発性メモリや、ソリッドステートドライブ(SSD)等の各種のデバイスを含んでもよい。また、本実施形態に係る情報処理装置1は、複数の記憶デバイス14の少なくとも一部として揮発性メモリを併用してもよい。この場合、揮発性メモリを広帯域・低遅延の性能要求に対応する記憶デバイス14として利用できる。また、記憶デバイス14は、一つのデバイスに内蔵される複数のプリント基板や、半導体パッケージであってもよい。また、一つのプリント基板に搭載された複数の半導体パッケージであってもよい。あるいは、複数の記憶デバイス14は、一つの半導体パッケージに封入される複数のシリコンダイであってもよい。また、一つのシリコンダイ内において三次元積層で集積され、それぞれ記憶素子群が分割して割り当てられた複数のレイヤーやバンク、プレーンなどであってもよい。また、一つのシリコンダイ内において二次元単層で集積され、それぞれ記憶素子群が分割して割り当てられた複数のバンクやプレーンなどであってもよい。さらに本実施形態に係る情報処理装置1は、以上例示したような互いに異なる粒度の素子やデバイスが混在して構成される複数の記憶デバイス14を対象として、以上説明したような制御を実行してもよい。複数の記憶デバイス14は、遅延などの性能やアクセス経路が互いに異なってよい。特に、複数の記憶デバイス14は、それぞれの記憶デバイス14に対して個別に用意されたアクセス経路を備え、これにより他の記憶デバイス14との間でアクセス処理の競合が避けられる構成となっていてもよい。いずれの場合も、本実施形態に係る情報処理装置1は、互いに異なる種類のアクセスを並列に実行可能な複数の記憶領域を複数の記憶デバイス14として、以上説明したように各記憶デバイス14へのアクセスを制御することとする。
【0077】
また、本発明の実施の形態は各種の態様で実現可能である。
図8は本発明の一実施形態であるゲームコンソール(家庭用ゲーム機等)のハードウェア構成例を示している。このゲームコンソールは、演算部11として機能するメインSOC、デバイス制御回路13として機能するNANDフラッシュコントローラ、及び記憶デバイス14として機能する複数のNAND型フラッシュメモリ(図中ではNANDフラッシュと略記されている)を内蔵している。メインSOCは、DMAエンジンやCryptエンジンを内蔵してもよい。DMAエンジンは、メインメモリとNANDフラッシュコントローラとの間でオペレーティングシステムの管理を介さずに直接データ転送を行うリモートDMAに対応する。リモートDMAによれば、オペレーティングシステムを実行するCPUがアクセス要求を発行する場合と比較して、NAND型フラッシュメモリに対するアクセスの際に生じる遅延を低減させることができる。Cryptエンジンは、NAND型フラッシュメモリに書き込むデータの暗号化と読み出したデータの復号化を実行してもよい。また、NANDフラッシュコントローラ内の誤り検出訂正回路は、NAND型フラッシュメモリ内のメモリセルデータ化けの検出と訂正を行う。この誤り検出と訂正のためのアクセスも前述した管理アクセスに含まれる。
【0078】
このゲームコンソールは、ユーザーがゲームを実行していない時間帯(非稼働時間)に、前述したガベージコレクションなどの記憶デバイス14に対する管理アクセスを実行したり、新しいゲームアプリケーションのデータダウンロードやインストールを行ったりしてもよい。このような処理のスケジューリングを、NANDフラッシュコントロ-ラによって実現されるアクセス制御部22、及びデバイス割り当て制御部23と、演算部11が実行するオペレーティングシステムとが連携して実施することで、データアクセスの性能要求を満たすために必要な記憶デバイス14の並列度を抑制することができる。
【0079】
また、以上の説明では、アクセス要求を発行する演算部11と当該アクセス要求を受け付けて複数の記憶デバイス14に対するアクセス制御を行うデバイス制御回路13とは同一筐体内に存在することとしたが、両者は互いに独立した情報処理装置であってもよい。
図9は、このような実施形態の一例を示している。この図においては、データセンターラックに搭載された複数のコンピューティングサーバと複数のストレージサーバを含むサーバシステムの構成が示されている。これらのサーバ群は、互いにスイッチを介して接続されている。なお、ここでは各サーバはイーサネット(登録商標)で接続されることとしているが、これに限らずファイバーチャネルやInfiniBand、PCIe等各種のインタフェースで接続されてよい。また、各サーバ間の接続経路の物理層についても、CEI規格や光ファイバー等、各種のものであってよい。
【0080】
ストレージサーバは、複数のコンピューティングサーバから共有されており、複数のコンピューティングサーバのそれぞれから受け付けた多数のアクセス要求を同時に処理する。ストレージサーバは1以上のブリッジコントローラを含み、各ブリッジコントローラには複数のSSDドライブが接続される。各SSDドライブは、SSDコントローラと、SSDコントローラに接続された複数のNAND型フラッシュメモリを含んで構成されている。このNAND型フラッシュメモリが本実施形態における記憶デバイス14として機能する。このような構成により、ストレージサーバに接続される記憶デバイス14の並列度を極めて大きくすることができる(例えば数百~数千)。これにより、複数のコンピューティングサーバから低遅延・広帯域が必要なアクセス要求が同時に発生しても、ストレージサーバによって実現されるアクセス制御部22及びデバイス割り当て制御部23が、その要求に応じたアクセスを適切に処理することができる。
【0081】
このサーバシステムは、例えばクライアントマシンのユーザーに対するクラウドゲーミングサービスの提供に利用されてよい。具体例として、各コンピューティングサーバは、それぞれ異なるゲームアプリケーションを実行し、描画した画像をエンコードしてネットワークを介してクライアントマシンに送信する。これらのゲームアプリケーションのデータは巨大であり、例えば1ゲームあたり100GBを超えることがある。ストレージサーバは多数のゲームアプリケーションのデータを保持しておき、各コンピューティングサーバはクライアントマシンのユーザーからの要求に応じて対応するゲームアプリケーションのデータをロードして実行する。ゲームアプリケーションのデータは、そのデータのアクセスに要求される性能に関する要求性能情報を保持していてもよい。たとえば、必要帯域10GB/s、許容遅延0.2μsで読み出すことが要求されるゲームアプリケーションのデータに対して、その要求性能を示す要求性能情報が付加される。コンピューティングサーバは、ストレージサーバの記憶デバイスに各ゲームアプリケーションのデータをダウンロードやインストールする(すなわち書き込む)ときに、この要求性能情報を参照してもよい。
【0082】
この例において、ストレージサーバが備える記憶デバイスの量には、冗長性を持たせてもよい。これにより、コンピューティングサーバやストレージサーバが稼働中であっても、ガベージコレクションなどの管理アクセスを実行したり、新しいゲームアプリケーションのデータをダウンロードしてインストールしたり、定期的なメンテナンスのため一部の記憶デバイスを非稼働にしたり、といったアクセスを、冗長性を持つ記憶デバイスを割り当てることで実現できる。
【0083】
コンピューティングサーバ及びストレージサーバは、それぞれDMAエンジンやCryptエンジンを内蔵していてもよい。DMAエンジンは、コンピューティングサーバとストレージサーバとの間でオペレーティングシステムの管理を介さずにデータ転送をおこなうリモートDMAに対応することで、CPUが介在してアクセス要求を処理する場合に比べて、記憶デバイス14へのアクセス遅延を低減させる。Cryptエンジンは記憶デバイス14に書き込むデータの暗号化と復号化をおこなってもよい。
【0084】
図10から
図12は、ここで説明したゲームコンソールやサーバシステムのソフトウェア階層構成を示す図であって、
図10は両者の対応関係を示しており、
図11はゲームコンソールのソフトウェア構成例を、
図12はサーバシステムのソフトウェア構成例を、それぞれ示している。
図10に示されるように、ゲームコンソールではメインSOCが実行するオペレーティングシステム(ゲームOS)が、サーバシステムにおいてはコンピューティングサーバが実行するサーバOSが、それぞれアクセス要求の発行元(すなわち、これまでの説明におけるアクセス要求部21)として機能する。アクセス要求はリアルタイムOSを実行するローカルNVMeサブシステムによって処理される。このローカルNVMeサブシステムは、ゲームコンソールの場合NANDフラッシュコントローラに対応し、サーバシステムの場合は各SSDコントローラに対応する。
【0085】
これらの図に示されるように、ゲームOSやコンピューティングサーバOSが、ファイルシステムを介してNVMe(NVM Express)インタフェースで記憶デバイス14へのアクセス要求を行う。ここでNVMe抽象化レイヤーは、上位のNVMe規格で動作する処理レイヤーに対して、下位の物理インタフェースを抽象化するいわゆるHAL(Hardware Abstract Layer)の機能を持つレイヤーである。この抽象化レイヤーの下位に、各種のネットワークインタフェースに応じたデバイスドライバが接続される。DMAドライバは、ユーザーレベルDMAを実現する。具体的には、図示しないオペレーティングシステムのメインメモリ管理レイヤーとDMAドライバが連携して動作することによって、ユーザーレベルDMAが実現される。
【0086】
これらの図において、これまで説明したアクセス制御部22及びデバイス割り当て制御部23の機能は、リアルタイムOS側の制御ポリシーローカルレイヤーによって実現される。ゲームOS側の制御ポリシー統括レイヤーは、この機能と連携するためのアクセス要求側の機能を実現する。ただし、ここで制御ポリシーローカルレイヤーが実行することとした機能の少なくとも一部は、制御ポリシー統括レイヤーによって実行されてもよい。この制御ポリシー統括レイヤーは、ゲームOSのファイルシステムと一体で動作してよい。なお、
図12には図示されていないが、コンピューティングサーバOSとリアルタイムOSとの間の接続を中継するストレージサーバOSも、制御ポリシーローカルレイヤーの機能を備えることとしてもよい。
【0087】
SSDサイドNVMeローレベル処理レイヤーは、管理アクセス、アドレス変換、メモリセルデータ化けの検出と訂正などを実施する。オーバープロビジョニング領域の管理も、アクセス制御部22とデバイス割り当て制御部23と連携して行う。
【0088】
なお、コンピューティングサーバOSは、NVMe抽象化レイヤーに代えて、NVMe-oF(NVMe over Fabrics)規格に準拠した抽象化レイヤーを実装してもよい。その場合、コンピューティングサーバOSは、NVMe-oF準拠でアクセス要求を発行し、ストレージサーバOSがこのアクセス要求を仲介・ディスパッチして、SSDコントローラに送信する。SSDコントローラのリアルタイムOS/ファームウェアは、このアクセス要求を受けて、NAND型フラッシュメモリに対するローレベル制御を実行する。このとき上位の処理レイヤーは、抽象化レイヤーを介在させることによって、下位の論理デバイスインタフェースが何なのかやストレージがローカル/リモートのいずれで接続されているかなどを考慮せずにアクセス要求を発行することができる。
【符号の説明】
【0089】
1 情報処理装置、11 演算部、12 メインメモリ、13 デバイス制御回路、14 記憶デバイス、21 アクセス要求部、22 アクセス制御部、23 デバイス割り当て制御部、24 情報記憶部。