(57)【要約】【課題】ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送の性能を向上することができるコントローラを提供する。【解決手段】コントローラを、アクセス要求受信手段１と、転送領域算出手段２と、記憶媒体選択手段３と、転送処理内容通知手段４を備える構成とする。転送領域算出手段２は、ホストから受信した仮想的な記憶領域上の領域を指定する第１のアドレスに対応する記憶媒体上の領域を指定する第３のアドレスを算出する。記憶媒体選択手段３は、記憶媒体の負荷を監視し、最も負荷の小さい第２の記憶媒体を選択する。新たに第２の記憶媒体が選択されたとき、転送領域算出手段２は、第２の記憶媒体上の第３のアドレスを算出する。転送処理内容通知手段４は、第２のアドレスと第３のアドレスを転送処理内容通知として出力する。第２のアドレスは、データの転送を行うホストの領域を指定する。【選択図】      図１
2019212161.tif 000002
【特許請求の範囲】
【請求項１】
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第１のアドレスと、複数の記憶媒体のうち前記第１のアドレスに対応する前記記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第２のアドレスとを受信するアクセス要求受信手段と、
前記第１のアドレスに基づいて、前記第１のアドレスに対応する前記記憶媒体を選択し、選択した前記記憶媒体上の領域を指定する第３のアドレスを算出する転送領域算出手段と、
前記記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい前記記憶媒体を第２の記憶媒体として選択する記憶媒体選択手段と、
前記アクセス要求の種類と、前記記憶媒体上の前記第３のアドレスに対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレスに対応する領域との間のデータ転送を実行する要求を、前記第２のアドレスおよび前記第３のアドレスとともに転送処理内容通知として出力する転送処理内容通知手段と
を備え、
前記転送領域算出手段が選択した前記記憶媒体と、前記記憶媒体選択手段が選択した前記第２の記憶媒体が異なっていたときに、前記転送領域算出手段は、前記第２の記憶媒体上における領域を指定するアドレスを前記第３のアドレスとして算出し、
前記転送処理内容通知手段は、前記第２の記憶媒体上における領域を指定する前記第３のアドレスを前記転送処理内容通知として出力することを特徴とするコントローラ。
【請求項２】
前記アクセス要求受信手段は、前記第２のアドレスとして前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記記憶媒体上の前記第３のアドレスに対応する領域と、前記ホストのメモリアドレス空間上の前記第２のアドレスに対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知手段をさらに備えることを特徴とする請求項１または２に記載のコントローラ。
【請求項４】
前記転送領域算出手段は、前記第１のアドレスに対応する前記記憶媒体上の領域が複数の前記記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第３のアドレスとして指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第４のアドレスを前記第２のアドレスを基に特定することを特徴とする請求項１から３いずれかに記載のコントローラ。
【請求項５】
前記第１のアドレスと、前記第１のアドレスに対応する前記記憶媒体の識別子と、前記記憶媒体上の前記第３のアドレスを関連づけた情報をマッピングテーブルとして記憶しているマッピングテーブル記憶手段をさらに備え、
前記転送領域算出手段は、前記第２の記憶媒体上における領域を指定する前記第３のアドレスを算出したときに、算出した前記第２の記憶媒体の識別子と前記第３のアドレスの情報を基に前記マッピングテーブルを更新することを特徴とする請求項１から４いずれかに記載のコントローラ。
【請求項６】
請求項１から５いずれかに記載のコントローラと、
前記コントローラの要求に基づいて、仮想的な記憶領域のデータを保存している記憶媒体と、前記ホストとの間で前記コントローラを介さずにデータ転送を行うデータ転送手段を有するデータ転送手段と
を備え、
前記データ転送手段は、前記コントローラから出力される前記転送処理内容通知に基づいて、前記記憶媒体上の前記第３のアドレスに対応する領域と、前記ホストのメモリアドレス空間上の前記第２のアドレスに対応する領域との間で、前記コントローラを介さずにデータ転送を行うことを特徴とする計算機システム。
【請求項７】
前記データ転送手段は、前記コントローラまたは前記ホストから通知された記憶媒体に対して、前記第２のアドレスおよび前記第３のアドレスを通知し、前記第２のアドレスが示す前記ホストのメモリアドレス空間上の領域と、前記記憶媒体上の前記第３のアドレスが指し示す記憶領域との間における、ＤＭＡ転送に基づくデータ転送を制御することを特徴とする請求項６に記載の計算機システム。
【請求項８】
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第１のアドレスと、複数の記憶媒体のうち前記第１のアドレスに対応する前記記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第２のアドレスとを受信し、
前記第１のアドレスに基づいて、前記第１のアドレスに対応する前記記憶媒体上の領域を指定する指定するアドレスを前記第３のアドレスとして算出し、
記記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい前記記憶媒体を第２の記憶媒体として選択し、
前記アクセス要求の種類と、前記第２の記憶媒体上の前記第３のアドレスに対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレスに対応する領域との間のデータ転送を実行する要求を、前記第２のアドレスおよび前記第３のアドレスとともに転送処理内容通知として出力することを特徴とするデータ転送方法。
【請求項９】
前記第１のアドレスに対応する前記記憶媒体上の領域が複数の前記記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第３のアドレスとして指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第４のアドレスを前記第２のアドレスを基に特定することを特徴とする請求項８に記載のデータ転送方法。
【請求項１０】
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第１のアドレスと、複数の記憶媒体のうち前記第１のアドレスに対応する前記記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第２のアドレスとを受信する処理と、
前記第１のアドレスに基づいて、前記第１のアドレスに対応する前記記憶媒体上の領域を指定するアドレスを前記第３のアドレスとして算出する処理と、
前記記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい前記記憶媒体を第２の記憶媒体として選択する処理と、
前記アクセス要求の種類と、前記第２の記憶媒体上の前記第３のアドレスに対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレスに対応する領域との間のデータ転送を実行する要求を、前記第２のアドレスおよび前記第３のアドレスとともに転送処理内容通知として出力する処理と
をコンピュータに実行させることを特徴とする転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送技術に関するものであり、特に、仮想記憶媒体にマッピングされた記憶媒体とホストとの間で直接、データ転送を行う技術に関するものである。
【背景技術】
【０００２】
計算機システムにおいて、ＨＤＤ（Hard Disk Drive）に代えてＳＳＤ（Solid State Drive）を用いることによるアクセス性能の向上が広く行われている。また、ストレージの性能や信頼性を向上させる手段として、ＲＡＩＤ（Redundant Array of Inexpensive Disks）によるストライピングやミラーリングが用いられる。ＲＡＩＤでは、複数の記憶媒体の記憶領域を単一の仮想的な記憶媒体または記憶領域のような仮想記憶媒体にマッピングすることでストライピングやミラーリングが実現される。アクセス元であるホストは、ＲＡＩＤによって提供される仮想記憶媒体にアクセスを行うことで、マッピングを意識せずにストレージの性能や信頼性を向上することができる。
【０００３】
ＲＡＩＤを実現するコントローラは、ホストに対して仮想記憶媒体として動作するため、ホストから仮想記憶媒体に対するアクセス要求に応じて、ホストと記憶媒体との間におけるデータ転送の制御を行う。そのため、コントローラを用いてホストが仮想記憶媒体にアクセスして行われるホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送における性能の向上を図るための技術の開発が行われている。そのような、ホストが仮想記憶媒体にアクセスして行われるホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送の性能を向上する技術としては、例えば、特許文献１および特許文献２のような技術が開示されている。
【０００４】
特許文献１は、複数の記憶媒体それぞれの負荷状態を監視し、記憶媒体の変更が必要と判断されたときに記憶媒体の変更を行うストレージ制御方法に関するものである。特許文献１のストレージ装置は、書き込み先として不適な記憶媒体が生じたときに、負荷状態の条件を満たす他の記憶媒体に書き込み先の変更を行っている。特許文献２にも、同様に、負荷の高い記憶媒体から負荷の低い記憶媒体にデータの書き込み先を変更する技術が開示されている。
【０００５】
また、非特許文献１には、記憶媒体のアクセス規格であるＮＶＭ  Ｅｘｐｒｅｓｓ(登録商標)(Non-Volatile Memory Express)が示されている。非特許文献１の技術に基づいた記憶媒体は、データ転送を行うメモリのアドレスと記憶媒体上のＬＢＡ（Logical Block Address）の範囲をＲｅａｄとＷｒｉｔｅの各コマンドで指定することで、メモリと記憶媒体との間でＤＭＡ(Direct Memory Access)に相当する動作を行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１６／０１３２０２号
【特許文献２】特開２００４−００５６３４号公報
【非特許文献】
【０００７】
【非特許文献１】“ＮＶＭ  Ｅｘｐｒｅｓｓ  １．３  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”、［Ｏｎｌｉｎｅ］、２０１７年５月１日、ＮＶＭ  Ｅｘｐｒｅｓｓ、［２０１８年４月１２日検索］、インターネット＜ＵＲＬ：http://www.nvmexpress.org/wp-content/uploads/NVM_Express_Revision_1.3.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１および特許文献２の技術は次のような点で十分ではない。特許文献１および特許文献２では、ホストと記憶媒体の間でコントローラを介してデータ転送を行う際に、コントローラと記憶媒体との間の接続帯域やコントローラの処理能力がボトルネックになり得る。また、非特許文献１の技術では、ＳＳＤを用いている記憶媒体へのアクセス時にホストのメモリとの間で直接データ転送を行う場合には、物理記憶媒体に対するＬＢＡの指定が必要である。しかし、仮想記憶媒体に対するアクセスでは、仮想記憶媒体が記憶媒体の構成や記憶媒体に対するデータの配置を管理し、これらの情報をアクセス元であるホストやホストで実行されるコンピュータプログラムから隠蔽する。そのため、非特許文献１の技術では、仮想記憶媒体にアクセスする際にホスト側からデータ転送を行う相手となる記憶媒体およびアクセス先となるＬＢＡの特定が困難である。よって、特許文献１、特許文献２および非特許文献１の技術では、仮想記憶媒体を介したホストと記憶媒体間のデータ転送の性能を向上するための技術としては十分ではない。
【０００９】
本発明は、上記の課題を解決するため、ホストのメモリ空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送の性能を向上することができるコントローラを提供することを目的としている。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、本発明のコントローラは、アクセス要求受信手段と、転送領域算出手段と、記憶媒体選択手段と、転送処理内容通知手段を備えている。アクセス要求受信手段は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第１のアドレスと、第２のアドレスを受信する。第１のアドレスは、仮想的な記憶領域上のアクセス先の領域を指定する。第２のアドレスは、複数の記憶媒体のうち第１のアドレスに対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。転送領域算出手段は、第１のアドレスに基づいて、第１のアドレスに対応する記憶媒体を選択し、選択した記憶媒体上の領域を指定する第３のアドレスを算出する。記憶媒体選択手段は、記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい記憶媒体を第２の記憶媒体として選択する。転送処理内容通知手段は、アクセス要求の種類と、記憶媒体上の第３のアドレスに対応する領域と、ホストのメモリアドレス空間上の第２のアドレスに対応する領域との間のデータ転送を実行する要求を、第２のアドレスおよび第３のアドレスとともに転送処理内容通知として出力する。また、転送領域算出手段が選択した記憶媒体と、記憶媒体選択手段が選択した第２の記憶媒体が異なっていたときに、転送領域算出手段は、第２の記憶媒体上における領域を指定するアドレスを第３のアドレスとして算出する。転送処理内容通知手段は、第２の記憶媒体上における領域を指定する第３のアドレスを転送処理内容通知として出力する。
【００１１】
本発明のデータ転送方法は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第１のアドレスと、第２のアドレスを受信する。第１のアドレスは、仮想的な記憶領域上のアクセス先の領域を指定する。第２のアドレスは、複数の記憶媒体のうち第１のアドレスに対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。本発明のデータ転送方法は、第１のアドレスに基づいて、第１のアドレスに対応する記憶媒体上の領域を指定するアドレスを第３のアドレスとして算出する。本発明のデータ転送方法は、記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい記憶媒体を第２の記憶媒体として選択する。本発明のデータ転送方法は、アクセス要求の種類と、第２の記憶媒体上の記第３のアドレスに対応する領域と、ホストのメモリアドレス空間上の第２のアドレスに対応する領域との間のデータ転送を実行する要求を、第２のアドレスおよび前記第３のアドレスとともに転送処理内容通知として出力する。
【発明の効果】
【００１２】
本発明によると、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送の性能を向上することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態の構成の概要を示す図である。
【図２】本発明の第２の実施形態の構成の概要を示す図である。
【図３】本発明の第２の実施形態のコントローラの構成を示す図である。
【図４】本発明の第２の実施形態のマッピングテーブルの構成の例を示す図である。
【図５】本発明の第２の実施形態における記憶領域上のアドレスの計算方法を模式的に示した図である。
【図６】本発明の第２の実施形態におけるマッピングテーブルの一部を示す図である。
【図７】本発明の第２の実施形態のコントローラの動作フローを示す図である。
【図８】本発明の第２の実施形態のデータ転送実行部の動作フローを示す図である。
【図９】本発明の第２の実施形態における情報の流れの例を模式的に示す図である。
【図１０】本発明の第２の実施形態における情報の流れの例を模式的に示す図である。
【図１１】本発明の第３の実施形態の構成の概要を示す図である。
【図１２】本発明の第３の実施形態のコントローラの構成を示す図である。
【図１３】本発明の第３の実施形態における記憶領域上のアドレスの計算方法を模式的に示した図である。
【図１４】本発明の第３の実施形態のコントローラの動作フローを示す図である。
【図１５】本発明の第３の実施形態のコントローラの動作フローを示す図である。
【図１６】本発明の第３の実施形態のデータ転送実行部の動作フローを示す図である。
【図１７】本発明の第３の実施形態における情報の流れの例を模式的に示す図である。
【図１８】本発明の第３の実施形態における情報の流れの例を模式的に示す図である。
【図１９】本発明の各実施形態におけるコントローラおよびデータ転送実行部の処理を行うコンピュータの構成の例を示す図である。
【発明を実施するための形態】
【００１４】
（第１の実施形態）
本発明の第１の実施形態について図を参照して詳細に説明する。本実施形態のコントローラは、アクセス要求受信手段１と、転送領域算出手段２と、記憶媒体選択手段３と、転送処理内容通知手段４を備えている。アクセス要求受信手段１は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第１のアドレスと、第２のアドレスを受信する。第１のアドレスは、仮想的な記憶領域上のアクセス先の領域を指定する。第２のアドレスは、複数の記憶媒体のうち第１のアドレスに対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。転送領域算出手段２は、第１のアドレスに基づいて、第１のアドレスに対応する記憶媒体を選択し、選択した記憶媒体上の領域を指定する第３のアドレスを算出する。記憶媒体選択手段３は、記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい記憶媒体を第２の記憶媒体として選択する。転送処理内容通知手段４は、アクセス要求の種類と、記憶媒体上の第３のアドレスに対応する領域と、ホストのメモリアドレス空間上の第２のアドレスに対応する領域との間のデータ転送を実行する要求を、第２のアドレスおよび第３のアドレスとともに転送処理内容通知として出力する。また、転送領域算出手段２が選択した記憶媒体と、記憶媒体選択手段３が選択した第２の記憶媒体が異なっていたときに、転送領域算出手段２は、第２の記憶媒体上における領域を指定するアドレスを第３のアドレスとして算出する。転送処理内容通知手段４は、第２の記憶媒体上における領域を指定する第３のアドレスを転送処理内容通知として出力する。
【００１５】
本実施形態のコントローラのアクセス要求受信手段１は、接続先のホストから、仮想的な記憶領域である仮想記憶媒体へのアクセス要求と、第１のアドレスと、第２のアドレスを受信する。転送領域算出手段２は、第１のアドレスに基づいて、第１のアドレスに対応する記憶媒体上の領域を指定する第３のアドレスを特定している。記憶媒体選択手段３は、記憶媒体のそれぞれの負荷を監視し、最も負荷の小さい記憶媒体を第２の記憶媒体として選択している。また、転送領域算出手段２は、自ユニットが選択した記憶媒体と第２の記憶媒体が異なっていたときに、第２の記憶媒体上において第３のアドレスを計算している。転送処理内容通知手段４は、アクセス要求の種類と、第２のアドレスおよび第３のアドレスを転送処理内容通知として出力している。そのため、転送処理内容通知を基にホストと記憶媒体間でコントローラを介さずにデータ転送を行うことが可能になるので、コントローラの負荷が低減し、コントローラに起因するデータ転送の性能を向上することができる。また、記憶媒体選択手段３によって低負荷の記憶媒体を選択してデータ転送を行うのでデータ転送に要する時間も抑制することができる。その結果、本実施形態のコントローラを用いることで、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上することができる。
【００１６】
（第２の実施形態）
本発明の第２の実施形態について図を参照して詳細に説明する。図２は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト１０と、コントローラ２０と、データ転送実行部３０と、記憶媒体４０を備えている。
【００１７】
本実施形態の計算機システムは、複数の記憶媒体４０の記憶領域を、単一の仮想的な記憶媒体である仮想記憶媒体にマッピングし、ホストから仮想記憶媒体を介して記憶媒体４０にアクセスするＲＡＩＤ（Redundant Array of Inexpensive Disks）等の記憶領域の管理を行うシステムによって構成されている。本実施形態の計算機システムは、データ転送の実行をデータ転送実行部３０が行い、データ転送時は、ホスト１０のメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体との間でコントローラ２０を介さずにデータ転送を行う。
【００１８】
ホスト１０の構成について説明する。ホスト１０は、メモリ１１と、アプリケーション実行部１２を備えている。
【００１９】
メモリ１１は、ホスト１０の主記憶領域としての機能を有する。メモリ１１は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）を用いて構成される。メモリ１１は、ＤＲＡＭ以外の記憶デバイスを用いて構成されていてもよい。アプリケーション実行部１２は、メモリ１１にアクセスし、データの書き込みおよびデータの読み出しを行う。また、メモリ１１は、記憶媒体４０の間で互いにデータ転送を行う。メモリ１１は、ホスト１０に直接またはネットワークを介して接続され、ホスト１０のメモリアドレス空間を経由して入出力を行うＧＰＵ（Graphics Processing Units）やＦＰＧＡ（Field Programmable Gate Array）等の半導体装置であってもよい。
【００２０】
アプリケーション実行部１２は、アプリケーションプログラムを実行し各処理を行う。アプリケーション実行部１２は、コントローラ２０を介して仮想記憶媒体１００にアクセスし、各処理を行う際に必要なデータの読み出しや処理結果の書き込みを行う。アプリケーション実行部１２は、ホスト１０上の１個または複数のＣＰＵ（Central Processing Unit）と、アプリケーションプログラムを記憶する記憶装置等によって構成されている。アプリケーション実行部１２は、アプリケーションプログラムをＣＰＵ等の汎用にプロセッサによって実行する構成に代えて、GPUでアプリケーションを実行する構成や、ＦＰＧＡ等のあらかじめ設定された回路を用いて各処理を実行する構成であってもよい。
【００２１】
アプリケーション実行部１２は、コントローラ２０にアクセス要求を行うことでストレージである仮想記憶媒体に対してアクセスする。アプリケーション実行部１２は、仮想記憶媒体にアクセスする際に、アクセス要求の種類と、仮想記憶媒体上のアクセス対象の領域を指し示すアドレスと、ホスト１０のメモリアドレス空間上のアドレスをアクセス要求としてコントローラ２０に送る。
【００２２】
アクセス要求の種類は、ＲｅａｄとＷｒｉｔｅのいずれの動作を行うのかを示す情報である。仮想記憶媒体上のアクセス対象の領域を指し示すアドレスは、ＬＢＡ（Logical Block Address）等の形式で表されている。ホスト１０のメモリアドレス空間上のアドレスは、書き込みまたは読み出しを行うデータを格納するホスト１０のメモリアドレス空間上の領域を指し示すアドレスである。
【００２３】
コントローラ２０の構成について説明する。図３は、本実施形態のコントローラ２０の構成を示したものである。本実施形態のコントローラ２０は、アクセス要求受信部２１と、転送ストレージ領域算出部２２と、転送処理内容通知部２３と、性能平準化制御部２４と、マッピングテーブル記憶部２５を備えている。
【００２４】
アクセス要求受信部２１は、ホスト１０のアプリケーション実行部１２から仮想記憶媒体１００へのアクセス要求を受け取る。アクセス要求は、アクセス要求の種類、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスおよびメモリ１１上のアクセス対象の領域に対応するホスト１０のメモリアドレス空間上の領域を指し示すアドレスの情報によって構成されている。アクセス要求の種類は、ＲｅａｄまたはＷｒｉｔｅのいずれであるかを表す情報である。アクセス要求受信部２１は、アクセス要求に含まれる情報のうちアドレスに関する情報を転送ストレージ領域算出部２２に送る。また、アクセス要求受信部２１は、アクセス要求に含まれる情報のうちアクセス要求の種類の情報を転送処理内容通知部２３に送る。本実施形態のアクセス要求受信部２１の機能は、第１の実施形態のアクセス要求受信手段１に相当する。
【００２５】
転送ストレージ領域算出部２２は、アクセス要求で指定された仮想記憶媒体のメモリアドレス空間上のアドレスから、対応する記憶媒体４０上の記憶領域のアドレスを転送ストレージ領域として算出する機能を有する。転送ストレージ領域算出部２２は、マッピングテーブル記憶部２５を参照し、仮想記憶媒体１００のアドレス空間に対応する記憶媒体４０のアドレスを示した情報であるマッピング情報を基に転送ストレージ領域を算出する。転送ストレージ領域が複数の記憶媒体４０や記憶領域に跨る場合には、転送ストレージ領域算出部２２は、転送ストレージ領域をそれぞれ特定するとともに、アクセス対象の領域全体において対応する位置を示すオフセットを算出する。
【００２６】
転送ストレージ領域算出部２２は、アクセス要求で指定されたホスト１０のメモリアドレス空間上の領域を指し示すアドレスから、転送ストレージ領域に対応するホスト１０のアドレスを転送メモリ領域としてオフセットを用いて算出する。転送ストレージ領域に対応する転送メモリ領域が断片化している場合には、転送ストレージ領域算出部２２は、各断片に対応するホスト１０のメモリアドレス空間上のアドレスを、オフセットを用いて算出する。
【００２７】
転送ストレージ領域算出部２２は、選択された記憶媒体が、既に転送ストレージ領域に対して割り当てられた記憶媒体と異なる場合、マッピングテーブルに含まれる転送ストレージ領域に対応するマッピングエントリの情報を更新する。また、本実施形態の転送ストレージ領域算出部２２の機能は、第１の実施形態の転送領域算出手段２に相当する。
【００２８】
転送処理内容通知部２３は、転送ストレージ領域算出部２２が算出した転送ストレージ領域および転送メモリ領域の情報を、アクセス要求の種類の情報とともに転送処理内容通知としてデータ転送実行部３０に性能平準化制御部２４を介して送る。転送処理内容通知部２３は、転送ストレージ領域を含む記憶媒体４０の識別子、転送ストレージ領域の記憶媒体４０上のアドレス、転送メモリ領域のアドレスおよびアクセス要求の種類の情報を転送処理内容通知としてデータ転送実行部３０に送る。
【００２９】
転送ストレージ領域算出部２２は、性能平準化制御部２４によって選択された記憶媒体４０が、既に転送ストレージ領域に対して割り当てられた記憶媒体４０と異なる場合、マッピングテーブルに含まれるマッピングエントリの情報を更新する。
【００３０】
転送処理内容通知部２３は、データ転送実行部３０に転送処理内容通知を送信する際に、性能平準化制御部２４を介さずにデータ転送実行部３０に送信してもよい。そのような構成とする場合、性能平準化制御部２４は、転送処理内容通知部２３が出力する転送処理内容通知で示されるデータ転送処理の実行内容を監視することで各記憶媒体４０の負荷の情報を取得することができる。また、本実施形態の転送処理内容通知部２３の機能は、第１の実施形態の転送処理内容通知手段４に相当する。
【００３１】
性能平準化制御部２４は、各記憶媒体４０のＩ／Ｏ（Input / Output）性能やＩ／Ｏコマンドの待機数を監視し、負荷が低い記憶媒体４０を特定する。性能平準化制御部２４は、転送ストレージ領域算出部２２からの問い合わせに対して、負荷が低い記憶媒体４０の識別子の情報を転送ストレージ領域算出部２２に通知する。性能平準化制御部２４は、たとえば、各記憶媒体４０の負荷が平準化されるように、アクセス先に対応する転送ストレージ領域として利用可能な記憶媒体４０から、最も低負荷の記憶媒体を選択する。性能平準化制御部２４は、各記憶媒体４０の負荷を、例えば、データ転送の完了待ちのサイズやコマンド数を基に判断する。また、本実施形態の性能平準化制御部２４の機能は、第１の実施形態の記憶媒体選択手段３に相当する。
【００３２】
マッピングテーブル記憶部２５は、マッピングテーブルを保存している。マッピングテーブルは、仮想記憶媒体１００上の各領域に対してマッピングされる記憶媒体４０の識別子および記憶媒体４０におけるアドレスの対応関係の情報を含むデータテーブルである。
【００３３】
図４は、マッピングテーブルの構成の例を示した図である。図４に示すマッピングテーブルは、仮想記憶媒体１００上の領域毎にマッピング先の記憶媒体４０の識別子および記憶媒体４０におけるアドレスの対応関係を記録したマッピングエントリ３００を含む情報によって構成されている。マッピングエントリ３００は、論理アドレス３０１と、記憶媒体識別子３０２と、物理アドレス３０３と、マッピングサイズ３０４の情報が互いに関連づけられている。論理アドレス３０１は、仮想記憶媒体１００の各領域の先頭アドレスの情報である。記憶媒体識別子３０２は、論理アドレス３０１の指す領域のマッピング先である記憶媒体４０の識別子の情報である。物理アドレス３０３は、記憶媒体識別子３０２の表す記憶媒体４０におけるマッピング先の記憶領域のアドレスである。マッピングサイズ３０４は、マッピングされる記憶領域のサイズを示す情報である。マッピングテーブルの形式は、図４に示した形式以外であってもよい。例えば、各マッピングエントリ３００が、仮想記憶媒体１００の領域を先頭から一定サイズ毎に区切った領域に対応する場合は、論理アドレス３０１およびマッピングサイズ３０４は、不要である。また、仮想記憶媒体１００と記憶媒体４０のマッピングにＲＡＩＤを用いる場合は、ＲＡＩＤの構成情報を除いたマッピングテーブルの各エントリの情報は不要である。ＲＡＩＤの場合には、例えば、ＲＡＩＤ０であればストライプを構成する記憶媒体４０の数量および各記憶媒体４０に対して連続的にマッピングされた領域であるチャンクのサイズから仮想記憶媒体１００に対応するマッピング先を算出することができるためである。
【００３４】
図５は、転送ストレージ領域算出部２２において算出される仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、算出される転送ストレージ領域の対応関係の例を示す図である。また、図６は、図５の例に対応するマッピングテーブルの構成を示している。図５の例では、仮想記憶媒体１００上のアクセス対象の領域は、記憶媒体４０の記憶領域４２に対してマッピングされている。転送ストレージ領域算出部２２は、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、マッピングテーブルの情報を基に、転送ストレージ領域４３が含まれる記憶媒体４０の識別子を特定し、先頭アドレスを算出する。ここで、図５の例において、仮想記憶媒体１００上のアクセス対象の領域を指し示す論理アドレスをＬａ、記憶領域４１の論理アドレスと物理アドレスをそれぞれＬｂ、Ｐｂとする。そのように設定すると、転送ストレージ領域４３の先頭アドレスＰａは、Ｐａ＝Ｐｂ＋（Ｌａ−Ｌｂ）のように算出することができる。
【００３５】
データ転送実行部３０は、転送ストレージ領域と転送メモリ領域の間で、アクセス要求の種類に基づいたデータ転送を行う。データ転送実行部３０は、コントローラ２０から転送ストレージ領域と転送メモリ領域の間で行うデータ転送処理の要求を転送処理内容通知として受け取る。転送処理内容通知には、アクセス要求の種類と、転送元と転送先のアドレスの情報が含まれている。
【００３６】
アクセス要求の種類がＲｅａｄである場合には、転送ストレージ領域から転送メモリ領域にデータの転送が行われる。すなわち、アクセス要求の種類がＲｅａｄである場合には、仮想記憶媒体１００にマッピングされている記憶媒体４０からデータが読み出され、メモリ１１に書き込まれる。また、アクセス要求の種類がＷｒｉｔｅである場合には、転送メモリ領域から転送ストレージ領域にデータの転送が行われる。すなわち、アクセス要求の種類がＷｒｉｔｅである場合には、メモリ１１のデータが仮想記憶媒体１００にマッピングされている記憶媒体４０に書き込まれる。
【００３７】
データ転送実行部３０は、コントローラ２０を介さずに転送ストレージ領域と転送メモリ領域の間のデータ転送を実行する。データ転送実行部３０は、転送ストレージ領域と転送メモリ領域に対するアクセスを個別に行わずに、ホスト１０のＤＭＡ（Direct Memory Access）コントローラに転送ストレージ領域と転送メモリ領域のアドレスを通知してデータ転送を行ってもよい。また、記憶媒体４０がＮＶＭ  Ｅｘｐｅｓｓに対応したＳＳＤ（Solid State Drive）の場合には、データ転送実行部３０は、記憶媒体４０に転送ストレージ領域と転送メモリ領域のアドレスを通知してデータ転送を行ってもよい。ＮＶＭ  Ｅｘｐｅｓｓに対応したＳＳＤは、指定したホスト１０のメモリアドレスと、ＳＳＤのＬＢＡ（Logical Block Address）が指し示す領域との間でＤＭＡ転送によるデータ転送を行う。
【００３８】
データ転送の実行時は、ボトルネックとなり得るコントローラ２０を介さずに実行される。コントローラ２０は、ホスト１０から透過である。また、データ転送実行部３０からコントローラ２０にデータ転送処理の完了を通知するようにしてもよい。そのような構成の場合には、コントローラ２０は、アクセス要求に対応する全てのデータ転送が完了した際に、アプリケーション実行部１２に仮想記憶媒体１００へのアクセス要求に対する処理が完了したことを通知してもよい。
【００３９】
コントローラ２０およびデータ転送実行部３０における各処理は、それぞれ、ＦＰＧＡ等の半導体装置を用いて行われもよく、また、ＣＰＵとメモリ等によって構成されるコンピュータ上でプログラムを実行することで行われてもよい。
【００４０】
データ転送実行部３０は、コントローラ２０と独立した状態で、バスやネットワークを介してホスト１０に接続された構成のモジュールでなくてもよい。例えば、データ転送実行部３０は、コントローラ２０と同一のデバイスに形成されていてもよい。また、データ転送実行部３０は、コンピュータプログラムをホスト１０またはホスト１０とネットワークまたはバスを介して接続された他のノード上で実行することで各処理を行う構成であってもよい。
【００４１】
記憶媒体４０は、コントローラ２０を介さずにホスト１０と接続された記憶装置である。記憶媒体４０は、ホスト１０に複数、接続されている。記憶媒体４０は、ホストとネットワークを介して接続されたノードにバスやネットワークを介して直接アクセスが可能な状態で接続されていてもよい。記憶媒体４０は、例えば、ＮＡＮＤ  Ｆｌａｓｈのような不揮発性メモリによって構成されるＳＳＤや、ＤＲＡＭまたはその他のメモリによって構成されるＤＩＭＭ（Dual Inline Memory Module）のような記憶装置である。記憶媒体４０にはＨＤＤ等の記憶装置またはそれらの記憶装置との組み合わせによって構成されていてもよい。また、記憶媒体４０は、複数の記憶装置によって構成されていてもよい。
【００４２】
仮想記憶媒体１００は、コントローラ２０によって記憶媒体４０の記憶領域をマッピングすることで構築されている。アプリケーション実行部１２から仮想記憶媒体１００へのアクセス要求は、コントローラ２０が受け取り、データ転送実行部３０によってアクセス処理が実行される。
【００４３】
本実施形態の計算機システムの動作について説明する。図７は、本実施形態のコントローラ２０の動作フローを示したものである。図８は、本実施形態のデータ転送実行部３０の動作フローを示したものである。また、図９および図１０は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
【００４４】
コントローラ２０のアクセス要求受信部２１は、ホスト１０のアプリケーション実行部１２から仮想記憶媒体１００に対するアクセス要求を受信する（ステップＳ１１）。アクセス要求は、アクセス要求の種類と、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、メモリ１１上のアクセス対象の領域に対応するホスト１０のメモリ空間上の領域を指し示すアドレスの情報によって構成されている。
【００４５】
アクセス要求受信部２１は、アクセス要求に含まれる情報のうち、ホスト１０のメモリアドレス空間上の領域を示すアドレスと、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスの情報を転送ストレージ領域算出部２２に送る。また、アクセス要求受信部２１は、アクセス要求に含まれる情報のうち、アクセス要求の種類の情報を転送処理内容通知部２３に送る。
【００４６】
仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスを受け取ると、転送ストレージ領域算出部２２は、マッピングテーブル記憶部２５に保存されているマッピングテーブルを参照して、転送ストレージ領域を含む記憶媒体４０を特定する。また、転送ストレージ領域算出部２２は、記憶媒体４０上における転送ストレージ領域のアドレスを算出する（ステップＳ１２）。
【００４７】
アクセス要求の種類の情報を受け取ると、転送処理内容通知部２３は、アクセス要求の種類がＷｒｉｔｅであるかＲｅａｄであるかを確認する。アクセス要求の種類がＷｒｉｔｅである場合（ステップＳ１３でＹｅｓ）、転送処理内容通知部２３は、アクセス要求の種類がＷｒｉｔｅであることを示す情報を性能平準化制御部２４に通知する。アクセス要求の種類がＷｒｉｔｅであることを示す情報を受け取ると、性能平準化制御部２４は、複数の記憶媒体４０の中から最も低負荷な記憶媒体４０を選択する（ステップＳ１４）。最も低負荷な記憶媒体４０を選択すると、性能平準化制御部２４は、選択した記憶媒体４０の識別子の情報を転送ストレージ領域算出部２２に送る。
【００４８】
記憶媒体４０の識別子の情報を受け取ると、転送処理内容通知部２３は、性能平準化制御部２４が選択した記憶媒体４０と、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスから割り当てた記憶媒体４０とが同じであるかを確認する。
【００４９】
性能平準化制御部２４が選択した記憶媒体４０が、割り当て済みの記憶媒体４０と異なる場合（ステップＳ１５でＹｅｓ）、転送ストレージ領域算出部２２は、新たに割り当てられた低負荷の記憶媒体４０上における転送ストレージ領域のアドレスを再度、算出する。転送ストレージ領域算出部２２は、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスから性能平準化制御部２４が選択した記憶媒体４０上における転送ストレージ領域のアドレスを算出する。再度、転送ストレージ領域のアドレスを算出すると、転送ストレージ領域算出部２２は、算出したアドレスを基にマッピングテーブル記憶部２５のマッピングテーブルを更新する。マッピングテーブルを更新すると、転送ストレージ領域算出部２２は、転送ストレージ領域に対応する記憶媒体４０の識別子と記憶媒体４０上のアドレスの情報を転送処理内容通知部２３に送る。
【００５０】
また、転送ストレージ領域算出部２２は、アクセス要求受信部２１を介して受け取るホスト１０のメモリアドレス空間上の領域のアドレスを、アクセス要求に対応する転送メモリ領域の先頭アドレスとして設定し、転送処理内容通知部２３に送る（ステップＳ１６）。
【００５１】
転送ストレージ領域のアドレス等を受け取ると、転送処理内容通知部２３は、データ転送処理の実行内容を示す情報を転送処理内容通知としてデータ転送実行部３０に送る（ステップＳ１７）。転送処理内容通知部２３は、転送処理内容通知として、アクセス要求の種類と、メモリ１１における転送メモリ領域の先頭アドレス、転送ストレージ領域に対応する記憶媒体４０の識別子および転送ストレージ領域のアドレスを、データ転送実行部３０に送る。
【００５２】
ステップＳ１３においてアクセス要求の種類がＷｒｉｔｅである場合（ステップＳ１３でＮｏ）、転送処理内容通知部２３は、ステップＳ１６からの動作を行う。
【００５３】
コントローラ２０から転送処理内容通知が送信されると、データ転送実行部３０は、コントローラ２０から転送処理内容通知を受信する（ステップＳ２１）。転送処理内容通知を受け取ると、データ転送実行部３０は、アクセス要求の種類がＲｅａｄであるかＷｒｉｔｅであるかを確認する。
【００５４】
アクセス要求の種類がＲｅａｄである場合（ステップＳ２２でＹｅｓ）、データ転送実行部３０は、転送処理内容通知の情報に基づいて記憶媒体４０の転送ストレージ領域からメモリ１１の転送メモリ領域へのデータ転送を実行する（ステップＳ２３）。
【００５５】
アクセス要求の種類がＷｒｉｔｅである場合（ステップＳ２２でＮｏ）、データ転送実行部３０は、転送処理内容通知の情報に基づいて、メモリ１１の転送メモリ領域から記憶媒体４０の転送ストレージ領域へのデータ転送を実行する（ステップＳ２４）。
【００５６】
以上の動作により、アプリケーション実行部１２から仮想記憶媒体１００に対するアクセス要求の処理が完了する。上記の各ステップの処理の順序は、図７および図８に示した順序でなくてもよい。例えば、ステップＳ１２、ステップＳ１３およびステップＳ１４の処理は、同時期に実行または順序を入れ替えて実行されてもよい。また、データ転送実行部３０がデータ転送処理の完了の情報を、コントローラ２０を介してアプリケーション実行部１２に送信し、仮想記憶媒体１００に対するアクセス要求の完了をアプリケーション実行部１２に通知する構成としてもよい。
【００５７】
本実施形態の計算機システムは、コントローラ２０において記憶媒体４０の負荷を監視し、負荷の小さい記憶媒体４０の記憶領域と、ホスト１０のメモリアドレス空間上でのデータ転送を行っている。そのため、データ転送処理時における記憶媒体４０における処理時間を短縮することができる。また、データ転送実行部３０は、ホスト１０またはコントローラ２０から転送処理内容通知を受け取った際に、受け取った転送処理内容通知に基づいてコントローラ２０を介さずに記憶媒体４０とホスト１０のメモリ空間上でのデータ転送を実行する。そのため、本実施形態の計算機システムは、アクセス要求が発生した際のコントローラ２０へのアクセス回数を抑制することでコントローラ２０の負荷を低減し、データ転送の遅延を抑制することができる。その結果、本実施形態の計算機システムは、ホスト１０のメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体４０の記憶領域間のデータ転送の性能を向上することができる。
【００５８】
（第３の実施形態）
本発明の第３の実施形態について図を参照して詳細に説明する。図１１は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト１０と、コントローラ５０と、データ転送実行部６０と、記憶媒体４０を備えている。
【００５９】
第２の実施形態の計算機システムは、アクセス対象となる領域の先頭のアドレスを指定することでデータ転送の対象となる記憶領域の情報が通知されている。そのような構成に対し、本実施形態の計算機システムは、領域のサイズの情報によってアクセス領域の範囲の情報を通知することを特徴とする。
【００６０】
また、本実施形態の計算機システムは、第２の実施形態と同様に複数の記憶媒体４０の記憶領域を単一の仮想的な記憶媒体である仮想記憶媒体にマッピングし、ホストから仮想記憶媒体を介して記憶媒体にアクセスするＲＡＩＤシステムによって構成されている。本実施形態の計算機システムは、データ転送の実行をデータ転送実行部６０が行い、データ転送の実行時は、ホスト１０のメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体との間でコントローラ５０を介さずにデータ転送を行う。
【００６１】
ホスト１０の構成は、第２の実施形態と同様である。すなわち、ホスト１０は、メモリ１１と、アプリケーション実行部１２を備えている。本実施形態のアプリケーション実行部１２が出力するアクセス要求は、アクセス要求の種類、仮想記憶媒体１００上のアクセス対象の領域を指定するアドレス、メモリ１１上のアクセス対象の領域に対応するホスト１０のメモリアドレス空間上の領域を指定するアドレスおよびアクセス要求範囲によって構成されている。アクセス要求範囲には、アクセス要求の範囲を大きさで示すアクセスサイズまたはアクセス要求の末尾を指し示すアドレスの情報が用いられる。
【００６２】
コントローラ５０の構成について説明する。図１２は、本実施形態のコントローラ５０の構成を示したものである。コントローラ５０は、アクセス要求受信部５１と、転送ストレージ領域算出部５２と、転送処理内容通知部５３と、性能平準化制御部５４と、マッピングテーブル記憶部５５と、転送領域算出制御部５６を備えている。
【００６３】
本実施形態のアクセス要求受信部５１、転送ストレージ領域算出部５２、転送処理内容通知部５３、性能平準化制御部５４およびマッピングテーブル記憶部５５の構成と機能は、第２の実施形態の同名称の部位と同様である。また、本実施形態のアクセス要求受信部５１は、アクセス要求に含まれる情報のうちアドレスに関する情報とアクセスサイズ等のアクセス要求の範囲を示す情報を転送領域算出制御部５６に送る。また、アクセス要求受信部５１は、アクセス要求に含まれる情報のうちアクセスの種類の情報を転送処理内容通知部５３に送る。
【００６４】
転送領域算出制御部５６は、アクセス要求で指し示される仮想記憶媒体１００上のアドレスを基に、対応する記憶媒体４０を特定し、記憶媒体４０上のアドレスを転送ストレージ領域のアドレスとして算出する。転送領域算出制御部５６は、記憶媒体４０の複数の記憶領域に分散した転送ストレージ領域について、転送ストレージ領域を示す記憶媒体４０内のアドレスの範囲または先頭アドレスおよび領域のサイズを算出する。また、転送領域算出制御部５６は、転送ストレージ領域に対応するメモリ１１上のアドレスを転送メモリ領域のアドレスとして算出する。
【００６５】
図１３は、転送ストレージ領域と転送メモリ領域の先頭アドレスの対応関係の例を模式的に示した図である。図の例では、仮想記憶媒体１００上のアクセス対象の領域であるアクセス対象領域８１が、先頭から順番に記憶媒体４０ａ、４０ｂ、４０ｃの記憶領域８２ａ、８２ｂ、８２ｃにマッピングされる。また、ここで記憶領域８２ａ、８２ｂのサイズは、それぞれＳａ、Ｓｂであるとする。そのとき、記憶領域８２ａ、８２ｂ、８２ｃに対応する転送メモリ領域８３のアドレスＭａ、Ｍｂ、Ｍｃは、アクセス要求で指し示される領域の先頭アドレスをＭとした場合、それぞれ、Ｍａ＝Ｍ、Ｍｂ＝Ｍ＋Ｓａ、Ｍｃ＝Ｍ＋Ｓａ＋Ｓｂと計算できる。
【００６６】
本実施形態の計算機システムの動作について説明する。図１４および図１５は、本実施形態のコントローラ５０の動作フローを示したものである。図１６は、本実施形態のデータ転送実行部６０の動作フローを示したものである。また、図１７および図１８は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
【００６７】
コントローラ５０のアクセス要求受信部５１は、ホスト１０のアプリケーション実行部１２から仮想記憶媒体１００に対するアクセス要求を受信する（ステップＳ３１）。アクセス要求は、アクセス要求の種類と、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、アクセス対象の領域のサイズと、メモリ１１上のアクセス対象の領域に対応する、ホスト１０のメモリアドレス空間上の領域を指し示すアドレスの情報によって構成されている。
【００６８】
アクセス要求受信部５１は、アクセス要求に含まれる情報のうち、ホスト１０のメモリアドレス空間上の領域を示すアドレスと、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、アクセス対象の領域のサイズの情報を転送領域算出制御部５６に送る。また、アクセス要求受信部５１は、アクセス要求に含まれる情報のうち、アクセス要求の種類の情報を転送処理内容通知部５３に送る。
【００６９】
アドレス等の情報を受け取ると、転送領域算出制御部５６は、転送ストレージ領域および転送メモリ領域における着目点を表すオフセットを０に設定して初期化する。また、転送領域算出制御部５６は、データ転送実行部６０に対して通知を行うデータ転送対象のリストを空にして初期化する（ステップＳ３２）。
【００７０】
初期化が完了すると、各アドレスの算出が行われる。転送領域算出制御部５６は、仮想記憶媒体１００におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、仮想記憶媒体１００上の着目点のアドレスを算出する（ステップＳ３３）。初期状態では、オフセットは０である。
【００７１】
仮想記憶媒体１００上の着目点のアドレスを算出すると、転送領域算出制御部５６は、算出したアドレスを転送ストレージ領域算出部５２に送る。仮想記憶媒体１００上の着目点のアドレスを受け取ると、転送領域算出制御部５６は、対応する転送ストレージ領域が含まれる記憶媒体４０の識別子を特定し、転送ストレージ領域における着目点のアドレスを算出する（ステップＳ３４）。
【００７２】
アクセス要求の種類の情報を受け取ると、転送処理内容通知部５３は、アクセス要求の種類がＲｅａｄであるかＷｒｉｔｅであるかを確認する。
【００７３】
アクセス要求の種類がＷｒｉｔｅである場合（ステップＳ３５でＹｅｓ）、転送処理内容通知部５３は、アクセス要求の種類がＷｒｉｔｅであることを示す情報を性能平準化制御部５４に送る。アクセス要求の種類がＷｒｉｔｅであることを示す情報を受け取ると、性能平準化制御部５４は、アクセス先として選択可能な記憶媒体４０の中から最も低負荷な記憶媒体４０を選択する（ステップＳ３６）。最も低負荷な記憶媒体４０を選択すると、性能平準化制御部５４は、選択した記憶媒体４０の識別子の情報を転送ストレージ領域算出部５２に送る。
【００７４】
新たに割り当てられた記憶媒体４０と、割り当て済みの記憶媒体４０が異なる場合（ステップＳ３７でＹｅｓ）、転送ストレージ領域算出部５２は、新たに割り当てられた低負荷の記憶媒体４０上における転送ストレージ領域のアドレスを算出する（ステップＳ３８）。転送ストレージ領域算出部５２は、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスから性能平準化制御部５４が選択した記憶媒体４０上における転送ストレージ領域のアドレスを算出する。転送ストレージ領域のアドレスを算出すると、転送ストレージ領域算出部５２は、算出したアドレスを基にマッピングテーブル記憶部５５のマッピングテーブルを更新する（ステップＳ３９）。マッピングテーブルを更新すると、転送ストレージ領域算出部５２は、転送ストレージ領域に対応する記憶媒体４０の識別子と記憶媒体４０上のアドレスの情報を転送処理内容通知部５３に送る。
【００７５】
転送ストレージ領域の算出が行われると、転送領域算出制御部５６は、ホスト１０のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する（ステップＳ４０）。
【００７６】
ステップＳ３５において、アクセス要求の種類がＲｅａｄである場合（ステップＳ３５でＮｏ）、転送領域算出制御部５６は、ホスト１０のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する（ステップＳ４０）。また、ステップＳ３７において、新たに割り当てられた記憶媒体４０と、割り当て済みの記憶媒体４０が同じ場合（ステップＳ３７でＮｏ）、転送領域算出制御部５６は、ホスト１０のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する（ステップＳ４０）。
【００７７】
転送領域算出制御部５６は、ホスト１０のメモリアドレス空間におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることでホスト１０のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する。
【００７８】
転送メモリ領域における着目点のアドレスを算出すると、転送領域算出制御部５６は、マッピングテーブルを参照し、仮想記憶媒体１００上の着目点のアドレスから連続領域にマッピングされるサイズを算出する。転送領域算出制御部５６は、着目点のアドレスと、対応するマッピングエントリの論理アドレスの差分を計算する。差分を算出すると、転送領域算出制御部５６は、差分を対応するマッピングエントリのマッピングサイズから差し引いて、連続領域にマッピングされるサイズを算出する（ステップＳ４１）。
【００７９】
連続領域にマッピングされるサイズを算出すると、転送領域算出制御部５６は、アクセス対象の領域のサイズからオフセットを差し引いた値を算出し、連続領域にマッピングされるサイズと比較する。転送領域算出制御部５６は、比較した値のうち小さい方を記憶媒体４０の識別子と転送ストレージ領域における着目点のアドレスおよび転送メモリ領域における着目点のアドレスとの組み合わせで用いられるデータ転送のサイズとする（ステップＳ４２）。
【００８０】
データ転送のサイズを設定すると、転送領域算出制御部５６は、記憶媒体４０の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよび転送のサイズの組み合わせ関連づけてデータ転送対象のリストに追加する（ステップＳ４３）。
【００８１】
データ転送対象のリストを追加すると、転送領域算出制御部５６は、連続した領域にマッピングされるサイズの値をオフセットの値に加える（ステップＳ４４）。連続した領域にマッピングされるサイズの値をオフセットの値に加えると、転送領域算出制御部５６は、オフセットの値とアクセス対象の領域のサイズとを比較する。
【００８２】
オフセットの値がアクセス対象の領域のサイズ未満の場合（ステップＳ４５でＮｏ）、転送領域算出制御部５６は、ステップＳ３３からの処理を再度、実行する。
【００８３】
オフセットの値がアクセス対象の領域のサイズ以上の場合（ステップＳ４５でＹｅｓ）、転送領域算出制御部５６は、データ転送対象のリストを転送処理内容通知部５３に送る。データ転送対象のリストを受け取ると、転送処理内容通知部５３は、データ転送対象のリストと、アクセス要求受信部５１から受け取ったアクセス要求の種類の情報を転送処理内容通知としてデータ転送実行部６０に送る（ステップＳ４６）。
【００８４】
データ転送実行部６０は、コントローラ５０から転送処理内容通知を受信する（ステップＳ５１）。転送処理内容通知を受け取ると、データ転送実行部６０は、アクセス要求の種類がＲｅａｄかＷｒｉｔｅかを確認する。
【００８５】
アクセス要求の種類がＲｅａｄである場合（ステップＳ５２でＹｅｓ）、データ転送実行部６０は、転送処理内容通知に基づいて、記憶媒体４０の転送ストレージ領域からメモリ１１の転送メモリ領域へのデータ転送を実行する（ステップＳ５３）。
【００８６】
アクセス要求の種類がＷｒｉｔｅである場合（ステップＳ５２でＮｏ）、データ転送実行部６０は、転送処理内容通知に基づいて、メモリ１１の転送メモリ領域から記憶媒体４０の転送ストレージ領域へのデータ転送を実行する（ステップＳ５４）。
【００８７】
以上の処理によって、アプリケーション実行部１２から仮想記憶媒体１００に対するアクセス要求の処理の動作が完了する。上記の各ステップの処理の順序は、図に示した順序でなくてもよい。例えば、ステップＳ３３からＳ３４、並びに、ステップＳ３５からＳ３８、ステップＳ３９およびＳ４０の各処理は同時期に実行されてもよく、また、順序を入れ替えて実行されてもよい。また、データ転送実行部６０がデータ転送処理の完了を、コントローラ５０を介してアプリケーション実行部１２に送ることで、アプリケーション実行部１２に仮想記憶媒体１００に対するアクセス要求の完了の情報が通知される構成としてもよい。
【００８８】
本実施形態の計算機システムは、第２の実施形態の計算機システムと同様の効果を有する。また、本実施形態の計算機システムは、ホスト１０から仮想記憶媒体１００へのアクセス要求を行う際に、アクセス対象領域のサイズを示すアクセスサイズの情報を付加して行っている。そのため、コントローラ５０におけるデータ転送に関する各処理をより効率的に行うことができる。
【００８９】
第２の実施形態および第３の実施形態におけるコントローラおよびデータ転送実行部で実行される各処理は、コンピュータプログラムをコンピュータで実行することによって行われてもよい。図１９は、コントローラおよびデータ転送実行部で実行される各処理を行うコンピュータプログラムを実行するコンピュータ９０の構成の例を示したものである。コンピュータ９０は、ＣＰＵ９１と、メモリ９２と、記憶装置９３と、Ｉ／Ｆ（Interface）部９４を備えている。
【００９０】
ＣＰＵ９１は、記憶装置９３から各処理を行うコンピュータプログラムを読み出して実行する。メモリ９２は、ＤＲＡＭ等によって構成され、ＣＰＵ９１が実行するコンピュータプログラムや処理中のデータが一時保存される。記憶装置９３は、ＣＰＵ９１が実行するコンピュータプログラム、処理結果および外部から取得した情報等が保存される。記憶装置９３は、例えば、不揮発性の半導体記憶装置によって構成されている。記憶装置９３には、ＨＤＤ等の他の記憶装置が用いられてもよい。Ｉ／Ｆ部９４は、ホストや記憶媒体等の他の装置との間でデータの入出力を行うインタフェースである。Ｉ／Ｆ部９４は、アクセス要求やデータ転送処理通知の入出力、および、ホストや記憶媒体間におけるデータ転送処理における制御信号の入出力を行うインタフェースとして機能する。
【００９１】
また、各処理に行うコンピュータプログラムは、記録媒体に格納して頒布することもできる。記録媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記録媒体としては、ＣＤ-ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ（Digital Versatile Disc）などの光ディスクを用いることもできる。不揮発性の半導体メモリを記録媒体として用いてもよい。
【符号の説明】
【００９２】
１    アクセス要求受信手段
２    転送領域算出手段
３    記憶媒体選択手段
４    転送処理内容通知手段
１０    ホスト
１１    メモリ
１２    アプリケーション実行部
２０    コントローラ
２１    アクセス要求受信部
２２    転送ストレージ領域算出部
２３    転送処理内容通知部
２４    性能平準化制御部
２５    マッピングテーブル記憶部
３０    データ転送実行部
４０    記憶媒体
５０    コントローラ
５１    アクセス要求受信部
５２    転送ストレージ領域算出部
５３    転送処理内容通知部
５４    性能平準化制御部
５５    マッピングテーブル記憶部
５６    転送領域算出制御部
６０    データ転送実行部
９０    コンピュータ
９１    ＣＰＵ
９２    メモリ
９３    記憶装置
９４    Ｉ／Ｆ部
１００    仮想記憶媒体
【図１】
2019212161.tif 000003
【図２】
2019212161.tif 000004
【図３】
2019212161.tif 000005
【図４】
2019212161.tif 000006
【図５】
2019212161.tif 000007
【図６】
2019212161.tif 000008
【図７】
2019212161.tif 000009
【図８】
2019212161.tif 000010
【図９】
2019212161.tif 000011
【図１０】
2019212161.tif 000012
【図１１】
2019212161.tif 000013
【図１２】
2019212161.tif 000014
【図１３】
2019212161.tif 000015
【図１４】
2019212161.tif 000016
【図１５】
2019212161.tif 000017
【図１６】
2019212161.tif 000018
【図１７】
2019212161.tif 000019
【図１８】
2019212161.tif 000020
【図１９】
2019212161.tif 000021