(57)【要約】【課題】処理負荷を抑えつつメモリリソースを有効活用する演算処理装置、情報処理装置及び演算処理装置の制御方法を提供する。【解決手段】プロセッサコア１３は、演算処理の実行、及びデータの読み書きを行う処理に対するメモリ２０上の領域の割り当てを行う。ＭＭＵ１４は、プロセッサコア１３からのメモリ２０の使用要求を受けて、プロセッサコア１３により割り当てられたメモリ２０上の第１領域を用いてメモリ２０に対する処理を行う。ＲＤＭＡモジュール１１は、メモリ２０と他のメモリとの間のデータ転送処理の指示をプロセッサコア１３から受けて、データ転送用の領域が未割り当ての場合、割り当ての実行をプロセッサコア１３へ要求し、プロセッサコア１３により割り当てられた第２領域を用いてデータ転送処理を行う。【選択図】図２
2015146115.tif 000002
【特許請求の範囲】
【請求項１】
演算処理の実行、及びデータの読み書きを行う処理に対して第１主記憶装置上の領域を割り当て、割り当てた領域を示す割当情報を作成する演算処理部と、
前記第１主記憶装置の使用要求を前記演算処理部から受けて、前記割当情報における第１領域を用いて前記第１主記憶装置に対するデータ管理処理を行うメモリ管理部と、
前記第１主記憶装置と第２主記憶装置との間のデータ転送処理の指示を前記演算処理部から受けて、データ転送用の領域が未割り当ての場合、割り当ての実行を前記演算処理部へ要求し、前記演算処理部により作成された前記割当情報における第２領域を用いて前記データ転送処理を行うデータ転送制御部と
を備えたことを特徴とする演算処理装置。
【請求項２】
前記メモリ管理部は、前記割当情報に格納された仮想アドレスと物理アドレスとの対応を表すアドレス対応情報を基に、前記使用要求に含まれる第１仮想アドレスを前記第１領域上の第１物理アドレスに変換し、前記第１物理アドレスを用いて前記第１主記憶装置に対する前記データ管理処理を行い、
前記データ転送制御部は、前記割当情報に格納された前記アドレス対応情報を基に、前記データ転送処理の指示に含まれる第２仮想アドレスを第２物理アドレスに変換し、前記第２物理アドレスを用いて前記データ転送処理を行うことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記メモリ管理部は、前記第１仮想アドレスと前記第１物理アドレスとの対応情報が前記アドレス対応情報にない場合、前記第１領域の割り当ての実行を前記演算処理部に要求し、前記演算処理部に割り当てられた前記第１領域上の物理アドレスを前記第１物理アドレスとして、前記アドレス対応情報に登録し、
前記データ転送制御部は、前記第２仮想アドレスと前記第２物理アドレスとの対応の情報が前記アドレス対応情報にない場合、データ転送用の領域が未割り当てと判定し、前記第２領域の割り当ての実行を前記演算処理部に要求し、前記演算処理部に割り当てられた前記第２領域上の物理アドレスを前記第２物理アドレスとして、前記アドレス対応情報に登録する
ことを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記データ転送制御部は、前記アドレス対応情報上の前記第２仮想アドレスと前記第２物理アドレスとの対応情報を格納するキャッシュを有しており、前記アドレス対応情報上の前記第２仮想アドレスと前記第２物理アドレスとの対応が更新されると前記キャッシュの対応情報を更新し、前記キャッシュに格納されている対応情報を用いて前記第２仮想アドレスを前記第２物理アドレスに変換することを特徴とする請求項２又は３に記載の演算処理装置。
【請求項５】
前記データ転送制御部は、データ転送用の領域が未割り当ての場合、前記メモリ管理部に対して領域が未割り当てを通知し、
前記メモリ管理部は、領域の未割り当ての通知を前記データ転送制御部から受けて、前記第２領域の割り当ての実行を前記演算処理部に要求する
ことを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【請求項６】
演算処理装置、主記憶装置及びデータ転送装置を有する情報処理装置であって、
前記演算処理装置は、
演算処理の実行、及びデータの読み書きを行う処理に対して第１主記憶装置上の領域を割り当て、割り当てた領域を示す割当情報を作成し前記主記憶装置に格納する演算処理部と、
前記第１主記憶装置の使用要求を前記演算処理部から受けて、前記第１主記憶装置に格納された前記割当情報における第１領域を用いて前記第１主記憶装置に対するデータ管理処理を行うメモリ管理部とを備え、
前記データ転送装置は、前記第１主記憶装置と第２主記憶装置との間のデータ転送処理の指示を前記演算処理部から受けて、データ転送用の領域が未割り当ての場合、割り当ての実行を前記演算処理部へ要求し、前記演算処理部により前記第１主記憶装置に格納された前記割当情報における第２領域を用いて前記データ転送処理を行う
ことを特徴とする情報処理装置。
【請求項７】
前記主記憶装置は、仮想アドレスと物理アドレスとの対応を表すアドレス対応情報を格納した前記割当情報を記憶しており、
前記メモリ管理部は、前記アドレス対応情報を用いて、前記使用要求に含まれる第１仮想アドレスを前記第１領域上の第１物理アドレスに変換し、前記第１物理アドレスを用いて前記主記憶装置に対するデータ管理処理を行い、
前記データ転送制御装置は、前記アドレス対応情報を基に、前記データ転送処理の指示に含まれる第２仮想アドレスを第２物理アドレスに変換し、前記第２物理アドレスを用いて前記データ転送処理を行うことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
演算処理部を有する演算処理装置の制御方法であって、
演算処理部が第１主記憶装置の使用要求を行った場合、前記演算処理部により前記第１主記憶装置上に割り当てられた領域を示す割当情報における第１領域を用いて前記第１主記憶装置に対するデータ管理処理を行わせ、
演算処理装置が前記第１主記憶装置と第２主記憶装置との間のデータ転送処理を指示した場合、データ転送用の領域が未割り当てであれば、割り当ての実行を前記演算処理部へ要求し、前記演算処理部により作成された前記割当情報における第２領域を用いて前記データ転送処理を行わせる
ことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
高速ネットワークによって分散リソースの使用が容易になり、コンピュータネットワーク内の所定のノードに位置するデバイスから他のノードに位置するリモートメモリに対して直接アクセスを行うことの重要性が高まっている。加えて、演算処理装置間における通信速度の高速化に伴い、演算処理装置間の通信時間の性能が演算処理装置の処理全体に与える影響が増大してきている。
【０００３】
そこで、High  Performance  Computing（ＨＰＣ）の分野で用いられていたRemote  Direct  Memory  Access（ＲＤＭＡ）が、データベースやネットワークファイルシステムにおいて使用される機会が増加してきている。ＲＤＭＡとは、２つのデバイスのメモリ間においてネットワークを介して直接、すなわち演算処理装置であるCentral  Processing  Unit（ＣＰＵ）の処理を介さずにデータ交換を行う技術である。
【０００４】
データ転送にＲＤＭＡを用いることにより、アプリケーションとオペレーティングシステムとの間のバッファのコピーが不要となり、演算処理装置間での通信の高速化及び高スループット化を実現することができる。また、ＲＤＭＡではOperating  System（ＯＳ）の介入を最小限に抑えることができ、コンテキストスイッチが発生せず、低遅延化が実現できる。
【０００５】
例えば、ＲＤＭＡでは以下のような処理が行われる。第１ノードが転送領域をメモリ上に確保し、確保した転送領域をロックしてページアウト不能にする。そして、その転送量域の情報を別の第２ノードに送信すると、その第２ノードは指定された転送領域に対して直接的にデータの読み取り及び書き込みを行うことができる。
【０００６】
このようなＲＤＭＡの技術として、アドレス変換バッファでのミス時にプロセッサに割り込みを上げ、アドレスエレメントをバッファに設定させる従来技術がある。また、Network  Interface  Controller（ＮＩＣ）にMemory  Management  Unit（ＭＭＵ）、Translation  Lookaside  Buffer（ＴＬＢ）及びSynchronous  Dynamic  Random  Access  Memory（ＳＤＲＡＭ）を搭載させ領域登録を省略する従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０５−１７３９３０号公報
【非特許文献】
【０００８】
【非特許文献１】The  Quadrics  Network  (QsNet):  High-Performance  Clustering  Technology,  Fabrizio  Petrini,  Wu-chun  Feng,  Adolfy  Hoisie,  Salvador  Coll,  and  Eitan  Frachtenberg,  Computer  &  Computational  Sciences  Division  Los  Alamos  National  Laboratory
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＲＤＭＡを実行するためにメモリ上の転送領域をロックした場合、ＲＤＭＡの処理によりメモリ上の領域が占有され続ける。そのため、ＲＤＭＡの処理が増えた場合、ＲＤＭＡ用として登録された転送領域がメモリリソースを圧迫してしまう。また、ＲＤＭＡの実行の都度ロックを行うと、ＣＰＵの処理負荷が増大してしまう。
【００１０】
また、アドレス変換バッファでのミス時にプロセッサに割り込みを上げる従来技術ではロックされた転送領域の削減は考慮しておらず、メモリリソースの圧迫を解消することは困難である。また、ＮＩＣにＭＭＵ、ＴＬＢ及びＳＤＲＡＭを搭載させる従来技術では、ＯＳとＮＩＣとがそれぞれメモリの領域を表すページテーブルを有するため、両者の整合性を維持するためにＣＰＵに処理負荷がかかってしまう。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、処理負荷を抑えつつメモリリソースを有効活用する演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する算処理装置、情報処理装置及び演算処理装置の制御方法は、一つの態様において、演算処理部は、演算処理の実行、及びデータの読み書きを行う処理に対する第１主記憶装置上の領域を割り当て、割り当てた領域を示す割当情報を作成する。メモリ管理部は、前記第１主記憶装置の使用要求を前記演算処理部から受けて、前記割当情報における第１領域を用いて前記第１主記憶装置に対するデータ管理処理を行う。データ転送制御部は、前記第１主記憶装置と第２主記憶装置との間のデータ転送処理の指示を前記演算処理部から受けて、データ転送用の領域が未割り当ての場合、割り当ての実行を前記演算処理部へ要求し、前記演算処理部により作成された前記割当情報における第２領域を用いて前記データ転送処理を行う。
【発明の効果】
【００１３】
本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法の一つの態様によれば、処理負荷を抑えつつメモリリソースを有効活用することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、ＲＤＭＡを実行する情報処理システムの一例のシステム構成図である。
【図２】図２は、ＣＰＵ及びメモリのＲＤＭＡによるデータ転送機能のブロック図である。
【図３】図３は、アドレス空間テーブルの一例の図である。
【図４】図４は、ページテーブルのフォーマットの一例を表す図である。
【図５】図５は、メモリ上のユーザアプリ領域の登録処理のフローチャートである。
【図６】図６は、ＲＤＭＡ送信を実行する情報処理装置における処理のフローチャートである。
【図７】図７は、ＲＤＭＡによるデータ受信を行う情報処理装置における処理のフローチャートである。
【図８】図８は、ＲＤＭＡモジュールによるデータ送信の処理のフローチャートである。
【図９】図９は、ＲＤＭＡモジュールによるデータ受信の処理のフローチャートである。
【図１０】図１０は、実施例１のＲＤＭＡによるデータ転送におけるページ割り当てによるオーバヘッドを説明するための図である。
【図１１】図１１は、実施例１の変形例に係る情報処理装置のブロック図である。
【図１２】図１２は、実施例２に係る情報処理装置のブロック図である。
【図１３】図１３は、ページのロックを用いる場合の領域登録処理のフローチャートである。
【図１４】図１４は、ページのロックを用いてＲＤＭＡ送信を実行する情報処理装置における処理のフローチャートである。
【図１５】図１５は、ページのロックを用いてＲＤＭＡによるデータ受信を行う情報処理装置における処理のフローチャートである。
【図１６】図１６は、ページのロックを用いた場合のＲＤＭＡモジュールによるデータ送信の処理のフローチャートである。
【図１７】図１７は、ページのロックを用いた場合のＲＤＭＡモジュールによるデータ受信の処理のフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法が限定されるものではない。
【実施例１】
【００１６】
図１は、ＲＤＭＡを実行する情報処理システムの一例のシステム構成図である。ＲＤＭＡを実行する情報処理システムは、情報処理装置１Ａ〜１Ｃ及びネットワークスイッチを含む。
【００１７】
各情報処理装置１Ａ〜１Ｃは、ネットワークスイッチに接続されている。そして、各情報処理装置１Ａ〜１Ｃは、互いにネットワークスイッチを介してデータの送受信を行うことができる。以下では、情報処理装置１Ａ〜１Ｃは本実施例ではそれぞれをそれぞれ区別しない場合、単に「情報処理装置１」という。
【００１８】
情報処理装置１Ａ〜１Ｃは、それぞれＣＰＵ１０、メモリ２０及びハードディスク３０を有する。
【００１９】
ハードディスク３０は、アプリケーションなどの各種プログラムを格納する。
【００２０】
ＣＰＵ１０は、メモリ２０及びハードディスク３０とバスで接続されている。ＣＰＵ１０は、バスを介してメモリ２０及びハードディスク３０へのデータの読み込み及び書き込みを行う。そして、ＣＰＵ１０は、ハードディスク３０に格納されている各種プログラムを読出し、読みだしたプログラムをメモリ２０に展開し実行する。
【００２１】
また、ＣＰＵ１０は、ＲＤＭＡモジュール１１及びInput/Output（Ｉ／Ｏ）インタフェース１２を有する。図１では、Ｉ／Ｏインタフェース１２を省略して「Ｉ／Ｏ」と記載する。
【００２２】
ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータ転送においてメモリ２０に対してデータの読み込みやデータの書き込みを行う。また、ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータ転送においてメモリ２０から読みだしたデータを、Ｉ／Ｏインタフェース１２を介して他の情報処理装置１へ送信する。また、ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータ転送において、他の情報処理装置１からＩ／Ｏインタフェース１２を介してデータを受信する。そして、ＲＤＭＡモジュール１１は、受信したデータをメモリ２０へ格納する。次に、本実施例に係る情報処理装置１におけるＲＤＭＡによるデータ転送の機能について詳細に説明する。
【００２３】
図２は、ＣＰＵ及びメモリのＲＤＭＡによるデータ転送機能のブロック図である。図２では、説明の都合上、ＲＤＭＡによるデータ転送に用いる機能について主に記載しており、他の機能については省略する。
【００２４】
メモリ２０は、ページテーブル２１及びアドレス空間識別子テーブル２２を保持する。また、メモリ２０は、ＲＤＭＡによるデータ転送を行う場合、自己が有する記憶領域にユーザアプリ領域２３を確保する。このメモリ２０が、「第１主記憶装置」の一例にあたる。また、ここで説明する情報処理装置１のメモリ２０からＲＤＭＡを用いたデータ転送における送信先又は送信元となる他の情報処理装置１のメモリ２０が「第２主記憶装置」の一例にあたる。
【００２５】
ページテーブル２１は、仮想アドレスを物理アドレスに変換するための変換表である。ページテーブル２１に格納されている、仮想アドレスと物理アドレスとの組を表す各エントリを、ページテーブルエントリ（Page  Table  Entry：ＰＴＥ）という。ページテーブル２１は、プロセッサコア１３が実行するＯＳにより更新などの書き換えが行われる。このページテーブル２１が、「割当情報」の一例にあたる。
【００２６】
アドレス空間識別子テーブル２２は、領域指定子とControl  Register（ＣＲ）３値との対応を表すテーブルである。領域指定子とは、ＲＤＭＡによるデータ転送のための転送領域を特定するための識別情報である。また、ＣＲ３値とは、各アプリケーションに対応するページミドルディレクトリ（「ページディレクトリ」と呼ばれることがある。）を決定するためのアドレス空間の識別子である。ページミドルディレクトリは、ページテーブル２１において仮想アドレスに対応する物理アドレスを特定するための情報の１つである。
【００２７】
アドレス空間識別子テーブル２２は、例えば、図３で示されるテーブルである。図３は、アドレス空間テーブルの一例の図である。図３に示すように、アドレス空間識別子テーブル２２は、各領域指定子に対応させてＣＲ３値が登録されている。
【００２８】
ユーザアプリ領域２３は、アプリケーション毎に割り当てられているデータの格納領域である。ユーザアプリ領域２３には、後述するプロセッサコア１３によりＲＤＭＡによるデータ転送のための仮想アドレスに対する物理アドレスの割り当てが行われた際に、データ転送用の領域が確保される。
【００２９】
ＣＰＵ１０は、ＲＤＭＡモジュール１１及びＩ／Ｏインタフェース１２の他に、演算処理部であるプロセッサコア１３、ＭＭＵ１４及びＣＲ３レジスタ１５を有する。
【００３０】
ＣＲ３レジスタ１５は、各アプリケーションに対応するＣＲ３値を保持する。
【００３１】
プロセッサコア１３は、アプリケーションを実行する。そして、プロセッサコア１３は、実行するアプリケーションによるＲＤＭＡ以外でのメモリ２０の使用の場合、そのアプリケーションに対応するＣＲ３値をＣＲ３レジスタ１５から取得する。そして、プロセッサコア１３は、アプリケーションが指定する仮想アドレスのアドレス変換要求を取得したＣＲ３値とともにアドレス変換部１４１に送信する。
【００３２】
その後、アドレス変換部１４１が仮想アドレスに対応する物理アドレスを取得した場合、プロセッサコア１３は、アドレス変換要求への応答として物理アドレスをアドレス変換部１４１から取得する。そして、プロセッサコア１３は、取得した物理アドレスを用いてメモリ２０に対してアプリケーションによるデータの読み書きを伴う処理を行う。
【００３３】
これに対して、アドレス変換部１４１が仮想アドレスに対応する物理アドレスを取得しなかった場合、プロセッサコア１３は、アドレス変換要求への応答としてページフォルトの通知をアドレス変換部１４１から受信する。この場合、プロセッサコア１３は、ＯＳの処理に割り込みを入れる。そして、プロセッサコア１３は、アドレス変換要求の対象である仮想アドレスに対して、物理アドレスの割り当てを、ＯＳを使用して行う。プロセッサコア１３は、この割り当てをページ単位で行う。これにより、プロセッサコア１３は、アドレス変換要求の対象である仮想アドレスと割り当てた物理アドレスとの対応をページテーブル２１に格納する。この後、プロセッサコア１３は、アドレス変換要求の対象である仮想アドレスに対応する物理アドレスをアドレス変換部１４１から取得しアプリケーションによるデータの読み書きを伴う処理を行う。
【００３４】
また、プロセッサコア１３は、ＲＤＭＡを用いたデータ送信の場合、ＲＤＭＡによるデータ送信の指示をアプリケーションから取得する。ＲＤＭＡによるデータ送信の指示には、送信するデータの仮想アドレスが含まれる。以下では、ＲＤＭＡを用いたデータ送信を「ＲＤＭＡ送信」という。プロセッサコア１３は、ＲＤＭＡ送信を指示したアプリケーションに対して登録されているユーザアプリ領域２３の領域指定子を取得する。そして、プロセッサコア１３は、取得した領域指定子とともにＲＤＭＡ送信の指示を後述するＲＤＭＡ処理部１１１へ出力する。その後、ＲＤＭＡ送信が完了すると、プロセッサコア１３は、ＲＤＭＡ処理部１１１から完了通知を受信する。
【００３５】
また、プロセッサコア１３は、ＲＤＭＡ処理部１１１が仮想アドレスに対応する物理アドレスを取得しない場合、ページフォルトの通知を後述するＭＭＵ１４のページフォルト依頼受付部１４４から受信する。そして、プロセッサコア１３は、ＯＳの処理に割り込みを入れる。そして、プロセッサコア１３は、ＲＤＭＡ送信の対象であるデータの仮想アドレスに対する物理アドレスの割り当てを、ＯＳを使用して行う。プロセッサコア１３は、この割り当てをページ単位で行う。これにより、プロセッサコア１３は、ＲＤＭＡ送信の対象であるデータの仮想アドレスと割り当てた物理アドレスとの対応をページテーブル２１に格納する。
【００３６】
また、プロセッサコア１３は、ページアウトなどに伴うＯＳによるページテーブル２１の変更を後述するＴＬＢ管理部１４３へ通知する。ここで、ページアウトとは、メモリ２０において長期間使用されていないような必要度が低いページをハードディスク３０（図１参照）に書き出してメモリ２０から消去する処理を指す。
【００３７】
ＭＭＵ１４は、アドレス変換部１４１、ＴＬＢ１４２、ＴＬＢ管理部１４３及びページフォルト依頼受付部１４４を有する。このＭＭＵ１４が、「メモリ管理部」の一例にあたる。
【００３８】
ＴＬＢ１４２は、仮想アドレスから物理アドレスへの変換の高速化を図るためのキャッシュである。ＴＬＢ１４２は、ページテーブル２１に登録されている仮想アドレスと物理アドレスとの対応情報の一部を格納する。すなわち、ＴＬＢ１４２は、ページテーブル２１のサブセットを格納する。ＴＬＢ１４２は、ページテーブル２１と同じフォーマットで作成されている。以下では、ＴＬＢ１４２に格納されている仮想アドレスと物理アドレスとの各対応情報もページテーブルエントリという。
【００３９】
アドレス変換部１４１は、アドレス変換要求をＣＲ３値とともにプロセッサコア１３から受ける。そして、アドレス変換部１４１は、アドレス変換要求で指定された仮想アドレスに対応する物理アドレスがＴＬＢ１４２にあるか否かを、受信したＣＲ３値を用いて判定する。
【００４０】
ここで、図４を参照して、アドレス変換部１４１による仮想アドレスに対応する物理アドレスの取得について説明する。図４は、ページテーブルのフォーマットの一例を表す図である。ここでは、アドレス変換部１４１が、仮想アドレス２００の変換要求をＣＲ３値２０１とともに受信した場合で説明する。ここでは、アドレス変換部１４１が、ＴＬＢ１４２に指定されたページテーブルエントリが格納されているか否かを判定する場合で説明する。ただし、ＴＬＢ１４２とページテーブル２１は、同じフォーマットを有するため、アドレス変換部１４１は、ページテーブル２１を検索する場合も同様の処理により検索を行う。
【００４１】
ページテーブル２１及びＴＬＢ１４２は、例えば図４に示すように、ページミドルディレクトリ２０４、ページテーブル２０５及びページフレーム２０６を含む複数段のテーブルを有する。
【００４２】
アドレス変換部１４１は、受信したＣＲ３値に対応するページミドルディレクトリ２０４をＴＬＢ１４２から選択する。次に、アドレス変換部１４１は、仮想アドレス２００の上位１０ビットであらわされるディレクトリ情報２０２及びＣＲ３値２０１を用いて演算を行い、アドレスを求める。そして、アドレス変換部１４１は、ページミドルディレクトリ２０４上の求めたアドレスに格納されているページテーブルエントリを取得する。
【００４３】
次に、アドレス変換部１４１は、ページミドルディレクトリ２０４から取得したページテーブルエントリに対応するページテーブル２０５をＴＬＢ１４２から選択する。次に、アドレス変換部１４１は、仮想アドレス２００の１１〜２０ビットの値で表されるテーブル情報２０３及び取得したページテーブルエントリを用いて演算を行い、アドレスを求める。そして、アドレス変換部１４１は、ページテーブル２０５上の求めたアドレスに格納されているページテーブルエントリを取得する。
【００４４】
次に、アドレス変換部１４１は、ページテーブル２０５から取得したページテーブルエントリに対応するページフレーム２０６をＴＬＢ１４２から選択する。そして、アドレス変換部１４１は、選択したページフレーム２０６上の、仮想アドレス２００の残りの１２ビットの値で表されるオフセット情報２０４で表されるアドレスに格納されている物理アドレスを取得する。この最後に取得した物理アドレスが、アドレス変換要求を受けた仮想アドレスに対応する物理アドレスである。物理アドレスが取得できた場合、アドレス変換部１４１は、アドレス変換要求で指定された仮想アドレスに対応する物理アドレスがＴＬＢ１４２にあると判定できる。
【００４５】
図２に戻って説明を続ける。指定された仮想アドレスに対応するページテーブルエントリがＴＬＢ１４２にある場合、アドレス変換部１４１は、指定された仮想アドレスに対応する物理アドレスをＴＬＢ１４２から取得する。そして、アドレス変換部１４１は、取得した物理アドレスをアドレス変換要求の応答としてプロセッサコア１３へ送信する。
【００４６】
これに対して、指定された仮想アドレスに対応するページテーブルエントリがＴＬＢ１４２にない場合、アドレス変換部１４１は、ＴＬＢ１４２でキャッシュミスが発生したことを、キャッシュミスの対象となった仮想アドレスとともにＴＬＢ管理部１４３へ通知する。さらに、アドレス変換部１４１は、アドレス変換要求で指定された仮想アドレスに対応するページテーブルエントリがページテーブル２１にあるか否かを判定する。このとき、アドレス変換部１４１は、上述したＴＬＢ１４２におけるページテーブルエントリの検索処理と同様の処理を、ページテーブル２１に対して行い、ページテーブルエントリを検索する。
【００４７】
指定された仮想アドレスに対応するページテーブルエントリがページテーブル２１にある場合、アドレス変換部１４１は、指定された仮想アドレスに対応する物理アドレスをページテーブル２１から取得する。そして、アドレス変換部１４１は、取得した物理アドレスをアドレス変換要求の応答としてプロセッサコア１３へ送信する。
【００４８】
これに対して、指定された仮想アドレスに対応するページテーブルエントリがページテーブル２１にない場合、アドレス変換部１４１は、ページフォルトの発生をプロセッサコア１３へ通知する。その後、ページテーブル２１が更新されると、アドレス変換部１４１は、指定された仮想アドレスに対応する物理アドレスをページテーブル２１から取得する。そして、アドレス変換部１４１は、取得した物理アドレスをアドレス変換要求の応答としてプロセッサコア１３へ送信する。
【００４９】
ＴＬＢ管理部４３は、ＴＬＢ１４２でキャッシュミスが発生したことの通知をアドレス変換部１４１から受ける。そして、ＴＬＢ管理部４３は、ＴＬＢ１４２の更新を行うか否かを判定する。更新を行う場合、ＴＬＢ管理部１４３は、ページテーブル２１の更新を待つ。そして、ページテーブル２１が更新されると、ＴＬＢ管理部４３は、キャッシュミスの対象となった仮想アドレスに対応するページテーブルエントリをページテーブル２１から取得する。そして、ＴＬＢ管理部４３は、取得したページテーブルエントリをＴＬＢ１４２に格納し、ＴＬＢ１４２を更新する。
【００５０】
また、ＴＬＢ管理部４３は、ページアウトなどにともなうページテーブル変更通知をプロセッサコア１３から取得する。ＴＬＢ管理部４３は、ＴＬＢ１４２に格納されているページテーブルエントリをページテーブル２１から取得する。そして、ＴＬＢ管理部４３は、取得したページテーブルエントリをＴＬＢ１４２に格納し、ＴＬＢ１４２を更新する。
【００５１】
ページフォルト依頼受付部１４４は、ページフォルトの通知の依頼を後述するＲＤＭＡモジュール１１のページフォルト検出部１２１から受け付ける。そして、ページフォルト依頼受付部１４４は、ページフォルトの発生をプロセッサコア１３へ通知する。
【００５２】
Ｉ／Ｏインタフェース１２は、ＲＤＭＡモジュール１１と他の情報処理装置１のＲＤＭＡモジュール１１と間の通信インタフェースである。
【００５３】
ＲＤＭＡモジュール１１は、ＲＤＭＡ処理部１１１、アドレス変換部１１２及び送受信部１１３を有する。このＲＤＭＡモジュール１１が、「データ転送制御部」の一例にあたる。
【００５４】
ＲＤＭＡ処理部１１１は、領域指定子とともにＲＤＭＡ送信の指示をプロセッサコア１１３から受信する。そして、ＲＤＭＡ処理部１１１は、ＲＤＭＡ送信の対象であるデータの仮想アドレスのアドレス変換要求を、受信した領域指定子とともにページフォルト検出部１２１へ送信する。
【００５５】
その後、ＲＤＭＡ処理部１１１は、アドレス変換要求で指定した仮想アドレスに対応する物理アドレスをページフォルト検出部１２１から取得する。そして、ＲＤＭＡ処理部１１１は、ユーザアプリ領域２３の中の取得した物理アドレスからデータを読み出す。次に、ＲＤＭＡ処理部１１１は、読み出したデータを送受信部１１３へ送信する。その後、ＲＤＭＡ処理部１１１は、データの送信先の情報処理装置１からAcknowledgement（ＡＣＫ）を受信すると、ＲＤＭＡ送信の完了通知をプロセッサコア１３へ送信する。
【００５６】
また、ＲＤＭＡ処理部１１１は、他の情報処理装置１からＲＤＭＡにより送信されたデータを送受信部１１３から受信する。そして、ＲＤＭＡ処理部１１１は、データの書き込み先の仮想アドレス及びデータの送信元のアプリケーションの領域指定子を受信データから取得する。次に、ＲＤＭＡ処理部１１１は、データの書き込み先の仮想アドレスのアドレス変換の指示を、受信した領域指定子とともにページフォルト検出部１２１へ送信する。
【００５７】
その後、ＲＤＭＡ処理部１１１は、データの書き込み先の仮想アドレスに対応する物理アドレスをページフォルト検出部１２１から取得する。そして、ＲＤＭＡ処理部１１１は、ユーザアプリ領域２３の中の取得した物理アドレスへデータを書き込む。データの書き込みが完了すると、ＲＤＭＡ処理部１１１は、ＡＣＫをデータの送信元の情報処理装置１へ送信する。その後、ＲＤＭＡ処理部１１１は、完了通知をプロセッサコア１３へ送信する。
【００５８】
アドレス変換部１１２は、ページフォルト検出部１２１、キャッシュ制御部１２２、ページテーブルキャッシュ１２３、ページテーブル読出部１２４及び指定子変換部１２５を有する。
【００５９】
ページテーブルキャッシュ１２３は、ＲＤＭＡ送信に用いた仮想アドレスと物理アドレスとの対応情報のうちの一部を格納する。ページテーブルキャッシュ１２３に格納されている仮想アドレスと物理アドレスとの対応情報は、ページテーブル２１のサブセットである。すなわち、ページテーブルキャッシュ１２３は、ページテーブル２１及びＴＬＢ１４２と同様のフォーマットで仮想アドレスと物理アドレスとの対応情報を保持する。以下では、ページテーブルキャッシュ１２３に格納されているＲＤＭＡ送信に用いた仮想アドレスと物理アドレスとの対応情報も「ページテーブルエントリ」という。
【００６０】
ページフォルト検出部１２１は、ＲＤＭＡによるデータの送信又は受信を行う場合、仮想アドレスのアドレス変換要求及びＲＤＭＡ送信を指示したアプリケーションの領域指定子をＲＤＭＡ処理部１１１から受信する。
【００６１】
ページフォルト検出部１２１は、受信した領域指定子のＣＲ３値への変換を指定子変換部１２５に指示する。その後、ページフォルト検出部１２１は、取得した領域指定子に対応するＣＲ３値を指定子変換部１２５から取得する。
【００６２】
次に、ページフォルト検出部１２１は、アドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリがページテーブルキャッシュ１２３にあるか否かを取得したＣＲ３値を用いて判定する。
【００６３】
ここで、上述したように、ページテーブルキャッシュ１２３とページテーブル２１及びＴＬＢ１４２は、同じフォーマットを用いてページテーブルエントリを格納する。そのため、ページフォルト検出部１２１は、上述したＴＬＢ１４２におけるページテーブルエントリの検索処理と同様の処理を、ページテーブルキャッシュ１２３に対して行い、ページテーブルエントリを検索する。
【００６４】
ページテーブルキャッシュ１２３にアドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリがある場合、ページフォルト検出部１２１は、その仮想アドレスに対応する物理アドレスをページテーブルキャッシュ１２３から取得する。そして、ページフォルト検出部１２１は、取得した物理アドレスをアドレス変換要求の応答としてＲＤＭＡ処理部１１１へ送信する。
【００６５】
これに対して、ページテーブルキャッシュ１２３にＲＤＭＡ送信の対象のデータの仮想アドレスに対応するページテーブルエントリがない場合、ページフォルト検出部１２１は、キャッシュミスと判定する。そして、ページフォルト検出部１２１は、ページテーブル２１からの情報取得をキャッシュ制御部１２２に指示する。
【００６６】
その後、ページフォルト検出部１２１は、ページテーブル読出部１２４から仮想アドレスに対応する物理アドレスを取得すると、取得した物理アドレスをアドレス変換要求の応答としてＲＤＭＡ処理部１１１へ送信する。
【００６７】
これに対して、ページテーブル読出部１２４から仮想アドレスに対応する物理アドレスが送られてこない場合、ページフォルト検出部１２１は、アドレス変換要求に対応する仮想アドレスへ物理アドレスが未だ割り当てられていないと判定する。すなわち、ページフォルト検出部１２１は、アドレス変換要求に対応する仮想アドレスに対してページが未割り当てと判定する。
【００６８】
ページが未割り当ての場合、ページフォルト検出部１２１は、ページフォルトの通知依頼をページフォルト依頼受付部１４４へ送信する。さらに、ページフォルト検出部１２１は、ページテーブルエントリの更新をページテーブル読出部１２４に指示する。その後、ページテーブルキャッシュ１２３が更新されると、ページフォルト検出部１２１は、アドレス変換要求を受けた仮想アドレスに対応する物理アドレスをページテーブルキャッシュ１２３から取得する。そして、ページフォルト検出部１２１は、取得した物理アドレスをアドレス変換要求の応答としてＲＤＭＡ処理部１１１へ送信する。
【００６９】
キャッシュ制御部１２２は、ページアウトなどによるページテーブル２１の変更通知をＴＬＢ管理部１４３から受ける。そして、キャッシュ制御部１２２は、ページテーブルキャッシュ１２３に格納されているページテーブルエントリの更新をページテーブル読出部１２４に指示する。
【００７０】
また、キャッシュ制御部１２２は、ページテーブル２１からの情報取得の指示をページフォルト検出部１２１から受ける。そして、キャッシュ制御部１２２は、アドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリの読み出しをページテーブル読出部１２４に指示する。
【００７１】
ページテーブル読出部１２４は、ページテーブルエントリの更新の指示をキャッシュ制御部１２２から受ける。この場合、ページテーブル読出部１２４は、ページテーブルキャッシュ１２３に格納されているページテーブルエントリの最新情報をページテーブル２１から取得する。そして、ページテーブル読出部１２４は、取得したページテーブルエントリをページテーブルキャッシュ１２３に追加する。さらに、ページテーブル読出部１２４は、取得したページテーブルエントリに格納されている物理アドレスをページフォルト検出部１２１へ送信する。
【００７２】
また、ページテーブル読出部１２４は、アドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリの更新の指示をキャッシュ制御部１２２から受ける。この場合、アドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリがページテーブル２１に存在すれば、ページテーブル読出部１２４は、そのページテーブルエントリを取得する。そして、ページテーブル読出部１２４は、取得したページテーブルエントリをページテーブルキャッシュ１２３に追加する。さらに、ページテーブル読出部１２４は、取得したページテーブルエントリに格納されている物理アドレスをページフォルト検出部１２１へ送信する。
【００７３】
これに対して、アドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリがページテーブル２１に存在しない場合、ページテーブル読出部１２４は、以下のような処理を行う。まず、ページテーブル読出部１２４は、アドレス変換要求を受けた仮想アドレスに対応するページテーブルエントリが加えられページテーブル２１が更新されるまでページテーブル２１を監視しつつ待機する。その後、ページテーブル読出部１２４は、そのページテーブルエントリを取得する。そして、ページテーブル読出部１２４は、取得したページテーブルエントリをページテーブルキャッシュ１２３に追加する。
【００７４】
指定子変換部１２５は、領域指定子の変換要求をページフォルト検出部１２１から受信する。そして、指定子変換部１２５は、変換要求で指定された領域指定子に対応するＣＲ３値をアドレス空間識別子テーブル２２から取得する。そして、指定子変換部１２５は、取得したＣＲ３値をページフォルト検出部１２１へ送信する。
【００７５】
送受信部１１３は、ＲＤＭＡ送信の場合、送信するデータをＲＤＭＡ処理部１１１から受ける。そして、送受信部１１３は、受信したデータをＩ／Ｏインタフェース１２を介してＲＤＭＡ送信の送信先の情報処理装置１へ送信する。
【００７６】
また、ＲＤＭＡを用いて送られてきたデータを受信する場合、送受信部１１３は，Ｉ／Ｏインタフェース１２を介してデータを受信する。そして、送受信部１１３は、受信したデータをＲＤＭＡ処理部１１１へ送信する。
【００７７】
次に、図５を参照して、メモリ２０上のユーザアプリ領域２３の登録処理の流れについて説明する。図５は、メモリ上のユーザアプリ領域の登録処理のフローチャートである。図５の各ブロックは、そのブロックの上方に記載された対象がそのブロックの動作主体であることを表す。ただし、図５では、便宜上、プロセッサコア１３が実行するソフトウェアを動作主体として表す。すなわち、各ソフトウェアに対応する実際のハードウェアとしての動作主体はプロセッサコア１３である。以上の設定は、後述する図６及び図７についても同様である。
【００７８】
ユーザアプリケーションは、領域登録をドライバに指示する（ステップＳ１１）。
【００７９】
ドライバは、領域登録の指示をユーザアプリケーションから受信し、そのユーザアプリケーション用にメモリ２０上にユーザアプリケーション領域２３を登録する。そして、ドライバは、登録したユーザアプリケーション領域２３を一意に識別するための領域指定子を作成する（ステップＳ１２）。
【００８０】
次に、ドライバは、作成した領域指定子と領域登録を指示したユーザアプリケーションに割り当てられているＣＲ３値とを対応させてメモリ２０上のアドレス空間識別子テーブル２２に登録する（ステップＳ１３）。
【００８１】
そして、ドライバは、作成した領域指定子を領域登録の指示元のユーザアプリケーションに対して送信する（ステップ１４）。
【００８２】
ユーザアプリケーションは、ドライバから送信された領域指定子を取得する（ステップＳ１５）。
【００８３】
ここで、図５に示すメモリ２０上のユーザアプリ領域２３の登録処理では、ＯＳ及びＲＤＭＡモジュールは処理を行わない。
【００８４】
次に、図６を参照して、ＲＤＭＡ送信を実行する情報処理装置１における処理の流れを説明する。図６は、ＲＤＭＡ送信を実行する情報処理装置における処理のフローチャートである。
【００８５】
ユーザアプリケーションは、ＲＤＭＡによる送信要求をＲＤＭＡモジュール１１に対して送信する（ステップＳ２１）。
【００８６】
ＲＤＭＡモジュール１１は、ＲＤＭＡによる送信要求をユーザアプリケーションから受信する。そして、ＲＤＭＡモジュール１１は、送信要求に付加されているユーザアプリ領域２３の領域指定子を取得する。その後、ＲＤＭＡモジュール１１は、取得した領域指定子に対応するＣＲ３値をアドレス空間識別子テーブル２２から取得する（ステップＳ２２）。
【００８７】
次に、ＲＤＭＡモジュール１１は、取得したＣＲ３値を用いて送信要求で指定されている仮想アドレスに対して物理アドレスが未割り当てか否か、すなわち、ページが未割り当てか否かを判定する（ステップＳ２３）。ページ未割当の判定処理の流れは、後で詳細に説明する。
【００８８】
ページ未割り当ての場合（ステップＳ２３：肯定）、ＲＤＭＡモジュール１１は、ＭＭＵ１４を介してページフォルトの発生をＯＳに通知する。ＯＳは、ページフォルトの発生の通知を受けて、割り込みを行い、仮想アドレスに対して物理アドレスを割り当てるページ割り当てを行う（ステップＳ２４）。そして、ＯＳは、仮想ドレスを物理アドレスとの対応情報をページテーブル２１に登録する。ＲＤＭＡモジュール１１は、ページテーブル２１の更新が行われるとＭＭＵ１４から更新通知を受ける。そして、ＲＤＭＡモジュール１１は、送信要求で指定された仮想アドレスと物理アドレスとの対応情報をページテーブル２１から取得し、ページテーブルキャッシュ１２３に格納する。
【００８９】
ページが既に割り当てられている場合（ステップＳ２３：否定）又はステップＳ２４の後、ＲＤＭＡモジュール１１は、送信要求で指定された仮想アドレスの物理アドレスへのアドレス変換を行う（ステップＳ２５）。
【００９０】
次に、ＲＤＭＡモジュール１１は、ユーザアプリ領域２３上の取得した物理アドレスに格納されているデータを読み出す（ステップＳ２６）。
【００９１】
その後、ＲＤＭＡモジュール１１は、読み出したデータをＲＤＭＡによる送信先の情報処理装置１に送信する（ステップＳ２７）。
【００９２】
そして、ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータの送信が完了したか否かを判定する（ステップＳ２８）。未送信のデータが存在する場合（ステップＳ２８：否定）、ＲＤＭＡモジュール１１は、ステップＳ２５へ戻る。
【００９３】
これに対して、データの送信が完了した場合（ステップＳ２８：肯定）、ＲＤＭＡモジュール１１は、送信先の情報処理装置１からＡＣＫを受信したか否かを判定する（ステップＳ２９）。ＡＣＫを受信していない場合（ステップＳ２９：否定）、ＲＤＭＡモジュール１１は、ＡＣＫを受信するまで待機する。
【００９４】
これに対して、ＡＣＫを受信した場合（ステップＳ２９：肯定）、ＲＤＭＡモジュール１１は、ＲＤＭＡ送信の完了通知をアプリケーションへ送信する（ステップＳ３０）。
【００９５】
アプリケーションは、ＲＤＭＡモジュール１１からのＲＤＭＡ送信の完了通知を受信し（ステップＳ３１）、ＲＤＭＡ送信の処理を終了する。
【００９６】
次に、図７を参照して、ＲＤＭＡによるデータ受信を行う情報処理装置１における処理の流れを説明する。図７は、ＲＤＭＡによるデータ受信を行う情報処理装置における処理のフローチャートである。
【００９７】
ＲＤＭＡモジュール１１は、他の情報処理装置１からＲＤＭＡにより送られてきたデータをＩ／Ｏインタフェース１２を介して受信する（ステップＳ４１）。
【００９８】
次に、ＲＤＭＡモジュール１１は、受信したデータからＣＲ３値を取得する（ステップＳ４２）。
【００９９】
次に、ＲＤＭＡモジュール１１は、取得したＣＲ３値を用いて受信したデータで指定された仮想アドレスに対して物理アドレスが未割り当てか否か、すなわち、ページが未割り当てか否かを判定する（ステップＳ４３）。ページ未割当の判定処理の流れは、後で詳細に説明する。
【０１００】
ページ未割り当ての場合（ステップＳ４３：肯定）、ＲＤＭＡモジュール１１は、ＭＭＵ１４を介してページフォルトの発生をＯＳに通知する。ＯＳは、ページフォルトの発生の通知を受けて、割り込みを行い、仮想アドレスに対して物理アドレスを割り当てるページ割り当てを行う（ステップＳ４４）。そして、ＯＳは、仮想ドレスを物理アドレスとの対応情報をページテーブル２１に登録する。ＲＤＭＡモジュール１１は、ページテーブル２１の更新が行われるとＭＭＵ１４から更新通知を受ける。そして、ＲＤＭＡモジュール１１は、受信したデータで指定された仮想アドレスと物理アドレスとの対応情報をページテーブル２１から取得し、ページテーブルキャッシュ１２３に格納する。
【０１０１】
ページが割り当て済みの場合（ステップＳ４３：否定）又はステップＳ４４の後、ＲＤＭＡモジュール１１は、受信したデータで指定された仮想アドレスの物理アドレスへのアドレス変換を行う（ステップＳ４５）。
【０１０２】
その後、ＲＤＭＡモジュール１１は、ユーザアプリ領域２３上の取得した物理アドレスへ受信したデータを書き込む（ステップＳ４６）。
【０１０３】
そして、ＲＤＭＡモジュール１１は、データの書き込みが完了したか否かを判定する（ステップＳ４７）。例えば、ＲＤＭＡモジュール１１は、受信したデータのヘッダに最後のデータであることを示す情報が付加されているか否かを確認するなどしてデータの書き込みが完了したか否かを判定する。
【０１０４】
未書き込みのデータが存在する場合（ステップＳ４７：否定）、ＲＤＭＡモジュール１１は、ステップＳ４５へ戻る。
【０１０５】
これに対して、データの書き込みが完了した場合（ステップＳ４７：肯定）、ＲＤＭＡモジュール１１は、送信元の情報処理装置１に対してＡＣＫを送信する（ステップＳ４８）。
【０１０６】
そして、ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータの受信の完了通知をアプリケーションへ送信する（ステップＳ４９）。
【０１０７】
アプリケーションは、ＲＤＭＡモジュール１１からのＲＤＭＡによるデータの受信の完了通知を受信し（ステップＳ５０）、ＲＤＭＡによるデータの受信の処理を終了する。
【０１０８】
さらに、図８を参照して、ＲＤＭＡモジュール１１によるデータ送信の処理の詳細について詳細に説明する。図８は、ＲＤＭＡモジュールによるデータ送信の処理のフローチャートである。
【０１０９】
ＲＤＭＡ処理部１１１は、データの送信要求に含まれる領域指定子の変換要求を指定子変換部１２５へ送信する。指定子変換部１２５は、ＲＤＭＡ処理部１１１から取得した領域指定子に対応するＣＲ３値をアドレス変換識別子テーブル２２から取得する（ステップＳ１０１）。ＲＤＭＡ処理部１１１は、データの送信要求に含まれる領域指定子に対応するＣＲ３値を指定子変換部１２５から取得する。
【０１１０】
そして、ＲＤＭＡ処理部１１１は、メモリ２０から読み出す読出ページを１つ選択する（ステップＳ１０２）。そして、ＲＤＭＡ処理部１１１は、選択した読出しページを示す仮想アドレスのアドレス変換要求をページフォルト検出部１２１へ送信する。
【０１１１】
ペーフォルト検出部１２１は、アドレス変換要求をＲＤＭＡ処理部１１１から受信する。そして、ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスがページテーブルキャッシュ１２３にあるか否かを判定する（ステップＳ１０３）。仮想アドレスがページテーブルキャッシュ１２３にあった場合（ステップＳ１０３：肯定）、ページフォルト検出部１２１は、ステップＳ１１０へ進む。
【０１１２】
これに対して、仮想アドレスがページテーブルキャッシュ１２３になかった場合（ステップＳ１０３：否定）、ページフォルト検出部１２１は、ページテーブル２１からの情報取得をキャッシュ制御部１２２に指示する。キャッシュ制御部１２２は、仮想アドレスに対応するページテーブルエントリの読み出しをページテーブル読出部１２４に指示する。ページテーブル読出部１２４は、ページテーブル２１を参照する（ステップＳ１０４）。そして、ページテーブル読出部１２４は、仮想アドレスに対応するページテーブルエントリがページテーブル２１に存在すれば、そのページテーブルエントリを取得しページテーブルキャッシュ１２３に追加する。さらに、ページテーブル読出部１２４は、取得したページテーブルエントリに格納された物理アドレスをページフォルト検出部１２１へ送信する。
【０１１３】
ページフォルト検出部１２１は、ページテーブル読出部１２４から仮想アドレスに対応するエントリを取得したか否かにより、ページが未割り当てか否かを判定する（ステップＳ１０５）。ページが未割り当ての場合（ステップＳ１０５：肯定）、ページフォルト検出部１２１は、ページフォルトの通知依頼をページフォルト依頼受付部１４４へ送信する。そして、ページフォルト依頼受付部１４４は、ページフォルトをプロセッサコア１３に通知する（ステップＳ１０６）。
【０１１４】
その後、ページテーブル読出部１２４は、ページテーブル２１の参照を続ける（ステップＳ１０７）。そして、ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリが追加されページテーブル２１の更新が行われたか否かを判定する（ステップＳ１０８）。未だ更新がない場合（ステップＳ１０８：否定）、ページテーブル読出部１２４は、ステップＳ１０７へ戻る。
【０１１５】
これに対して、ページテーブル２１の更新がなされた場合（ステップＳ１０８：肯定）、ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリをページテーブルキャッシュ１２３へ追加する（ステップＳ１０９）。また、ページ割り当てが既に行われた場合（ステップＳ１０５：否定）も、ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリをページテーブルキャッシュ１２３へ追加する（ステップＳ１０９）。さらに、ページテーブル読出部１２４は、仮想アドレスに対応する物理アドレスをページフォルト検出部１２１へ送信する。
【０１１６】
そして、ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスに対応する物理アドレスを取得してアドレス変換を行う（ステップＳ１１０）。その後、ページフォルト検出部１２１は、取得した物理アドレスをＲＤＭＡ処理部１１１へ送信する。
【０１１７】
ＲＤＭＡ処理部１１１は、アドレス変換要求の応答として物理アドレスをページフォルト検出部１２１から取得する。そして、ＲＤＭＡ処理部１１１は、ユーザアプリ領域２３上の取得した物理アドレスからＤＭＡによるデータの読み出しを行う（ステップＳ１１１）。
【０１１８】
次に、ＲＤＭＡ処理部１１１は、読み出したデータをデータの送信先の情報処理装置１に送信する（ステップＳ１１２）。
【０１１９】
ＲＤＭＡ処理部１１１は、ページテーブル２１の書き換えを行ったか否かを判定する（ステップＳ１１３）。ページテーブル２１の書き換えを行った場合（ステップＳ１１３：肯定）、ＲＤＭＡ処理部１１１は、ページテーブルキャッシュ１２３における該当するページテーブルエントリを無効化する（ステップＳ１１４）。
【０１２０】
ページテーブル２１の書き換えを行っていない場合（ステップＳ１１３：否定）又はステップＳ１１４の実行後、ＲＤＭＡ処理部１１１は、ＲＤＭＡによるデータ送信が完了したか否かを判定する（ステップＳ１１５）。ＲＤＭＡによるデータ送信が完了していない場合（ステップＳ１１５：否定）、ＲＤＭＡ処理部１１１は、ステップＳ１０２へ戻る。
【０１２１】
これに対して、ＲＤＭＡによるデータ送信が完了した場合（ステップＳ１１５：肯定）、ＲＤＭＡ処理部１１１は、ＲＤＭＡによるデータ送信の処理を終了する。
【０１２２】
次に、図９を参照して、ＲＤＭＡモジュール１１によるデータ受信の処理の詳細について詳細に説明する。図９は、ＲＤＭＡモジュールによるデータ受信の処理のフローチャートである。
【０１２３】
ＲＤＭＡ処理部１１１は、他の情報処理装置１からＲＤＭＡにより送られてきたデータをＩ／Ｏインタフェース１２を介して受信する。ＲＤＭＡ処理部１１１は、受信したデータに含まれる領域指定子の変換要求を指定子変換部１２５へ送信する。指定子変換部１２５は、ＲＤＭＡ処理部１１１から取得した領域指定子に対応するＣＲ３値をアドレス変換識別子テーブル２２から取得する（ステップＳ２０１）。ＲＤＭＡ処理部１１１は、受信したデータに含まれる領域指定子に対応するＣＲ３値を指定子変換部１２５から取得する。
【０１２４】
そして、ＲＤＭＡ処理部１１１は、受信したデータで指定された書込ページを１つ選択する（ステップＳ２０２）。そして、ＲＤＭＡ処理部１１１は、選択した書込ページを示す仮想アドレスのアドレス変換要求をページフォルト検出部１２１へ送信する。
【０１２５】
ペーフォルト検出部１２１は、アドレス変換要求をＲＤＭＡ処理部１１１から受信する。そして、ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスがページテーブルキャッシュ１２３にあるか否かを判定する（ステップＳ２０３）。仮想アドレスがページテーブルキャッシュ１２３にあった場合（ステップＳ２０３：肯定）、ページフォルト検出部１２１は、ステップＳ２１０へ進む。
【０１２６】
これに対して、仮想アドレスがページテーブルキャッシュ１２３になかった場合（ステップＳ２０３：否定）、ページフォルト検出部１２１は、ページテーブル２１からの情報取得をキャッシュ制御部１２２に指示する。キャッシュ制御部１２２は、仮想アドレスに対応するページテーブルエントリの読み出しをページテーブル読出部１２４に指示する。ページテーブル読出部１２４は、ページテーブル２１を参照する（ステップＳ２０４）。そして、ページテーブル読出部１２４は、仮想アドレスに対応するページテーブルエントリがページテーブル２１に存在すれば、そのページテーブルエントリを取得しページテーブルキャッシュ１２３に追加する。さらに、ページテーブル読出部１２４は、取得したページテーブルエントリに格納されている物理アドレスをページフォルト検出部１２１へ送信する。
【０１２７】
ページフォルト検出部１２１は、ページテーブル読出部１２４から仮想アドレスに対応するエントリを取得したか否かにより、ページが未割り当てか否かを判定する（ステップＳ２０５）。ページが未割り当ての場合（ステップＳ２０５：肯定）、ページフォルト検出部１２１は、ページフォルトの通知依頼をページフォルト依頼受付部１４４へ送信する。そして、ページフォルト依頼受付部１４４は、ページフォルトをプロセッサコア１３に通知する（ステップＳ２０６）。
【０１２８】
その後、ページテーブル読出部１２４は、ページテーブル２１の参照を続ける（ステップＳ２０７）。そして、ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリが追加されページテーブル２１の更新が行われたか否かを判定する（ステップＳ２０８）。未だ更新がない場合（ステップＳ２０８：否定）、ページテーブル読出部１２４は、ステップＳ２０７へ戻る。
【０１２９】
これに対して、ページテーブル２１の更新がなされた場合（ステップＳ２０８：肯定）、ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリをページテーブルキャッシュ１２３へ追加する（ステップＳ２０９）。また、ページ割り当てが既に行われている場合（ステップＳ２０５：否定）も、ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリをページテーブルキャッシュ１２３へ追加する（ステップＳ２０９）。さらに、ページテーブル読出部１２４は、仮想アドレスに対応する物理アドレスをページフォルト検出部１２１へ送信する。
【０１３０】
そして、ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスに対応する物理アドレスを取得してアドレス変換を行う（ステップＳ２１０）。その後、ページフォルト検出部１２１は、取得した物理アドレスをＲＤＭＡ処理部１１１へ送信する。
【０１３１】
ＲＤＭＡ処理部１１１は、アドレス変換要求の応答として物理アドレスをページフォルト検出部１２１から取得する。そして、ＲＤＭＡ処理部１１１は、ユーザアプリ領域２３上の取得した物理アドレスに対してＤＭＡによるデータの書き込みを行う（ステップＳ２１１）。
【０１３２】
その後、ＲＤＭＡ処理部１１１は、ページテーブル２１の書き換えを行ったか否かを判定する（ステップＳ２１２）。ページテーブル２１の書き換えを行った場合（ステップＳ２１２：肯定）、ＲＤＭＡ処理部１１１は、ページテーブルキャッシュ１２３における該当するページテーブルエントリを無効化する（ステップＳ２１３）。
【０１３３】
ページテーブル２１の書き換えを行っていない場合（ステップＳ２１２：否定）又はステップＳ２１４の実行後、ＲＤＭＡ処理部１１１は、データ書き込みが完了したか否かを判定する（ステップＳ２１４）。データ書き込みが完了していない場合（ステップＳ２１４：否定）、ＲＤＭＡ処理部１１１は、ステップＳ２０２へ戻る。
【０１３４】
これに対して、データ書き込みが完了した場合（ステップＳ２１４：肯定）、ＲＤＭＡ処理部１１１は、ＡＣＫをデータの送信元である情報処理装置１へ送信する（ステップＳ２１５）。
【０１３５】
その後、ＲＤＭＡ処理部１１１は、ＲＤＭＡによるデータの受信の完了通知をプロセッサコア１３へ送信し（ステップＳ２１６）、ＲＤＭＡによるデータ受信の処理を終了する。
【０１３６】
次に、図１０を参照して、本実施例に係る情報処理装置１においてＲＤＭＡによるデータ転送を行った場合のページ割り当てによるオーバヘッドについて説明する。図１０は、実施例１のＲＤＭＡによるデータ転送におけるページ割り当てによるオーバヘッドを説明するための図である。図１０は、右に行くに従い時間の経過を表す。また、図１０のブロックに記載されたＲＤＭＡによるデータ転送において実行される処理は、左側に記載した対象が処理主体であることを表す。ＲＤＭＡによるデータ転送において実行される処理には、例えば、ページテーブルキャッシュ１２３の参照、ページテーブル２１の参照、ページの未割り当ての検出、ページ割り当ての実行、及びデータ転送が含まれる。図１０では、ページが未割り当ての場合の処理を例に各処理を表す。
【０１３７】
ＲＤＭＡモジュール１１は、ページテーブルキャッシュ１２３の参照及びページテーブル２１の参照を行い、ページの未割り当てを検出する。ページテーブルキャッシュ１２３の参照及びページテーブル２１の参照を行い、ページの未割り当てを検出する処理が、ページテーブルアクセス３０１で行われる処理の一例である。
【０１３８】
そして、ページフォルトが発生すると、プロセッサコア１３によるＯＳの処理への割り込みが発生し、コンテキストスイッチが実施される。この処理に係る時間が経過時間３０２で表される。
【０１３９】
その後、ＯＳによる、ＲＤＭＡによるデータ転送で用いる仮想アドレスに対するページの割り当てが行われる。この処理が、ページ割り当て３０３で表される処理にあたる。
【０１４０】
ページの割り当てが行われると、ＲＤＭＡモジュール１１は、ページテーブル２１からＲＤＭＡによるデータ転送で用いる仮想アドレスに対応するページテーブルエントリを取得する。そして、ＲＤＭＡモジュール１１は、取得したページテーブルエントリに格納された物理アドレスを取得する。この処理が、ページテーブルアクセス３０４で表される処理にあたる。
【０１４１】
その後、ＲＤＭＡ処理部１１１は、取得した物理アドレスを用いて１ページ分のデータ転送を行う。この処理が１ページ分転送３０５にあたる。
【０１４２】
以上は、ＲＤＭＡ処理部１１１による１ページ分のデータ転送における処理であるが、ＲＤＭＡ処理部１１１は、以上の処理をデータ転送が完了するまで繰り返す。
【０１４３】
この場合、ページテーブルアクセス３０１、経過時間３０２、ページ割り当て３０３、ページテーブルアクセス３０４及び１ページ分転送３０５のそれぞれでかかった時間を合計した時間Ｔ１が１ページ分の処理に係る時間である。
【０１４４】
また、経過時間３０２及びページ割り当て３０３でかかった時間の合計である時間Ｔ２がページ割り当てのオーバヘッドにあたる。
【０１４５】
ここで、ページテーブルアクセス３０１及び３０４にかかる時間は、１回につきおよそ３００ｎｓと考えられる。また、転送速度を１０ＧＢ／ｓとし、ページサイズを４ＭＢとすると、１ページ分転送３０５にかかる時間は、４００μｓと考えられる。また、割り込みにかかる時間は、およそ５μｓと考えられ。また、１００００サイクル／２ＧＨｚの場合、コンテキストスイッチにかかる時間は５μｓと考えられる。さらに、ページ割り当て３０５にかかる時間は、およそ１０μｓと考えられる。
【０１４６】
すなわち、ページ割り当てによるオーバヘッドは２０．３μｓ／４２０．６μｓ×１００＝４．８％となる。ただし、既にページの割り当てがなされていれば、ページフォルトは起こらないので、常に約５％のオーバヘッドが発生するわけではない。
【０１４７】
このように、５％程度の性能のばらつきはあるが、メモリ領域登録時のロックのために発生する負荷を軽減することができ、全体的な処理能力の向上を図ることができる。また、ＲＤＭＡによるデータ転送のためにメモリ上に確保される領域は利用する容量のみである。このように、本実施例に係る情報処理装置は、処理負荷を抑えつつメモリリソースを有効活用することができる。
【０１４８】
さらに、本実施例に係る情報処理装置では、ＲＤＭＡ用のロックを行わないため、長期間使用されていないメモリ上のページを開放することができる。これにより、本実施例に係る情報処理装置では、起動可能なプロセス数を増加させることができる。例えば、プロセッサコアの数が１６個で、搭載メモリが６４ＧＢで、１プロセスあたり４ＧＢを領域登録する場合で説明する。ロックを行う場合、６４ＧＢ／４ＧＢ＝１６プロセスしか起動できない。これに対して、本実施例に係る情報処理装置では、ロックが不要であり、実行中でないプロセスの領域をページアウトできる。そのため、本実施例に係る情報処理装置では、物理メモリ上に少なくともプロセッサコアの数と同じ１６プロセス確保できればよく、使用可能なメモリがあればそれ以上のプロセスを起動することができる。
【０１４９】
また、以上の説明では、プロセッサとしてｘ８６を例に説明したが、プロセッサの種類は特にこれに限らず、ページテーブル２１、ＴＬＢ１４２及びページテーブルキャッシュ１２３のフォーマットが同じであればよい。
【０１５０】
（変形例）
次に、図１１を参照して、実施例１の変形例について説明する。図１１は、実施例１の変形例に係る情報処理装置のブロック図である。本変形例に係る情報処理装置は、ＲＤＭＡを用いたデータ転送の機能がＣＰＵの以外に設けられる。
【０１５１】
情報処理装置１は、ＣＰＵ１０、メモリ２０、Network  Interface  Controller（ＮＩＣ）４０を有する。
【０１５２】
ＣＰＵ１０は、プロセッサコア１３、ＭＭＵ１４、ＣＲ３レジスタ１５及びホストＩ／Ｏバスブリッジ１６を有する。また、ＮＩＣ４０は、ＲＤＭＡモジュール１１、Ｉ／Ｏインタフェース１２を有する。
【０１５３】
ＣＰＵ１０の各機能部とＮＩＣ４０上のＲＤＭＡモジュール１１の各機能部とは、ホストＩ／Ｏバスブリッジを経由して通信を行う。そして、図１１におけるＣＰＵ１０及びＮＩＣ４０の各機能部は、実施例１において説明した図１の同じ符号を有する各部と同様の動作を行う。
【０１５４】
以上に説明したように、ＣＰＵの外部にＲＤＭＡモジュールを設けても同様の効果を得ることができる。
【０１５５】
また、本変形例では、ＮＩＣ上にＲＤＭＡモジュールを設けたが、これに限らず、他の情報処理装置とＲＤＭＡ転送を行うことが可能な部材であれば他の部材にＲＤＭＡモジュールを搭載させてもよい。例えば、Host  Bus  Adapter（ＨＢＡ）などにＲＤＭＡモジュールを搭載させて、他の情報処理装置のＨＢＡとの間でＲＤＭＡを用いたデータ転送を行ってもよい。
【０１５６】
さらに、実施例１及び変形例では、プロセッサコアとＭＭＵとが通信を行うという従来の構成を有効に活用するため、ＲＤＭＡモジュールは、ＭＭＵ経由でプロセッサコアと通信を行った。このような構成にすることにより、既存の構成に対して少ない変更を加えるだけで上述した機能を追加することができ、製造コストを抑えることができる。ただし、既存の構成を生かさなくてもよいのであれば、プロセッサコアとＲＤＭＡモジュールとが間にＭＭＵを介さずに直接通信を行ってもよい。その場合、ページフォルト依頼受付部を省くことも可能である。
【実施例２】
【０１５７】
図１２は、実施例２に係る情報処理装置のブロック図である。本実施例に係る情報処理装置は、ＲＤＭＡを用いたデータ転送において、メモリ上の領域をロックする方法と、ロックせずにページ割り当てを行う方法のいずれかを選択できることが実施例１と異なる。以下では、実施例１と同様の機能を有する各部については説明を省略する。
【０１５８】
プロセッサコア１３は、ＲＤＭＡを用いたデータ転送を行う際に操作者からページのロックを用いるか否かの入力を受ける。
【０１５９】
そして、プロセッサコア１３は、操作者からの指示をＲＤＭＡモジュール１１に通知する。具体的には、プロセッサコア１３は、例えば、ＲＤＭＡ処理部１１１へ操作者からの指示を通知する。
【０１６０】
さらに、ページのロックを用いる場合、プロセッサコア１３は、ＲＤＭＡモジュール１１はＯＳを用いてメモリ２０上にＲＤＭＡ用のユーザ領域を確保し、ＲＤＭＡモジュール１１のドライバを用いて領域のロックを行う。さらに、プロセッサコア１３は、ＲＤＭＡモジュール１１のドライバを用いてロックした領域に対応するＲＤＭＡ用ページテーブル２４を作成する。
【０１６１】
ＲＤＭＡ用ページテーブル２４は、ページテーブル２１とは異なるフォーマットを用いてもよい。
【０１６２】
ページのロックを用いない場合、ＲＤＭＡモジュール１１の各部は、実施例１と同様の動作を行う。
【０１６３】
ページのロックを用いる場合、ページテーブルキャッシュ１２３の中に指定された仮想アドレスに対応するページテーブルエントリがなければ、ページテーブル読出部１２４は、キャッシュ制御部１２２からページテーブルエントリの取得要求を受ける。そして、ページテーブル読出部１２４は、ＲＤＭＡ用ページテーブル２４にアクセスし、仮想アドレスに対応するページテーブルエントリを取得する。この場合、使用するページが既に登録されているので、ページテーブル読出部１２４は、仮想アドレスに対応するページテーブルエントリを取得することができる。
【０１６４】
そして、ページテーブル読出部１２４は、取得したページテーブルエントリをページテーブルキャッシュ１２３に追加する。さらに、ページテーブル読出部１２４は、取得したページテーブルエントリに含まれる物理アドレスをページフォルト検出部１２１へ送信する。
【０１６５】
次に、図１３を参照して、ページのロックを用いる場合の領域登録処理の流れについて説明する。図１３は、ページのロックを用いる場合の領域登録処理のフローチャートである。図１３では、図５と同様に便宜上、プロセッサコア１３が実行するソフトウェアを動作主体として表する。すなわち、各ソフトウェアに対応する実際のハードウェアとしての動作主体はプロセッサコア１３である。以上の設定は、後述する図１４及び図１５についても同様である。
【０１６６】
ユーザアプリケーションは、領域登録を指示する（ステップＳ６１）。
【０１６７】
ドライバは、ユーザアプリケーションからの指示を受けて、メモリ２０上の領域をロックする（ステップＳ６２）。
【０１６８】
次に、ドライバは、ロックした領域に対応する領域指定子を作成する（ステップＳ６３）。
【０１６９】
次に、ドライバは、ＲＤＭＡ用ページテーブル２４を作成する（ステップＳ６４）。
【０１７０】
次に、ドライバは、領域指定子をユーザアプリケーションに送信する（ステップＳ６５）。
【０１７１】
ユーザアプリケーションは、領域指定子をドライバから取得する（ステップＳ６６）。
【０１７２】
ここで、図１３に示すページのロックを用いる場合の領域登録処理では、ＯＳ及びＲＤＭＡモジュールは処理を行わない。
【０１７３】
次に、図１４を参照して、ページのロックを用いてＲＤＭＡ送信を実行する情報処理装置１における処理の流れを説明する。図１４は、ページのロックを用いてＲＤＭＡ送信を実行する情報処理装置における処理のフローチャートである。
【０１７４】
ユーザアプリケーションは、ＲＤＭＡによる送信要求をＲＤＭＡモジュール１１に対して送信する（ステップＳ７１）。
【０１７５】
ＲＤＭＡモジュール１１は、ＲＤＭＡによる送信要求をユーザアプリケーションから受信する。そして、ＲＤＭＡモジュール１１は、送信要求に付加されているユーザアプリ領域２３の領域指定子を取得する。次に、ＲＤＭＡモジュール１１は、取得した領域指定子を用いて送信要求で指定されている仮想アドレスと物理アドレスとの対応情報をページテーブルキャッシュ１２３又はページテーブル２１から取得し、アドレス変換を行う（ステップＳ７２）。
【０１７６】
次に、ＲＤＭＡモジュール１１は、ユーザアプリ領域２３上の取得した物理アドレスに格納されているデータを読み出す（ステップＳ７３）。
【０１７７】
その後、ＲＤＭＡモジュール１１は、読み出したデータをＲＤＭＡによる送信先の情報処理装置１に送信する（ステップＳ７４）。
【０１７８】
そして、ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータの送信が完了したか否かを判定する（ステップＳ７５）。未送信のデータが存在している場合（ステップＳ７５：否定）、ＲＤＭＡモジュール１１は、ステップＳ７２へ戻る。
【０１７９】
これに対して、データの送信が完了した場合（ステップＳ７５：肯定）、ＲＤＭＡモジュール１１は、送信先の情報処理装置１からＡＣＫを受信したか否かを判定する（ステップＳ７６）。ＡＣＫを受信していない場合（ステップＳ７６：否定）、ＲＤＭＡモジュール１１は、ＡＣＫを受信するまで待機する。
【０１８０】
これに対して、ＡＣＫを受信した場合（ステップＳ７６：肯定）、ＲＤＭＡモジュール１１は、ＲＤＭＡ送信の完了通知をアプリケーションへ送信する（ステップＳ７７）。
【０１８１】
アプリケーションは、ＲＤＭＡモジュール１１からのＲＤＭＡ送信の完了通知を受信し（ステップＳ７８）、ＲＤＭＡ送信の処理を終了する。
【０１８２】
次に、図１５を参照して、ページのロックを用いてＲＤＭＡによるデータ受信を行う情報処理装置１における処理の流れを説明する。図１５は、ページのロックを用いてＲＤＭＡによるデータ受信を行う情報処理装置における処理のフローチャートである。
【０１８３】
ＲＤＭＡモジュール１１は、他の情報処理装置１からＲＤＭＡにより送られてきたデータをＩ／Ｏインタフェース１２を介して受信する（ステップＳ８１）。
【０１８４】
次に、ＲＤＭＡモジュール１１は、受信したデータから領域指定子を取得する。次に、ＲＤＭＡモジュール１１は、取得した領域指定子を用いて受信したデータで指定された仮想アドレスと物理アドレスとの対応情報をページテーブルキャッシュ１２３又はページテーブル２１から取得し、アドレス変換を行う（ステップＳ８２）。
【０１８５】
その後、ＲＤＭＡモジュール１１は、ユーザアプリ領域２３上の取得した物理アドレスへ受信したデータを書き込む（ステップＳ８３）。
【０１８６】
そして、ＲＤＭＡモジュール１１は、データの書き込みが完了したか否かを判定する（ステップＳ８４）。
【０１８７】
未書き込みのデータが存在している場合（ステップＳ８４：否定）、ＲＤＭＡモジュール１１は、ステップＳ８２へ戻る。
【０１８８】
これに対して、データの書き込みが完了した場合（ステップＳ８４：肯定）、ＲＤＭＡモジュール１１は、送信元の情報処理装置１に対してＡＣＫを送信する（ステップＳ８５）。
【０１８９】
そして、ＲＤＭＡモジュール１１は、ＲＤＭＡによるデータの受信の完了通知をアプリケーションへ送信する（ステップＳ８６）。
【０１９０】
アプリケーションは、ＲＤＭＡモジュール１１からのＲＤＭＡによるデータの受信の完了通知を受信し（ステップＳ８７）、ＲＤＭＡによるデータの受信の処理を終了する。
【０１９１】
さらに、図１６を参照して、ページのロックを用いた場合のＲＤＭＡモジュール１１によるデータ送信の処理の詳細について詳細に説明する。図１６は、ページのロックを用いた場合のＲＤＭＡモジュールによるデータ送信の処理のフローチャートである。
【０１９２】
ＲＤＭＡ処理部１１１は、データの送信要求に含まれる領域指定子の変換要求を指定子変換部１２５へ送信する。指定子変換部１２５は、ＲＤＭＡ処理部１１１から領域指定子を取得する（ステップＳ３０１）。
【０１９３】
そして、ＲＤＭＡ処理部１１１は、メモリ２０から読み出す読出ページを１つ選択する（ステップＳ３０２）。そして、ＲＤＭＡ処理部１１１は、選択した読出しページを示す仮想アドレスのアドレス変換要求をページフォルト検出部１２１へ送信する。
【０１９４】
ペーフォルト検出部１２１は、アドレス変換要求をＲＤＭＡ処理部１１１から受信する。そして、ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスがページテーブルキャッシュ１２３にあるか否かを判定する（ステップＳ３０３）。仮想アドレスがページテーブルキャッシュ１２３にあった場合（ステップＳ３０３：肯定）、ページフォルト検出部１２１は、ステップＳ３０６へ進む。
【０１９５】
これに対して、仮想アドレスがページテーブルキャッシュ１２３になかった場合（ステップＳ３０３：否定）、ページフォルト検出部１２１は、ページテーブル２１からの情報取得をキャッシュ制御部１２２に指示する。キャッシュ制御部１２２は、仮想アドレスに対応するページテーブルエントリの読み出しをページテーブル読出部１２４に指示する。ページテーブル読出部１２４は、仮想アドレスに対応するページテーブルエントリをページテーブル２１から取得する（ステップＳ３０４）。
【０１９６】
そして、ページテーブル読出部１２４は、取得したページテーブルエントリをページテーブルキャッシュ１２３に追加する（ステップＳ３０５）。さらに、ページテーブル読出部１２４は、取得したページテーブルエントリに格納された物理アドレスをページフォルト検出部１２１へ送信する。
【０１９７】
ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスに対応する物理アドレスを取得してアドレス変換を行う（ステップＳ３０６）。その後、ページフォルト検出部１２１は、取得した物理アドレスと領域指定子が対応することをチェックする。そして、ページフォルト検出部１２１は、取得した物理アドレスをＲＤＭＡ処理部１１１へ送信する。
【０１９８】
ＲＤＭＡ処理部１１１は、アドレス変換要求の応答として物理アドレスをページフォルト検出部１２１から取得する。そして、ＲＤＭＡ処理部１１１は、ユーザアプリ領域２３上の取得した物理アドレスからＤＭＡによるデータの読み出しを行う（ステップＳ３０７）。
【０１９９】
次に、ＲＤＭＡ処理部１１１は、読み出したデータをデータの送信先の情報処理装置１に送信する（ステップＳ３０８）。
【０２００】
その後、ＲＤＭＡ処理部１１１は、ＲＤＭＡによるデータ送信が完了したか否かを判定する（ステップＳ３０９）。ＲＤＭＡによるデータ送信が完了していない場合（ステップＳ３０９：否定）、ＲＤＭＡ処理部１１１は、ステップＳ３０２へ戻る。
【０２０１】
これに対して、ＲＤＭＡによるデータ送信が完了した場合（ステップＳ３０９：肯定）、ＲＤＭＡ処理部１１１は、ＲＤＭＡによるデータ送信の処理を終了する。
【０２０２】
次に、図１７を参照して、ページのロックを用いた場合のＲＤＭＡモジュール１１によるデータ受信の処理の詳細について詳細に説明する。図１７は、ページのロックを用いた場合のＲＤＭＡモジュールによるデータ受信の処理のフローチャートである。
【０２０３】
ＲＤＭＡ処理部１１１は、他の情報処理装置１からＲＤＭＡにより送られてきたデータをＩ／Ｏインタフェース１２を介して受信する。ＲＤＭＡ処理部１１１は、受信したデータに含まれる領域指定子を取得する（ステップＳ４０１）。
【０２０４】
そして、ＲＤＭＡ処理部１１１は、受信したデータで指定されている書込ページを１つ選択する（ステップＳ４０２）。そして、ＲＤＭＡ処理部１１１は、選択した書込ページを示す仮想アドレスのアドレス変換要求をページフォルト検出部１２１へ送信する。
【０２０５】
ペーフォルト検出部１２１は、アドレス変換要求をＲＤＭＡ処理部１１１から受信する。そして、ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスがページテーブルキャッシュ１２３にあるか否かを判定する（ステップＳ４０３）。仮想アドレスがページテーブルキャッシュ１２３にあった場合（ステップＳ４０３：肯定）、ページフォルト検出部１２１は、ステップＳ４０６へ進む。
【０２０６】
これに対して、仮想アドレスがページテーブルキャッシュ１２３になかった場合（ステップＳ４０３：否定）、ページフォルト検出部１２１は、ページテーブル２１からの情報取得をキャッシュ制御部１２２に指示する。キャッシュ制御部１２２は、仮想アドレスに対応するページテーブルエントリの読み出しをページテーブル読出部１２４に指示する。ページテーブル読出部１２４は、アドレス変換要求で指定された仮想アドレスのページテーブルエントリをページテーブル２１から取得する（ステップＳ４０４）。
【０２０７】
その後、ページテーブル読出部１２４は、取得したページテーブルエントリをページテーブルキャッシュ１２３へ追加する（ステップＳ４０５）。さらに、ページテーブル読出部１２４は、仮想アドレスに対応する物理アドレスをページフォルト検出部１２１へ送信する。
【０２０８】
ページフォルト検出部１２１は、アドレス変換要求で指定された仮想アドレスに対応する物理アドレスを取得してアドレス変換を行う（ステップＳ４０６）。その後、ページフォルト検出部１２１は、取得した物理アドレスと領域指定子が対応することをチェックする。そして、ページフォルト検出部１２１は、取得した物理アドレスをＲＤＭＡ処理部１１１へ送信する。
【０２０９】
ＲＤＭＡ処理部１１１は、アドレス変換要求の応答として物理アドレスをページフォルト検出部１２１から取得する。そして、ＲＤＭＡ処理部１１１は、ユーザアプリ領域２３上の取得した物理アドレスに対してＤＭＡによるデータの書き込みを行う（ステップＳ４０７）。
【０２１０】
次に、ＲＤＭＡ処理部１１１は、データ書き込みが完了したか否かを判定する（ステップＳ４０８）。データ書き込みが完了していない場合（ステップＳ４０８：否定）、ＲＤＭＡ処理部１１１は、ステップＳ４０２へ戻る。
【０２１１】
これに対して、データ書き込みが完了した場合（ステップＳ４０８：肯定）、ＲＤＭＡ処理部１１１は、ＡＣＫをデータの送信元である情報処理装置１へ送信する（ステップＳ４０９）。
【０２１２】
その後、ＲＤＭＡ処理部１１１は、ＲＤＭＡによるデータの受信の完了通知をプロセッサコア１３へ送信し（ステップＳ４１０）、ＲＤＭＡによるデータ受信の処理を終了する。
【０２１３】
以上に説明したように、本実施例に係る情報処理装置は、ＲＤＭＡを用いたデータ転送の際にページをロックする方法とその都度ページ割り当てを行う方法とのいずれかを選択することができる。これにより、オーバヘッドを軽減する場合にはページのロックする方法選び、メモリリソースを確保しプロセス数を増加させる場合にはその都度ページを割り当てる方法を選ぶことができる。これにより、アプリケーションの種類や求める性能に合わせてＲＤＭＡを用いたデータ転送の方法を選ぶことができ、より柔軟にＲＤＭＡを用いたデータ転送を利用することができる。
【符号の説明】
【０２１４】
１，１Ａ〜１Ｃ  情報処理装置
２  ネットワークスイッチ
１０  ＣＰＵ
１１  ＲＤＭＡモジュール
１２  Ｉ／Ｏインタフェース
１３  プロセッサコア
１４  ＭＭＵ
１５  ＣＲ３レジスタ
２０  メモリ
２１  ページテーブル
２２  アドレス空間識別子テーブル
２３  ユーザアプリ領域
２４  ＲＤＭＡ用ページテーブル
３０  ハードディスク
４０  ＮＩＣ
１１１  ＲＤＭＡ処理部
１１２  アドレス変換部
１１３  送受信部
１２１  ページフォルト検出部
１２２  キャッシュ制御部
１２３  ページテーブルキャッシュ
１２４  ページテーブル読出部
１２５  指定子変換部
１４１  アドレス変換部
１４２  ＴＬＢ
１４３  ＴＬＢ管理部
１４４  ページフォルト依頼受付部
【図１】
2015146115.tif 000003
【図２】
2015146115.tif 000004
【図３】
2015146115.tif 000005
【図４】
2015146115.tif 000006
【図５】
2015146115.tif 000007
【図６】
2015146115.tif 000008
【図７】
2015146115.tif 000009
【図８】
2015146115.tif 000010
【図９】
2015146115.tif 000011
【図１０】
2015146115.tif 000012
【図１１】
2015146115.tif 000013
【図１２】
2015146115.tif 000014
【図１３】
2015146115.tif 000015
【図１４】
2015146115.tif 000016
【図１５】
2015146115.tif 000017
【図１６】
2015146115.tif 000018
【図１７】
2015146115.tif 000019