(第1の実施形態)
本発明の第1の実施形態について図を参照して詳細に説明する。図1は、本実施形態のデータ転送装置の構成の概要を示したものである。
本実施形態のデータ転送装置は、アクセス要求制御手段1と、第1のアドレス特定手段2と、第2のアドレス特定手段3と、コマンド発行手段4を備えている。アクセス要求制御手段1は、第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、アクセス要求とを受け取る。アクセス要求は、第2の記憶媒体に第1の記憶媒体との間のデータ転送を要求するものである。第1のアドレス特定手段2は、第2の記憶媒体がデータ転送を行う際に第1の記憶媒体に直接、アクセスする際のアクセス先を、第1のアドレスに基づいて第3のアドレスとして特定する。第2のアドレス特定手段3は、仮想的な記憶媒体上の第2のアドレスの位置に対応する第2の記憶媒体上の位置を第4のアドレスとして特定する。コマンド発行手段4は、第3のアドレスと、第4のアドレスと、第1の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第2の記憶媒体に通知する。また、アクセス要求制御手段1は、第2の記憶媒体がアクセスコマンドに応じて第1の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
本実施形態のデータ転送装置は、第1のアドレス特定手段2で、ホスト装置から受け取る第1のアドレスを基に、第3のアドレスを特定している。また、第2のアドレス特定手段3で、仮想的な記憶媒体上の第2のアドレスの位置に相当する第2の記憶媒体上の位置を示す第4のアドレスを特定している。本実施形態のデータ転送装置が第3のアドレスと第4のアドレスを通知することで、第2の記憶媒体は、第1の記憶媒体との間で直接、データ転送を行うことができる。そのため、ホスト装置が第2の記憶媒体に仮想的な記憶媒体を介してアクセスを行う場合にも、第1の記憶媒体と、第2の記憶媒体の間で直接、データ転送を行うことができるようになるので、データ転送に要する時間を抑制することができる。その結果、本実施形態のデータ転送装置を用いることで、仮想的な記憶媒体を介して記憶媒体にアクセスする際に、性能低下を抑制することができる。
(第2の実施形態)
本発明の第2の実施形態について図を参照して詳細に説明する。図2は、本実施形態の情報処理システムの構成の概要を示したものである。本実施形態の情報処理システムは、ホスト装置10と、記憶媒体20を備えている。また、ホスト装置10は、アプリケーション部11と、データ転送制御部12と、メモリ13と、仮想記憶媒体部14を備えている。
本実施形態の情報処理システムは、記憶媒体20の物理的な記憶領域上に仮想的な記憶領域を仮想記憶媒体として形成している。本実施形態の情報処理システムのホスト装置10は、仮想記憶媒体を介して記憶媒体20へのデータの書き込みおよび記憶媒体20からのデータの読み出しを行う。また、本実施形態の情報処理システムは、ホスト装置10のメモリ13と、記憶媒体20の間でデータ転送を行う際に、バッファリング等を行わずにメモリ13と、記憶媒体20の間で直接、データ転送を行うことを特徴とする。
ホスト装置10の各部位の構成について説明する。
アプリケーション部11は、アプリケーションプログラムを実行し、各処理を行う機能を有する。アプリケーション部11は、各処理を行う際に記憶媒体20へのデータの格納および記憶媒体20に保持されているデータの参照が必要なとき、データ転送制御部12に対して、データの格納および参照を行うためのアクセスを要求する。アプリケーション部11は、記憶媒体20にアクセスする際に、記憶媒体20の記憶領域に対応する仮想的な記憶領域として形成されている仮想記憶媒体部14をアクセス先としてデータ転送制御部12にアクセスを要求する。すなわち、アプリケーション部11は、仮想記憶媒体部14として形成されている仮想記憶媒体上の記憶領域をアクセス先として指定することで、仮想記憶媒体を介して記憶媒体20にアクセスする。
本実施形態のアプリケーション部11は、CPU(Central Processing Unit)によって形成されている。アプリケーション部11には、CPUに代えて、例えば、FPGA(Field Programmable Gate Array)など、情報処理システムの用途に応じた処理機能を有する半導体装置が用いられてもよい。
データ転送制御部12の構成について説明する。図3は、データ転送制御部12の構成を示したブロック図である。データ転送制御部12は、アプリケーション部11が仮想記憶媒体上をアクセス先として指定して記憶媒体20へのアクセスを行う際に、実際にアクセスを行う記憶媒体20上の領域を判断し、アクセスの制御を行うデータ転送装置としての機能を有する。
データ転送制御部12は、アクセス要求実行制御部201と、メモリアドレス変換部202と、メモリ領域管理テーブル203と、アクセス要求管理テーブル204と、記憶媒体アドレス変換部205を備えている。また、データ転送制御部12は、アクセス先選択部206と、コマンド登録部207と、コマンド管理テーブル208と、コマンド発行部209と、メモリ転送範囲計算部210をさらに備えている。
アクセス要求実行制御部201は、物理媒体である記憶媒体20上に構築された仮想記憶媒体に対するアクセス要求の情報をアプリケーション部11から受け取る。アクセス要求実行制御部201は、メモリ領域管理テーブル203およびアクセス要求管理テーブル204に受け取ったアクセス要求の情報を登録する。また、アクセス要求実行制御部201は、各アクセス要求に対応する、記憶媒体20のアクセスコマンドの実行が完了すると、アクセス要求の完了を示す情報をアクセス要求元であるアプリケーション部11に通知する。また、本実施形態のアクセス要求実行制御部201が、アプリケーション部11からアクセス要求を受け取る機能は、第1の実施形態のアクセス要求制御手段1に相当する。
図4は、アプリケーション部11からアクセス要求実行制御部201が受け取るアクセス要求の例を示す図である。図4に示すアクセス要求は、アクセス種別31と、先頭LBA(Logical Block Address)32と、アクセスサイズ33と、メモリアドレス34によって構成されている。
アクセス種別31は、アクセス要求がReadであるか、Witeであるかを示している。先頭LBA32およびアクセスサイズ33は、仮想記憶媒体部14の仮想記憶領域上のアクセス先の領域を示している。メモリアドレス34は、メモリ13において、アプリケーション部11がアクセス可能なデータの格納先の先頭論理アドレスを示している。メモリアドレス34は、アクセス種別31がReadであればアクセス結果の格納先を示し、Writeであれば仮想記憶領域上のアクセス先の領域に書き込むデータの格納先を示している。
アプリケーション部11からのアクセス要求の形式は、図4に示した形式に限定されず、例えば、アクセスサイズ33の代わりにアクセス先領域の末尾のLBAが指定されていてもよい。また、仮想記憶領域上のアクセス先の領域の情報の形式は、仮想記憶媒体部14がアプリケーション部11に対して提供するアクセス単位によって変化する。例えば、アクセス先の領域の情報は、仮想記憶媒体部14がファイル単位のアクセスを受け付ける場合、アクセス先の領域を表す識別子として、ファイルパスとファイル内のオフセットのブロックアドレスが指定された情報として設定される。
メモリアドレス変換部202は、アプリケーション部11のアクセス要求において指定されたメモリアドレス34を、論理アドレスから物理アドレスに変換する。論理アドレスから物理アドレスへの変換は、例えば、ホスト装置10においてアプリケーションの実行時にCPUが使用する論理アドレスと、物理アドレスの対応関係を管理するページテーブルを用いて行われる。
メモリアドレス変換部202は、メモリアドレス34とアクセスサイズ33で指定されるメモリ13の領域が断片化している場合に、各断片の先頭物理アドレスとサイズを求める。このとき、メモリアドレス34とアクセスサイズ33で指定される論理アドレス空間上の領域と各断片の対応関係を管理する必要がある。対応関係の管理は、例えば、NVM Express(登録商標) 1.2.1 Specification(非特許文献1)に示されているSGL(Scatter Gather List)を用いて行われる。SGLは、論理アドレス空間に対する各断片の整列順序と、断片毎の物理アドレスおよびサイズの情報によって構成されている。
メモリアドレス変換部202の処理は、アクセス要求実行制御部201がアクセス要求を受け取ったときではなく、アプリケーション部11が記憶媒体20にアクセス要求を行う前に実行されてもよい。このとき、図4に示されるアクセス要求のメモリアドレス34は、メモリ13におけるデータの格納先の先頭物理アドレスを表す。また、メモリアドレス34の代わりに、SGLのようなメモリ13の領域の断片化に対応可能な任意のデータ形式の情報がアクセス要求に含まれていてもよい。また、本実施形態のメモリアドレス変換部202の機能は、第1の実施形態の第1のアドレス特定手段2に相当する。第1の実施形態における第1のアドレスは、本実施形態のメモリアドレス変換部202がアクセス要求としてアプリケーション部11から受け取るメモリアドレス34に相当する。また、第1の実施形態における第3のアドレスは、本実施形態のメモリアドレス変換部202が論理アドレスから変換したメモリ13の物理アドレスに相当する。
メモリ領域管理テーブル203は、アクセス要求実行制御部201が受け取った各アクセス要求に含まれるメモリアドレス34とアクセスサイズ33で指定されるメモリ13上の領域を、メモリアドレス変換部202が物理アドレスに変換した結果を格納して管理する。
図5は、メモリ領域管理テーブル203に含まれる情報の例を示した図である。メモリ領域管理テーブル203は、アクセス要求実行制御部201が受け取ったアクセス要求ごとにエントリを有している。メモリ領域管理テーブル203は、対応するアクセス要求を表すアクセス要求ID2031と、メモリアドレス変換部202による論理アドレスから物理アドレスへの変換結果を表すSGリスト2032によって構成されている。SGリスト2032は、メモリアドレス34とアクセスサイズ33で指定される領域に対応する順番で、メモリ13における各断片の先頭を表す断片物理アドレス2033と断片サイズ2034の情報を格納している。メモリ領域管理テーブル203に含まれるデータの形式は、図5に示した形式に限定されず、例えば、SGリスト2032は、SGLに基づいたデータ形式であってもよい。
アクセス要求管理テーブル204は、アプリケーション部11から受け取った仮想記憶媒体に対するアクセス要求と、アクセス要求に対応する記憶媒体20のアクセスコマンドおよびアクセスコマンドの完了状況の情報を管理する。
図6は、アクセス要求管理テーブル204に含まれる情報の例を示す図である。アクセス要求管理テーブル204の各エントリは、アクセス要求ID2041と、アクセス種別2042と、先頭LBA2043と、アクセスサイズ2044と、未完了コマンドID2045によって構成されている。
アクセス要求ID2041は、各アクセス要求の識別子を示している。アクセス種別2042、先頭LBA2043およびアクセスサイズ2044は、図4に示すアクセス要求に含まれるアクセス種別31、先頭LBA32およびアクセスサイズ33をそれぞれコピーした情報である。未完了コマンドID2045は、アクセス要求に対応する記憶媒体20の未完了のアクセスコマンドを示す識別子である。
アクセス要求管理テーブル204の各エントリに含まれるデータには、図6に示した形式に限定されず、例えば、アクセス要求先の領域を表すために、アクセスサイズ2044の代わりに、アクセス先領域の末尾のLBAが用いられていてもよい。また、未完了コマンドID2045の代わりに、アクセス要求に対応する記憶媒体20のアクセスコマンドの識別子と、各アクセスコマンドが完了か未完了かを表すフラグの情報が用いられていてもよい。また、メモリ領域管理テーブル203をアクセス要求管理テーブル204に内包し、アクセス要求管理テーブル204が各エントリに対応するメモリ領域管理テーブル203のSGリスト2032を直接、持つ形であってもよい。そのような構成とする場合、SGリスト2032が単一のメモリ領域の断片で構成されていれば、断片サイズ2034をアクセスサイズ2044で代用することで、断片サイズ2034を省略することができる。
記憶媒体アドレス変換部205は、アクセス要求で指定された仮想記憶媒体のアクセス先領域に対応する記憶媒体20上のLBAを計算する。記憶媒体アドレス変換部205は、仮想記憶媒体の記憶領域の空間に対する記憶媒体20のマッピングの管理情報を用いてLBAを計算する。仮想記憶媒体がファイルシステムである場合には、記憶媒体アドレス変換部205は、ファイルシステムの管理情報に含まれるアクセス対象ファイルの各部分のマッピング先を表す記憶媒体20のLBAの情報を使用する。
図7は、仮想記憶媒体上のアクセス先領域と、記憶媒体20上におけるアクセス先領域のマッピング先の領域との対応関係の例を示す図である。図7の例では、アプリケーション部11が要求する仮想記憶媒体上のアクセス範囲である仮想アクセス領域61に対して、記憶媒体20上のマッピング領域62a、62b、62cが先頭から順にそれぞれ対応している。
記憶媒体アドレス変換部205は、記憶媒体20のマッピングの管理情報を参照して、各マッピング領域62の格納先となる記憶媒体20の記憶媒体ID63と、先頭LBA64と、領域サイズ65を判断する。また、記憶媒体アドレス変換部205は、各マッピング領域において、仮想記憶媒体のアクセス先領域が対応する先頭からの位置を、オフセット66として計算する。図7の例ではマッピング領域62a、62b、62cの領域サイズ65をそれぞれSa、Sb、Scとした場合、各マッピング領域の先頭からのオフセット66はそれぞれ0、Sa、Sa+Sbと計算できる。
仮想記憶媒体のアクセス先領域とマッピング領域62の対応関係は、図7に示した形式に限定されない。例えば、各マッピング領域62の領域サイズ65およびオフセット66は、ブロック単位の値ではなく、バイト等を単位とした値で設定されていてもよい。また、本実施形態の記憶媒体アドレス変換部205の機能は、第1の実施形態の第2のアドレス特定手段3に相当する。第1の実施形態における第2のアドレスは、本実施形態においてLBAとして指定される仮想記憶媒体上のアクセス先に相当する。また、第1の実施形態における第4のアドレスは、LBAとして指定される仮想記憶媒体上のアクセス先に対応する記憶媒体20上の位置に相当する。
アクセス先選択部206は、アクセス要求で指定された仮想記憶媒体のアクセス先領域に対応する記憶媒体20のマッピング領域62から、実際にアクセスコマンドを発行してReadまたはWriteを行う記憶媒体20およびLBAを選択する。アクセス先選択部206は、例えば、仮想記憶媒体が2台の記憶媒体20を用いてミラーリングによる冗長化を行う場合、アクセスを行うマッピング領域62を持つ記憶媒体20を2台のいずれかから選択する。選択対象となるマッピング領域62が複数存在する場合の選択アルゴリズムには、例えば、ミラーリングの場合には、ラウンドロビン等のアルゴリズムを適用可することができる。
コマンド登録部207は、アクセス先選択部206が選択した各マッピング領域62に対するアクセスコマンドの情報を、コマンド管理テーブル208に登録する。また、コマンド登録部207は、各マッピング領域62に対するアクセスコマンドの識別子を、アクセスコマンドに対応するアクセス要求の未完了コマンドID2045としてアクセス要求管理テーブル204に追加する。
コマンド管理テーブル208は、アクセス先選択部206で選択した、マッピング領域62に対するアクセスコマンドに関する情報を管理する。
図8は、コマンド管理テーブル208に含まれる情報の例を示す図である。コマンド管理テーブル208の各エントリは、コマンドID2081と、アクセス要求ID2082と、アクセス種別2083と、記憶媒体ID2084と、先頭LBA2085と、アクセスサイズ2086と、オフセット2087によって構成されている。
コマンドID2081は、コマンドの識別子を示している。アクセス要求ID2082は、コマンドに対応するアクセス要求の識別子を示している。アクセス種別2083は、アクセス要求がReadかWriteのいずれかであるかを示している。記憶媒体ID2084は、複数の記憶媒体のいずれであるかを示す識別子である。先頭LBA2085およびアクセスサイズ2086は、LBAで指定されるアクセス先領域の先頭位置およびアクセス先領域の大きさをそれぞれ示している。オフセット2087は、仮想記憶媒体のアクセス先領域におけるコマンドの対応位置を示す。
コマンド管理テーブル208の各エントリに含まれるデータの形式は、図8に示した形式に限定されない。例えば、アクセス種別2083は、アクセス要求ID2082に対応するアクセス要求管理テーブル204のエントリに格納された、アクセス種別2042を参照する構成することで省略してもよい。また、メモリ転送範囲計算部210において計算が行われている各コマンドに対するメモリ13における転送対象のアドレス範囲の情報が各エントリに格納されていてもよい。
コマンド発行部209は、コマンド管理テーブル208を参照して未発行のアクセスコマンドを選択し、メモリ転送範囲計算部210によってアクセスコマンドで指定する、メモリ13の領域の物理アドレスを算出する。そして、前記選択したアクセスコマンドを、記憶媒体ID2084で示される記憶媒体20に対して発行する。また、コマンド発行部209は、記憶媒体20から発行したアクセスコマンドの完了通知を受け取り、アクセス要求実行制御部201に完了したコマンドに対応するコマンドID2081を通知する。加えて、コマンド発行部209は、コマンド管理テーブル208の完了したコマンドに対応するエントリを削除する。また、本実施形態のコマンド発行部209の機能は、第1の実施形態のコマンド発行手段4に相当する。
メモリ転送範囲計算部210は、マッピング領域62に対する各アクセスコマンドについて、アクセスコマンドに対応するメモリ13の領域の物理アドレスを算出する。メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ13の領域の物理アドレスをアクセス要求ID2082に対応するSGリスト2032を参照して算出する。
図9は、仮想記憶媒体のアクセス先領域と、メモリ13の領域の対応関係の例を示す図である。図9では、アプリケーション部11が要求する仮想記憶媒体上のアクセス範囲である仮想アクセス領域81に対して、先頭から順番にメモリ13上の断片であるメモリ断片82x、82yが対応している。また、図9では、メモリ断片82x、82yに関する先頭の物理アドレスをそれぞれPx、Py、サイズをSx、Syとして示している。
また、図7と同様に仮想記憶媒体の仮想アクセス領域81に、記憶媒体20のマッピング領域83a、83b、83cが対応し、各マッピング領域のサイズがSa、Sb、Scであるとする。また、Sa<Sx、Sc<Sy、Sx+Sy=Sa+Sb+Scであるとする。
このとき、マッピング領域83aに対するアクセスコマンドにおいて指定するメモリ13の領域は、メモリ断片82xの先頭からサイズSaの領域、つまり物理アドレスPx、サイズSaの領域と表される。また、マッピング領域83bに対するアクセスコマンドで指定するメモリ13の領域は、マッピング領域83aに対するアクセスコマンドで指定したメモリ13の領域に続く、物理アドレスPx+Saで表される領域となる。しかし、図9よりマッピング領域83bに対するアクセスコマンドが必要とするメモリ13の領域は、メモリ断片82xの残りの領域に加えて、メモリ断片82yに跨る。よって、マッピング領域83bに対するアクセスコマンドのメモリ13の領域は、物理アドレスPx+Sa、サイズSx-Saの断片と、この断片に続く物理アドレスPy、サイズSb-Sx+Saの断片で表される。また、マッピング領域83cに対するアクセスコマンドで指定するメモリ13の領域は、メモリ断片82yの残りの領域、つまり物理アドレスPy+Sb-Sx+Sa、サイズScで表される。
本実施形態のデータ転送制御部12の各部位は、例えば、FPGAなどの各処理を実行する回路を有する半導体装置によって形成することができる。また、本実施形態のデータ転送制御部12の各部位における処理は、CPU上においてコンピュータプログラムを実行することによって行われてもよい。データ転送制御部12の各部位における処理を行うコンピュータプログラムは、各記録媒体に記録した状態で頒布することもできる。
メモリ13は、アプリケーション部11においてアプリケーションプログラムが各処理を行う際に必要なデータの保持と、保持しているデータの出力を行う記憶媒体である。メモリ13は、アプリケーション部11が記憶媒体20を介して記憶媒体20にアクセスする際に、記憶媒体20との間で、直接、データ転送を行う。
メモリ13は、例えば、DRAM(Dynamic Random Access Memory)によって形成されている。メモリ13は、DRAM以外の記憶素子を用いて形成されていてもよい。また、メモリ13は、複数の種類の記憶媒体の組み合わせによって形成されていてもよい。
仮想記憶媒体部14は、記憶媒体20にマッピングされた仮想的な記憶媒体としての機能を有する。仮想記憶媒体部14は、ファイルシステム等を記憶媒体20にマッピングされた仮想記憶媒体上で提供する。
記憶媒体20は、ファイルシステムにおけるファイルデータなどアプリケーション部11における処理結果のデータや、処理に用いるデータなどを保存する記憶媒体である。本実施形態の記憶媒体20は、NAND型フラッシュメモリを記憶素子としたSSD(Solid State Drive)を用いて形成されている。記憶媒体20は、記憶領域上へのアクセスを、LBAを用いたアドレス指定によって受け付ける。記憶媒体20は、NAND型フラッシュメモリ以外の不揮発性の半導体記憶素子を用いて形成されたものであってもよい。
記憶媒体20は、ホスト装置10に直接、接続されていなくてもよい。例えば、他の情報処理装置に接続されている記憶媒体20にネットワークを介して、ホスト装置10がアクセスする構成であってもよい。また、仮想記憶媒体部14、または、記憶媒体20および仮想記憶媒体部14の両方がホスト装置10とネットワークを介して接続されていてもよい。例えば、NAS(Network Attached Storage)のように、ファイルシステムと記憶媒体を持ち、ネットワークを介してホスト装置に対してファイルアクセスを提供する構成としてもよい。また、他の情報処理装置で実行されているアプリケーションプログラムが、ホスト装置10を介して記憶媒体20へのアクセスを要求する構成であってもよい。
記憶媒体20は、複数、備えられていてもよい。複数の記憶媒体20を備える場合に、RAID(Redundant Arrays of Inexpensive Disks)システムとして構成されていてもよい。複数の記憶媒体20を備える構成とするときは、複数の記憶媒体20の記憶領域をストライピングまたは冗長化するように仮想記憶媒体へのマッピングが行われる。そのような構成とすることで、ホスト装置10は、複数の記憶媒体20の記憶領域を、物理的な記憶媒体と同様にブロック単位のアクセスを行うことができる大容量の単一の仮想記憶媒体または障害への耐性を持った単一の仮想記憶媒体として用いることができる。また、記憶媒体の仮想化により、複数の記憶媒体20をデータの特性に応じて使い分けることが可能になる。例えば、低速大容量の記憶媒体に対して高速小容量の記憶媒体をキャッシュとして使用するような単一の仮想記憶媒体を構築することもできる。
本実施形態の情報処理システムの動作について説明する。始めに、ホスト装置10においてデータ転送制御部12が、アプリケーション部11からアクセス要求を受け取った際に、記憶媒体20のアクセスコマンドを生成する際の動作について説明する。図10は、本実施形態の情報処理システムにおいて、アクセス要求に基づいて記憶媒体20のアクセスコマンドを生成する際の動作を示すフローチャートである。
アクセス要求実行制御部201は、アプリケーション部11から仮想記憶媒体に対するアクセス要求の情報を受け取ると、メモリ領域管理テーブル203およびアクセス要求管理テーブル204に登録するアクセス要求IDをアクセス要求に付加する。また、アクセス要求実行制御部201は、メモリアドレス変換部202にアクセス要求のメモリアドレス34とアクセスサイズ33を通知する(ステップS101)。
メモリアドレス34等を受け取ると、メモリアドレス変換部202は、アプリケーション部11がメモリアドレス34とアクセスサイズ33として指定する論理アドレス空間のメモリ13の物理アドレス空間における配置を確認する。物理アドレス空間における配置を確認する際に、メモリアドレス変換部202は、領域の断片ごとにメモリ領域管理テーブル203のSGリスト2032に登録するための断片物理アドレス2033と断片サイズ2034を取得する。断片物理アドレス2033等を取得すると、メモリアドレス変換部202は、アクセス要求実行制御部201に対して作成したSGリスト2032を通知する(ステップS102)。
SGリスト2032の通知を受け取ると、アクセス要求実行制御部201は、通知されたSGリスト2032を、アクセス要求ID2031と共にメモリ領域管理テーブル203に登録する(ステップS103)。
また、ステップS101においてアクセス要求IDを付加すると、アクセス要求実行制御部201は、アプリケーション部11からのアクセス要求に関する情報をアクセス要求管理テーブル204に登録する(ステップS104)。アクセス要求実行制御部201は、アクセス要求に関する情報として、アクセス種別31、先頭LBA32、アクセスサイズ33およびアクセス要求IDをアクセス要求管理テーブル204に登録する。
アクセス要求に関する情報がアクセス要求管理テーブルに登録されると、記憶媒体アドレス変換部205は、登録されたアクセス要求について、仮想記憶媒体のアクセス先領域に対応するマッピング領域62の記憶媒体ID63と、先頭LBA64と、領域サイズ65、オフセット66を特定する(ステップS105)。
マッピング領域62等を特定すると、アクセス先選択部206は、特定したマッピング領域62から、アクセス要求の処理を行う際に実際にアクセスを行うマッピング領域62を選択する(ステップS106)。
マッピング領域62が選択されると、コマンド登録部207は、選択されたマッピング領域62について、アクセス要求管理テーブル204の対応するアクセス要求のエントリに未完了コマンドID2045を新たに付与して追加する(ステップS107)。
未完了コマンドID2045が追加されると、コマンド登録部207は、未完了コマンドID2045の値と、アクセス要求管理テーブル204から取得したアクセス種別2042をアクセスコマンドとしてコマンド管理テーブル208に登録する。また、さらに、コマンド登録部207は、選択されたマッピング領域62の記憶媒体ID63、先頭LBA64、領域サイズ65およびオフセット66をアクセスコマンドとしてコマンド管理テーブル208に登録する(ステップS108)。
以上のステップS101からS108までの処理によって、データ転送制御部12がアプリケーション部11からのアクセス要求に対応する記憶媒体20のアクセスコマンドを生成する動作が完了する。ステップS101からS108の処理順序は、図10に示した順序である必要はない。例えば、ステップS103とステップS104の処理は、同時期に実行されてもよく、順序を入れ替えて実行されてもよい。
次に、アプリケーション部11からのアクセス要求に基づいて記憶媒体20のアクセスコマンドを実行し、アクセス要求の処理完了の確認を行う際の動作について説明する。図11および図12は、本実施形態のデータ転送制御部12においてアクセス要求に基づいて記憶媒体20のアクセスコマンドを実行し、アクセス要求の処理完了の確認を行う際の動作フローを示すフローチャートである。
コマンド発行部209は、コマンド管理テーブル208を参照して未発行のアクセスコマンドを選択して、選択したアクセスコマンドの情報をメモリ転送範囲計算部210に通知する(ステップS201)。
アクセスコマンドの情報を受け取ると、メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ13の領域についてメモリ断片82を特定し、それぞれのメモリ断片82の物理アドレスおよびサイズを計算する(ステップS202)。メモリ転送範囲計算部210は、マッピング領域83に対するアクセスコマンドの情報と、メモリ領域管理テーブル203に登録されたアクセス要求ID2082に対応したSGリスト2032を基に、メモリ断片82の物理アドレスおよびサイズを計算する。
メモリ断片82の物理アドレス等が計算されると、コマンド発行部209は、記憶媒体ID2084で指定される記憶媒体20に対してアクセスコマンドを発行する(ステップS203)。コマンド発行部209は、コマンド管理テーブル208と、メモリ断片82の物理アドレスおよびサイズの情報に基づいて、記憶媒体20に対してアクセスコマンドを発行する。
アクセスコマンドの発行後に、アクセスコマンドの完了の通知を受け取ると、コマンド発行部209は、完了したアクセスコマンドに対応するコマンドID2081およびアクセス要求ID2082をコマンド管理テーブル208から取得する(ステップS204)。
完了したアクセスコマンドに対応する情報を取得すると、コマンド発行部209は、完了したアクセスコマンドに対応するコマンド管理テーブル208のエントリを削除する(ステップS205)。
また、アクセスコマンドの完了通知を受け取ると、コマンド発行部209は、アクセス要求実行制御部201に対して、完了したアクセスコマンドのコマンドID2081およびアクセス要求ID2082を通知する(ステップS206)。
アクセスコマンドの完了の通知を受け取ると、アクセス要求実行制御部201は、アクセス要求管理テーブル204において、対応するアクセス要求の未完了コマンドID2045から、通知されたコマンドIDを削除する(ステップS207)。
完了を通知されたアクセスコマンドに対応するアクセス要求について、未完了コマンドID2045にコマンドIDが1個以上残っている場合(ステップS208でYes)、アクセス要求の完了の通知等を行わずに処理を終了する。
未完了コマンドID2045にコマンドIDが残っていない場合(ステップS208でNo)、アクセス要求実行制御部201は、アクセス要求を行ったアプリケーション部11に対して、仮想記憶媒体に対するアクセス要求の完了を通知する(ステップS209)。
アクセス要求実行制御部201は、完了したアクセス要求に対応するアクセス要求管理テーブル204のエントリを削除して処理を終了する(ステップS210)。
以上のステップS201からS210までの処理によって、アプリケーション部11からのアクセス要求に応じて、記憶媒体20のアクセスコマンドが実行され、アクセス要求の処理完了の確認の動作が行われる。また、ステップS201からS210の処理順序は、図11および図12に示した順序でなくてもよい。例えば、ステップS209とステップS210の処理は、同時期に実行されてもよく、また、順序を入れ替えて実行されてもよい。
次に、記憶媒体アドレス変換部205が仮想記憶媒体へのアクセス要求に基づいて、仮想アクセス領域61に対応するマッピング領域62を特定する際の動作について説明する。図13および図14は、本実施形態のデータ転送制御部12において、アクセス要求に基づいて、仮想アクセス領域に対応するマッピング領域を特定する際の動作フローを示すフローチャートである。
アクセス要求を受けると、記憶媒体アドレス変換部205は、マッピング領域62の特定を行う基準点を仮想アクセス領域61の先頭に設定する(ステップS301)。
基準点を設定すると、記憶媒体アドレス変換部205は、仮想アクセス領域61上の基準点に対応させる記憶媒体20の記憶媒体ID63と先頭LBA64をマッピングの管理情報から取得する(ステップS302)。
記憶媒体アドレス変換部205は、マッピングの管理情報を参照して、記憶媒体20において仮想アクセス領域61上の基準点に対応する位置から連続的にマッピングされている領域のサイズを取得する(ステップS303)。
領域のサイズを取得すると、記憶媒体アドレス変換部205は、連続的にマッピングされている記憶媒体20の領域のサイズと、仮想記憶媒体において基準点から仮想アクセス領域61の末尾までの領域のサイズを比較する(ステップS304)。
記憶媒体20上の連続的なマッピング領域が、基準点から仮想アクセス領域61の末尾までより大きい場合(ステップS305でYes)、記憶媒体アドレス変換部205は、仮想アクセス領域61の末尾までに相当する部分をマッピング領域62に追加する。このとき追加されるマッピング領域62は、ステップS302で取得された記憶媒体ID63、先頭LBA64、領域サイズ65が基準点のLBAから仮想アクセス領域61の末尾までのサイズの領域として設定される。また、このとき追加されるマッピング領域62は、オフセット66が仮想アクセス領域61上の先頭から基準点までのサイズに等しい領域として設定される(ステップS306)。
また、記憶媒体20の連続的にマッピング領域が、基準点から仮想アクセス領域61の末尾までより小さい場合(ステップS305でNo)、記憶媒体アドレス変換部205は、連続的にマッピング出来る範囲をマッピング領域62に追加する。このとき追加されるマッピング領域62は、ステップS302で取得された記憶媒体ID63、先頭LBA64、領域サイズ65が連続的にマッピングされている領域のサイズの領域として設定される。また、このとき追加されるマッピング領域62は、オフセット66が仮想アクセス領域61上の先頭から基準点までのサイズに等しい領域として設定される(ステップS307)。
仮想アクセス領域61に対応するマッピング領域62を設定すると、記憶媒体アドレス変換部205は、仮想アクセス領域61上の基準点を再設定する。記憶媒体アドレス変換部205は、現在の基準点からステップS307で追加したマッピング領域の領域サイズ65に相当する分、仮想アクセス領域61の末尾の方向に基準点を移動させる。基準点を移動させると、記憶媒体アドレス変換部205は、ステップS302からの処理を実行する(ステップS308)。
次に、ステップS202において、メモリ転送範囲計算部210がマッピング領域83に対するアクセスコマンドに対応する際に、マッピング領域83との間でデータ転送を行うメモリ断片82を特定する動作について説明する。図15および図16は、本実施形態のデータ転送制御部12においてマッピング領域との間でデータ転送を行うメモリ断片を特定する際の動作フローを示すフローチャートである。
メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ断片82を特定する処理を行う基準点Pを、通知されたアクセスコマンドのオフセットに設定する(ステップS401)。
また、メモリ転送範囲計算部210は、アクセスコマンドの実行に必要なメモリ断片82の残りサイズSを、アクセスコマンドのアクセスサイズに設定する(ステップS402)。
メモリ転送範囲計算部210は、メモリ領域管理テーブル203に登録された、アクセスコマンドに対応するアクセス要求のSGリスト2032から、基準点Pが含まれるメモリ13の断片および物理アドレスを特定する(ステップS403)。
メモリ13の断片を特定すると、メモリ転送範囲計算部210は、メモリ13の断片について、基準点Pの物理アドレスから断片の末尾までのサイズRを計算する(ステップS404)。
サイズRを計算すると、メモリ転送範囲計算部210は、計算したサイズRと、必要なメモリ断片の残りサイズSを比較する(ステップS405)。
SがR以下である場合(ステップS406でYes)、メモリ転送範囲計算部210は、先頭の物理アドレスが基準点Pの物理アドレスであり、サイズがSのメモリ断片82を特定結果に追加して処理を終了する(ステップS407)。
S>Rである場合(ステップS406でNo)、メモリ転送範囲計算部210は、先頭の物理アドレスが基準点Pの物理アドレスであり、サイズがRのメモリ断片82を特定結果に追加する(ステップS408)。
サイズRのメモリ断片82を特定結果に追加すると、メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ断片82を特定する処理を行う基準点Pを、サイズRを加えたアドレスに設定する(ステップS409)。
基準点PにサイズRを加えたアドレスに設定すると、メモリ転送範囲計算部210は、アクセスコマンドの実行に必要なメモリ断片の残りサイズSからサイズRを減算して、ステップS403からの処理を実行する(ステップS410)。
以上のステップS401からS410までの処理を行うことで、ステップS202においてメモリ転送範囲計算部210がマッピング領域83に対するアクセスコマンドについて、マッピング領域83とデータ転送を行うメモリ断片82を特定する動作が完了する。また、ステップS401からS410の処理順序は、図15および図16に示した順序でなくてもよい。例えば、ステップS409とステップS410の処理は、同時期に実行されてもよく、順序を入れ替えて実行されてもよい。
本実施形態の情報処理システムは、物理的な記憶媒体20と対応するようにマッピングされた仮想記憶媒体を介して記憶媒体20にアクセスを行う。本実施形態の情報処理システムは、アクセス処理途中のオーバーヘッドの発生を抑制し、アクセス性能を向上するために、仮想記憶媒体とアクセス要求元の管理するメモリ13の間で直接、データ転送を行う。すなわち、本実施形態の情報処理システムは、仮想記憶媒体においてデータを実際に格納する物理記憶媒体と、アクセス要求元のホスト装置10のメモリ13との間で、直接ReadまたはWriteされたデータを転送している。そのような構成とすることで、本実施形態の情報処理システムは、バッファリングに伴うメモリコピーの発生を回避している。
通常の仮想記憶媒体では、ホスト装置からのアクセス要求に対してアクセス要求先として指定されたファイル名やLBA等の識別子を基に、アクセス範囲に対応する物理記憶媒体および物理記憶媒体におけるLBAが計算される。そして、アクセス範囲に含まれる記憶媒体にアクセスコマンドを発行され、記憶媒体とアクセス要求元のホスト装置のメモリ領域との間のデータ転送は、メモリ上のバッファ領域を経由して行われる。すなわち、仮想記憶媒体がアクセス要求元に代わり、物理記憶媒体に対するアクセスコマンド発行と、データ転送を行う。
一方で本実施形態では、通常の仮想記憶媒体とは異なり、データ転送制御部12がアクセス要求元に代わって行う処理は、物理記憶媒体である記憶媒体20に対するアクセスコマンド発行のみである。データ転送は、物理記憶媒体である記憶媒体20とアクセス要求元のホスト装置10のメモリ13の記憶領域との間で直接、行われる。そのために、データ転送制御部12は、記憶媒体20に対して発行するアクセスコマンドごとに、アクセス要求元であるホスト装置10のメモリ13の対応するアドレス範囲を計算して、データ転送を行う領域を指定する。また、記憶媒体20に対するアクセスコマンドは、転送するデータの本体をコマンドや応答に直接含めずに、記憶媒体20とメモリ13の間でデータ転送を行うメモリ領域のアドレス範囲を指定する形式のコマンドとして設定される。
通常、情報処理装置は、アクセス要求を行うアプリケーションプログラム毎に個別の論理アドレス空間を用いてメモリアクセスを行う。よって、データ転送制御部12は、物理記憶媒体とアクセス要求元のメモリ領域との間で直接、データ転送を行えるように、物理記憶媒体に対するアクセスコマンドの発行前に論理アドレスを物理アドレスに変換する。
また、アクセス要求元のアプリケーションプログラムで連続したメモリ領域であっても、物理的なメモリでは必ずしも連続しておらず、断片化された状態となりうる。そのため、データ転送制御部12は、物理記憶媒体に発行するホスト側のメモリ領域の対応するアドレス範囲の計算についても、アドレス範囲内に含まれるメモリの断片の物理アドレスおよびコマンドによるアクセス範囲内での各断片のオフセットを計算している。
上記のような構成とすることで、本実施形態の情報処理システムは、仮想記憶媒体を介してホスト装置10から記憶媒体20上の領域にアクセスを行う際に、仮想記憶媒体を介して、直接的なメモリ13とのデータ転送を実現している。そのため、本実施形態の情報処理システムは、オーバーヘッドを削減し、ホスト装置10からのアクセス性能を向上することができる。
本実施形態の情報処理装置は、アプリケーション部11からのアクセス要求で指定された仮想記憶媒体上の領域に対応する記憶媒体20上の領域を、データ転送制御部12が算出している。データ転送制御部12は、仮想記憶媒体上のアクセス先である仮想アクセス領域に対応する記憶媒体20上の位置を特定し、データ転送の相手先のメモリ13の物理アドレスとともにアプリケーション部11のアクセス要求を記憶媒体20に送っている。よって、仮想アクセス領域に対応する記憶媒体20上の位置を特定し、データ転送の相手先のメモリ13の物理アドレスを受け取った記憶媒体20は、メモリ13との間で直接、データ転送を行うことができる。
ホスト装置10のアプリケーション部11は、記憶媒体20にアクセスする際に仮想記憶媒体上のアクセス先をLBAによって指定するが、データ転送制御部12が実際の記憶媒体20上の位置に変換している。そのため、本実施形態では、ホスト側のアプリケーション部11が記憶媒体20上の実際のアドレスを直接、認識できない場合にも記憶媒体20にアクセスを要求することができる。また、そのような構成とすることで、記憶媒体20は、メモリ13との間で直接、データ転送を行うことができるようになるため、アプリケーション部11等がデータ転送処理を行う際にメモリ13上でのバッファリング処理を必要としない。そのため、メモリ13と記憶媒体20間におけるデータ転送に要する時間を抑制することができる。以上より、本実施形態の情報処理システムは、NAND型フラッシュメモリによって形成された記憶媒体に、仮想記憶媒体を介してアクセスする際に、性能低下を抑制することができる。