(57)【要約】【課題】仮想的な記憶媒体を介して記憶媒体にアクセスする際に、性能低下を抑制することができるデータ転送装置を提供する。【解決手段】データ転送装置を、アクセス要求制御手段１と、第１のアドレス特定手段２と、第２のアドレス特定手段３と、コマンド発行手段４を備える構成とする。アクセス要求制御手段１は、第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応する仮想的な記憶媒体の第２のアドレスと、記憶媒体間のデータ転送を要求するアクセス要求とを受け取る。第１のアドレス特定手段２は、第３のアドレスを第１のアドレスを基に特定する。第２のアドレス特定手段３は、仮想的な記憶媒体上の第２のアドレスの位置に対応する第２の記憶媒体上の位置を特定する。コマンド発行手段４は、第３のアドレスと、第４のアドレスと、第１の記憶媒体との間で直接、行われるデータ転送を要求する情報とを第２の記憶媒体に通知する。【選択図】      図１
2019008418.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応するように形成された仮想的な記憶媒体の第２のアドレスと、前記第２の記憶媒体に前記第１の記憶媒体との間のデータ転送を要求するアクセス要求とをホスト装置から受け取るアクセス要求制御手段と、
前記第２の記憶媒体が前記データ転送を行う際に前記第１の記憶媒体に直接、アクセスする際のアクセス先を、前記第１のアドレスに基づいて第３のアドレスとして特定する第１のアドレス特定手段と、
前記仮想的な記憶媒体上の前記第２のアドレスの位置に対応する前記第２の記憶媒体上の位置を第４のアドレスとして特定する第２のアドレス特定手段と、
前記第３のアドレスと、前記第４のアドレスと、前記第１の記憶媒体との間の前記データ転送を要求する情報とをアクセスコマンドとして前記第２の記憶媒体に通知するコマンド発行手段と
を備え、
前記アクセス要求制御手段は、前記第２の記憶媒体が前記アクセスコマンドに応じて前記第１の記憶媒体との間で直接、行う前記データ転送の完了を検出したとき、前記データ転送が完了したことを示す情報を前記アクセス要求への応答として前記ホスト装置に送ることを特徴とするデータ転送装置。
【請求項２】
前記第２のアドレス特定手段は、前記仮想的な記憶媒体上の基準点に対応する前記第２の記憶媒体上の位置を算出し、前記第２のアドレスに対応する前記第２の記憶媒体上の位置の前記基準点に対応する位置からの差を算出することで前記第４のアドレスを特定することを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記第２のアドレス特定手段は、前記第１の記憶媒体における断片状の複数の記憶領域を前記仮想的な記憶媒体上で組み合わせてマッピングを行い、対応する前記第２の記憶媒体上の位置を算出することを特徴とする請求項１または２に記載のデータ転送装置。
【請求項４】
前記第２のアドレス特定手段は、複数の前記第２の記憶媒体の中からアクセス先として用いる記憶媒体を選択し、選択した前記第２の記憶媒体上における前記第２のアドレスの位置に対応する位置を前記第４のアドレスとして算出することを特徴とする請求項１から３いずれかに記載のデータ転送装置。
【請求項５】
アプリケーションプログラムを実行するプロセッサと、前記アプリケーションプログラムがデータの書き込みおよび読み出しを行うメモリからなる第１の記憶媒体とを有するホスト装置と、
請求項１から４いずれかに記載のデータ転送装置と、
不揮発性の半導体記憶素子によってデータを記憶する記憶手段と、要求に基づいて前記第１の記憶媒体との間でデータの転送を行う転送手段とを有する第２の記憶媒体とを備え、
前記データ転送装置の前記アクセス要求制御手段は、前記アプリケーションプログラムから前記第１のアドレス、前記第２のアドレスおよび前記アクセス要求を受信し、前記第２の記憶媒体に前記アクセスコマンドを通知し、
前記第２の記憶媒体は、前記アクセスコマンドの情報に基づいて前記第１の記憶媒体との間で直接、データ転送を行うことを特徴とする情報処理システム。
【請求項６】
第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応するように形成された仮想的な記憶媒体の第２のアドレスと、前記第２の記憶媒体に前記第１の記憶媒体との間のデータ転送を要求するアクセス要求とをホスト装置から受け取り、
前記第２の記憶媒体が前記データ転送を行う際に前記第１の記憶媒体に直接、アクセスする際のアクセス先を、前記第１のアドレスに基づいて第３のアドレスとして特定し、
前記仮想的な記憶媒体上の前記第２のアドレスの位置に対応する前記第２の記憶媒体上の位置を第４のアドレスとして特定し、
前記第３のアドレスと、第４のアドレスと、前記第１の記憶媒体との間の前記データ転送を要求する情報とをアクセスコマンドとして前記第２の記憶媒体に通知し、前記第２の記憶媒体が前記アクセスコマンドに応じて前記第１の記憶媒体との間で直接、行う前記データ転送の完了を検出したとき、前記データ転送が完了したことを示す情報を前記アクセス要求への応答として前記ホスト装置に送ることを特徴とするデータ転送方法。
【請求項７】
前記仮想的な記憶媒体上の基準点に対応する前記第２の記憶媒体上の位置を算出し、
前記第２のアドレスに対応する前記第２の記憶媒体上の位置の前記基準点に対応する位置からの差を算出することで前記第４のアドレスを特定することを特徴とする請求項６に記載のデータ転送方法。
【請求項８】
前記第１の記憶媒体における断片状の複数の記憶領域を前記仮想的な記憶媒体上で組み合わせてマッピングを行い、対応する前記第２の記憶媒体上の位置を算出することを特徴とする請求項６または７に記載のデータ転送方法。
【請求項９】
複数の前記第２の記憶媒体の中からアクセス先として用いる記憶媒体を選択し、選択した前記第２の記憶媒体上における前記第２のアドレスの位置に対応する位置を前記第４のアドレスとして特定することを特徴とする請求項６から８いずれかに記載のデータ転送方法。
【請求項１０】
第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応するように形成された仮想的な記憶媒体の第２のアドレスと、前記第２の記憶媒体に前記第１の記憶媒体との間のデータ転送を要求するアクセス要求とをホスト装置から受け取る処理と、
前記第２の記憶媒体が前記データ転送を行う際に前記第１の記憶媒体に直接、アクセスする際のアクセス先を、前記第１のアドレスに基づいて第３のアドレスとして特定する処理と、
前記仮想的な記憶媒体上の前記第２のアドレスの位置に対応する前記第２の記憶媒体上の位置を第４のアドレスとして特定する処理と、
前記第３のアドレスと、第４のアドレスと、前記第１の記憶媒体との間の前記データ転送を要求する情報とをアクセスコマンドとして前記第２の記憶媒体に通知し、前記第２の記憶媒体が前記アクセスコマンドに応じて前記第１の記憶媒体との間で直接、行う前記データ転送の完了を検出したとき、前記データ転送が完了したことを示す情報を前記アクセス要求への応答として前記ホスト装置に送る処理と
をコンピュータに実行させることを特徴とするテータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体へのアクセス制御技術に関するものであり、特に、仮想的な記憶媒体を介して記憶媒体にアクセスする技術に関するものである。
【背景技術】
【０００２】
多くの計算機システムにおいて、記憶媒体に対するアクセスおよび格納されたデータの管理における利便性向上を目的として、物理的な記憶媒体から仮想的な記憶媒体である仮想記憶媒体を構築する技術が用いられている。
【０００３】
計算機システムにおいて、ファイルシステムは、一連のデータをファイルとして記憶媒体上の記憶領域にマッピングする。ファイルシステムは、ファイルを単位とした仮想記憶媒体に対するアクセス手段を提供することで、記憶媒体の領域管理およびホストからのアクセスに関する利便性を向上させる。
【０００４】
また、ＲＡＩＤ(Redundant Array of Inexpensive Disks)は、複数の記憶媒体が提供する記憶領域をストライピングまたは冗長化するように仮想記憶媒体にマッピングする。ＲＡＩＤは、ホストに対して複数記憶媒体の記憶領域を、物理的な記憶媒体と同様にブロック単位のアクセスを行うことができる大容量および記憶媒体の障害に対する耐性を持った単一の仮想記憶媒体として提供する。記憶媒体の仮想化することで、複数の記憶媒体をデータの特性に応じて使い分けることが可能である。例えば、低速大容量の記憶媒体に対して高速小容量の記憶媒体をキャッシュとして使用する、単一の仮想記憶媒体を構築することも可能である。
【０００５】
このように、仮想記憶媒体は、多くの計算機システムにおいて、ホストから記憶媒体に対するアクセスの利便性向上に加えて、ＲＡＩＤやキャッシュといった記憶媒体や記憶領域の構成をホストから隠蔽することが可能である。そのため、計算機システム上で動作するアプリケーションは、構成を意識せずに利便性の向上を図れる。
【０００６】
また、近年の計算機システムは、ＨＤＤ(Hard Disk Drive)に代えて、ＮＡＮＤ型フラッシュメモリを記憶素子とするＳＳＤ(Solid State Drive)を用いることで記憶媒体へのアクセス性能を向上している。高速な接続規格の普及に伴うＳＳＤの高性能化やＮＡＮＤ型フラッシュメモリよりも高速な不揮発性メモリデバイスの登場により、記憶媒体のさらなる高性能化が見込まれる。これらの記憶媒体を用いるシステムではアクセス性能の向上効果の妨げとならないように、仮想記憶媒体を実現するための処理についても高い性能が求められる。そのため、ＳＳＤのような記憶媒体にアクセスする際のアクセス性能を向上する技術の開発が行われている。そのような、記憶媒体にアクセスする際のアクセス性能を向上する技術としては、例えば、非特許文献１および非特許文献２のような技術が開示されている。
【０００７】
非特許文献１には、ＳＳＤを用いた記憶媒体のアクセス規格であるＮＶＭ  Ｅｘｐｒｅｓｓ(登録商標)(Non-Volatile Memory Express)が示されている。非特許文献１の技術に基づいた記憶媒体は、データ転送を行うメモリのアドレスと記憶媒体上のＬＢＡ（Logical Block Address）の範囲をＲｅａｄとＷｒｉｔｅの各コマンドで指定することで、メモリと記憶媒体との間でＤＭＡ(Direct Memory Access)に相当する動作を行う。また、非特許文献２には、ＳＳＤを用いた記憶媒体の規格であるＮＶＭ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃｓが示されている。非特許文献２の技術に基づくと、アクセス元とは異なる計算機に接続された記憶媒体に対してＮＶＭ  Ｅｘｐｒｅｓｓに基づいたアクセスコマンドを発行することで、ＲＤＭＡ(Remote Direct Memory Access)に相当する動作を行う。非特許文献１および非特許文献２は、上記の動作を行うことでＳＳＤのような記憶媒体への高速なアクセスが可能になるとしている。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】“ＮＶＭ  Ｅｘｐｒｅｓｓ  １．２．１  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”、［Ｏｎｌｉｎｅ］、２０１６年６月５日、ＮＶＭ  Ｅｘｐｒｅｓｓ、［２０１７年５月３０日検索］、インターネット＜ＵＲＬ：http://www.nvmexpress.org/wp-content/uploads/NVM_Express_1_2_1_Gold_20160603.pdf＞
【非特許文献２】“ＮＶＭ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃｓ  １．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”、［Ｏｎｌｉｎｅ］、２０１６年６月５日、ＮＶＭ  Ｅｘｐｒｅｓｓ、［２０１７年５月３０日検索］、インターネット＜ＵＲＬ：http://www.nvmexpress.org/wp-content/uploads/NVMe_over_Fabrics_1_0_Gold_20160605-1.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、非特許文献１および非特許文献２の技術は次のような点で十分ではない。非特許文献１および非特許文献２では、ＳＳＤを用いている記憶媒体へのアクセス時にホストのメモリとの間で直接データ転送を行う場合には、物理記憶媒体に対するＬＢＡの指定が必要である。しかし、仮想記憶媒体に対するアクセスでは、仮想記憶媒体が記憶媒体の構成や記憶媒体に対するデータの配置を管理し、これらの情報をアクセス元であるホストやプログラムから隠蔽する。よって、ホスト側からデータ転送を行う相手となる記憶媒体およびアクセス先となるＬＢＡの特定が困難である。
【００１０】
一方で、データの格納先である記憶媒体、ＬＢＡを管理する仮想記憶媒体の制御は、アクセス元とは異なるホストや装置、プログラムで実現される。よって、多くの場合に記憶媒体から読み出されるデータ、若しくは記憶媒体に書きこまれるデータの格納先のメモリ領域に直接アクセスすることは困難である。つまり、仮想記憶媒体に対するアクセスでは記憶媒体とアクセス元のメモリとの間の直接的なデータ転送を行うことが困難であるため、仮想記憶媒体の制御機能がアクセス可能なメモリ領域を経由して処理する必要がある。そのため、メモリコピーによるバッファリング等の動作がボトルネックとなってアクセス性能が低下する恐れがある。以上の理由から、非特許文献１および非特許文献２の技術は、仮想記憶媒体を介した記憶媒体へのアクセス時に、性能低下を抑制する技術としては十分ではない。
【００１１】
本発明は、上記の課題を解決するため、仮想的な記憶領域を介して記憶媒体にアクセスする際に、性能低下を抑制することができるデータ転送装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記の課題を解決するため、本発明のデータ転送装置は、アクセス要求制御手段と、第１のアドレス特定手段と、第２のアドレス特定手段と、コマンド発行手段を備えている。アクセス要求制御手段は、第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応するように形成された仮想的な記憶媒体の第２のアドレスと、アクセス要求とを受け取る。アクセス要求は、第２の記憶媒体に第１の記憶媒体との間のデータ転送を要求するものである。第１のアドレス特定手段は、第２の記憶媒体がデータ転送を行う際に第１の記憶媒体に直接、アクセスする際のアクセス先を、第１のアドレスに基づいて第３のアドレスとして特定する。第２のアドレス特定手段は、仮想的な記憶媒体上の第２のアドレスの位置に対応する第２の記憶媒体上の位置を第４のアドレスとして特定する。コマンド発行手段は、第３のアドレスと、第４のアドレスと、第１の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第２の記憶媒体に通知する。また、アクセス要求制御手段は、第２の記憶媒体がアクセスコマンドに応じて第１の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
【００１３】
本発明のデータ転送方法は、第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応するように形成された仮想的な記憶媒体の第２のアドレスと、アクセス要求とを受け取る。アクセス要求は、第２の記憶媒体に第１の記憶媒体との間のデータ転送を要求するものである。本発明のデータ転送方法は、第２の記憶媒体がデータ転送を行う際に第１の記憶媒体に直接、アクセスする際のアクセス先を、第１のアドレスに基づいて第３のアドレスとして特定する。本発明のデータ転送方法は、仮想的な記憶媒体上の第２のアドレスの位置に対応する第２の記憶媒体上の位置を第４のアドレスとして特定する。本発明のデータ転送方法は、第３のアドレスと、第４のアドレスと、第１の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第２の記憶媒体に通知する。本発明のデータ転送方法は、第２の記憶媒体がアクセスコマンドに応じて第１の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
【発明の効果】
【００１４】
本発明によると、仮想的な記憶媒体を介して記憶媒体にアクセスする際に、性能低下を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態の構成の概要を示す図である。
【図２】本発明の第２の実施形態の構成の概要を示す図である。
【図３】本発明の第２の実施形態の仮想記憶媒体部の構成を示すブロック図である。
【図４】本発明の第２の実施形態のアクセス要求の構成の例を示す図である。
【図５】本発明の第２の実施形態のメモリ管理テーブルの構成の例を示す図である。
【図６】本発明の第２の実施形態のアクセス要求管理テーブルの構成の例を示す図である。
【図７】本発明の第２の実施形態において仮想記憶領域上の領域に対応する記憶媒体上の位置を模式的に示した図である。
【図８】本発明の第２の実施形態のコマンド管理テーブルの構成の例を示す図である。
【図９】本発明の第２の実施形態において、データ転送をする際のメモリと記憶媒体間の対応する位置を模式的に示した図である。
【図１０】本発明の第２の実施形態においてアクセスコマンドを生成する際の動作フローを示した図である。
【図１１】本発明の第２の実施形態においてアクセスコマンドを実行する際の動作フローを示した図である。
【図１２】本発明の第２の実施形態においてアクセスコマンドを実行する際の動作フローを示した図である。
【図１３】本発明の第２の実施形態において仮想記憶媒体上の領域に対応する記憶媒体上の領域を特定する際の動作フローを示した図である。
【図１４】本発明の第２の実施形態において仮想記憶媒体上の領域に対応する記憶媒体上の領域を特定する際の動作フローを示した図である。
【図１５】本発明の第２の実施形態において記憶媒体上の領域とデータ転送を行うメモリ上の領域を特定する際の動作フローを示した図である。
【図１６】本発明の第２の実施形態において記憶媒体上の領域とデータ転送を行うメモリ上の領域を特定する際の動作フローを示した図である。
【発明を実施するための形態】
【００１６】
（第１の実施形態）
本発明の第１の実施形態について図を参照して詳細に説明する。図１は、本実施形態のデータ転送装置の構成の概要を示したものである。
【００１７】
本実施形態のデータ転送装置は、アクセス要求制御手段１と、第１のアドレス特定手段２と、第２のアドレス特定手段３と、コマンド発行手段４を備えている。アクセス要求制御手段１は、第１の記憶媒体の第１のアドレスと、第２の記憶媒体に対応するように形成された仮想的な記憶媒体の第２のアドレスと、アクセス要求とを受け取る。アクセス要求は、第２の記憶媒体に第１の記憶媒体との間のデータ転送を要求するものである。第１のアドレス特定手段２は、第２の記憶媒体がデータ転送を行う際に第１の記憶媒体に直接、アクセスする際のアクセス先を、第１のアドレスに基づいて第３のアドレスとして特定する。第２のアドレス特定手段３は、仮想的な記憶媒体上の第２のアドレスの位置に対応する第２の記憶媒体上の位置を第４のアドレスとして特定する。コマンド発行手段４は、第３のアドレスと、第４のアドレスと、第１の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第２の記憶媒体に通知する。また、アクセス要求制御手段１は、第２の記憶媒体がアクセスコマンドに応じて第１の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
【００１８】
本実施形態のデータ転送装置は、第１のアドレス特定手段２で、ホスト装置から受け取る第１のアドレスを基に、第３のアドレスを特定している。また、第２のアドレス特定手段３で、仮想的な記憶媒体上の第２のアドレスの位置に相当する第２の記憶媒体上の位置を示す第４のアドレスを特定している。本実施形態のデータ転送装置が第３のアドレスと第４のアドレスを通知することで、第２の記憶媒体は、第１の記憶媒体との間で直接、データ転送を行うことができる。そのため、ホスト装置が第２の記憶媒体に仮想的な記憶媒体を介してアクセスを行う場合にも、第１の記憶媒体と、第２の記憶媒体の間で直接、データ転送を行うことができるようになるので、データ転送に要する時間を抑制することができる。その結果、本実施形態のデータ転送装置を用いることで、仮想的な記憶媒体を介して記憶媒体にアクセスする際に、性能低下を抑制することができる。
【００１９】
（第２の実施形態）
本発明の第２の実施形態について図を参照して詳細に説明する。図２は、本実施形態の情報処理システムの構成の概要を示したものである。本実施形態の情報処理システムは、ホスト装置１０と、記憶媒体２０を備えている。また、ホスト装置１０は、アプリケーション部１１と、データ転送制御部１２と、メモリ１３と、仮想記憶媒体部１４を備えている。
【００２０】
本実施形態の情報処理システムは、記憶媒体２０の物理的な記憶領域上に仮想的な記憶領域を仮想記憶媒体として形成している。本実施形態の情報処理システムのホスト装置１０は、仮想記憶媒体を介して記憶媒体２０へのデータの書き込みおよび記憶媒体２０からのデータの読み出しを行う。また、本実施形態の情報処理システムは、ホスト装置１０のメモリ１３と、記憶媒体２０の間でデータ転送を行う際に、バッファリング等を行わずにメモリ１３と、記憶媒体２０の間で直接、データ転送を行うことを特徴とする。
【００２１】
ホスト装置１０の各部位の構成について説明する。
【００２２】
アプリケーション部１１は、アプリケーションプログラムを実行し、各処理を行う機能を有する。アプリケーション部１１は、各処理を行う際に記憶媒体２０へのデータの格納および記憶媒体２０に保持されているデータの参照が必要なとき、データ転送制御部１２に対して、データの格納および参照を行うためのアクセスを要求する。アプリケーション部１１は、記憶媒体２０にアクセスする際に、記憶媒体２０の記憶領域に対応する仮想的な記憶領域として形成されている仮想記憶媒体部１４をアクセス先としてデータ転送制御部１２にアクセスを要求する。すなわち、アプリケーション部１１は、仮想記憶媒体部１４として形成されている仮想記憶媒体上の記憶領域をアクセス先として指定することで、仮想記憶媒体を介して記憶媒体２０にアクセスする。
【００２３】
本実施形態のアプリケーション部１１は、ＣＰＵ（Central Processing Unit）によって形成されている。アプリケーション部１１には、ＣＰＵに代えて、例えば、ＦＰＧＡ（Field Programmable Gate Array）など、情報処理システムの用途に応じた処理機能を有する半導体装置が用いられてもよい。
【００２４】
データ転送制御部１２の構成について説明する。図３は、データ転送制御部１２の構成を示したブロック図である。データ転送制御部１２は、アプリケーション部１１が仮想記憶媒体上をアクセス先として指定して記憶媒体２０へのアクセスを行う際に、実際にアクセスを行う記憶媒体２０上の領域を判断し、アクセスの制御を行うデータ転送装置としての機能を有する。
【００２５】
データ転送制御部１２は、アクセス要求実行制御部２０１と、メモリアドレス変換部２０２と、メモリ領域管理テーブル２０３と、アクセス要求管理テーブル２０４と、記憶媒体アドレス変換部２０５を備えている。また、データ転送制御部１２は、アクセス先選択部２０６と、コマンド登録部２０７と、コマンド管理テーブル２０８と、コマンド発行部２０９と、メモリ転送範囲計算部２１０をさらに備えている。
【００２６】
アクセス要求実行制御部２０１は、物理媒体である記憶媒体２０上に構築された仮想記憶媒体に対するアクセス要求の情報をアプリケーション部１１から受け取る。アクセス要求実行制御部２０１は、メモリ領域管理テーブル２０３およびアクセス要求管理テーブル２０４に受け取ったアクセス要求の情報を登録する。また、アクセス要求実行制御部２０１は、各アクセス要求に対応する、記憶媒体２０のアクセスコマンドの実行が完了すると、アクセス要求の完了を示す情報をアクセス要求元であるアプリケーション部１１に通知する。また、本実施形態のアクセス要求実行制御部２０１が、アプリケーション部１１からアクセス要求を受け取る機能は、第１の実施形態のアクセス要求制御手段１に相当する。
【００２７】
図４は、アプリケーション部１１からアクセス要求実行制御部２０１が受け取るアクセス要求の例を示す図である。図４に示すアクセス要求は、アクセス種別３１と、先頭ＬＢＡ（Logical Block Address）３２と、アクセスサイズ３３と、メモリアドレス３４によって構成されている。
【００２８】
アクセス種別３１は、アクセス要求がＲｅａｄであるか、Ｗｉｔｅであるかを示している。先頭ＬＢＡ３２およびアクセスサイズ３３は、仮想記憶媒体部１４の仮想記憶領域上のアクセス先の領域を示している。メモリアドレス３４は、メモリ１３において、アプリケーション部１１がアクセス可能なデータの格納先の先頭論理アドレスを示している。メモリアドレス３４は、アクセス種別３１がＲｅａｄであればアクセス結果の格納先を示し、Ｗｒｉｔｅであれば仮想記憶領域上のアクセス先の領域に書き込むデータの格納先を示している。
【００２９】
アプリケーション部１１からのアクセス要求の形式は、図４に示した形式に限定されず、例えば、アクセスサイズ３３の代わりにアクセス先領域の末尾のＬＢＡが指定されていてもよい。また、仮想記憶領域上のアクセス先の領域の情報の形式は、仮想記憶媒体部１４がアプリケーション部１１に対して提供するアクセス単位によって変化する。例えば、アクセス先の領域の情報は、仮想記憶媒体部１４がファイル単位のアクセスを受け付ける場合、アクセス先の領域を表す識別子として、ファイルパスとファイル内のオフセットのブロックアドレスが指定された情報として設定される。
【００３０】
メモリアドレス変換部２０２は、アプリケーション部１１のアクセス要求において指定されたメモリアドレス３４を、論理アドレスから物理アドレスに変換する。論理アドレスから物理アドレスへの変換は、例えば、ホスト装置１０においてアプリケーションの実行時にＣＰＵが使用する論理アドレスと、物理アドレスの対応関係を管理するページテーブルを用いて行われる。
【００３１】
メモリアドレス変換部２０２は、メモリアドレス３４とアクセスサイズ３３で指定されるメモリ１３の領域が断片化している場合に、各断片の先頭物理アドレスとサイズを求める。このとき、メモリアドレス３４とアクセスサイズ３３で指定される論理アドレス空間上の領域と各断片の対応関係を管理する必要がある。対応関係の管理は、例えば、ＮＶＭ  Ｅｘｐｒｅｓｓ（登録商標）  １．２．１  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（非特許文献１）に示されているＳＧＬ（Scatter Gather List）を用いて行われる。ＳＧＬは、論理アドレス空間に対する各断片の整列順序と、断片毎の物理アドレスおよびサイズの情報によって構成されている。
【００３２】
メモリアドレス変換部２０２の処理は、アクセス要求実行制御部２０１がアクセス要求を受け取ったときではなく、アプリケーション部１１が記憶媒体２０にアクセス要求を行う前に実行されてもよい。このとき、図４に示されるアクセス要求のメモリアドレス３４は、メモリ１３におけるデータの格納先の先頭物理アドレスを表す。また、メモリアドレス３４の代わりに、ＳＧＬのようなメモリ１３の領域の断片化に対応可能な任意のデータ形式の情報がアクセス要求に含まれていてもよい。また、本実施形態のメモリアドレス変換部２０２の機能は、第１の実施形態の第１のアドレス特定手段２に相当する。第１の実施形態における第１のアドレスは、本実施形態のメモリアドレス変換部２０２がアクセス要求としてアプリケーション部１１から受け取るメモリアドレス３４に相当する。また、第１の実施形態における第３のアドレスは、本実施形態のメモリアドレス変換部２０２が論理アドレスから変換したメモリ１３の物理アドレスに相当する。
【００３３】
メモリ領域管理テーブル２０３は、アクセス要求実行制御部２０１が受け取った各アクセス要求に含まれるメモリアドレス３４とアクセスサイズ３３で指定されるメモリ１３上の領域を、メモリアドレス変換部２０２が物理アドレスに変換した結果を格納して管理する。
【００３４】
図５は、メモリ領域管理テーブル２０３に含まれる情報の例を示した図である。メモリ領域管理テーブル２０３は、アクセス要求実行制御部２０１が受け取ったアクセス要求ごとにエントリを有している。メモリ領域管理テーブル２０３は、対応するアクセス要求を表すアクセス要求ＩＤ２０３１と、メモリアドレス変換部２０２による論理アドレスから物理アドレスへの変換結果を表すＳＧリスト２０３２によって構成されている。ＳＧリスト２０３２は、メモリアドレス３４とアクセスサイズ３３で指定される領域に対応する順番で、メモリ１３における各断片の先頭を表す断片物理アドレス２０３３と断片サイズ２０３４の情報を格納している。メモリ領域管理テーブル２０３に含まれるデータの形式は、図５に示した形式に限定されず、例えば、ＳＧリスト２０３２は、ＳＧＬに基づいたデータ形式であってもよい。
【００３５】
アクセス要求管理テーブル２０４は、アプリケーション部１１から受け取った仮想記憶媒体に対するアクセス要求と、アクセス要求に対応する記憶媒体２０のアクセスコマンドおよびアクセスコマンドの完了状況の情報を管理する。
【００３６】
図６は、アクセス要求管理テーブル２０４に含まれる情報の例を示す図である。アクセス要求管理テーブル２０４の各エントリは、アクセス要求ＩＤ２０４１と、アクセス種別２０４２と、先頭ＬＢＡ２０４３と、アクセスサイズ２０４４と、未完了コマンドＩＤ２０４５によって構成されている。
【００３７】
アクセス要求ＩＤ２０４１は、各アクセス要求の識別子を示している。アクセス種別２０４２、先頭ＬＢＡ２０４３およびアクセスサイズ２０４４は、図４に示すアクセス要求に含まれるアクセス種別３１、先頭ＬＢＡ３２およびアクセスサイズ３３をそれぞれコピーした情報である。未完了コマンドＩＤ２０４５は、アクセス要求に対応する記憶媒体２０の未完了のアクセスコマンドを示す識別子である。
【００３８】
アクセス要求管理テーブル２０４の各エントリに含まれるデータには、図６に示した形式に限定されず、例えば、アクセス要求先の領域を表すために、アクセスサイズ２０４４の代わりに、アクセス先領域の末尾のＬＢＡが用いられていてもよい。また、未完了コマンドＩＤ２０４５の代わりに、アクセス要求に対応する記憶媒体２０のアクセスコマンドの識別子と、各アクセスコマンドが完了か未完了かを表すフラグの情報が用いられていてもよい。また、メモリ領域管理テーブル２０３をアクセス要求管理テーブル２０４に内包し、アクセス要求管理テーブル２０４が各エントリに対応するメモリ領域管理テーブル２０３のＳＧリスト２０３２を直接、持つ形であってもよい。そのような構成とする場合、ＳＧリスト２０３２が単一のメモリ領域の断片で構成されていれば、断片サイズ２０３４をアクセスサイズ２０４４で代用することで、断片サイズ２０３４を省略することができる。
【００３９】
記憶媒体アドレス変換部２０５は、アクセス要求で指定された仮想記憶媒体のアクセス先領域に対応する記憶媒体２０上のＬＢＡを計算する。記憶媒体アドレス変換部２０５は、仮想記憶媒体の記憶領域の空間に対する記憶媒体２０のマッピングの管理情報を用いてＬＢＡを計算する。仮想記憶媒体がファイルシステムである場合には、記憶媒体アドレス変換部２０５は、ファイルシステムの管理情報に含まれるアクセス対象ファイルの各部分のマッピング先を表す記憶媒体２０のＬＢＡの情報を使用する。
【００４０】
図７は、仮想記憶媒体上のアクセス先領域と、記憶媒体２０上におけるアクセス先領域のマッピング先の領域との対応関係の例を示す図である。図７の例では、アプリケーション部１１が要求する仮想記憶媒体上のアクセス範囲である仮想アクセス領域６１に対して、記憶媒体２０上のマッピング領域６２ａ、６２ｂ、６２ｃが先頭から順にそれぞれ対応している。
【００４１】
記憶媒体アドレス変換部２０５は、記憶媒体２０のマッピングの管理情報を参照して、各マッピング領域６２の格納先となる記憶媒体２０の記憶媒体ＩＤ６３と、先頭ＬＢＡ６４と、領域サイズ６５を判断する。また、記憶媒体アドレス変換部２０５は、各マッピング領域において、仮想記憶媒体のアクセス先領域が対応する先頭からの位置を、オフセット６６として計算する。図７の例ではマッピング領域６２ａ、６２ｂ、６２ｃの領域サイズ６５をそれぞれＳａ、Ｓｂ、Ｓｃとした場合、各マッピング領域の先頭からのオフセット６６はそれぞれ０、Ｓａ、Ｓａ＋Ｓｂと計算できる。
【００４２】
仮想記憶媒体のアクセス先領域とマッピング領域６２の対応関係は、図７に示した形式に限定されない。例えば、各マッピング領域６２の領域サイズ６５およびオフセット６６は、ブロック単位の値ではなく、バイト等を単位とした値で設定されていてもよい。また、本実施形態の記憶媒体アドレス変換部２０５の機能は、第１の実施形態の第２のアドレス特定手段３に相当する。第１の実施形態における第２のアドレスは、本実施形態においてＬＢＡとして指定される仮想記憶媒体上のアクセス先に相当する。また、第１の実施形態における第４のアドレスは、ＬＢＡとして指定される仮想記憶媒体上のアクセス先に対応する記憶媒体２０上の位置に相当する。
【００４３】
アクセス先選択部２０６は、アクセス要求で指定された仮想記憶媒体のアクセス先領域に対応する記憶媒体２０のマッピング領域６２から、実際にアクセスコマンドを発行してＲｅａｄまたはＷｒｉｔｅを行う記憶媒体２０およびＬＢＡを選択する。アクセス先選択部２０６は、例えば、仮想記憶媒体が２台の記憶媒体２０を用いてミラーリングによる冗長化を行う場合、アクセスを行うマッピング領域６２を持つ記憶媒体２０を２台のいずれかから選択する。選択対象となるマッピング領域６２が複数存在する場合の選択アルゴリズムには、例えば、ミラーリングの場合には、ラウンドロビン等のアルゴリズムを適用可することができる。
【００４４】
コマンド登録部２０７は、アクセス先選択部２０６が選択した各マッピング領域６２に対するアクセスコマンドの情報を、コマンド管理テーブル２０８に登録する。また、コマンド登録部２０７は、各マッピング領域６２に対するアクセスコマンドの識別子を、アクセスコマンドに対応するアクセス要求の未完了コマンドＩＤ２０４５としてアクセス要求管理テーブル２０４に追加する。
【００４５】
コマンド管理テーブル２０８は、アクセス先選択部２０６で選択した、マッピング領域６２に対するアクセスコマンドに関する情報を管理する。
【００４６】
図８は、コマンド管理テーブル２０８に含まれる情報の例を示す図である。コマンド管理テーブル２０８の各エントリは、コマンドＩＤ２０８１と、アクセス要求ＩＤ２０８２と、アクセス種別２０８３と、記憶媒体ＩＤ２０８４と、先頭ＬＢＡ２０８５と、アクセスサイズ２０８６と、オフセット２０８７によって構成されている。
【００４７】
コマンドＩＤ２０８１は、コマンドの識別子を示している。アクセス要求ＩＤ２０８２は、コマンドに対応するアクセス要求の識別子を示している。アクセス種別２０８３は、アクセス要求がＲｅａｄかＷｒｉｔｅのいずれかであるかを示している。記憶媒体ＩＤ２０８４は、複数の記憶媒体のいずれであるかを示す識別子である。先頭ＬＢＡ２０８５およびアクセスサイズ２０８６は、ＬＢＡで指定されるアクセス先領域の先頭位置およびアクセス先領域の大きさをそれぞれ示している。オフセット２０８７は、仮想記憶媒体のアクセス先領域におけるコマンドの対応位置を示す。
【００４８】
コマンド管理テーブル２０８の各エントリに含まれるデータの形式は、図８に示した形式に限定されない。例えば、アクセス種別２０８３は、アクセス要求ＩＤ２０８２に対応するアクセス要求管理テーブル２０４のエントリに格納された、アクセス種別２０４２を参照する構成することで省略してもよい。また、メモリ転送範囲計算部２１０において計算が行われている各コマンドに対するメモリ１３における転送対象のアドレス範囲の情報が各エントリに格納されていてもよい。
【００４９】
コマンド発行部２０９は、コマンド管理テーブル２０８を参照して未発行のアクセスコマンドを選択し、メモリ転送範囲計算部２１０によってアクセスコマンドで指定する、メモリ１３の領域の物理アドレスを算出する。そして、前記選択したアクセスコマンドを、記憶媒体ＩＤ２０８４で示される記憶媒体２０に対して発行する。また、コマンド発行部２０９は、記憶媒体２０から発行したアクセスコマンドの完了通知を受け取り、アクセス要求実行制御部２０１に完了したコマンドに対応するコマンドＩＤ２０８１を通知する。加えて、コマンド発行部２０９は、コマンド管理テーブル２０８の完了したコマンドに対応するエントリを削除する。また、本実施形態のコマンド発行部２０９の機能は、第１の実施形態のコマンド発行手段４に相当する。
【００５０】
メモリ転送範囲計算部２１０は、マッピング領域６２に対する各アクセスコマンドについて、アクセスコマンドに対応するメモリ１３の領域の物理アドレスを算出する。メモリ転送範囲計算部２１０は、アクセスコマンドに対応するメモリ１３の領域の物理アドレスをアクセス要求ＩＤ２０８２に対応するＳＧリスト２０３２を参照して算出する。
【００５１】
図９は、仮想記憶媒体のアクセス先領域と、メモリ１３の領域の対応関係の例を示す図である。図９では、アプリケーション部１１が要求する仮想記憶媒体上のアクセス範囲である仮想アクセス領域８１に対して、先頭から順番にメモリ１３上の断片であるメモリ断片８２ｘ、８２ｙが対応している。また、図９では、メモリ断片８２ｘ、８２ｙに関する先頭の物理アドレスをそれぞれＰｘ、Ｐｙ、サイズをＳｘ、Ｓｙとして示している。
【００５２】
また、図７と同様に仮想記憶媒体の仮想アクセス領域８１に、記憶媒体２０のマッピング領域８３ａ、８３ｂ、８３ｃが対応し、各マッピング領域のサイズがＳａ、Ｓｂ、Ｓｃであるとする。また、Ｓａ＜Ｓｘ、Ｓｃ＜Ｓｙ、Ｓｘ＋Ｓｙ＝Ｓａ＋Ｓｂ＋Ｓｃであるとする。
【００５３】
このとき、マッピング領域８３ａに対するアクセスコマンドにおいて指定するメモリ１３の領域は、メモリ断片８２ｘの先頭からサイズＳａの領域、つまり物理アドレスＰｘ、サイズＳａの領域と表される。また、マッピング領域８３ｂに対するアクセスコマンドで指定するメモリ１３の領域は、マッピング領域８３ａに対するアクセスコマンドで指定したメモリ１３の領域に続く、物理アドレスＰｘ＋Ｓａで表される領域となる。しかし、図９よりマッピング領域８３ｂに対するアクセスコマンドが必要とするメモリ１３の領域は、メモリ断片８２ｘの残りの領域に加えて、メモリ断片８２ｙに跨る。よって、マッピング領域８３ｂに対するアクセスコマンドのメモリ１３の領域は、物理アドレスＰｘ＋Ｓａ、サイズＳｘ−Ｓａの断片と、この断片に続く物理アドレスＰｙ、サイズＳｂ−Ｓｘ＋Ｓａの断片で表される。また、マッピング領域８３ｃに対するアクセスコマンドで指定するメモリ１３の領域は、メモリ断片８２ｙの残りの領域、つまり物理アドレスＰｙ＋Ｓｂ−Ｓｘ＋Ｓａ、サイズＳｃで表される。
【００５４】
本実施形態のデータ転送制御部１２の各部位は、例えば、ＦＰＧＡなどの各処理を実行する回路を有する半導体装置によって形成することができる。また、本実施形態のデータ転送制御部１２の各部位における処理は、ＣＰＵ上においてコンピュータプログラムを実行することによって行われてもよい。データ転送制御部１２の各部位における処理を行うコンピュータプログラムは、各記録媒体に記録した状態で頒布することもできる。
【００５５】
メモリ１３は、アプリケーション部１１においてアプリケーションプログラムが各処理を行う際に必要なデータの保持と、保持しているデータの出力を行う記憶媒体である。メモリ１３は、アプリケーション部１１が記憶媒体２０を介して記憶媒体２０にアクセスする際に、記憶媒体２０との間で、直接、データ転送を行う。
【００５６】
メモリ１３は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）によって形成されている。メモリ１３は、ＤＲＡＭ以外の記憶素子を用いて形成されていてもよい。また、メモリ１３は、複数の種類の記憶媒体の組み合わせによって形成されていてもよい。
【００５７】
仮想記憶媒体部１４は、記憶媒体２０にマッピングされた仮想的な記憶媒体としての機能を有する。仮想記憶媒体部１４は、ファイルシステム等を記憶媒体２０にマッピングされた仮想記憶媒体上で提供する。
【００５８】
記憶媒体２０は、ファイルシステムにおけるファイルデータなどアプリケーション部１１における処理結果のデータや、処理に用いるデータなどを保存する記憶媒体である。本実施形態の記憶媒体２０は、ＮＡＮＤ型フラッシュメモリを記憶素子としたＳＳＤ（Solid State Drive）を用いて形成されている。記憶媒体２０は、記憶領域上へのアクセスを、ＬＢＡを用いたアドレス指定によって受け付ける。記憶媒体２０は、ＮＡＮＤ型フラッシュメモリ以外の不揮発性の半導体記憶素子を用いて形成されたものであってもよい。
【００５９】
記憶媒体２０は、ホスト装置１０に直接、接続されていなくてもよい。例えば、他の情報処理装置に接続されている記憶媒体２０にネットワークを介して、ホスト装置１０がアクセスする構成であってもよい。また、仮想記憶媒体部１４、または、記憶媒体２０および仮想記憶媒体部１４の両方がホスト装置１０とネットワークを介して接続されていてもよい。例えば、ＮＡＳ(Network Attached Storage)のように、ファイルシステムと記憶媒体を持ち、ネットワークを介してホスト装置に対してファイルアクセスを提供する構成としてもよい。また、他の情報処理装置で実行されているアプリケーションプログラムが、ホスト装置１０を介して記憶媒体２０へのアクセスを要求する構成であってもよい。
【００６０】
記憶媒体２０は、複数、備えられていてもよい。複数の記憶媒体２０を備える場合に、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムとして構成されていてもよい。複数の記憶媒体２０を備える構成とするときは、複数の記憶媒体２０の記憶領域をストライピングまたは冗長化するように仮想記憶媒体へのマッピングが行われる。そのような構成とすることで、ホスト装置１０は、複数の記憶媒体２０の記憶領域を、物理的な記憶媒体と同様にブロック単位のアクセスを行うことができる大容量の単一の仮想記憶媒体または障害への耐性を持った単一の仮想記憶媒体として用いることができる。また、記憶媒体の仮想化により、複数の記憶媒体２０をデータの特性に応じて使い分けることが可能になる。例えば、低速大容量の記憶媒体に対して高速小容量の記憶媒体をキャッシュとして使用するような単一の仮想記憶媒体を構築することもできる。
【００６１】
本実施形態の情報処理システムの動作について説明する。始めに、ホスト装置１０においてデータ転送制御部１２が、アプリケーション部１１からアクセス要求を受け取った際に、記憶媒体２０のアクセスコマンドを生成する際の動作について説明する。図１０は、本実施形態の情報処理システムにおいて、アクセス要求に基づいて記憶媒体２０のアクセスコマンドを生成する際の動作を示すフローチャートである。
【００６２】
アクセス要求実行制御部２０１は、アプリケーション部１１から仮想記憶媒体に対するアクセス要求の情報を受け取ると、メモリ領域管理テーブル２０３およびアクセス要求管理テーブル２０４に登録するアクセス要求ＩＤをアクセス要求に付加する。また、アクセス要求実行制御部２０１は、メモリアドレス変換部２０２にアクセス要求のメモリアドレス３４とアクセスサイズ３３を通知する（ステップＳ１０１）。
【００６３】
メモリアドレス３４等を受け取ると、メモリアドレス変換部２０２は、アプリケーション部１１がメモリアドレス３４とアクセスサイズ３３として指定する論理アドレス空間のメモリ１３の物理アドレス空間における配置を確認する。物理アドレス空間における配置を確認する際に、メモリアドレス変換部２０２は、領域の断片ごとにメモリ領域管理テーブル２０３のＳＧリスト２０３２に登録するための断片物理アドレス２０３３と断片サイズ２０３４を取得する。断片物理アドレス２０３３等を取得すると、メモリアドレス変換部２０２は、アクセス要求実行制御部２０１に対して作成したＳＧリスト２０３２を通知する（ステップＳ１０２）。
【００６４】
ＳＧリスト２０３２の通知を受け取ると、アクセス要求実行制御部２０１は、通知されたＳＧリスト２０３２を、アクセス要求ＩＤ２０３１と共にメモリ領域管理テーブル２０３に登録する（ステップＳ１０３）。
【００６５】
また、ステップＳ１０１においてアクセス要求ＩＤを付加すると、アクセス要求実行制御部２０１は、アプリケーション部１１からのアクセス要求に関する情報をアクセス要求管理テーブル２０４に登録する（ステップＳ１０４）。アクセス要求実行制御部２０１は、アクセス要求に関する情報として、アクセス種別３１、先頭ＬＢＡ３２、アクセスサイズ３３およびアクセス要求ＩＤをアクセス要求管理テーブル２０４に登録する。
【００６６】
アクセス要求に関する情報がアクセス要求管理テーブルに登録されると、記憶媒体アドレス変換部２０５は、登録されたアクセス要求について、仮想記憶媒体のアクセス先領域に対応するマッピング領域６２の記憶媒体ＩＤ６３と、先頭ＬＢＡ６４と、領域サイズ６５、オフセット６６を特定する（ステップＳ１０５）。
【００６７】
マッピング領域６２等を特定すると、アクセス先選択部２０６は、特定したマッピング領域６２から、アクセス要求の処理を行う際に実際にアクセスを行うマッピング領域６２を選択する（ステップＳ１０６）。
【００６８】
マッピング領域６２が選択されると、コマンド登録部２０７は、選択されたマッピング領域６２について、アクセス要求管理テーブル２０４の対応するアクセス要求のエントリに未完了コマンドＩＤ２０４５を新たに付与して追加する（ステップＳ１０７）。
【００６９】
未完了コマンドＩＤ２０４５が追加されると、コマンド登録部２０７は、未完了コマンドＩＤ２０４５の値と、アクセス要求管理テーブル２０４から取得したアクセス種別２０４２をアクセスコマンドとしてコマンド管理テーブル２０８に登録する。また、さらに、コマンド登録部２０７は、選択されたマッピング領域６２の記憶媒体ＩＤ６３、先頭ＬＢＡ６４、領域サイズ６５およびオフセット６６をアクセスコマンドとしてコマンド管理テーブル２０８に登録する（ステップＳ１０８）。
【００７０】
以上のステップＳ１０１からＳ１０８までの処理によって、データ転送制御部１２がアプリケーション部１１からのアクセス要求に対応する記憶媒体２０のアクセスコマンドを生成する動作が完了する。ステップＳ１０１からＳ１０８の処理順序は、図１０に示した順序である必要はない。例えば、ステップＳ１０３とステップＳ１０４の処理は、同時期に実行されてもよく、順序を入れ替えて実行されてもよい。
【００７１】
次に、アプリケーション部１１からのアクセス要求に基づいて記憶媒体２０のアクセスコマンドを実行し、アクセス要求の処理完了の確認を行う際の動作について説明する。図１１および図１２は、本実施形態のデータ転送制御部１２においてアクセス要求に基づいて記憶媒体２０のアクセスコマンドを実行し、アクセス要求の処理完了の確認を行う際の動作フローを示すフローチャートである。
【００７２】
コマンド発行部２０９は、コマンド管理テーブル２０８を参照して未発行のアクセスコマンドを選択して、選択したアクセスコマンドの情報をメモリ転送範囲計算部２１０に通知する（ステップＳ２０１）。
【００７３】
アクセスコマンドの情報を受け取ると、メモリ転送範囲計算部２１０は、アクセスコマンドに対応するメモリ１３の領域についてメモリ断片８２を特定し、それぞれのメモリ断片８２の物理アドレスおよびサイズを計算する（ステップＳ２０２）。メモリ転送範囲計算部２１０は、マッピング領域８３に対するアクセスコマンドの情報と、メモリ領域管理テーブル２０３に登録されたアクセス要求ＩＤ２０８２に対応したＳＧリスト２０３２を基に、メモリ断片８２の物理アドレスおよびサイズを計算する。
【００７４】
メモリ断片８２の物理アドレス等が計算されると、コマンド発行部２０９は、記憶媒体ＩＤ２０８４で指定される記憶媒体２０に対してアクセスコマンドを発行する（ステップＳ２０３）。コマンド発行部２０９は、コマンド管理テーブル２０８と、メモリ断片８２の物理アドレスおよびサイズの情報に基づいて、記憶媒体２０に対してアクセスコマンドを発行する。
【００７５】
アクセスコマンドの発行後に、アクセスコマンドの完了の通知を受け取ると、コマンド発行部２０９は、完了したアクセスコマンドに対応するコマンドＩＤ２０８１およびアクセス要求ＩＤ２０８２をコマンド管理テーブル２０８から取得する（ステップＳ２０４）。
【００７６】
完了したアクセスコマンドに対応する情報を取得すると、コマンド発行部２０９は、完了したアクセスコマンドに対応するコマンド管理テーブル２０８のエントリを削除する（ステップＳ２０５）。
【００７７】
また、アクセスコマンドの完了通知を受け取ると、コマンド発行部２０９は、アクセス要求実行制御部２０１に対して、完了したアクセスコマンドのコマンドＩＤ２０８１およびアクセス要求ＩＤ２０８２を通知する（ステップＳ２０６）。
【００７８】
アクセスコマンドの完了の通知を受け取ると、アクセス要求実行制御部２０１は、アクセス要求管理テーブル２０４において、対応するアクセス要求の未完了コマンドＩＤ２０４５から、通知されたコマンドＩＤを削除する（ステップＳ２０７）。
【００７９】
完了を通知されたアクセスコマンドに対応するアクセス要求について、未完了コマンドＩＤ２０４５にコマンドＩＤが１個以上残っている場合（ステップＳ２０８でＹｅｓ）、アクセス要求の完了の通知等を行わずに処理を終了する。
【００８０】
未完了コマンドＩＤ２０４５にコマンドＩＤが残っていない場合（ステップＳ２０８でＮｏ）、アクセス要求実行制御部２０１は、アクセス要求を行ったアプリケーション部１１に対して、仮想記憶媒体に対するアクセス要求の完了を通知する（ステップＳ２０９）。
【００８１】
アクセス要求実行制御部２０１は、完了したアクセス要求に対応するアクセス要求管理テーブル２０４のエントリを削除して処理を終了する（ステップＳ２１０）。
【００８２】
以上のステップＳ２０１からＳ２１０までの処理によって、アプリケーション部１１からのアクセス要求に応じて、記憶媒体２０のアクセスコマンドが実行され、アクセス要求の処理完了の確認の動作が行われる。また、ステップＳ２０１からＳ２１０の処理順序は、図１１および図１２に示した順序でなくてもよい。例えば、ステップＳ２０９とステップＳ２１０の処理は、同時期に実行されてもよく、また、順序を入れ替えて実行されてもよい。
【００８３】
次に、記憶媒体アドレス変換部２０５が仮想記憶媒体へのアクセス要求に基づいて、仮想アクセス領域６１に対応するマッピング領域６２を特定する際の動作について説明する。図１３および図１４は、本実施形態のデータ転送制御部１２において、アクセス要求に基づいて、仮想アクセス領域に対応するマッピング領域を特定する際の動作フローを示すフローチャートである。
【００８４】
アクセス要求を受けると、記憶媒体アドレス変換部２０５は、マッピング領域６２の特定を行う基準点を仮想アクセス領域６１の先頭に設定する（ステップＳ３０１）。
【００８５】
基準点を設定すると、記憶媒体アドレス変換部２０５は、仮想アクセス領域６１上の基準点に対応させる記憶媒体２０の記憶媒体ＩＤ６３と先頭ＬＢＡ６４をマッピングの管理情報から取得する（ステップＳ３０２）。
【００８６】
記憶媒体アドレス変換部２０５は、マッピングの管理情報を参照して、記憶媒体２０において仮想アクセス領域６１上の基準点に対応する位置から連続的にマッピングされている領域のサイズを取得する（ステップＳ３０３）。
【００８７】
領域のサイズを取得すると、記憶媒体アドレス変換部２０５は、連続的にマッピングされている記憶媒体２０の領域のサイズと、仮想記憶媒体において基準点から仮想アクセス領域６１の末尾までの領域のサイズを比較する（ステップＳ３０４）。
【００８８】
記憶媒体２０上の連続的なマッピング領域が、基準点から仮想アクセス領域６１の末尾までより大きい場合（ステップＳ３０５でＹｅｓ）、記憶媒体アドレス変換部２０５は、仮想アクセス領域６１の末尾までに相当する部分をマッピング領域６２に追加する。このとき追加されるマッピング領域６２は、ステップＳ３０２で取得された記憶媒体ＩＤ６３、先頭ＬＢＡ６４、領域サイズ６５が基準点のＬＢＡから仮想アクセス領域６１の末尾までのサイズの領域として設定される。また、このとき追加されるマッピング領域６２は、オフセット６６が仮想アクセス領域６１上の先頭から基準点までのサイズに等しい領域として設定される（ステップＳ３０６）。
【００８９】
また、記憶媒体２０の連続的にマッピング領域が、基準点から仮想アクセス領域６１の末尾までより小さい場合（ステップＳ３０５でＮｏ）、記憶媒体アドレス変換部２０５は、連続的にマッピング出来る範囲をマッピング領域６２に追加する。このとき追加されるマッピング領域６２は、ステップＳ３０２で取得された記憶媒体ＩＤ６３、先頭ＬＢＡ６４、領域サイズ６５が連続的にマッピングされている領域のサイズの領域として設定される。また、このとき追加されるマッピング領域６２は、オフセット６６が仮想アクセス領域６１上の先頭から基準点までのサイズに等しい領域として設定される（ステップＳ３０７）。
【００９０】
仮想アクセス領域６１に対応するマッピング領域６２を設定すると、記憶媒体アドレス変換部２０５は、仮想アクセス領域６１上の基準点を再設定する。記憶媒体アドレス変換部２０５は、現在の基準点からステップＳ３０７で追加したマッピング領域の領域サイズ６５に相当する分、仮想アクセス領域６１の末尾の方向に基準点を移動させる。基準点を移動させると、記憶媒体アドレス変換部２０５は、ステップＳ３０２からの処理を実行する（ステップＳ３０８）。
【００９１】
次に、ステップＳ２０２において、メモリ転送範囲計算部２１０がマッピング領域８３に対するアクセスコマンドに対応する際に、マッピング領域８３との間でデータ転送を行うメモリ断片８２を特定する動作について説明する。図１５および図１６は、本実施形態のデータ転送制御部１２においてマッピング領域との間でデータ転送を行うメモリ断片を特定する際の動作フローを示すフローチャートである。
【００９２】
メモリ転送範囲計算部２１０は、アクセスコマンドに対応するメモリ断片８２を特定する処理を行う基準点Ｐを、通知されたアクセスコマンドのオフセットに設定する（ステップＳ４０１）。
【００９３】
また、メモリ転送範囲計算部２１０は、アクセスコマンドの実行に必要なメモリ断片８２の残りサイズＳを、アクセスコマンドのアクセスサイズに設定する（ステップＳ４０２）。
【００９４】
メモリ転送範囲計算部２１０は、メモリ領域管理テーブル２０３に登録された、アクセスコマンドに対応するアクセス要求のＳＧリスト２０３２から、基準点Ｐが含まれるメモリ１３の断片および物理アドレスを特定する（ステップＳ４０３）。
【００９５】
メモリ１３の断片を特定すると、メモリ転送範囲計算部２１０は、メモリ１３の断片について、基準点Ｐの物理アドレスから断片の末尾までのサイズＲを計算する（ステップＳ４０４）。
【００９６】
サイズＲを計算すると、メモリ転送範囲計算部２１０は、計算したサイズＲと、必要なメモリ断片の残りサイズＳを比較する（ステップＳ４０５）。
【００９７】
ＳがＲ以下である場合（ステップＳ４０６でＹｅｓ）、メモリ転送範囲計算部２１０は、先頭の物理アドレスが基準点Ｐの物理アドレスであり、サイズがＳのメモリ断片８２を特定結果に追加して処理を終了する（ステップＳ４０７）。
【００９８】
Ｓ＞Ｒである場合（ステップＳ４０６でＮｏ）、メモリ転送範囲計算部２１０は、先頭の物理アドレスが基準点Ｐの物理アドレスであり、サイズがＲのメモリ断片８２を特定結果に追加する（ステップＳ４０８）。
【００９９】
サイズＲのメモリ断片８２を特定結果に追加すると、メモリ転送範囲計算部２１０は、アクセスコマンドに対応するメモリ断片８２を特定する処理を行う基準点Ｐを、サイズＲを加えたアドレスに設定する（ステップＳ４０９）。
【０１００】
基準点ＰにサイズＲを加えたアドレスに設定すると、メモリ転送範囲計算部２１０は、アクセスコマンドの実行に必要なメモリ断片の残りサイズＳからサイズＲを減算して、ステップＳ４０３からの処理を実行する（ステップＳ４１０）。
【０１０１】
以上のステップＳ４０１からＳ４１０までの処理を行うことで、ステップＳ２０２においてメモリ転送範囲計算部２１０がマッピング領域８３に対するアクセスコマンドについて、マッピング領域８３とデータ転送を行うメモリ断片８２を特定する動作が完了する。また、ステップＳ４０１からＳ４１０の処理順序は、図１５および図１６に示した順序でなくてもよい。例えば、ステップＳ４０９とステップＳ４１０の処理は、同時期に実行されてもよく、順序を入れ替えて実行されてもよい。
【０１０２】
本実施形態の情報処理システムは、物理的な記憶媒体２０と対応するようにマッピングされた仮想記憶媒体を介して記憶媒体２０にアクセスを行う。本実施形態の情報処理システムは、アクセス処理途中のオーバーヘッドの発生を抑制し、アクセス性能を向上するために、仮想記憶媒体とアクセス要求元の管理するメモリ１３の間で直接、データ転送を行う。すなわち、本実施形態の情報処理システムは、仮想記憶媒体においてデータを実際に格納する物理記憶媒体と、アクセス要求元のホスト装置１０のメモリ１３との間で、直接ＲｅａｄまたはＷｒｉｔｅされたデータを転送している。そのような構成とすることで、本実施形態の情報処理システムは、バッファリングに伴うメモリコピーの発生を回避している。
【０１０３】
通常の仮想記憶媒体では、ホスト装置からのアクセス要求に対してアクセス要求先として指定されたファイル名やＬＢＡ等の識別子を基に、アクセス範囲に対応する物理記憶媒体および物理記憶媒体におけるＬＢＡが計算される。そして、アクセス範囲に含まれる記憶媒体にアクセスコマンドを発行され、記憶媒体とアクセス要求元のホスト装置のメモリ領域との間のデータ転送は、メモリ上のバッファ領域を経由して行われる。すなわち、仮想記憶媒体がアクセス要求元に代わり、物理記憶媒体に対するアクセスコマンド発行と、データ転送を行う。
【０１０４】
一方で本実施形態では、通常の仮想記憶媒体とは異なり、データ転送制御部１２がアクセス要求元に代わって行う処理は、物理記憶媒体である記憶媒体２０に対するアクセスコマンド発行のみである。データ転送は、物理記憶媒体である記憶媒体２０とアクセス要求元のホスト装置１０のメモリ１３の記憶領域との間で直接、行われる。そのために、データ転送制御部１２は、記憶媒体２０に対して発行するアクセスコマンドごとに、アクセス要求元であるホスト装置１０のメモリ１３の対応するアドレス範囲を計算して、データ転送を行う領域を指定する。また、記憶媒体２０に対するアクセスコマンドは、転送するデータの本体をコマンドや応答に直接含めずに、記憶媒体２０とメモリ１３の間でデータ転送を行うメモリ領域のアドレス範囲を指定する形式のコマンドとして設定される。
【０１０５】
通常、情報処理装置は、アクセス要求を行うアプリケーションプログラム毎に個別の論理アドレス空間を用いてメモリアクセスを行う。よって、データ転送制御部１２は、物理記憶媒体とアクセス要求元のメモリ領域との間で直接、データ転送を行えるように、物理記憶媒体に対するアクセスコマンドの発行前に論理アドレスを物理アドレスに変換する。
【０１０６】
また、アクセス要求元のアプリケーションプログラムで連続したメモリ領域であっても、物理的なメモリでは必ずしも連続しておらず、断片化された状態となりうる。そのため、データ転送制御部１２は、物理記憶媒体に発行するホスト側のメモリ領域の対応するアドレス範囲の計算についても、アドレス範囲内に含まれるメモリの断片の物理アドレスおよびコマンドによるアクセス範囲内での各断片のオフセットを計算している。
【０１０７】
上記のような構成とすることで、本実施形態の情報処理システムは、仮想記憶媒体を介してホスト装置１０から記憶媒体２０上の領域にアクセスを行う際に、仮想記憶媒体を介して、直接的なメモリ１３とのデータ転送を実現している。そのため、本実施形態の情報処理システムは、オーバーヘッドを削減し、ホスト装置１０からのアクセス性能を向上することができる。
【０１０８】
本実施形態の情報処理装置は、アプリケーション部１１からのアクセス要求で指定された仮想記憶媒体上の領域に対応する記憶媒体２０上の領域を、データ転送制御部１２が算出している。データ転送制御部１２は、仮想記憶媒体上のアクセス先である仮想アクセス領域に対応する記憶媒体２０上の位置を特定し、データ転送の相手先のメモリ１３の物理アドレスとともにアプリケーション部１１のアクセス要求を記憶媒体２０に送っている。よって、仮想アクセス領域に対応する記憶媒体２０上の位置を特定し、データ転送の相手先のメモリ１３の物理アドレスを受け取った記憶媒体２０は、メモリ１３との間で直接、データ転送を行うことができる。
【０１０９】
ホスト装置１０のアプリケーション部１１は、記憶媒体２０にアクセスする際に仮想記憶媒体上のアクセス先をＬＢＡによって指定するが、データ転送制御部１２が実際の記憶媒体２０上の位置に変換している。そのため、本実施形態では、ホスト側のアプリケーション部１１が記憶媒体２０上の実際のアドレスを直接、認識できない場合にも記憶媒体２０にアクセスを要求することができる。また、そのような構成とすることで、記憶媒体２０は、メモリ１３との間で直接、データ転送を行うことができるようになるため、アプリケーション部１１等がデータ転送処理を行う際にメモリ１３上でのバッファリング処理を必要としない。そのため、メモリ１３と記憶媒体２０間におけるデータ転送に要する時間を抑制することができる。以上より、本実施形態の情報処理システムは、ＮＡＮＤ型フラッシュメモリによって形成された記憶媒体に、仮想記憶媒体を介してアクセスする際に、性能低下を抑制することができる。
【符号の説明】
【０１１０】
１    アクセス要求制御手段
２    第１のアドレス特定手段
３    第２のアドレス特定手段
４    コマンド発行手段
１０    ホスト装置
１１    アプリケーション部
１２    データ転送制御部
１３    メモリ
１４    仮想記憶媒体部
２０    記憶媒体
３１    アクセス種別
３２    先頭ＬＢＡ
３３    アクセスサイズ
３４    メモリアドレス
６１    仮想アクセス領域
６２    マッピング領域
６３    記憶媒体ＩＤ
６４    先頭ＬＢＡ
６５    領域サイズ
６６    オフセット
８１    仮想アクセス領域
８２    メモリ断片
８３    マッピング領域
２０１    アクセス要求実行制御部
２０２    メモリアドレス変換部
２０３    メモリ領域管理テーブル
２０４    アクセス要求管理テーブル
２０５    記憶媒体アドレス変換部
２０６    アクセス先選択部
２０７    コマンド登録部
２０８    コマンド管理テーブル
２０９    コマンド発行部
２１０    メモリ転送範囲計算部
２０３１    アクセス要求ＩＤ
２０３２    ＳＧリスト
２０３３    断片物理アドレス
２０３４    断片サイズ
２０４１    アクセス要求ＩＤ
２０４２    アクセス種別
２０４３    先頭ＬＢＡ
２０４４    アクセスサイズ
２０４５    未完了コマンドＩＤ
２０８１    コマンドＩＤ
２０８２    アクセス要求ＩＤ
２０８３    アクセス種別
２０８４    記憶媒体ＩＤ
２０８５    先頭ＬＢＡ
２０８６    アクセスサイズ
２０８７    オフセット
【図１】
2019008418.tif 000003
【図２】
2019008418.tif 000004
【図３】
2019008418.tif 000005
【図４】
2019008418.tif 000006
【図５】
2019008418.tif 000007
【図６】
2019008418.tif 000008
【図７】
2019008418.tif 000009
【図８】
2019008418.tif 000010
【図９】
2019008418.tif 000011
【図１０】
2019008418.tif 000012
【図１１】
2019008418.tif 000013
【図１２】
2019008418.tif 000014
【図１３】
2019008418.tif 000015
【図１４】
2019008418.tif 000016
【図１５】
2019008418.tif 000017
【図１６】
2019008418.tif 000018