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