(57)【要約】【課題】Ｉ／Ｏデバイスに対するデータ転送を直ちに開始させることができ、且つデータ転送性能を安定的に発揮することができる情報処理装置を提供すること。【解決手段】メモリ１４の論理アドレスを物理アドレスに変換するアドレス変換テーブルをメインプロセッサ１４及びサブプロセッサ２４の間で共有するためのハードウェアを備えた情報処理装置において、サブプロセッサ２４の１つを、メモリ１４の論理アドレスを指定した転送要求を受け付ける手段、共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換する手段、及び変換された物理アドレスに従ってメモリ１４に格納されたデータの転送処理を実行する手段として機能させる。【選択図】図１
2008065478.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
メインプロセッサと、
少なくとも１つのサブプロセッサと、
Ｉ／Ｏデバイスと、
前記メモリの論理アドレスを物理アドレスに変換するアドレス変換テーブルを前記メインプロセッサ及び前記少なくとも１つのサブプロセッサの間で共有するアドレス変換テーブル共有手段と、
を備える情報処理装置であって、
前記サブプロセッサの１つは、
前記メモリの論理アドレスを指定した転送要求を受け付ける要求受付手段と、
共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換するアドレス変換手段と、
変換された物理アドレスに従って前記メモリに格納されたデータの前記Ｉ／Ｏデバイスへの転送処理を実行する転送処理実行手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記サブプロセッサの前記１つはローカルメモリを備え、
前記転送処理実行手段は、
前記アドレス変換手段により変換された物理アドレスからデータを読み出すとともに、該データに基づいて前記ローカルメモリにデータを格納する手段と、
前記ローカルメモリに格納されたデータの物理アドレスを指定した転送要求を前記Ｉ／Ｏデバイスに送信する手段と、を含み、
前記Ｉ／Ｏデバイスは、
前記サブプロセッサの前記１つから受信する転送要求により指定される物理アドレスに従って、前記ローカルメモリからデータを読み出す、
ことを特徴とする情報処理装置。
【請求項３】
メモリと、
メインプロセッサと、
少なくとも１つのサブプロセッサと、
Ｉ／Ｏデバイスと、
前記メモリの論理アドレスを物理アドレスに変換するアドレス変換テーブルを前記メインプロセッサ及び前記少なくとも１つのサブプロセッサの間で共有するアドレス変換テーブル共有手段と、
を備えるコンピュータによるデータ転送方法であって、
前記サブプロセッサの１つにより、
前記メモリの論理アドレスを指定した転送要求を受け付けるステップと、
共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換するステップと、
変換された物理アドレスに従って前記メモリに格納されたデータの転送処理を実行するステップと、
を実行することを特徴とするデータ転送方法。
【請求項４】
メモリと、
メインプロセッサと、
少なくとも１つのサブプロセッサと、
Ｉ／Ｏデバイスと、
前記メモリの論理アドレスを物理アドレスに変換するアドレス変換テーブルを前記メインプロセッサ及び前記少なくとも１つのサブプロセッサの間で共有するアドレス変換テーブル共有手段と、
を備えるコンピュータにより実行されるプログラムであって、
前記メモリの論理アドレスを指定した転送要求を受け付ける手段、
共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換する手段、及び
変換された物理アドレスに従って前記メモリに格納されたデータの転送処理を実行する手段
として前記サブプロセッサの１つを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、データ転送方法及びプログラムに関する。
【背景技術】
【０００２】
メインメモリ上のデータをプロセッサがＮＩＣ（Network Interface Card）等のＩ／Ｏデバイスに対して転送する場合、プロセッサが他のプログラムを実行中であると、レイテンシや転送速度等の転送性能を十分に発揮できない虞がある。そこで、Ｉ／Ｏデバイス側にデータ転送用の専用ハードウェアを備えるようにして、転送性能を安定的に発揮できるようにすることが考えられる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の専用ハードウェアがメインメモリ上のデータに直接アクセスするためには、該データの論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが事前設定されている必要がある。このため、上記構成によると、データ転送に先立って専用ハードウェアに最新のアドレス変換テーブルを設定しなければならず、必要が生じた場合に直ちにデータ転送を実行できないという問題がある。
【０００４】
本発明は上記課題に鑑みてなされたものであって、その目的は、Ｉ／Ｏデバイスに対するデータ転送を直ちに開始させることができ、且つデータ転送性能を安定的に発揮することができる情報処理装置、データ転送方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明に係る情報処理装置は、メモリと、メインプロセッサと、少なくとも１つのサブプロセッサと、Ｉ／Ｏデバイスと、前記メモリの論理アドレスを物理アドレスに変換するアドレス変換テーブルを前記メインプロセッサ及び前記少なくとも１つのサブプロセッサの間で共有するアドレス変換テーブル共有手段と、を備える情報処理装置であって、前記サブプロセッサの１つは、前記メモリの論理アドレスを指定した転送要求を受け付ける要求受付手段と、共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換するアドレス変換手段と、変換された物理アドレスに従って前記メモリに格納されたデータの前記Ｉ／Ｏデバイスへの転送処理を実行する転送処理実行手段と、を備えることを特徴とする。
【０００６】
また、前記サブプロセッサの前記１つはローカルメモリを備えてよい。このとき、前記転送処理実行手段は、前記アドレス変換手段により変換された物理アドレスからデータを読み出すとともに、該データに基づいて前記ローカルメモリにデータを格納する手段と、前記ローカルメモリに格納されたデータの物理アドレスを指定した転送要求を前記Ｉ／Ｏデバイスに送信する手段と、を含んでよく、前記Ｉ／Ｏデバイスは、前記サブプロセッサの前記１つから受信する転送要求により指定される物理アドレスに従って、前記ローカルメモリからデータを読み出してよい。
【０００７】
また、本発明に係るデータ転送方法は、メモリと、メインプロセッサと、少なくとも１つのサブプロセッサと、Ｉ／Ｏデバイスと、前記メモリの論理アドレスを物理アドレスに変換するアドレス変換テーブルを前記メインプロセッサ及び前記少なくとも１つのサブプロセッサの間で共有するアドレス変換テーブル共有手段と、を備えるコンピュータによるデータ転送方法であって、前記サブプロセッサの１つにより、前記メモリの論理アドレスを指定した転送要求を受け付けるステップと、共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換するステップと、変換された物理アドレスに従って前記メモリに格納されたデータの転送処理を実行するステップと、を実行することを特徴とする。
【０００８】
また、本発明に係るプログラムは、メモリと、メインプロセッサと、少なくとも１つのサブプロセッサと、Ｉ／Ｏデバイスと、前記メモリの論理アドレスを物理アドレスに変換するアドレス変換テーブルを前記メインプロセッサ及び前記少なくとも１つのサブプロセッサの間で共有するアドレス変換テーブル共有手段と、を備えるコンピュータにより実行されるプログラムであって、前記メモリの論理アドレスを指定した転送要求を受け付ける手段、共有された前記アドレス変換テーブルを用いて、前記転送要求において指定された論理アドレスを物理アドレスに変換する手段、及び変換された物理アドレスに従って前記メモリに格納されたデータの転送処理を実行する手段として前記サブプロセッサの１つを機能させるためのプログラムである。このプログラムは、各種のコンピュータ読み取り可能な情報記憶媒体に格納されてよい。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００１０】
図１は、本実施形態に係る情報処理装置の構成図である。同図に示すように、この情報処理装置１０は、メインプロセッサ１２及び複数のサブプロセッサ２４−１〜２４−ｎを含み、非対称型マルチコアプロセッサとして構成されている。メインプロセッサ１２及び複数のサブプロセッサ２４−１〜２４−ｎはいずれもバス２２に接続されており、該バス２２を介して相互にデータを送受信できるようになっている。バス２２には、さらに、メモリインタフェース１６を介してメインメモリ１４が接続され、入出力インタフェース１８を介してＩ／ＯデバイスたるＮＩＣ２０が接続されている。
【００１１】
メインプロセッサ１２は、システム等のプログラムを実行したり、サブプロセッサ２４−１〜２４−ｎに対してタスク割り当てを行ったりする主たるプログラム実行手段であり、メモリ管理部１２ａ及びキャッシュメモリ１２ｂを内蔵している。メモリ管理部１２ａは、メインプロセッサ１２で生じたり外部から受け取ったりする論理アドレスをメインメモリ１４の物理アドレスに変換する処理を実行するハードウェアであり、この変換処理をメインメモリ１４に記憶されるアドレス変換テーブルに従って行う。アドレス変換テーブルは、論理アドレスと物理アドレスとを関連づけるテーブルであり、例えば４ＫＢ等の所定サイズのページ群から構成されている。そして、メモリ管理部１２ａは、このうち必要なページを記憶するメモリを備えており、メインプロセッサ１２で生じた論理アドレスがメモリに記憶されたページに存在しない場合には、他のページをメインメモリ１４から読み出し、メモリ内容を更新するようにしている。また、キャッシュメモリ１２ｂは、メインプロセッサ１２で処理する命令やデータを一時的に記憶するメモリである。
【００１２】
サブプロセッサ２４（２４−１〜２４−ｎ）は、ローカルメモリ２４ａ、メモリ管理部２４ｂ及びＤＭＡＣ（Direct Memory Access Controller）２４ｃを内蔵した補助的なプログラム実行手段である。ローカルメモリ２４ａは、図２（ａ）に示すように、サブプロセッサ２４で実行するプログラム２４ａ’を記憶したり、処理対象のデータを一時的に記憶したりするのに用いられる。また、メモリ管理部２４ｂは、メモリ管理部１２ａと同等の機能を備えるものである。すなわち、メモリ管理部２４ｂは、サブプロセッサ２４で生じたり外部から受け取ったりする論理アドレスをメインメモリ１４の物理アドレスに変換する処理を実行するハードウェアであり、この変換処理をメインメモリ１４に記憶されるアドレス変換テーブルに従って行う。メモリ管理部２４ｂは、アドレス変換テーブルのうち必要なページを記憶するメモリを備えており、変換を必要とする論理アドレスがメモリに記憶されたページに存在しない場合には、他のページをメインメモリ１４から読み出し、メモリ内容を更新するようにしている。また、ＤＭＡＣ２４ｃは、メインプロセッサ１２を介さずに、メインメモリ１４に対して直接アクセスするための制御装置である。本実施形態では、特に、サブプロセッサ２４−１〜２４−ｎのうち、サブプロセッサ２４−１にメインメモリ１４に格納された転送データをＮＩＣ２０に転送する転送タスクが割り当てられるようになっており、これによりメインプロセッサ１２に処理負荷を掛けることなく高速データ転送を実現できるようにしている。このため、ローカルメモリ２４ａ−１には、サブプロセッサ用プログラム２４ａ’として、データ転送プログラムが格納され、サブプロセッサ２４−１はこのデータ転送プログラムを実行することで、メインメモリ１４に格納された転送データをＮＩＣ２０に転送する処理を実現する。また、この転送タスクに際して、サブプロセッサ２４−１のローカルメモリ２４ａ−１には、図２（ａ）に示すように、メインメモリ１４に記憶されていたＮＩＣ２０に転送すべきデータ、すなわち転送データ２４ａ’’が一時的に記憶されるようになっている（後に詳述する）。
【００１３】
メインメモリ１４には、図２（ｂ）に示すように、メインプロセッサ１２で実行されるＯＳ（Operating System）等のシステムプログラム１４ａ、メインプロセッサ１２で実行されるユーザプログラム１４ｂ、アドレス変換テーブル１４ｃを記憶している。アドレス変換テーブル１４ｃは、メインプロセッサ用システムプログラム１４ａにより更新されるようになっており、更新した場合にはサブプロセッサ２４−１〜２４−ｎにも通知され、メインプロセッサ１２及びサブプロセッサ２４−１〜２４−ｎで最新のアドレス変換テーブル１４ｃが共有されるようにしている。また、メインプロセッサ１２又はサブプロセッサ２４−２〜２４−ｎにより生成された、ＮＩＣ２０に転送すべきデータ、すなわち転送データ１４ｄもメインメモリ１４に格納される。上述したように、この転送データ１４ｄは、ＮＩＣ２０への転送時に一旦サブプロセッサ２４−１に転送され、ローカルメモリ２４ａ−１に格納される。
【００１４】
ＮＩＣ２０は、ＬＡＮ（Local Area Network）等のデータ通信ネットワークに本情報処理装置１０を接続するインタフェースであり、ＤＭＡＣ２０ａ及びバッファメモリ２０ｂを内蔵している。ＤＭＡＣ２０ａはメインメモリ１４や各サブプロセッサ２４のローカルメモリ２４ａに直接アクセスするための制御装置であり、受信したデータをバッファメモリ２０ｂに格納する。また、バッファメモリ２０ｂは、ＦＩＦＯ（First In First Out）バッファであり、ここに格納されたデータはネットワークに順次送出される。
【００１５】
ここで、情報処理装置１０におけるデータ転送処理を説明する。図３は、サブプロセッサＮがメインメモリ１４に転送データ１４ｄを格納した後、データ転送用のプロセッサたるサブプロセッサ２４−１にデータ転送要求を行う場合のデータ転送処理のシーケンス図である。同図に示すように、サブプロセッサ２４−ｎがバス２２を介してサブプロセッサ２４−１に対して転送データ１４ｄの論理アドレス（ここではａとする。）を指定したデータ転送要求を送信すると（Ｓ１０１）、サブプロセッサ２４−１はこのデータ転送要求を受信する。サブプロセッサ２４−１のメモリ管理部２４ｂ−１は、データ転送要求において指定された論理アドレスａを、内部メモリに記憶されたアドレス変換テーブル１４ｃの一部ページに基づいて物理アドレスＡに変換する（Ｓ１０２）。そして、この物理アドレスＡをメモリインタフェース１６に送信して（Ｓ１０３）、メインメモリ１４の物理アドレスＡに格納された転送データ１４ｄを受信する（Ｓ１０４）。次に、サブプロセッサ２４−１は、受信した転送データ１４ｄをローカルメモリ２４ａ−１に格納する（Ｓ１０５）。そして、格納先の物理アドレス（ここではＢとする。）を指定したデータ転送指示を、バス２２を介してＮＩＣ２０に送信する（Ｓ１０６）。ＮＩＣ２０は、この指示に応じて物理アドレスＢをサブプロセッサ２４−１に送信し（Ｓ１０７）、サブプロセッサ２４−１から返信される転送データ２４ａ’’（すなわち転送データ１４ｄ）を受信する（Ｓ１０８）。そして、こうして受信した転送データ２４ａ’’をバッファメモリ２０ｂに格納し、通信処理に供する（Ｓ１０９）。
【００１６】
以上説明した情報処理装置１０によれば、マルチコアプロセッサを構成する１つのサブプロセッサ２４−１をデータ転送専用に割り当てるため、メインプロセッサ１２の動作状況によらず、高速且つ低レイテンシにてデータ転送を実現できる。また、情報処理装置１０のハードウェアアーキテクチャによりメインプロセッサ１２及びサブプロセッサ１４間で共有されるアドレス変換テーブル１４ｃを用いてデータ転送を実現できるので、必要が生じた時に直ちにデータ転送を行うことができる。
【００１７】
なお、本発明は上記実施形態に限定されるものではなく、種々の変形実施が可能である。例えば、上記実施形態ではＩ／ＯデバイスとしてＮＩＣ２０を取り上げたが、ハードディスク記憶装置等、他のＩ／Ｏデバイスであってもよい。また、上記実施形態ではメインメモリ１４に記憶された転送データ１４ｄをそのままサブプロセッサ２４−１のローカルメモリ２４ａ−１に格納するようにしたが、例えばサブプロセッサ２４−１において暗号化等の各種変換処理を施してから転送データ２４ａ’’として格納し、これをＮＩＣ２０に転送するようにしてもよい。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係る情報処理装置の構成図である。
【図２】ローカルメモリ及びメインメモリの記憶内容を示す図である。
【図３】データ転送処理を示すシーケンス図である。
【符号の説明】
【００１９】
１０  情報処理装置、１２  メインプロセッサ、１２ａ，２４ｂ−１〜２４ｂ−ｎ  メモリ管理部、１２ｂ  キャッシュメモリ、１４  メインメモリ、１４ａ  メインプロセッサ用システムプログラム、１４ｂ  メインプロセッサ用ユーザプログラム、１４ｃ  アドレス変換テーブル、１４ｄ，２４ａ’’  転送データ、１６  メモリインタフェース、１８  入出力インタフェース、２０  ＮＩＣ、２０ａ，２４ｃ−１〜２４ｃ−ｎ  ＤＭＡＣ、２０ｂ  バッファメモリ、２４−１〜２４−ｎ  サブプロセッサ、２４ａ−１〜２４ａ−ｎ  ローカルメモリ、２４ａ’  サブプロセッサ用プログラム（データ転送プログラム）。
【図１】
2008065478.tif 000003
【図２】
2008065478.tif 000004
【図３】
2008065478.tif 000005