(57)【要約】【課題】ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上するコントローラを提供する。【解決手段】コントローラを、アクセス要求受信手段１と、格納先特定手段２と、転送処理内容通知手段３を備える構成とする。アクセス要求受信手段１は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第１のアドレス情報と、第２のアドレス情報を受信する。第１のアドレス情報は、仮想的な記憶領域上のアクセス先の領域を指定する。第２のアドレス情報は、記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。格納先特定手段２は、第１のアドレス情報に対応する記憶媒体上の第３のアドレス情報を特定する。転送処理内容通知手段３は、アクセス要求の種類と第２のアドレス情報および第３のアドレス情報を出力する。【選択図】      図１
2019159735.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）によって構成されている。アプリケーション実行部１２は、アプリケーションプログラムをＣＰＵ等の汎用にプロセッサによって実行する構成に代えて、ＦＰＧＡ等のあらかじめ設定された回路を用いて各処理を実行する構成であってもよい。
【００２１】
コントローラ２０の構成について説明する。図３は、本実施形態のコントローラ２０の構成を示した図である。コントローラ２０は、ホスト１０に対してバスまたはネットワークを介して接続されているデバイスとして動作する。コントローラ２０は、アプリケーション実行部１２から仮想記憶媒体１００に対するアクセス要求を受け取る。コントローラ２０は、仮想記憶媒体１００上のアクセス要求対象の領域に対応する転送ストレージ領域およびメモリ１１上の転送メモリ領域を計算して、データ転送実行部３０にアクセス要求の種類とともに通知する。転送ストレージ領域とは、メモリ１１との間でデータ転送を行う際に、データ転送の対象となる記憶媒体４０上の記憶領域のことをいう。また、転送メモリ領域とは、記憶媒体４０との間でデータ転送を行う際に、データ転送の対象となるメモリ１１上の記憶領域のことをいう。
【００２２】
コントローラ２０の構成について説明する。コントローラ２０は、アクセス要求受信部２１と、マッピングテーブル記憶部２２と、転送ストレージ領域算出部２３と、転送処理内容通知部２４を備えている。
【００２３】
アクセス要求受信部２１は、ホスト１０のアプリケーション実行部１２から仮想記憶媒体１００へのアクセス要求を受け取る。アクセス要求は、アクセス要求の種類、仮想記憶媒体１００上のアクセス対象の領域を指定するアドレスおよびメモリ１１上のアクセス対象の領域に対応するホスト１０のメモリアドレス空間上の領域を指定するアドレスによって構成されている。アクセス要求の種類は、「Ｒｅａｄ」と「Ｗｒｉｔｅ」いずれの動作を行うかを指定する情報である。また、本実施形態のアクセス要求受信部２１の機能は、第１の実施形態のアクセス要求受信手段１に相当する。
【００２４】
マッピングテーブル記憶部２２は、仮想記憶媒体１００上の各領域に対してマッピングされる記憶媒体４０の識別子および記憶媒体４０におけるアドレスの対応関係を示すデータテーブルをマッピングテーブルとして保存している。
【００２５】
図４は、マッピングテーブルの例を示す図である。マッピングテーブルは、仮想記憶媒体１００上の領域ごとにマッピング先の記憶媒体４０の識別子および記憶媒体４０上でのアドレスとの対応関係の情報をマッピングエントリ２００として有している。
【００２６】
各マッピングエントリ２００は、仮想記憶媒体１００の論理アドレス２０１と、記憶媒体４０の識別子である記憶媒体識別子２０２と、記憶媒体４０上の物理アドレス２０３と、マッピングサイズ２０４が互いに関連づけられて構成されている。
【００２７】
仮想記憶媒体１００の論理アドレス２０１は、仮想記憶媒体１００の各領域の先頭アドレスを論理アドレスで指し示した情報である。記憶媒体４０を識別する記憶媒体識別子２０２は、論理アドレスが指し示している領域のマッピング先となる記憶媒体４０を識別するための識別子の情報である。記憶媒体４０上の物理アドレス２０３は、マッピング先の記憶媒体４０の記憶領域のアドレスを物理アドレスで指し示した情報である。マッピングサイズ２０４は、記憶媒体４０上にマッピングされる記憶領域のサイズを示す情報である。
【００２８】
マッピングテーブルの形式は、図４に示した形式以外であってもよい。例えば、各マッピングエントリが、仮想記憶媒体１００の領域を先頭から一定サイズ毎に区切った領域に対応する場合は、論理アドレスおよびマッピングサイズは、不要となる。また、仮想記憶媒体１００と記憶媒体４０のマッピングにＲＡＩＤを用いる場合は、ＲＡＩＤ０であればストライプを構成する記憶媒体４０の数量およびチャンクのサイズから仮想記憶媒体１００に対応するマッピング先を計算することができる。そのため、ＲＡＩＤの構成情報を除いたマッピングテーブルの各エントリの情報は、不要となる。また、チャンクは、ストライプを構成する各記憶媒体４０に対して連続的にマッピングされた領域のことをいう。
【００２９】
転送ストレージ領域算出部２３は、アクセス要求に含まれてホスト１０から送られてくる仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスの情報を受け取る。転送ストレージ領域算出部２３は、アクセス要求に対応する転送ストレージ領域を含む記憶媒体４０と、記憶媒体４０における転送ストレージ領域のアドレスを、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスから、マッピングテーブルを参照して計算する。
【００３０】
図５は、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、転送ストレージ領域算出部２３において算出される転送ストレージ領域の対応関係の例を示す図である。また、図６は、図５の例に対応するマッピングテーブルの構成を示している。
【００３１】
図５の例では、仮想記憶媒体１００上のアクセス対象の領域は、記憶媒体４０の記憶領域４２に対してマッピングされている。転送ストレージ領域算出部２３は、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、マッピングテーブルの情報を基に、転送ストレージ領域４３が含まれる記憶媒体４０の識別子を特定し、先頭アドレスを算出する。ここで、図５の例において、仮想記憶媒体１００上のアクセス対象の領域を指し示す論理アドレスをＬａ、記憶領域４１の論理アドレスと物理アドレスをそれぞれＬｂ、Ｐｂとする。そのように設定すると、転送ストレージ領域４３の先頭アドレスＰａは、Ｐａ＝Ｐｂ＋（Ｌａ−Ｌｂ）のように計算することができる。
【００３２】
また、本実施形態の転送ストレージ領域算出部２３の機能は、第１の実施形態の格納先特定手段２に相当する。
【００３３】
転送処理内容通知部２４は、アクセス要求に対応するデータ転送処理の実行内容を示す情報を転送処理内容通知としてデータ転送実行部３０に通知する。転送処理内容通知は、アクセス要求の種類、転送ストレージ領域を含む記憶媒体４０の識別子、転送ストレージ領域の先頭アドレスおよび転送ストレージ領域に対応する転送メモリ領域の先頭アドレスの情報によって構成されている。また、本実施形態の転送処理内容通知部２４の機能は、第１の実施形態の転送処理内容通知手段３に相当する。
【００３４】
コントローラ２０は、ホスト１０に対してバスやネットワークを経由して接続されるデバイスの形態でなくてもよい。例えば、コントローラ２０は、ホスト１０のＯＳ（Operating System）からホスト１０に接続されたデバイスとして認識、制御が可能な、デバイスの一部またはそのようなデバイスの全ての動作を模擬するソフトウェアであってもよい。
【００３５】
データ転送実行部３０は、データ転送を実行する機能を有する。データ転送実行部３０は、コントローラ２０から通知された情報に基づいて、転送ストレージ領域と、転送メモリ領域との間で、通知されたアクセス要求の種類に応じたデータ転送を実行する。データ転送実行部３０は、通知されたアクセス要求が「Ｒｅａｄ」である場合は転送ストレージ領域から転送メモリ領域に対してデータ転送を実行する。データ転送実行部３０は、通知されたアクセス要求が「Ｗｒｉｔｅ」である場合は転送メモリ領域から転送ストレージ領域にデータ転送を実行する。
【００３６】
データ転送実行部３０は、コントローラ２０を経由せずにデータ転送を実行する。また、データ転送実行部３０は、転送ストレージ領域に対応する記憶媒体４０、メモリ１１における転送メモリ領域に対するアクセスを個別に行わずに、直接、データ転送を行ってもよい。例えば、データ転送実行部３０は、ホスト１０のＤＭＡコントローラに対して転送ストレージ領域と転送メモリ領域のアドレスを設定して、直接データ転送を行ってもよい。
【００３７】
また、データ転送実行部３０は、記憶媒体４０が指定したホストのメモリアドレスとＳＳＤのＬＢＡが示す領域との間でＤＭＡ転送を行うデバイスである場合は、記憶媒体４０に対して転送ストレージ領域と転送メモリ領域のアドレスを設定して、直接データ転送を行ってもよい。そのようなデータ転送を行う記憶媒体４０には、例えば、ＮＶＭ  Ｅｘｐｒｅｓｓ(登録商標)（Non-Volatile Memory Express）に対応したＳＳＤが用いられる。
【００３８】
データ転送実行部３０は、独立したモジュールとしてホスト１０に対してコントローラ２０、バスおよびネットワークを経由して接続される構成でなくてもよい。例えば、データ転送実行部３０は、ホスト１０で実行されるソフトウェアまたはコントローラ２０と同一のデバイスに実装される構成であってもよい。また、データ転送実行部３０は、ホスト１０とネットワークを介して接続された他のノードにバス、ネットワークを経由して接続されるデバイスまたは他のノード上で実行されるソフトウェアであってもよい。
【００３９】
記憶媒体４０は、コントローラ２０を介さずにホスト１０と接続された記憶装置である。記憶媒体４０は、ホストとネットワークを介して接続されたノードにバスやネットワークを介して直接アクセスが可能な状態で接続されていてもよい。記憶媒体４０は、例えば、ＮＡＮＤ  Ｆｌａｓｈのような不揮発性メモリによって構成されるＳＳＤや、ＤＲＡＭまたはその他のメモリによって構成されるＤＩＭＭ（Dual Inline Memory Module）のような記憶装置である。記憶媒体４０にはＨＤＤ等の記憶装置またはそれらの記憶装置との組み合わせによって構成されていてもよい。また、記憶媒体４０は、複数の記憶装置によって構成されていてもよい。
【００４０】
仮想記憶媒体１００は、コントローラ２０によって記憶媒体４０の記憶領域をマッピングすることで構築されている。また、アプリケーション実行部１２から仮想記憶媒体１００対するアクセス要求はコントローラ２０が受け取り、データ転送実行部３０によって仮想記憶媒体１００のアクセス領域に対応する記憶媒体４０の記憶領域へのアクセス処理が実行される。
【００４１】
本実施形態の計算機システムの動作について説明する。図７は、本実施形態の計算機システムにおいて、ホスト１０のメモリ１１と、記憶媒体４０間でデータ転送を行う際のコントローラ２０の動作フローを示した図である。また、図８は、本実施形態の計算機システムにおいて、ホスト１０のメモリ１１と、記憶媒体４０間でデータ転送を行う際のデータ転送実行部３０の動作フローを示した図である。また、図９および図１０は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
【００４２】
ホスト１０のアプリケーション実行部１２は、各処理を実行する際に仮想記憶媒体１００へのアクセスが必要になると、仮想記憶媒体１００へのアクセス要求をコントローラ２０に送る。
【００４３】
ホスト１０からコントローラ２０に送られた仮想記憶媒体１００へのアクセス要求は、アクセス要求受信部２１が受信する（ステップＳ１１）。アクセス要求には、アクセス要求の種類、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、メモリ１１上のアクセス対象の領域に対応するホスト１０のメモリアドレス空間上の領域を指し示すアドレスの情報が含まれている。
【００４４】
アクセス要求を受け取ると、アクセス要求受信部２１は、仮想記憶媒体１００のアクセス対象の領域を指し示すアドレスを転送ストレージ領域算出部２３に送る。アクセス対象の領域のアドレスを受け取ると、転送ストレージ領域算出部２３は、マッピングテーブルを参照して、転送ストレージ領域を含む記憶媒体４０を特定する。また、転送ストレージ領域算出部２３は、記憶媒体４０における転送ストレージ領域のアドレスを計算する（ステップＳ１２）。転送ストレージ領域算出部２３は、転送ストレージ領域を含む記憶媒体４０の識別子および記憶媒体４０の転送ストレージ領域のアドレスの情報を転送処理内容通知部２４に送る。
【００４５】
また、アクセス要求を受け取った際に、アクセス要求受信部２１は、アプリケーション実行部１２から受け取ったメモリアドレス空間上の領域のアドレスを、アクセス要求に対応する転送メモリ領域の先頭アドレスとして設定する（ステップＳ１３）。アクセス要求受信部２１は、設定した転送メモリ領域の先頭アドレスの情報と、アクセス要求の種類の情報を転送処理内容通知部２４に送る。
【００４６】
転送処理内容通知部２４は、アクセス要求受信部２１がアプリケーション実行部１２から受け取ったアクセス要求の情報に含まれるアクセス要求の種類と、メモリ１１における転送メモリ領域の先頭アドレスを受け取る。また、転送処理内容通知部２４は、転送ストレージ領域算出部２３から、記憶媒体４０の識別子および転送ストレージ領域のアドレスの情報を受け取る。各情報を受け取ると、転送処理内容通知部２４は、アクセス要求の種類、メモリ１１における転送メモリ領域の先頭アドレスデータ、記憶媒体４０の識別子および転送ストレージ領域のアドレスの情報を転送処理内容通知として出力する（ステップＳ１４）。転送処理内容通知部２４から出力された転送処理内容通知は、データ転送実行部３０に送られる。
【００４７】
データ転送実行部３０は、転送処理内容通知部２４から転送処理内容通知を受けとると、アクセス要求の種類を確認する（ステップＳ２１）。アクセス要求の種類が「Ｒｅａｄ」である場合（ステップＳ２２でＹｅｓ）、データ転送実行部３０は、転送処理内容通知の情報に基づいて、記憶媒体４０の転送ストレージ領域からメモリ１１の転送メモリ領域へのデータ転送を実行する（ステップＳ２３）。
【００４８】
アクセス要求の種類が「Ｗｒｉｔｅ」である場合（ステップＳ２２でＮｏ）、データ転送実行部３０は、転送処理内容通知の情報に基づいてメモリ１１の転送メモリ領域から記憶媒体４の転送ストレージ領域へのデータ転送を実行する（ステップＳ２４）。
【００４９】
ステップＳ２３またはステップＳ２４の処理を完了すると、アプリケーション実行部１２から仮想記憶媒体１００に対するアクセス要求の処理の動作が完了する。再度、アクセス要求が行われた場合には、ステップＳ１１からの動作が繰り返される。また、各ステップの順番は、図７および図８のフローとは異なっていてもよい。例えば、ステップＳ１２とステップＳ１３の処理は同時期に実行されてもよく、順序を入れ替えて実行されてもよい。また、データ転送実行部３０がステップＳ２３またはステップＳ２４の処理の完了を、コントローラ２０のアクセス要求受信部２１または転送処理内容通知部２４に通知して、アプリケーション実行部１２に仮想記憶媒体１００に対するアクセス要求の完了が通知されるようにしてもよい。
【００５０】
本実施形態の計算機システムでは、ホスト１０から仮想記憶媒体１００へのアクセス要求に基づいて、アクセス要求で指し示された仮想記憶媒体１００上の記憶領域に対応する記憶媒体４０上の転送ストレージ領域をコントローラ２０が算出している。また、コントローラ２０は、算出した記憶媒体４０上の転送ストレージ領域とデータ転送の相手先となるホスト１０のメモリアドレス空間上の転送メモリ領域のアドレスの情報をデータ転送実行部３０に転送処理内容通知として出力している。データ転送実行部３０は、転送処理内容通知を基にホスト１０のメモリ１１と、記憶媒体４０の間でコントローラ２０を介さずにデータ転送を行う。このような構成でデータ転送を行うことで、コントローラとホストや記憶媒体間でのデータ転送を行う必要がないのでコントローラの処理能力や接続バス等の帯域が律速となってデータ転送性能が低下することはない。その結果、本実施形態の計算機システムは、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上することができる。
【００５１】
（第３の実施形態）
本発明の第３の実施形態について図を参照して詳細に説明する。図１１は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト５０と、コントローラ６０と、データ転送実行部７０と、記憶媒体４０を備えている。本実施形態の記憶媒体４０の構成と機能は、第２の実施形態の同名称の装置または部位と同様である。
【００５２】
第２の実施形態の計算機システムは、アクセス対象となる領域の先頭のアドレスを指定することでデータ転送の対象となる記憶領域の情報が通知されている。本実施形態の計算機システムは、領域のサイズの情報によってアクセス領域の範囲の情報を通知することを特徴とする。
【００５３】
ホスト５０の構成について説明する。ホスト５０は、メモリ１１と、アプリケーション実行部５１を備えている。
【００５４】
アプリケーション実行部５１は、アプリケーションプログラムを実行し各処理を行う。アプリケーション実行部５１は、コントローラ６０を介して仮想記憶媒体１００にアクセスし、各処理を行う際に必要なデータの読み出しや処理結果の書き込みを行う。アプリケーション実行部５１は、１個または複数のＣＰＵによって構成されている。アプリケーション実行部５１は、アプリケーションプログラムをＣＰＵによって実行する構成に代えて、ＦＰＧＡ等のあらかじめ設定された回路を用いて各処理を実行する構成としてもよい。
【００５５】
アプリケーション実行部５１は、仮想記憶媒体１００に対するアクセス要求をコントローラ６０に送る。アクセス要求は、アクセス要求の種類、仮想記憶媒体１００上のアクセス対象の領域を指定するアドレス、メモリ１１上のアクセス対象の領域に対応するホスト１０のメモリアドレス空間上の領域を指定するアドレスおよびアクセス要求範囲によって構成されている。アクセス要求範囲には、アクセス要求の範囲を大きさで示すアクセスサイズまたはアサクセス要求の末尾を指し示すアドレスの情報が用いられる。
【００５６】
コントローラ６０の構成について説明する。図１２は、本実施形態のコントローラ６０の構成を示した図である。本実施形態のコントローラ６０は、アクセス要求受信部６１と、マッピングテーブル記憶部６２と、転送ストレージ領域算出部６３と、転送処理内容通知部６４と、転送領域算出制御部６５を備えている。本実施形態のマッピングテーブル記憶部６２の構成と機能は、第２の実施形態のマッピングテーブル記憶部２２と同様である。
【００５７】
アクセス要求受信部６１は、ホスト５０のアプリケーション実行部５１から仮想記憶媒体１００へのアクセス要求を受け取る。アクセス要求は、第２の実施形態のアクセス要求に含まれる情報に加え、アクセス要求範囲としてアクセスサイズまたはアクセス要求の範囲の末尾を指し示すアドレスの情報が含まれている。
【００５８】
転送ストレージ領域算出部６３は、仮想記憶媒体１００上の着目点のアドレスに対応する転送ストレージ領域が含まれる記憶媒体４０の識別子および転送ストレージ領域における着目点のアドレスを決定する。
【００５９】
転送処理内容通知部６４は、アクセス要求に対応するデータ転送処理の実行内容を示す情報をデータ転送実行部７０に転送処理内容通知として通知する。転送処理内容通知は、アクセス情報の種類、記憶媒体４０の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよびデータ転送のサイズの組み合わせの情報によって構成されている。
【００６０】
転送領域算出制御部６５は、アプリケーション実行部５１からの仮想記憶媒体１００へのアクセス要求に基づいてデータ転送実行部７０に通知するデータ転送処理に必要な各情報の生成を制御する機能を有する。
【００６１】
転送領域算出制御部６５は、アクセス要求に対応した情報として、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスの情報を受け取る。転送領域算出制御部６５は、転送ストレージ領域算出部６３を制御して、記憶媒体４０内で各転送ストレージ領域を指し示すアドレスの範囲または先頭アドレスと領域のサイズを算出する。記憶媒体４０内で各転送ストレージ領域を指し示すアドレスの範囲または先頭アドレスと領域のサイズの算出は、記憶媒体４０の複数の記憶領域に分散したアクセス要求に対応する全ての転送ストレージ領域について行われる。また、転送領域算出制御部６５は、各転送ストレージ領域に対応するメモリ１１における転送メモリ領域のアドレスを算出する。
【００６２】
図１３は、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスとアクセスサイズから算出される転送ストレージ領域と、転送メモリ領域の先頭アドレスの対応関係の例を示す図である。図１３の例では、仮想記憶媒体１００上のアクセス対象の領域であるアクセス対象領域８１が、先頭から順番に記憶媒体４０ａ、記憶媒体４０ｂ、記憶媒体４０ｃの記憶領域８１ａ、記憶領域８２ｂ、記憶領域８２ｃにマッピングされている。ここで、記憶領域８２ａ、記憶領域８２ｂのサイズは、それぞれＳａ、Ｓｂであり、アクセス要求受信部６１が受け取ったメモリ１１上の領域の先頭アドレスはＭであるとする。このとき、記憶領域８２ａ、記憶領域８２ｂ、記憶領域８２ｃに対応するメモリ１１の転送メモリ領域８３のアドレスＭａ、Ｍｂ、Ｍｃは、それぞれＭａ＝Ｍ、Ｍｂ＝Ｍ＋Ｓａ、Ｍｃ＝Ｍ＋Ｓａ＋Ｓｂと計算することができる。
【００６３】
データ転送実行部７０は、第２の実施形態のデータ転送実行部３０と同様にデータ転送を実行する機能を有する。データ転送実行部７０は、コントローラ６０から通知された情報に基づいて、転送ストレージ領域と、転送メモリ領域との間で、通知されたアクセス要求の種類に応じたデータ転送を実行する。
【００６４】
本実施形態の計算機システムの動作について説明する。図１４は、本実施形態の計算機システムにおいて、ホスト５０のメモリ１１と、記憶媒体４０間でデータ転送を行う際のコントローラ６０の動作フローを示した図である。また、図１５は、本実施形態の計算機システムにおいて、ホスト１０のメモリ１１と、記憶媒体４０間でデータ転送を行う際のデータ転送実行部７０の動作フローを示した図である。また、図１６および図１７は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
【００６５】
ホスト５０のアプリケーション実行部５１は、各処理を実行する際に仮想記憶媒体１００へのアクセスが必要になると、仮想記憶媒体１００へのアクセス要求をコントローラ６０に送る。
【００６６】
ホスト５０からコントローラ６０に送られた仮想記憶媒体１００へのアクセス要求は、アクセス要求受信部６１が受信する（ステップＳ３１）。
【００６７】
アクセス要求は、アクセス要求の種類と、仮想記憶媒体１００上のアクセス対象の領域を指し示すアドレスと、アクセス対象の領域のサイズと、メモリ１１上のアクセス対象の領域に対応するホスト５０のメモリアドレス空間上の領域を指し示すアドレスの情報を含んでいる。
【００６８】
アクセス要求を受け取ると、アクセス要求受信部６１は、仮想記憶媒体１００上のアクセス対象の領域を指し示す先頭アドレスおよびサイズ、並びに、メモリ１１上のアクセス対象の領域に対応するホスト５０のメモリアドレス空間上の領域のアドレスの情報を転送領域算出制御部６５に送る。
【００６９】
各情報を受け取ると、転送領域算出制御部６５は、転送ストレージ領域、転送メモリ領域における着目点を表すオフセットを０に設定して初期化する。また、データ転送実行部７０に対して通知を行うデータ転送対象のリストを空に初期化する（ステップＳ３２）。
【００７０】
また、転送領域算出制御部６５は、仮想記憶媒体１００におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、仮想記憶媒体１００上の着目点のアドレスを算出する（ステップＳ３３）。
【００７１】
仮想記憶媒体１００上の着目点のアドレスを算出すると、転送領域算出制御部６５は、仮想記憶媒体１００上の着目点のアドレスを転送ストレージ領域算出部６３に通知する。仮想記憶媒体１００上の着目点のアドレスの情報を受け取ると、転送ストレージ領域算出部６３は、対応する転送ストレージ領域が含まれる記憶媒体４０の識別子および転送ストレージ領域における着目点のアドレスを決定する（ステップＳ３４）。転送ストレージ領域算出部６３は、記憶媒体４０の識別子および転送ストレージ領域における着目点のアドレスの情報を転送領域算出制御部６５に送る。
【００７２】
転送ストレージ領域における着目点のアドレスの情報等を受け取ると、転送領域算出制御部６５は、ホスト５０のメモリアドレス空間におけるアクセス対象の領域の先頭アドレスにオフセットの値を加える。アクセス対象の領域の先頭アドレスにオフセットの値を加えると、転送領域算出制御部６５は、ホスト５０のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する（ステップＳ３５）。
【００７３】
メモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出すると、転送領域算出制御部６５は、マッピングテーブルを参照して、仮想記憶媒体１００上の着目点のアドレスから連続領域にマッピングされるサイズを算出する。
【００７４】
連続領域にマッピングされるサイズを算出する際に、転送領域算出制御部６５は、始めに、着目点のアドレスと、対応するマッピングエントリの論理アドレスの差分を計算する。次に、転送領域算出制御部６５は、計算した差分を対応するマッピングエントリのマッピングサイズから差し引くことで、連続領域にマッピングされるサイズを算出する（ステップＳ３６）。
【００７５】
連続領域にマッピングされるサイズを算出すると、転送領域算出制御部６５は、アクセス対象の領域のサイズからオフセットを差し引いた値を算出し、計算した連続領域にマッピングされるサイズと比較する。転送領域算出制御部６５は、アクセス対象の領域のサイズからオフセットを差し引いた値と、計算した連続領域にマッピングされるサイズのうち最小の値をデータ転送のサイズとする（ステップＳ３７）。転送領域算出制御部６５は、記憶媒体４０の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよびデータ転送のサイズの組み合わせの情報をデータ転送対象のリストに追加する（ステップＳ３８）。
【００７６】
また、転送領域算出制御部６５は、連続した領域にマッピングされるサイズの値をオフセットの値に加える（ステップＳ３９）。オフセットの値がアクセス要求受信部６１から受け取ったアクセス対象の領域のサイズ未満の場合（ステップＳ４０でＮｏ）、転送領域算出制御部６５は、ステップＳ３３からの処理を再度、実行する。
【００７７】
オフセットの値がアクセス要求受信部６１から受け取ったアクセス対象の領域のサイズ以上の場合（ステップＳ４０でＹｅｓ）、転送領域算出制御部６５は、転送処理内容通知部６４に転送処理内容通知の出力を要求する。
【００７８】
転送処理内容通知部６４は、アクセス要求受信部６１から受け取るアクセス要求の種類、転送領域算出制御部６５から受け取るデータ転送対象のリストおよびサイズの情報を転送処理内容通知としてデータ転送実行部７０通知する（ステップＳ４１）。
【００７９】
データ転送実行部７０は、転送処理内容通知を受け取ると（ステップＳ５１）、アクセス要求の種類を確認する。アクセス要求の種類が「Ｒｅａｄ」である場合（ステップＳ５２でＹｅｓ）、データ転送実行部７０は、データ転送処理の情報に基づいて、記憶媒体４の転送ストレージ領域からメモリ１１の転送メモリ領域へのデータ転送を実行する（ステップＳ５３）。
【００８０】
アクセス要求の種類が「Ｗｒｉｔｅ」である場合（ステップＳ５２でＮｏ）、データ転送実行部７０は、データ転送処理の情報に基づいて、メモリ１１の転送メモリ領域から記憶媒体４０の転送ストレージ領域へのデータ転送を実行する（ステップＳ５４）。
【００８１】
ステップＳ５３またはステップＳ５４の処理を完了すると、アプリケーション実行部５２から仮想記憶媒体１００に対するアクセス要求の処理の動作が完了する。ステップＳ３１からＳ５３またはＳ５４の処理順序は、図１４および図１５に示した順序とは異なっていてもよい。例えば、ステップＳ３３からＳ３４、ステップＳ３５およびステップＳ３６の各処理は同時期に実行されてもよく、また、順序を入れ替えて実行してもよい。また、データ転送実行部７０がＳ５３またはＳ５４の処理の完了を、コントローラ６０のアクセス要求受信部６１または転送処理内容通知部６４に通知して、アプリケーション実行部５１に仮想記憶媒体１００に対するアクセス要求の完了が通知されるようにしてもよい。
【００８２】
本実施形態の計算機システムは、第２の実施形態と同様の効果を有する。また、本実施形態の計算機システムは、ホスト５０から仮想記憶媒体１００へのアクセス要求を行う際に、アクセス対象領域のサイズを示すアクセスサイズの情報を付加して行っている。そのため、コントローラ６０におけるデータ転送に関する各処理をより効率的に行うことができる。
【００８３】
ＲＡＩＤを実現するコントローラは、ハードウェアとソフトウェアのいずれによる実装も可能である。しかし、ソフトウェアによる実装では、通常、ＲＡＩＤコントローラを実行するＯＳの起動後に初期化を行うまでの間は、仮想記憶媒体に対するアクセスをホストに提供することができない。そのため、例えば、ＯＳの起動ドライブのように、システムの動作開始前から仮想記憶媒体に対するアクセスが必要となる場合は、ハードウェアで実装されたＲＡＩＤコントローラが用いられる。
【００８４】
また、ハードウェアのコントローラは、ソフトウェアによるコントローラに比べて、ＯＳのタスクスイッチに伴うオーバーヘッドを低減することができる。例えば、ＯＳ上で複数のＶＭ（Virtual Machine）が動作して仮想記憶媒体を共有する環境においては、ソフトウェアのコントローラを用いた場合は、アクセス処理においてＶＭからコントローラが動作するＯＳに対するタスクスイッチが発生する。一方、ハードウェアのコントローラを用いると、各ＶＭから直接、コントローラにアクセス要求を送ることで、タスクスイッチの発生を回避できる。
【００８５】
ＲＡＩＤを実現するコントローラは、ホストに対して仮想記憶媒体として動作するため、ホストから仮想記憶媒体に対するアクセス要求に応じて、ホストとコントローラとの間でアクセス要求に対応するデータの転送が行われる。また、コントローラはホストから仮想記憶媒体に対するアクセス要求に応じて、マッピング先の記憶領域を持つ記憶媒体にアクセスを行い、ホストと記憶媒体との間でデータの転送を行う。
【００８６】
そのため、ハードウェアのコントローラによって仮想記憶媒体として実現されるストレージのデータ転送性能は、コントローラの接続帯域による制約を受ける。データ転送性能は、ＲＩＡＤ０の場合はストライピングに使用する記憶媒体の数量に比例する。また、ＲＡＩＤ１の場合においても、Ｒｅａｄ処理を複数の記憶媒体に分散すると、Ｒｅａｄのデータ転送性能が記憶媒体の数量に比例して増加する。特に、近年の計算機システムでは、ＨＤＤに代わりより高性能なＳＳＤが記憶媒体として用いられるが、ＨＤＤに比べＳＳＤでは少量の記憶媒体でコントローラの接続帯域を上回る可能性が高い。よって、コントローラの接続帯域がデータ転送におけるボトルネックとなり得る。
【００８７】
また、ストレージのデータ転送性能は、ハードウェアのコントローラの処理性能による制約を受ける。コントローラの接続帯域によるボトルネックは、ホストとコントローラを接続するバスやネットワークの帯域の拡張で緩和できる。一方で、接続帯域の拡張や使用する記憶媒体の性能向上や数量増加に伴い、コントローラのデータ転送処理の負荷は、増加している。その結果、コントローラの処理能力をデータ転送処理の負荷が上回ることで、コントローラの処理能力についてもデータ転送におけるボトルネックとなる。また、コントローラを接続するバスやネットワークの拡張やコントローラの処理能力の向上は、コストの増加や構成の複雑化を生じさせる。
【００８８】
各実施形態の計算機システムは、これらのボトルネックを解消するため、ホストとストレージである仮想記憶媒体を構成する各記憶媒体との間で、コントローラを介さずにデータ転送を行っている。そのような構成とすることで、本実施形態の計算機システムは、コントローラの接続帯域や性能に制限されずに、アクセス要求を行うホスト上のプログラムやデバイスから透過にストレージのデータ転送性能が向上している。
【００８９】
本実施形態の計算機システムでは、コントローラと記憶媒体のそれぞれが独立にホスト上のコントローラ以外のハードウェアまたはソフトウェアからアクセス可能な状態で接続されている。すなわち、コントローラは、仮想記憶媒体を構成する物理的な各記憶媒体を隠蔽せず、コントローラ以外から各記憶媒体に対するアクセスを許容している。
【００９０】
ホストのアプリケーション実行部は、仮想記憶媒体に対するアクセス要求をコントローラに対して行う。アクセス要求は、ＲｅａｄまたはＷｒｉｔｅのいずれであるかを示すアクセス要求の種類と、仮想記憶媒体上のアクセス対象の領域を指し示すアドレスと、メモリアドレス空間上の領域を指し示すアドレスの情報によって構成されている。仮想記憶媒体上のアクセス対象の領域を指し示すアドレスは、例えば、ＬＢＡ(Logical Block Address)の形式で表される。
【００９１】
コントローラは、ホストから受け取るアクセス要求に基づいて、仮想記憶媒体上のアクセス対象の領域を指し示すアドレスから、格納先となる記憶媒体と記憶媒体内の領域を指し示すアドレスを、転送ストレージ領域として特定する。格納先である記憶媒体およびアドレスは、コントローラがＲＡＩＤ等によって管理する仮想記憶媒体のアドレス空間に対する各記憶媒体のマッピングの情報から算出することができる。また、転送ストレージ領域が複数の記憶媒体、記憶領域に跨る場合には、コントローラは、各転送ストレージ領域の特定を行うと共に、アクセス対象の領域全体において対応する位置を表すオフセットを計算する。
【００９２】
また、コントローラは、ホストからのアクセス要求において受信した、ホストのメモリアドレス空間上の領域を指し示すアドレスから、各転送ストレージ領域に対応するホストのメモリアドレス空間上のアドレスを、転送メモリ領域としてオフセットを用いて計算する。各転送ストレージ領域に対応する転送メモリ領域が断片化している場合は、コントローラは、各断片に対応するホストのメモリアドレス空間上のアドレスを、オフセットを用いて計算する。
【００９３】
コントローラは、アクセス対象の領域に対応する転送ストレージ領域と転送メモリ領域の対を、アクセス要求の種類と共に実際のアクセス処理であるホストのメモリと記憶媒体との間のデータ転送を行うモジュールに通知する。データ転送を行うモジュールは、コントローラからの通知に基づいて、転送ストレージ領域として指定された記憶媒体とホストのメモリアドレス空間上の領域との間で、コントローラを経由せずにデータ転送を実行する。コントローラを経由せずにデータ転送を実行する手段としては、例えば、記憶媒体とメモリアドレス空間上の領域との間で行うＤＭＡ転送が用いられる。
【００９４】
データ転送を行う際に、仮想記憶媒体に対するアクセス要求の処理段階では、コントローラにおいてホストから隠蔽された状態で実行される。一方でデータ転送処理では、データ転送を行うモジュールによる制御によって、ホストから透過かつボトルネックとなるコントローラを経由せずにデータ転送が行われる。また、データ転送を行うモジュールから、コントローラに対して各データ転送処理の完了を通知して、アクセス要求に対応する全てのデータ転送が完了した段階で、コントローラからホストに対して仮想記憶媒体のアクセスの完了を通知することもできる。
【００９５】
上記のような構成とすることで、仮想的な記憶領域に対するアクセスを提供するコントローラが原因となるボトルネックをホストから透過に解消して、アクセス性能の向上を実現することができる。
【００９６】
第２の実施形態および第３の実施形態におけるコントローラおよびデータ転送実行部で実行される各処理は、コンピュータプログラムをコンピュータで実行することによって行われてもよい。図１８は、コントローラおよびデータ転送実行部で実行される各処理を行うコンピュータプログラムを実行するコンピュータ９０の構成の例を示したものである。コンピュータ９０は、ＣＰＵ９１と、メモリ９２と、記憶装置９３と、Ｉ／Ｆ（Interface）部９４を備えている。
【００９７】
ＣＰＵ９１は、記憶装置９３から各処理を行うコンピュータプログラムを読み出して実行する。メモリ９２は、ＤＲＡＭ等によって構成され、ＣＰＵ９１が実行するコンピュータプログラムや処理中のデータが一時保存される。記憶装置９３は、ＣＰＵ９１が実行するコンピュータプログラム、処理結果および外部から取得した情報等が保存される。記憶装置９３は、例えば、不揮発性の半導体記憶装置によって構成されている。記憶装置９３には、ＨＤＤ等の他の記憶装置が用いられてもよい。Ｉ／Ｆ部９４は、ホストや記憶媒体等の他の装置との間でデータの入出力を行うインタフェースである。Ｉ／Ｆ部９４は、アクセス要求やデータ転送処理通知の入出力、および、ホストや記憶媒体間におけるデータ転送処理における制御信号の入出力を行うインタフェースとして機能する。
【００９８】
また、各処理に行うコンピュータプログラムは、記録媒体に格納して頒布することもできる。記録媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記録媒体としては、ＣＤ-ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ（Digital Versatile Disc）などの光ディスクを用いることもできる。不揮発性の半導体メモリを記録媒体として用いてもよい。
【００９９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１００】
［付記１］
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第１のアドレス情報と、前記第１のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第２のアドレス情報とを受信するアクセス要求受信手段と、
前記第１のアドレス情報に基づいて、前記第１のアドレス情報に対応する前記記憶媒体上の領域を指定する第３のアドレス情報を特定する格納先特定手段と、
前記アクセス要求の種類と、前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第２のアドレス情報および前記第３のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知手段と
を備えることを特徴とするコントローラ。
【０１０１】
［付記２］
前記アクセス要求受信手段は、前記第２のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする付記１に記載のコントローラ。
【０１０２】
［付記３］
前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第２のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知手段をさらに備えることを特徴とする付記１または２に記載のコントローラ。
【０１０３】
［付記４］
前記格納先特定手段は、前記第１のアドレス情報に対応する前記記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第３のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第４のアドレス情報を前記第２のアドレス情報を基に特定することを特徴とする付記１から３いずれかに記載のコントローラ。
【０１０４】
［付記５］
付記１から４いずれかに記載のコントローラと、
前記コントローラの要求に基づいて、仮想的な記憶領域のデータを保存している記憶媒体と、前記ホストとの間で前記コントローラを介さずにデータ転送を行うデータ転送手段を有するデータ転送手段と
を備え、
前記データ転送手段は、前記コントローラから出力される前記転送処理内容通知に基づいて、前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第２のアドレス情報に対応する領域との間で、前記コントローラを介さずにデータ転送を行うことを特徴とする計算機システム。
【０１０５】
［付記６］
前記データ転送手段は、前記コントローラの前記格納先特定手段から通知された記憶媒体に対して、前記第２のアドレス情報および前記第３のアドレス情報を通知し、前記第２のアドレス情報が示す前記ホストのメモリアドレス空間上の領域と、前記記憶媒体上の前記第３のアドレス情報が指し示す記憶領域との間における、ＤＭＡ転送に基づくデータ転送を制御することを特徴とする付記５に記載の計算機システム。
【０１０６】
［付記７］
アプリケーションプログラムを実行する実行手段と、前記アプリケーションプログラムを実行する際に必要なデータを一時的に記憶する記憶手段とを備えるホストと、
前記ホストと直接またはネットワークを介して接続され、データを非一時的に記憶する手段を備える記憶媒体と
をさらに備え、
前記コントローラは前記ホストに接続され、
前記コントローラは、前記ホストと前記記憶媒体に間でデータ転送を行うことを特徴とする付記５または６に記載の計算機システム。
【０１０７】
［付記８］
前記仮想的な記憶領域へのアクセスの要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第１のアドレス情報と、前記第１のアドレス情報に対応する前記記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する第２のアドレス情報とを前記ホストから受信し、
前記第１のアドレス情報に基づいて、記第１のアドレス情報に対応する前記記憶媒体上の領域を指定する第３のアドレス情報を特定し、
前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第２のアドレス情報および前記第３のアドレス情報とともに転送処理内容通知として出力し、
前記データ転送要求に基づいて、前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレス情報に対応する領域との間で直接、データ転送を行うことを特徴とするデータ転送方法。
【０１０８】
［付記９］
前記第１のアドレス情報に対応する記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに第３のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第４のアドレス情報を前記第２のアドレス情報を基に特定することを特徴とする付記８に記載のデータ転送方法。
【０１０９】
［付記１０］
前記第２のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする付記９に記載のデータ転送方法。
【０１１０】
［付記１１］
前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第２のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知することを特徴とする付記８または１０いずれかに記載のデータ転送方法。
【０１１１】
［付記１２］
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第１のアドレス情報と、前記第１のアドレス情報に対応する前記記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第２のアドレス情報とを受信するアクセス要求受信処理と、
前記第１のアドレス情報に基づいて、前記第１のアドレス情報に対応する記憶媒体上の領域を指定する第３のアドレス情報を特定する格納先特定処理と、
前記アクセス要求の種類と、前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第２のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第２のアドレス情報および前記第３のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知処理と
をコンピュータに実行させることを特徴とする転送制御プログラム。
【０１１２】
［付記１３］
前記アクセス要求受信処理において、前記第２のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信する処理コンピュータに実行させることを特徴とする付記１２に記載の転送制御プログラム。
【０１１３】
［付記１４］
前記記憶媒体上の前記第３のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第２のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知処理をさらにコンピュータに実行させることを特徴とする付記１２または１３に記載の転送制御プログラム。
【０１１４】
［付記１５］
前記格納先特定処理において、前記第１のアドレス情報に対応する前記記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第３のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第４のアドレス情報を前記第２のアドレス情報を基に特定する処理をコンピュータに実行させることを特徴とする付記１２から１４いずれかに記載の転送制御プログラム。
【符号の説明】
【０１１５】
１    アクセス要求受信手段
２    格納先特定手段
３    転送処理内容通知手段
１０    ホスト
１１    メモリ
１２    アプリケーション実行部
２０    コントローラ
２１    アクセス要求受信部
２２    マッピングテーブル記憶部
２３    転送ストレージ領域算出部
２４    転送処理内容通知部
３０    データ転送実行部
４０    記憶媒体
４０ａ    記憶媒体
４０ｂ    記憶媒体
４０ｃ    記憶媒体
４１    記憶領域
４２    記憶領域
４３    転送ストレージ領域
５０    ホスト
５１    アプリケーション実行部
６０    コントローラ
６１    アクセス要求受信部
６２    マッピングテーブル記憶部
６３    転送ストレージ領域算出部
６４    転送処理内容通知部
７０    データ転送実行部
８１    アクセス対象領域
８２ａ    記憶領域
８２ｂ    記憶領域
８２ｃ    記憶領域
８３    転送メモリ領域
９０    コンピュータ
９１    ＣＰＵ
９２    メモリ
９３    記憶装置
９４    Ｉ／Ｆ部
１００    仮想記憶媒体
２００    マッピングエントリ
２０１    論理アドレス
２０２    記憶媒体識別子
２０３    物理アドレス
２０４    マッピングサイズ
【図１】
2019159735.tif 000003
【図２】
2019159735.tif 000004
【図３】
2019159735.tif 000005
【図４】
2019159735.tif 000006
【図５】
2019159735.tif 000007
【図６】
2019159735.tif 000008
【図７】
2019159735.tif 000009
【図８】
2019159735.tif 000010
【図９】
2019159735.tif 000011
【図１０】
2019159735.tif 000012
【図１１】
2019159735.tif 000013
【図１２】
2019159735.tif 000014
【図１３】
2019159735.tif 000015
【図１４】
2019159735.tif 000016
【図１５】
2019159735.tif 000017
【図１６】
2019159735.tif 000018
【図１７】
2019159735.tif 000019
【図１８】
2019159735.tif 000020