(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを含むマルチプロセッサユニットを有し、
前記マルチプロセッサユニットは、
メインプロセッサを含むメインプロセッサエレメントと、
サブプロセッサと、プロセッサ対応のローカルメモリと、該ローカルメモリに対するデータ入出力をＤＭＡ（ダイレクトメモリアクセス）によって実行するメモリフローコントローラ（ＭＦＣ）とを有するサブプロセッサエレメントを１つ以上有する構成であり、
前記メモリフローコントローラ（ＭＦＣ）は、
前記マルチプロセッサユニットの外部からデータをＤＭＡ処理により前記ローカルメモリに入力して格納し、さらに、前記ローカルメモリに格納したデータをＤＭＡ処理により前記マルチプロセッサユニットの外部のメモリまたはデバイスに出力する処理を実行する構成であり、
前記ＤＭＡ処理によるデータ転送を実行するサブプロセッサエレメントは、
オペレーションシステム（ＯＳ）の少なくとも一部の処理として前記ＤＭＡ処理を実行する構成である情報処理装置。
【請求項２】
前記情報処理装置は、
前記マルチプロセッサユニットとバス接続されたシステムメモリを有し、
前記システムメモリは、オペレーションシステム（ＯＳ）によって管理されるカーネル空間と、アプリケーションの利用可能なユーザ空間が定義されたメモリであり、
前記メモリフローコントローラ（ＭＦＣ）は、
前記システムメモリのカーネル空間からデータをＤＭＡ処理により前記ローカルメモリに入力して格納し、さらに、前記ローカルメモリに格納したデータをＤＭＡ処理により前記システムメモリのユーザ空間に出力する処理を実行する構成である請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、
前記マルチプロセッサユニットとバス接続された第１デバイスおよび第２デバイスを有し、
前記メモリフローコントローラ（ＭＦＣ）は、
前記第１デバイスからデータをＤＭＡ処理により前記ローカルメモリに入力して格納し、さらに、前記ローカルメモリに格納したデータをＤＭＡ処理により前記第２デバイスに出力する処理を実行する構成である請求項１に記載の情報処理装置。
【請求項４】
前記ＤＭＡ処理によるデータ転送によって、前記ユーザ空間に出力されたデータは、前記マルチプロセッサユニット内の複数のサブプロセッサエレメントのいずれかのサブブロセッサエレメントが実行するアプリケーションによって取得され利用される構成である請求項１に記載の情報処理装置。
【請求項５】
情報処理装置においてデータ転送処理を行う情報処理方法であり、
前記情報処理装置は、複数のプロセッサを含むマルチプロセッサユニットを有し、
前記マルチプロセッサユニットは、
メインプロセッサを含むメインプロセッサエレメントと、
サブプロセッサと、プロセッサ対応のローカルメモリと、該ローカルメモリに対するデータ入出力をＤＭＡ（ダイレクトメモリアクセス）によって実行するメモリフローコントローラ（ＭＦＣ）とを有するサブプロセッサエレメントを１つ以上有する構成であり、
前記メモリフローコントローラ（ＭＦＣ）が、前記マルチプロセッサユニットの外部からデータをＤＭＡ処理により前記ローカルメモリに入力して格納するステップと、
前記メモリフローコントローラ（ＭＦＣ）が、前記ローカルメモリに格納したデータをＤＭＡ処理により前記マルチプロセッサユニットの外部のメモリまたはデバイスに出力する処理を実行するステップを有し、
前記ＤＭＡ処理によるデータ転送を実行するサブプロセッサエレメントは、
オペレーションシステム（ＯＳ）の少なくとも一部の処理として前記ＤＭＡ処理を実行する情報処理方法。
【請求項６】
情報処理装置においてデータ転送処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、複数のプロセッサを含むマルチプロセッサユニットを有し、
前記マルチプロセッサユニットは、
メインプロセッサを含むメインプロセッサエレメントと、
サブプロセッサと、プロセッサ対応のローカルメモリと、該ローカルメモリに対するデータ入出力をＤＭＡ（ダイレクトメモリアクセス）によって実行するメモリフローコントローラ（ＭＦＣ）とを有するサブプロセッサエレメントを１つ以上有し、サブプロセッサエレメントの１つは、オペレーションシステム（ＯＳ）の少なくとも一部の処理としてＤＭＡ処理を実行するＯＳ実行エレメントであり、
前記ＯＳ実行エレメントのメモリフローコントローラ（ＭＦＣ）に、前記マルチプロセッサユニットの外部からデータをＤＭＡ処理により前記ローカルメモリに入力して格納させるステップと、
前記ＯＳ実行エレメントの前記メモリフローコントローラ（ＭＦＣ）に、前記ローカルメモリに格納したデータをＤＭＡ処理により前記マルチプロセッサユニットの外部のメモリまたはデバイスに出力する処理を実行させるステップを有するコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、装置内のデータ転送処理あるいはコピー処理を行う情報処理装置、情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
様々なデータ処理を行う情報処理装置において、例えば通信処理や様々なデータ処理を実行するデバイスが保持するデータを情報処理装置が実行するアプリケーションによって処理するためには、アプリケーションのアクセス可能なメモリ空間（ユーザ空間）にデータを移動またはコピーすることが必要となる。
【０００３】
デバイス上にあるデータをアプリケーションに渡す際の一般的な処理の流れについて図１を参照して説明する。図１に示す情報処理装置１００は、ＣＰＵ１１０、通信デバイスやデータ処理デバイスなどのデバイス１２０、メモリ１３０がシステムバス１０２に接続されている。システムバス１０２に接続された各構成部位にはシステムバス１０２を介してデータ転送がなされる。
【０００４】
メモリ１３０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が管理するカーネル空間１３２と、ＣＰＵ１１０の制御の下で実行される様々なアプリケーションがアクセス可能なユーザ空間１３１を有する。
【０００５】
デバイス１２０上にあるデータ１２１は、まず、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いて、メモリ１３０上のカーネル空間１３１へ転送される。次に、カーネル空間１３１に転送されたデータがＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の実行するＯＳの制御の下、ユーザ空間１３１へコピーされる。
【０００６】
このようなステップ、すなわち、デバイス→カーネル空間→ユーザ空間のデータ転送およびコピー処理を実行することで、アプリケーションがアクセス可能なユーザ空間１３１へデータを移動することができる。
【０００７】
この処理の流れについて図２に示すフローチャートを参照して説明する。
まず、ステップＳ１０１においてデバイスがデータを取得する。
次にステップＳ１０２において、デバイスがデータをメモリのカーネル空間へＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いて転送する。
次に、ステップＳ１０３において、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の実行するＯＳの制御の下、ユーザ空間へコピーされる。
最後に、ステップＳ１０４において、アプリケーションがユーザ空間からデータを取得する。
【０００８】
このようにデバイスの保持するデータをアプリケーションの利用可能なユーザ空間へ格納するためには、複数の処理ステップが必要となる。すなわち多くの処理サイクルが必要となり、転送コストの増加やデータ処理効率の低下を招くことになる。このような問題を解決するため、ＤＭＡのトランザクションを分割したり、あるいは統合したり、さらには条件次第でＤＭＡを利用しない設定とするなどにより、デバイスとメモリとの間の転送コストを低減するための手法が提案されている。
【０００９】
例えば特許文献１（特許２６６４８３８（ＩＢＭ））には、パケットの構成情報をデータと同時に送信し、パケットの構成要素ごとにＤＭＡ先を変更することで、受信端末におけるデータの分割及びコピーを回避して、処理効率の向上を図る構成を開示している。
【００１０】
また、特許文献２（特開２０００−１１２８４９（日立製作所））は、実メモリ空間で非連続なデータに対して、アドレス変換テーブルを用いることで連続領域として扱うことを可能とし、複数回のＤＭＡ処理を１回にまとめることでＤＭＡ処理回数の低減による処理の高速化を実現する構成を開示している。
【００１１】
さらに、特許文献３（特開平９−２８８６３１（日立製作所））は、デバイスからホストに対するデータコピーを行う際に、コピーするデータ長に応じてコピー方式を変更する構成を提案している。具体的には、ＤＭＡ、またはＰＩＯ（Ｐｒｏｇｒａｍｅｄ  Ｉ／Ｏ）を、データ長に応じて選択的に利用する構成とすることで、コピー性能の最適化を実現する構成を開示している。
【００１２】
また、近年、ＰＣＩ−Ｅｘｐｒｅｓｓのような高速シリアルバスの登場と共に、デバイスからメモリへのＤＭＡ自体は高速処理が可能となっている。しかしながら、デバイスからＤＭＡによりカーネル空間に転送されたデータを、アプリケーションが扱えるようにユーザ空間へコピーする処理、すなわちカーネル空間からユーザ空間へのデータコピー処理はＣＰＵの処理能力に依存することになる。結果として、この従来の転送シーケンス、すなわち、デバイス→カーネル空間→ユーザ空間のデータ転送を実行する構成では、ＣＰＵの処理能力を高めない限り処理効率を高めることはできない。
【００１３】
このような問題を解決すべく、ＤＭＡをカーネル空間に対してではなく、ユーザ空間に対して直接行なうゼロコピーによって処理コストを低減する手法が提案されている。
特許文献４（特開平９−２９４１３２（日立電線））は、フレーム中継装置において受信フレームをメモリコピーすること無く送信フレームとして扱うことが可能なメモリ管理方法を利用した構成を提案している。この構成により、メモリコピー性能に依存しないフレーム中継を実現している。
【００１４】
また、特許文献５（特開２００６−３０２２４６（富士通））は、デバイスにて受信されたデータをＤＭＡする際の宛先を制御することで、ユーザ空間（アプリケーション）に直接データを渡す仕組みを実現している。
【００１５】
ゼロコピー方式について、図３を参照して説明する。図３も、図１と同様の構成を持つ情報処理装置１４０を示している。情報処理装置１４０は、ＣＰＵ１５０、通信デバイスやデータ処理デバイスなどのデバイス１６０、メモリ１７０がシステムバス１４２に接続された構成を持つ。システムバス１４２に接続された各構成部位にはシステムバス１４２を介してデータ転送がなされる。
【００１６】
メモリ１７０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が管理するカーネル空間１７２と、ＣＰＵ１５０の制御の下で実行される様々なアプリケーションがアクセス可能なユーザ空間１７１を有する。
【００１７】
ゼロコピー方式を適用した構成では、デバイス１６０上にあるデータ１６１は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いて、メモリ１７０上のユーザ空間１７１へコピーされる。すなわち、カーネル空間１７２ではなく、ユーザ空間１７１へコピーされる。このように、ユーザ空間に対して直接行なうゼロコピーによって処理コストの低減が可能となる。
【００１８】
しかし、このようなゼロコピーを行なうためには、デバイスドライバやアプリケーションなどシステム全体の変更が必要となる。加えて、カーネル空間とユーザ空間との切り分けが曖昧となることから、該部分がセキュリティホールとなってシステムの堅牢性が損なわれる可能性が懸念される。すなわち、ＯＳの関与しない任意のアプリケーションやデバイスによって情報処理装置内のセキュアなデータのアクセス可能性が発生し、セキュアなデータの漏洩の可能性が懸念される。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明は、上記問題点に鑑みてなされたものであり、情報処理装置内のデータ転送あるいはコピー処理を効率的に実行しデータ処理の効率化、高速化を実現する情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の第１の側面は、
複数のプロセッサを含むマルチプロセッサユニットを有し、
前記マルチプロセッサユニットは、
メインプロセッサを含むメインプロセッサエレメントと、
サブプロセッサと、プロセッサ対応のローカルメモリと、該ローカルメモリに対するデータ入出力をＤＭＡ（ダイレクトメモリアクセス）によって実行するメモリフローコントローラ（ＭＦＣ）とを有するサブプロセッサエレメントを１つ以上有する構成であり、
前記メモリフローコントローラ（ＭＦＣ）は、
前記マルチプロセッサユニットの外部からデータをＤＭＡ処理により前記ローカルメモリに入力して格納し、さらに、前記ローカルメモリに格納したデータをＤＭＡ処理により前記マルチプロセッサユニットの外部のメモリまたはデバイスに出力する処理を実行する構成であり、
前記ＤＭＡ処理によるデータ転送を実行するサブプロセッサエレメントは、
オペレーションシステム（ＯＳ）の少なくとも一部の処理として前記ＤＭＡ処理を実行する構成である情報処理装置にある。
【００２１】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、前記マルチプロセッサユニットとバス接続されたシステムメモリを有し、前記システムメモリは、オペレーションシステム（ＯＳ）によって管理されるカーネル空間と、アプリケーションの利用可能なユーザ空間が定義されたメモリであり、前記メモリフローコントローラ（ＭＦＣ）は、前記システムメモリのカーネル空間からデータをＤＭＡ処理により前記ローカルメモリに入力して格納し、さらに、前記ローカルメモリに格納したデータをＤＭＡ処理により前記システムメモリのユーザ空間に出力する処理を実行する構成である。
【００２２】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、前記マルチプロセッサユニットとバス接続された第１デバイスおよび第２デバイスを有し、前記メモリフローコントローラ（ＭＦＣ）は、前記第１デバイスからデータをＤＭＡ処理により前記ローカルメモリに入力して格納し、さらに、前記ローカルメモリに格納したデータをＤＭＡ処理により前記第２デバイスに出力する処理を実行する構成である。
【００２４】
さらに、本発明の情報処理装置の一実施態様において、前記ＤＭＡ処理によるデータ転送によって、前記ユーザ空間に出力されたデータは、前記マルチプロセッサユニット内の複数のサブプロセッサエレメントのいずれかのサブブロセッサエレメントが実行するアプリケーションによって取得され利用される構成である。
【００２５】
さらに、本発明の第２の側面は、
情報処理装置においてデータ転送処理を行う情報処理方法であり、
前記情報処理装置は、複数のプロセッサを含むマルチプロセッサユニットを有し、
前記マルチプロセッサユニットは、
メインプロセッサを含むメインプロセッサエレメントと、
サブプロセッサと、プロセッサ対応のローカルメモリと、該ローカルメモリに対するデータ入出力をＤＭＡ（ダイレクトメモリアクセス）によって実行するメモリフローコントローラ（ＭＦＣ）とを有するサブプロセッサエレメントを１つ以上有する構成であり、
前記メモリフローコントローラ（ＭＦＣ）が、前記マルチプロセッサユニットの外部からデータをＤＭＡ処理により前記ローカルメモリに入力して格納するステップと、
前記メモリフローコントローラ（ＭＦＣ）が、前記ローカルメモリに格納したデータをＤＭＡ処理により前記マルチプロセッサユニットの外部のメモリまたはデバイスに出力する処理を実行するステップを有し、
前記ＤＭＡ処理によるデータ転送を実行するサブプロセッサエレメントは、
オペレーションシステム（ＯＳ）の少なくとも一部の処理として前記ＤＭＡ処理を実行する情報処理方法にある。
【００２６】
さらに、本発明の第３の側面は、
情報処理装置においてデータ転送処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、複数のプロセッサを含むマルチプロセッサユニットを有し、
前記マルチプロセッサユニットは、
メインプロセッサを含むメインプロセッサエレメントと、
サブプロセッサと、プロセッサ対応のローカルメモリと、該ローカルメモリに対するデータ入出力をＤＭＡ（ダイレクトメモリアクセス）によって実行するメモリフローコントローラ（ＭＦＣ）とを有するサブプロセッサエレメントを１つ以上有し、サブプロセッサエレメントの１つは、オペレーションシステム（ＯＳ）の少なくとも一部の処理としてＤＭＡ処理を実行するＯＳ実行エレメントであり、
前記ＯＳ実行エレメントのメモリフローコントローラ（ＭＦＣ）に、前記マルチプロセッサユニットの外部からデータをＤＭＡ処理により前記ローカルメモリに入力して格納させるステップと、
前記ＯＳ実行エレメントの前記メモリフローコントローラ（ＭＦＣ）に、前記ローカルメモリに格納したデータをＤＭＡ処理により前記マルチプロセッサユニットの外部のメモリまたはデバイスに出力する処理を実行させるステップを有するコンピュータ・プログラムにある。
【００２７】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００２８】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００２９】
本発明の一実施例の構成によれば、情報処理装置内のシステムメモリのカーネル空間とユーザ空間の間のデータコピー処理や、デバイス間のデータ転送処理に際して、マルチプロセッサユニット内のサブプロセッサユニットに設けられたメモリフローコントローラ（ＭＦＣ）がＤＭＡによって外部から自己のローカルメモリにデータを転送し、さらに自己のローカルメモリから、外部のメモリまたはデバイスにデータをＤＭＡ転送することで、データ転送やコピーを行う。本構成により、メインプロセッサに対する負荷を発生させることのないデータ転送やコピー処理が実現される。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【００３１】
［実施例１］
まず、図４を参照して、本発明の一実施例に係る情報処理装置の構成および処理例について説明する。図４に示す本実施例に係る情報処理装置２００は、マルチプロセッサユニット２１０と、ネットワークカードなどの通信デバイスやビデオカードなどのデータ処理デバイスなどから構成されるデバイス２２０、さらにシステムメモリとしてのメモリ２３０がシステムバス２０２に接続された構成を持つ。システムバス２０２に接続された各構成部位にはシステムバス２０２を介してデータ転送がなされる。
【００３２】
メモリ２３０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が管理するカーネル空間２３２と、マルチプロセッサユニット２１０のプロセッサエレメントの制御の下で実行される様々なアプリケーションがアクセス可能なユーザ空間２３１を有する。
【００３３】
マルチプロセッサユニット２１０は、メインプロセッサ（ＰＰＵ）を含むエレメントであるＰＰＥ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）２１１と、サブプロセッサ（ＳＰＵ）を含むエレメントであるＳＰＥ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）２１２とを有する。
【００３４】
マルチプロセッサユニット２１０は、１つのメインプロセッサエレメント（ＰＰＥ）２１１と、複数、例えば８つのサブプロセッサエレメント（ＳＰＥ）２１２によって構成される。マルチプロセッサユニット２１０に含まれる複数のプロセッサエレメントは、並列にデータ処理を実行可能である。なお、図４のマルチプロセッサユニット２１０内には、サブプロセッサエレメント（ＳＰＥ）２１２を１つのみ示しているが、同様の構成を持つサブプロセッサエレメント（ＳＰＥ）が複数、存在する。
【００３５】
メインプロセッサエレメント（ＰＰＥ）２１１は、メインプロセッサ本体としてのＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）と、Ｌ１キャッシュ（Ｌｅｖｅｌ１  ｃａｃｈｅ）、Ｌ２キャッシュ（Ｌｅｖｅｌ２  ｃａｃｈｅ）を持つ。
【００３６】
サブプロセッサエレメント（ＳＰＥ）２１２は、汎用ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）演算ユニットであるＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）と、２５６ｋＢのローカルストア［ＬＳ（Ｌｏｃａｌ  Ｓｔｏｒｅ）］と呼ばれる各ＳＰＵ対応のローカルメモリ、およびＤＭＡコントローラであるメモリフローコントローラ［ＭＦＣ（Ｍｅｍｏｒｙ  Ｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）］を有する。
【００３７】
ＳＰＥ２１２のＭＦＣは、情報処理装置の構成部位とＳＰＥ２１２内のローカルストア（ＬＳ）間においてデータをＤＭＡ転送する機能を持つ。例えば、システムのメモリ２３０と、ＳＰＥ２１２内のローカルストア（ＬＳ）間においてデータをＤＭＡ転送する。
【００３８】
本実施例において、デバイス２２０の保持するデータ２２１をメモリ２３０のユーザ空間２３１に格納する処理シーケンスについて、図５に示すフローチャートを参照して説明する。
【００３９】
まず、ステップＳ２０１において、図４に示すデバイス２２０がデータ２２１を取得する。
次にステップＳ２０２において、デバイス２２０がデータをメモリ２３０のカーネル空間２３２へＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いて転送する。
【００４０】
次に、ステップＳ２０３において、マルチプロセッサユニット２１０内の１つのサブプロセッサエレメント（ＳＰＥ）２１２の実行するＯＳの制御の下、カーネル空間２３２にあるデータ２５１を、サブプロセッサエレメント（ＳＰＥ）２１２のローカルストア（ＬＳ）にコピーする。図４に示すデータ２５１のコピーデータがデータ２５２となる。なお、マルチプロセッサユニット２１０内に設定された複数のサブプロセッサエレメント（ＳＰＥ）の１つのＳＰＥが、オペレーションシステム（ＯＳ）の少なくとも一部の処理としてＤＭＡ処理を実行するプロセッサとなり、本例では、そのＯＳ実行プロセッサがサブプロセッサエレメント（ＳＰＥ）２１２である。サブプロセッサエレメント（ＳＰＥ）２１２が実行するデータコピー処理は、サブプロセッサエレメント（ＳＰＥ）２１２のＭＦＣによるデータコピー処理（ＭＦＣ  ＧＥＴ）として実行される。
【００４１】
次に、ステップＳ２０４においてＭＦＣ処理が終了したか否かが判定される。すなわち、カーネル空間２３２にあるデータ２５１が、全てサブプロセッサエレメント（ＳＰＥ）２１２のローカルストア（ＬＳ）にコピーされたか否かが判定される。なお、ＭＦＣによる１回のデータコピー処理では、コピー可能なデータ量に上限（例えば１６Ｋｂ）があり、コピー対象のデータサイズに応じて、繰り返しコピー処理が行われることになる。
【００４２】
カーネル空間２３２のデータ２５１全体が、サブプロセッサエレメント（ＳＰＥ）２１２のローカルストア（ＬＳ）にコピーされると、ステップＳ２０４において、ＭＦＣが完了したと判定される。図４に示すように、データ２５２がサブプロセッサエレメント（ＳＰＥ）２１２のローカルストア（ＬＳ）に格納される。
【００４３】
次に、ステップＳ２０５に進み、サブプロセッサエレメント（ＳＰＥ）２１２の実行するＯＳの制御の下、ローカルストア（ＬＳ）に格納されたデータ２５２が、メモリ２３０のユーザ空間２３１にコピーされる。図４に示すデータ２５３である。このコピー処理は、サブプロセッサエレメント（ＳＰＥ）２１２のＭＦＣによるデータコピー処理（ＭＦＣ  ＰＵＴ）として行われる。
【００４４】
このＭＦＣによるデータコピー処理も、１回の処理によってコピー可能なデータ量に上限（例えば１６Ｋｂ）があるため、コピー対象のデータサイズに応じて繰り返し行われることになる。
【００４５】
ローカルストア（ＬＳ）に格納されたデータ２５２全体が、メモリ２３０のユーザ空間２３１にコピーされると、ステップＳ２０６において、ＭＦＣが完了したと判定される。図４に示すように、データ２５３がメモリ２３０のユーザ空間２３１に格納される。
【００４６】
最後に、ステップＳ２０７において、アプリケーションがメモリ２３０のユーザ空間２３１からデータ２５３を取得する。なお、アプリケーションは、例えばマルチプロセッサユニット２１０に構成された複数のサブプロセッサエレメント（ＳＰＥ）のいずれかにおいて実行される。
【００４７】
このように、本実施例では、デバイスの保持するデータをアプリケーションの利用可能なユーザ空間へ格納する処理に際して、
（１）サブプロセッサエレメント（ＳＰＥ）のＭＦＣによるダイレクトメモリアクセス（ＤＭＡ）、すなわち、［ＭＦＣ  ＧＥＴ］の実行。
この処理により、メモリのカーネル空間にあるデータをサブプロセッサエレメント（ＳＰＥ）のローカルストア（ＬＳ）上にコピーする。
（２）サブプロセッサエレメント（ＳＰＥ）のＭＦＣによるダイレクトメモリアクセス（ＤＭＡ）、すなわち、［ＭＦＣ  ＧＥＴ］の実行。
この処理により、サブプロセッサエレメント（ＳＰＥ）のローカルストア（ＬＳ）上にあるデータをメモリのユーザ空間にコピーする。
これらの処理シーケンスとすることで、メインのプロセッサであるＰＰＥ２１１に対する処理負荷を発生させることなく、カーネル空間からユーザ空間へのデータコピーを実現している。
【００４８】
なお、図４、図５を参照して説明した処理例は、データコピーをカーネル空間とユーザ空間との間で実行した処理例であるが、本発明に従った処理は、このような処理に限るものではなく、カーネル空間内、ユーザ空間内でのメモリコピーに適用することも可能である。すなわち、これらの同一空間内のデータコピーを、サブプロセッサエレメントのローカルストア（ＬＳ）を介したデータコピー処理を介在させて実行することも可能である。
【００４９】
［実施例２］
サブプロセッサエレメントのＭＦＣによるデータコピー処理は、図４に示すメモリ２３０のようなメインメモリとのコピー処理に限らず、例えばデバイス間でのデータコピーに適用することもできる。
【００５０】
図６を参照してデバイス間のデータ転送処理例について説明する。図６に示す情報処理装置３００は、マルチプロセッサユニット３１０、通信デバイスやデータ処理デバイスなどのデバイスＡ３２０、デバイスＢ３３０、メモリ３４０がシステムバス３０２に接続された構成を持つ。システムバス３０２に接続された各構成部位にはシステムバス３０２を介してデータ転送がなされる。
【００５１】
マルチプロセッサユニット３１０は、先に図４を参照して説明したと同様の構成である。すなわち、メインのプロセッサ（ＰＰＵ）を含むエレメントであるＰＰＥ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）３１１と、サブプロセッサ（ＳＰＵ）を含むエレメントであるＳＰＥ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）３１２とを有する。
【００５２】
マルチプロセッサユニット３１０は、１つのメインプロセッサエレメント（ＰＰＥ）３１１と、複数、例えば８つのサブプロセッサエレメント（ＳＰＥ）３１２によって構成される。なお、図６のマルチプロセッサユニット３１０内には、サブプロセッサエレメント（ＳＰＥ）３１２を１つのみ示しているが、同様の構成を持つサブプロセッサエレメント（ＳＰＥ）が複数、存在する。
【００５３】
メインプロセッサエレメント（ＰＰＥ）３１１は、メインプロセッサ本体としてのＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）と、Ｌ１キャッシュ（Ｌｅｖｅｌ１  ｃａｃｈｅ）、Ｌ２キャッシュ（Ｌｅｖｅｌ２  ｃａｃｈｅ）を持つ。
【００５４】
サブプロセッサエレメント（ＳＰＥ）３１２は、汎用ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）演算ユニットであるＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）と、２５６ｋＢのローカルストア［ＬＳ（Ｌｏｃａｌ  Ｓｔｏｒｅ）］と呼ばれる各ＳＰＵ対応のローカルメモリ、ＤＭＡコントローラであるメモリフローコントローラ［ＭＦＣ（Ｍｅｍｏｒｙ  Ｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）］から構成される。
【００５５】
ＳＰＥ３１２のＭＦＣは、情報処理装置の構成部位とＳＰＥ３１２内のローカルストア（ＬＳ）間においてデータをＤＭＡ転送する機能を持つ。例えば、システムのデバイスＡ３２０，デバイスＢ３３０と、ＳＰＥ２１２内のローカルストア（ＬＳ）間においてデータをＤＭＡ転送する機能を持つ。
【００５６】
本実施例において、デバイスＡ３２０の保持するデータ３２１を、デバイスＢ３３０に転送する処理シーケンスについて、図７に示すフローチャートを参照して説明する。
【００５７】
まず、ステップＳ３０１において、図６に示すデバイスＡ３２０がデータ３２１を取得する。
次にステップＳ３０２において、マルチプロセッサユニット３１０内の１つのサブプロセッサエレメント（ＳＰＥ）３１２の実行するＯＳの制御の下、デバイスＡ３２０にあるデータ３２１を、サブプロセッサエレメント（ＳＰＥ）３１２のローカルストア（ＬＳ）にコピーする。図６に示すデータ３２１のコピーデータがデータ３１５となる。なお、マルチプロセッサユニット３１０内に設定された複数のサブプロセッサエレメント（ＳＰＥ）の１つのＳＰＥが、オペレーションシステム（ＯＳ）の少なくとも一部の処理としてＤＭＡ処理を実行するプロセッサとなり、本例では、そのＯＳ実行プロセッサがサブプロセッサエレメント（ＳＰＥ）３１２である。サブプロセッサエレメント（ＳＰＥ）３１２が実行するデータコピー処理は、サブプロセッサエレメント（ＳＰＥ）３１２のＭＦＣによるデータコピー処理（ＭＦＣ  ＧＥＴ）として実行される。
【００５８】
次に、ステップＳ３０３においてＭＦＣ処理が終了したか否かが判定される。すなわち、デバイスＡ３２０のデータ３２１が、全てサブプロセッサエレメント（ＳＰＥ）３１２のローカルストア（ＬＳ）にコピーされたか否かが判定される。なお、ＭＦＣによる１回のデータコピー処理では、コピー可能なデータ量に上限（例えば１６Ｋｂ）があり、コピー対象のデータサイズに応じて、繰り返しコピー処理が行われることになる。
【００５９】
デバイスＡ３２０のデータ３２１全体が、サブプロセッサエレメント（ＳＰＥ）３１２のローカルストア（ＬＳ）にコピーされると、ステップＳ３０３において、ＭＦＣが完了したと判定される。図６に示すように、データ３１５がサブプロセッサエレメント（ＳＰＥ）３１２のローカルストア（ＬＳ）に格納される。次に、ステップＳ３０４に進み、サブプロセッサエレメント（ＳＰＥ）３１２が、ローカルストア（ＬＳ）にコピーされたデータ３１５を、デバイスＢ３３０のローカルメモリ領域にコピーする。図６に示すデータ３３１である。このコピー処理は、サブプロセッサエレメント（ＳＰＥ）３１２のＭＦＣによるデータコピー処理（ＭＦＣ  ＰＵＴ）として行われる。
【００６０】
このＭＦＣによるデータコピー処理も、１回の処理によってコピー可能なデータ量に上限（例えば１６Ｋｂ）があるため、コピー対象のデータサイズに応じて繰り返し行われることになる。
【００６１】
ローカルストア（ＬＳ）に格納されたデータ３１５全体が、デバイスＢ３３０のローカルメモリ領域にコピーされると、ステップＳ３０５において、ＭＦＣが完了したと判定される。図６に示すように、データ３３１がデバイスＢ３３０に格納される。
【００６２】
最後に、ステップＳ３０６において、デバイスＢ３３０がデータ３３１を取得してデータ処理、例えばデバイスＢ３３０が通信デバイスであれば、データ送信などの処理を実行する。
【００６３】
このように、本実施例では、デバイスの保持するデータを、他のデバイスへ転送する処理に際して、
（１）サブプロセッサエレメント（ＳＰＥ）のＭＦＣによるダイレクトメモリアクセス（ＤＭＡ）、すなわち、［ＭＦＣ  ＧＥＴ］の実行。
この処理により、第１のデバイスにあるデータをサブプロセッサエレメント（ＳＰＥ）のローカルストア（ＬＳ）上にコピーする。
（２）サブプロセッサエレメント（ＳＰＥ）のＭＦＣによるダイレクトメモリアクセス（ＤＭＡ）、すなわち、［ＭＦＣ  ＰＵＴ］の実行。
この処理により、サブプロセッサエレメント（ＳＰＥ）のローカルストア（ＬＳ）上にあるデータを第２デバイスに提供する。
これらの処理シーケンスとすることで、メインのプロセッサであるＰＰＥに対する処理負荷を発生させることなく、デバイス間のデータコピーを実現している。
【００６４】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【００６５】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【００６６】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【００６７】
以上、説明したように、本発明の一実施例の構成によれば、情報処理装置内のシステムメモリのカーネル空間とユーザ空間の間のデータコピー処理や、デバイス間のデータ転送処理に際して、マルチプロセッサユニット内のサブプロセッサユニットに設けられたメモリフローコントローラ（ＭＦＣ）がＤＭＡによって外部から自己のローカルメモリにデータを転送し、さらに自己のローカルメモリから、外部のメモリまたはデバイスにデータをＤＭＡ転送することで、データ転送やコピーを行う。本構成により、メインプロセッサに対する負荷を発生させることのないデータ転送やコピー処理が実現される。
【図面の簡単な説明】
【００６８】
【図１】情報処理装置におけるデータ転送処理例について説明する図である。
【図２】情報処理装置におけるデータ転送処理のシーケンスについて説明するフローチャートを示す図である。
【図３】情報処理装置におけるデータ転送処理例としてゼロコピーを適用した処理例について説明する図である。
【図４】本発明の一実施例に係る情報処理装置におけるデータ転送処理例について説明する図である。
【図５】本発明の一実施例に係る情報処理装置におけるデータ転送処理のシーケンスについて説明するフローチャートを示す図である。
【図６】本発明の一実施例に係る情報処理装置におけるデータ転送処理例について説明する図である。
【図７】本発明の一実施例に係る情報処理装置におけるデータ転送処理のシーケンスについて説明するフローチャートを示す図である。
【符号の説明】
【００６９】
１００  情報処理装置
１０２  システムバス
１１０  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
１２０  デバイス
１２１  データ
１３０  メモリ
１３１  ユーザ空間
１３２  カーネル空間
１４０  情報処理装置
１４２  システムバス
１５０  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
１６０  デバイス
１６１  データ
１７０  メモリ
１７１  ユーザ空間
１７２  カーネル空間
２００  情報処理装置
２０２  システムバス
２１０  マルチプロセッサユニット
２１１  メインプロセッサエレメント（ＰＰＥ）
２１２  サブプロセッサエレメント（ＳＰＥ）
２２１  データ
２３０  メモリ
２３１  ユーザ空間
２３２  カーネル空間
２５１〜２５３  データ
３００  情報処理装置
３０２  システムバス
３１０  マルチプロセッサユニット
３１１  メインプロセッサエレメント（ＰＰＥ）
３１２  サブプロセッサエレメント（ＳＰＥ）
３２０  デバイスＡ
３２１  データ
３３０  デバイスＢ
３３１  データ
３４０  メモリ
【図１】
0004548505.tif 000002
【図２】
0004548505.tif 000003
【図３】
0004548505.tif 000004
【図４】
0004548505.tif 000005
【図５】
0004548505.tif 000006
【図６】
0004548505.tif 000007
【図７】
0004548505.tif 000008