(57)【要約】【課題】ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にする。【解決手段】転送装置（２３０）は、第１処理装置（１１０または２１０）および第２処理装置（２１０または１１０）とＰＣＩｅで通信を行う転送装置（２３０）であって、第１処理装置の第１メモリ（１２０または２２０）から第２処理装置の第２メモリ（２２０または１２０）へのデータ転送を制御するＤＭＡＣ（２３３）と、第１メモリにおける転送対象データが格納されている第１メモリアドレスに関する情報を、第１処理装置から取得する第１の送信ディスクリプタコントローラ（２３５または２３７）と、第２メモリにおける転送対象データを格納すべき第２メモリアドレスに関する情報を、第２処理装置から取得する第１の受信ディスクリプタコントローラ（２３４または２３６）とを備える。【選択図】図１
2020190765.tif 000002
【特許請求の範囲】
【請求項１】
第１デバイスおよび第２デバイスとＰＣＩｅで通信を行う転送装置であって、
前記第１デバイスの第１メモリから前記第２デバイスの第２メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、
前記第１メモリにおける転送対象データが格納されている第１メモリアドレスに関する情報を、前記第１デバイスから取得する第１の送信ディスクリプタコントローラと、
前記第２メモリにおける前記転送対象データを格納すべき第２メモリアドレスに関する情報を、前記第２デバイスから取得する第１の受信ディスクリプタコントローラとを備える、転送装置。
【請求項２】
前記転送対象データの転送が完了すると、前記第１デバイスまたは前記第２デバイスに対して割り込みを発生させ、転送完了を通知する割込発生部を備える、請求項１に記載の転送装置。
【請求項３】
前記第２メモリにおける転送対象データが格納されている第３メモリアドレスに関する情報を、前記第２デバイスから取得する第２の送信ディスクリプタコントローラと、
前記第１メモリにおける前記転送対象データを格納すべき第４メモリアドレスに関する情報を、前記第１デバイスから取得する第２の受信ディスクリプタコントローラとを備え、
前記ダイレクトメモリアクセスコントローラは、前記第２デバイスの前記第２メモリから、前記第１デバイスの前記第１メモリへのデータ転送を制御する、請求項１または２に記載の転送装置。
【請求項４】
請求項１から３のいずれか１項に記載の転送装置と、前記第２デバイスと、前記第２メモリとを備える情報処理装置であって、
前記第２デバイスは、
前記転送対象データを処理するアプリケーション実行部と、
前記アプリケーション実行部からソケットＡＰＩを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第２メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する、情報処理装置。
【請求項５】
前記第２デバイスの前記デバイスドライバは、前記送信ディスクリプタを前記第２メモリに格納し、
前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記第２メモリから取得した前記送信ディスクリプタに基づいて、前記第２メモリにおける前記転送対象データが格納されている場所を特定する、請求項４に記載の情報処理装置。
【請求項６】
前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記デバイスドライバから取得した前記送信ディスクリプタに基づいて、前記第２メモリにおける前記転送対象データが格納されている場所を特定する、請求項４に記載の情報処理装置。
【請求項７】
データの転送元である第１デバイスおよび当該データの転送先である第２デバイスとＰＣＩｅで通信を行う転送装置が実行するデータ転送方法であって、
前記転送装置の送信ディスクリプタコントローラが、前記第１デバイスの第１メモリにおける、転送対象データが格納されている第１メモリアドレスに関する第１情報を、前記第１デバイスから取得するステップと、
前記転送装置の受信ディスクリプタコントローラが、前記第２デバイスの第２メモリにおける、前記転送対象データを格納すべき第２メモリアドレスに関する第２情報を、前記第２デバイスから取得するステップと、
前記転送装置のダイレクトメモリアクセスコントローラが、前記第１メモリから前記第２メモリへのデータを転送するステップとを含む、データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置、情報処理装置、および、データ転送方法に関する。
【背景技術】
【０００２】
特許文献１には、プロセッサ２２とデータ転送コントローラ３０とを備えるコントローラモジュール２０間を、ＰＣＩｅ（Peripheral Component Interconnect Express）で通信可能に接続することが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１０６９４０号公報（２０１４年６月９日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＰＣＩｅによる通信では、伝送路がシリアル化されているため、デバイス間の高速な通信を実現することができる。そのため、例えば、産業用機械の制御を行っているメインユニットに、新しい機能を搭載する代わりに、当該新しい機能を別ユニット（以下、拡張ユニット）に持たせて、メインユニットと拡張ユニットとの接続をＰＣＩｅで実現することが考えられる。このように構成することで、新しい機能の搭載によってメインユニットの制御性能に悪影響が出るリスクを回避できる。
【０００５】
一方で、上述の新しい機能を実現するアプリケーションが、ユニット間のＰＣＩｅによる接続を前提に開発されると、将来メインユニットの処理性能が向上して、メインユニットで従来の機能と新しい機能との両立が可能となった場合に、当該アプリケーションの再開発が必要になってしまうという問題がある。
【０００６】
このため、新しい機能を実現するアプリケーションは、アプリケーションの再開発が必要とならないように、汎用性に鑑みてＥｔｈｅｒｎｅｔ(登録商標)で用いられているソケット通信でデータの転送を行うことを前提に開発したいという要求が生まれる。
【０００７】
本発明の一態様は、ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にする転送装置を実現することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、本開示の一例として、上述した課題を解決するために、以下の構成を採用する。
【０００９】
すなわち、本発明の一側面に係る転送装置は、第１デバイスおよび第２デバイスとＰＣＩｅで通信を行う転送装置であって、前記第１デバイスの第１メモリから前記第２デバイスの第２メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、前記第１メモリにおける転送対象データが格納されている第１メモリアドレスに関する情報を、前記第１デバイスから取得する第１の送信ディスクリプタコントローラと、前記第２メモリにおける前記転送対象データを格納すべき第２メモリアドレスに関する情報を、前記第２デバイスから取得する第１の受信ディスクリプタコントローラとを備える。
【００１０】
前記構成によれば、ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
【００１１】
前記一側面に係る転送装置において、前記転送対象データの転送が完了すると、前記第１デバイスまたは前記第２デバイスに対して割り込みを発生させ、転送完了を通知する割込発生部を備えてもよい。これにより、第１デバイスまたは第２デバイスに対して、適時にデータ転送の完了を認識させることができる。
【００１２】
前記一側面に係る転送装置において、前記第２メモリにおける転送対象データが格納されている第３メモリアドレスに関する情報を、前記第２デバイスから取得する第２の送信ディスクリプタコントローラと、前記第１メモリにおける前記転送対象データを格納すべき第４メモリアドレスに関する情報を、前記第１デバイスから取得する第２の受信ディスクリプタコントローラとを備え、前記ダイレクトメモリアクセスコントローラは、前記第２デバイスの前記第２メモリから、前記第１デバイスの前記第１メモリへのデータ転送を制御してもよい。これにより、第１メモリから第２メモリへのデータ転送に加えて、第２メモリから第１メモリへのデータ転送が、ソケット通信にて可能となる。
【００１３】
本発明の一側面に係る情報処理装置は、上述のいずれかの転送装置と、前記第２デバイスと、前記第２メモリとを備える情報処理装置であって、前記第２デバイスは、前記転送対象データを処理するアプリケーション実行部と、前記アプリケーション実行部からソケットＡＰＩを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第２メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する。
【００１４】
前記構成によれば、ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
【００１５】
前記一側面に係る情報処理装置において、前記第２デバイスの前記デバイスドライバは、前記送信ディスクリプタを前記第２メモリに格納し、前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記第２メモリから取得した前記送信ディスクリプタに基づいて、前記第２メモリにおける前記転送対象データが格納されている場所を特定してもよい。これにより、ダイレクトメモリアクセスコントローラは、転送すべき転送対象データを第２メモリから正しく読み出すことができる。
【００１６】
前記一側面に係る情報処理装置において、前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記デバイスドライバから取得した前記送信ディスクリプタに基づいて、前記第２メモリにおける前記転送対象データが格納されている場所を特定してもよい。これにより、ダイレクトメモリアクセスコントローラは、転送すべき転送対象データを第２メモリから正しく読み出すことができる。
【００１７】
本発明の一側面に係るデータ転送方法は、データの転送元である第１デバイスおよび当該データの転送先である第２デバイスとＰＣＩｅで通信を行う転送装置が実行するデータ転送方法であって、前記転送装置の送信ディスクリプタコントローラが、前記第１デバイスの第１メモリにおける、転送対象データが格納されている第１メモリアドレスに関する第１情報を、前記第１デバイスから取得するステップと、前記転送装置の受信ディスクリプタコントローラが、前記第２デバイスの第２メモリにおける、前記転送対象データを格納すべき第２メモリアドレスに関する第２情報を、前記第２デバイスから取得するステップと、前記転送装置のダイレクトメモリアクセスコントローラが、前記第１メモリから前記第２メモリへのデータを転送するステップとを含む。なお、第２情報を取得するステップは、第１情報を取得するステップに先行して実行されてもよい。
【００１８】
前記方法によれば、ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
【発明の効果】
【００１９】
本発明の一態様によれば、ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】本実施形態に係る第１処理装置、第２処理装置および転送装置の機能構成の一例を模式的に例示する図である。
【図２】下り転送の処理手順の一例を例示するフローチャートである。
【図３】上り転送の処理手順の一例を例示するフローチャートである。
【図４】メインユニットと拡張ユニットとの他の接続例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。
【００２２】
〔実施形態１〕
§１  適用例
図１は、本実施形態に係る転送装置２３０の適用場面の一例を模式的に例示する図である。転送装置２３０は、一例として、メインユニット１００のプロセッサである第１処理装置１１０と、メインユニット１００の新しい機能を外付けした拡張ユニット２００（情報処理装置）のプロセッサである第２処理装置２１０との間のデータ転送を実現するものとして、拡張ユニット２００に設けられる。
【００２３】
転送装置２３０は、第１処理装置１１０（第１デバイスまたは第２デバイス）および第２処理装置２１０（第２デバイスまたは第１デバイス）のそれぞれとＰＣＩｅで通信を行うべく、ＰＣＩｅの規格に準拠したｂｕｓで、それぞれ接続されている。転送装置２３０は、典型的には、ＦＰＧＡ（Field-Programmable gate array）等のハードウェアで構成される。
【００２４】
メインユニット１００は、一例として、産業用機器の制御を行うものであり、典型的には、ＰＬＣ（Programmable Logic Controller）である。メインユニット１００のプロセッサである第１処理装置１１０は、例えば、ＣＰＵ（Central Processing Unit）である。
【００２５】
拡張ユニット２００が担う新しい機能は、特に限定されないが、例えば、データの統計機能、ルータ機能またはデータベース機能などが想定されている。拡張ユニット２００のプロセッサである第２処理装置２１０は、典型的には、ＭＰＵ（Micro Processing Unit）等のハードウェアで構成される。
【００２６】
以下では、便宜上、メインユニット１００の第１処理装置１１０から拡張ユニット２００の第２処理装置２１０へデータを転送することを、下り転送と称し、第２処理装置２１０から第１処理装置１１０へデータを転送することを上り転送と称する。
【００２７】
転送装置２３０は、下り転送を実現するために、少なくとも、ＤＭＡＣ（Direct Memory Access Controller）２３３と、下り送信ディスクリプタコントローラ２３５と、下り受信ディスクリプタコントローラ２３４とを備える構成である。
【００２８】
ＤＭＡＣ２３３（ダイレクトメモリアクセスコントローラ）は、第１処理装置１１０（第１デバイス）のメインユニットメモリ１２０から第２処理装置２１０（第２デバイス）の拡張ユニットメモリ２２０へのデータ転送を制御する。
【００２９】
下り送信ディスクリプタコントローラ２３５（送信ディスクリプタコントローラ）は、メインユニットメモリ１２０における送信データ（転送対象データ）が格納されている第１メモリアドレス（例えば、下り送信データアドレスＤＳ１〜ＤＳｎ）に関する情報、一例として、送信ディスクリプタを、第１処理装置１１０から取得する。
【００３０】
下り受信ディスクリプタコントローラ２３４（受信ディスクリプタコントローラ）は、拡張ユニットメモリ２２０における受信データ（転送対象データ）を格納すべき第２メモリアドレス（例えば、下り受信データアドレスＤＲ１〜ＤＲｎ）に関する情報、一例として、受信ディスクリプタを、第２処理装置２１０から取得する。
【００３１】
転送装置２３０は、上り転送を実現するために、さらに、上り送信ディスクリプタコントローラ２３７と、上り受信ディスクリプタコントローラ２３６とを備えてもよい。
【００３２】
上り送信ディスクリプタコントローラ２３７（送信ディスクリプタコントローラ）は、拡張ユニットメモリ２２０における送信データ（転送対象データ）が格納されている第３メモリアドレス（例えば、上り送信データアドレスＵＳ１〜ＵＳｍ）に関する情報、一例として、送信ディスクリプタを、第２処理装置２１０から取得する。
【００３３】
上り受信ディスクリプタコントローラ２３６（受信ディスクリプタコントローラ）は、メインユニットメモリ１２０における受信データ（転送対象データ）を格納すべき第４メモリアドレス（例えば、上り受信データアドレスＵＲ１〜ＵＲｍ）に関する情報、一例として、受信ディスクリプタを、第１処理装置１１０から取得する。
【００３４】
これにより、ユニット間をＰＣＩｅで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を実現することができる。具体的には、新しい機能に係るアプリケーションを、ＰＣＩｅによる接続を前提に開発せずに、最初からソケット通信でのデータ転送を前提としてアプリケーションを開発しておくことができる。これにより、将来、メインユニット１００において、従来の産業用機器の制御と新しい機能の実行との両立が可能となり、当該アプリケーションにおいてソケット通信を利用する必要が出てきた場合に、当該アプリケーションを再開発する必要がなくなるという顕著な効果を奏する。
【００３５】
§２  構成例
［ハードウェア構成］
図１は、本実施形態に係るメインユニット１００および拡張ユニット２００のハードウェア構成の一例を模式的に例示する図である。
【００３６】
＜メインユニット１００＞
図１の例では、メインユニット１００は、第１処理装置１１０、および、メインユニットメモリ１２０（第１メモリ、第２メモリ）を備える。メインユニット１００は、他にも、入力装置、出力装置、および、ＲＯＭ（Read Only Memory）等の不揮発性の記憶装置などを備えていてもよい。
【００３７】
第１処理装置１１０は、メインユニット１００を統括的に制御するものである。第１処理装置１１０は、例えば、ＣＰＵであり、産業用の機械および設備などの制御対象のマシンを制御したり、拡張ユニット２００を制御して追加された新しい機能に係る処理をタスクとして管理したりする。
【００３８】
メインユニットメモリ１２０は、揮発性の記憶領域（ＲＡＭ；Random Access Memory）である。メインユニットメモリ１２０は、第１処理装置１１０によって生成された送信データ、第１処理装置１１０が処理すべき、第２処理装置２１０によって生成された受信データ、および、第１処理装置１１０で実行されるべき各種プログラムを格納する。また、メインユニットメモリ１２０は、第１処理装置１１０による各種プログラムの実行時の作業用メモリとして使用されてもよい。メインユニットメモリ１２０としては、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等を用いることができる。
【００３９】
＜拡張ユニット２００＞
図１の例では、拡張ユニット２００は、第２処理装置２１０、拡張ユニットメモリ２２０（第２メモリ、第１メモリ）、および、転送装置２３０を備える。
【００４０】
第２処理装置２１０は、拡張ユニット２００を統括的に制御するものである。第２処理装置２１０は、例えば、ＭＰＵであり、第１処理装置１１０が生成したデータに基づいて、追加された新しい機能に係る処理をタスクとして実行する。
【００４１】
拡張ユニットメモリ２２０は、揮発性の記憶領域（ＲＡＭ）である。拡張ユニットメモリ２２０は、第２処理装置２１０によって生成された送信データ、第２処理装置２１０が処理すべき、第１処理装置１１０によって生成された受信データ、および、第２処理装置２１０で実行されるべき各種プログラムを格納する。また、拡張ユニットメモリ２２０は、第２処理装置２１０による各種プログラムの実行時の作業用メモリとして使用されてもよい。拡張ユニットメモリ２２０としては、典型的には、ＤＲＡＭ等を用いることができる。
【００４２】
転送装置２３０は、第１処理装置１１０および第２処理装置２１０とＰＣＩｅで通信を行うものであり、第１処理装置１１０と第２処理装置２１０との間の下り転送、および、必要に応じて上り転送を制御する。上述のとおり、転送装置２３０は、典型的には、ＦＰＧＡである。
【００４３】
［機能構成］
図１は、本実施形態に係る第１処理装置１１０、第２処理装置２１０および転送装置２３０の機能構成の一例を模式的に例示する図である。
【００４４】
＜第１処理装置１１０＞
第１処理装置１１０は、不図示の不揮発性記憶装置に記憶されたメインユニット１００の制御プログラムをメインユニットメモリ１２０に展開する。そして、第１処理装置１１０は、メインユニットメモリ１２０に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図１に示される通り、本実施形態に係る第１処理装置１１０は、マシン制御部１１１、割込制御部１１２、タスク制御部１１３、デバイスドライバ１１４、および、ＰＣＩｅインタフェース１１５を備える。
【００４５】
マシン制御部１１１は、メインユニット１００に接続される産業用機器を制御するものである。産業用機器は、例えば、製造工程に配置されている製造装置、製造装置またはワークの状態をセンシングするセンシングデバイスなどが想定されている。これらの産業用機器をマシン制御部１１１が制御することにより、ＦＡ（Factory Automation）が実現される。
【００４６】
また、マシン制御部１１１は、各産業用機器と定周期で通信し、各産業用機器から、
下流の工程で処理されるデータを取得する。例えば、取得されたデータは、拡張ユニット２００によって処理されてもよい。
【００４７】
割込制御部１１２は、ＰＣＩｅ経由で、特定のアドレスに対して値が書き込まれることにより、第１処理装置１１０に割り込みを発生させる。このように特定のアドレスに対して値を書き込むことで割り込みとする手法をＭＳＩ（Message Signal Interrupt）と呼び、割り込みのために特定のアドレスに対して値を書き込むことを、ＭＳＩを発行すると呼ぶ。一例として、割込制御部１１２は、ＰＣＩｅ経由で割込発生部２３８よりＭＳＩが発行されることにより、第１処理装置１１０に割り込みを発生させ、データの転送が完了したことを第１処理装置１１０に認識させる。
【００４８】
タスク制御部１１３は、メインユニット１００が管轄するＦＡシステムにおいて蓄積されたデータに対し、実施すべき処理をタスクとして管理する。また、タスク制御部１１３は、当該タスクを、タスク実行者である周辺の拡張ユニット２００に割り当てる。具体的には、タスク制御部１１３は、どのデータを、どの拡張ユニット２００に転送するのかを制御する。
【００４９】
例えば、メインユニット１００をＦＴＰサーバ、拡張ユニット２００をＦＴＰクライアントとしてＦＴＰ（File Transfer Protocol）を介したサーバクライアントシステムを構築してもよい。この場合、タスク制御部１１３は、拡張ユニット２００のタスク実行部２１３からの接続要求に応答して、タスク実行部２１３との接続を確立し、タスクの実行に必要なデータをタスク実行部２１３に転送したり、タスク実行部２１３が処理済みのデータを受け付けたりする。
【００５０】
デバイスドライバ１１４は、ディスクリプタをメインユニットメモリ１２０に書き込むことにより、メインユニット１００の第１処理装置１１０が、転送装置２３０を介して、拡張ユニット２００の第２処理装置２１０との間で、データを転送することを可能にする。例えば、デバイスドライバ１１４は、ソケットＡＰＩ（Application Program Interface）を介して、タスク制御部１１３からデータ転送の指示を受け付ける。デバイスドライバ１１４は、拡張ユニット２００との間でデータ転送を行うために必要なディスクリプタをメインユニットメモリ１２０に書き込む。
【００５１】
メインユニットメモリ１２０に書き込まれるディスクリプタのうち、送信ディスクリプタは、ＤＭＡＣ２３３が下り転送を実現するための動作の一部を規定する。これにより、第１処理装置１１０のタスク制御部１１３が、第２処理装置２１０のタスク実行部２１３へデータを送信することが可能となる。受信ディスクリプタは、ＤＭＡＣ２３３が上り転送を実現するための動作の一部を規定する。これにより、第１処理装置１１０のタスク制御部１１３が、第２処理装置２１０のタスク実行部２１３から送信されたデータを受信することが可能となる。
【００５２】
より具体的には、ディスクリプタは、ＤＭＡＣ２３３がＤＭＡ（ダイレクトメモリアクセス）操作を行うためのＤＭＡ命令のリストを構成する。一例として、ＤＭＡ命令のリストは、ディスクリプタのチェーンで構成されている。各ディスクリプタは、処理すべき次のディスクリプタへのポインタを持っていて、最後のディスクリプタはチェーンの最初のディスクリプタへのポインタを持っている。ＤＭＡＣ２３３は、各ディスクリプタに順次したがって動作することにより、一連のデータ転送を実現することができる。送信ディスクリプタには、例えば、他のメモリへ転送すべき転送対象データが格納されている場所（メモリのアドレス）、データ長、および、転送が無事に完了したときに立てる転送完了フラグなどが含まれる。受信ディスクリプタには、例えば、他のメモリから転送されてきた転送対象データを格納する場所（メモリのアドレス）、および、転送が無事に完了したときに立てる転送完了フラグなどが含まれる。
【００５３】
ＰＣＩｅインタフェース１１５は、第１処理装置１１０が、ＰＣＩｅｂｕｓを介して、転送装置２３０とＰＣＩｅで接続するためのインタフェースである。
【００５４】
＜第２処理装置２１０＞
第２処理装置２１０は、不図示の不揮発性記憶装置に記憶された拡張ユニット２００の制御プログラムを拡張ユニットメモリ２２０に展開する。そして、第２処理装置２１０は、拡張ユニットメモリ２２０に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図１に示される通り、本実施形態に係る第２処理装置２１０は、割込制御部２１２、タスク実行部２１３（アプリケーション実行部）、デバイスドライバ２１４、および、ＰＣＩｅインタフェース２１５を備える。
【００５５】
割込制御部２１２は、ＰＣＩｅ経由で、特定のアドレスに対して値が書き込まれることにより、第２処理装置２１０に割り込みを発生させる。一例として、割込制御部２１２は、ＰＣＩｅ経由で割込発生部２３８よりＭＳＩが発行されることにより、第２処理装置２１０に割り込みを発生させ、データの転送が完了したことを第２処理装置２１０に認識させる。
【００５６】
タスク実行部２１３は、追加された新しい機能を、タスク制御部１１３が管理するタスクとして実行する。タスク実行部２１３は、典型的には、アプリケーションで実現される。タスク実行部２１３は、一例として、タスク制御部１１３とソケット通信するように構成されており、タスク制御部１１３が生成したデータをソケット通信にて受信し、当該データを所定のプログラムにしたがって処理することによりタスクを実行する。また、タスク実行部２１３は、処理結果としてのデータを、ソケット通信にて、タスク制御部１１３に返す。
【００５７】
例えば、メインユニット１００をＦＴＰサーバ、拡張ユニット２００をＦＴＰクライアントとしてＦＴＰを介したサーバクライアントシステムを構築する場合、タスク実行部２１３は、メインユニット１００に対して接続要求を行って、タスク制御部１１３との接続を確立し、ＦＴＰを介して、データのダウンロードまたはアップロードを行う。
【００５８】
デバイスドライバ２１４は、ディスクリプタを拡張ユニットメモリ２２０に書き込むことにより、拡張ユニット２００の第２処理装置２１０が、転送装置２３０を介して、メインユニット１００の第１処理装置１１０との間で、データを転送することを可能にする。例えば、デバイスドライバ２１４は、ソケットＡＰＩを介して、タスク実行部２１３からデータ転送の指示を受け付ける。デバイスドライバ２１４は、メインユニット１００との間でデータ転送を行うために必要なディスクリプタを拡張ユニットメモリ２２０に書き込む。
【００５９】
拡張ユニットメモリ２２０に書き込まれるディスクリプタのうち、送信ディスクリプタは、ＤＭＡＣ２３３が上り転送を実現するための動作の一部を規定する。これにより、第２処理装置２１０のタスク実行部２１３が、第１処理装置１１０のタスク制御部１１３へデータを送信することが可能となる。受信ディスクリプタは、ＤＭＡＣ２３３が下り転送を実現するための動作の一部を規定する。これにより、第２処理装置２１０のタスク実行部２１３が、第１処理装置１１０のタスク制御部１１３から送信されたデータを受信することが可能となる。
【００６０】
ＰＣＩｅインタフェース２１５は、第２処理装置２１０が、ＰＣＩｅｂｕｓを介して、転送装置２３０とＰＣＩｅで接続するためのインタフェースである。
【００６１】
＜転送装置２３０＞
転送装置２３０は、メインユニットメモリ１２０または拡張ユニットメモリ２２０に展開されたディスクリプタにしたがって、メインユニット１００と拡張ユニット２００との間のデータ転送を、第１処理装置１１０および第２処理装置２１０とは独立して直接制御する。そのための構成要素として、転送装置２３０は、第１ＰＣＩｅインタフェース２３１、第２ＰＣＩｅインタフェース２３２、ＤＭＡＣ２３３、下り受信ディスクリプタコントローラ２３４、下り送信ディスクリプタコントローラ２３５、上り受信ディスクリプタコントローラ２３６、上り送信ディスクリプタコントローラ２３７、および、割込発生部２３８を備える。
【００６２】
第１ＰＣＩｅインタフェース２３１は、転送装置２３０が、ＰＣＩｅｂｕｓを介して、第１処理装置１１０とＰＣＩｅで接続するためのインタフェースである。
【００６３】
第２ＰＣＩｅインタフェース２３２は、転送装置２３０が、ＰＣＩｅｂｕｓを介して、第２処理装置２１０とＰＣＩｅで接続するためのインタフェースである。
【００６４】
ＤＭＡＣ２３３は、メインユニットメモリ１２０または拡張ユニットメモリ２２０に展開されたディスクリプタを解釈し、その内容にしたがって、メインユニットメモリ１２０および拡張ユニットメモリ２２０について、データの読み出しおよび書き込みを直接行う。
【００６５】
下り受信ディスクリプタコントローラ２３４は、下り転送において、第１処理装置１１０から送信される転送対象データを、第２処理装置２１０に受信させるために必要な受信ディスクリプタを拡張ユニットメモリ２２０から直接取得する。例えば、下り受信ディスクリプタコントローラ２３４は、図示しない内部レジスタに設定されたポインタにしたがって、拡張ユニットメモリ２２０に書き込まれた受信ディスクリプタを順次フェッチし、ＤＭＡＣ２３３に渡す。
【００６６】
下り送信ディスクリプタコントローラ２３５は、下り転送において、第１処理装置１１０が、第２処理装置２１０宛てに転送対象データを送信するために必要な送信ディスクリプタをメインユニットメモリ１２０から直接取得する。例えば、下り送信ディスクリプタコントローラ２３５は、図示しない内部レジスタに設定されたポインタにしたがって、メインユニットメモリ１２０に書き込まれた送信ディスクリプタを順次フェッチし、ＤＭＡＣ２３３に渡す。
【００６７】
上り受信ディスクリプタコントローラ２３６は、上り転送において、第２処理装置２１０から送信される転送対象データを、第１処理装置１１０に受信させるために必要な受信ディスクリプタをメインユニットメモリ１２０から直接取得する。例えば、上り受信ディスクリプタコントローラ２３６は、図示しない内部レジスタに設定されたポインタにしたがって、メインユニットメモリ１２０に書き込まれた受信ディスクリプタを順次フェッチし、ＤＭＡＣ２３３に渡す。
【００６８】
上り送信ディスクリプタコントローラ２３７は、上り転送において、第２処理装置２１０が、第１処理装置１１０宛てに転送対象データを送信するために必要な送信ディスクリプタを拡張ユニットメモリ２２０から直接取得する。例えば、上り送信ディスクリプタコントローラ２３７は、図示しない内部レジスタに設定されたポインタにしたがって、拡張ユニットメモリ２２０に書き込まれた送信ディスクリプタを順次フェッチし、ＤＭＡＣ２３３に渡す。
【００６９】
割込発生部２３８は、第１処理装置１１０または第２処理装置２１０に割り込み（例えば、ＭＳＩ）を、ＰＣＩｅ経由で、第１処理装置１１０または第２処理装置２１０に発生させる。割込発生部２３８は、第１処理装置１１０に割り込みを発生させる第１割込発生部と、第２処理装置２１０に割り込みを発生させる第２割込発生部と含んで構成されてもよい。
【００７０】
§３  動作例
次に、図２および図３を用いて、メインユニット１００および拡張ユニット２００の動作例を説明する。
【００７１】
［下り転送時］
図２は、メインユニット１００から拡張ユニット２００への下り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【００７２】
ステップＳ１０１では、拡張ユニット２００において、第２処理装置２１０のタスク実行部２１３は、ソケットＡＰＩを介して、デバイスドライバ２１４に対し、メインユニット１００から送信される転送対象データの受信に備えるように指示をする。
【００７３】
ステップＳ１０２では、デバイスドライバ２１４は、上述の転送対象データを受信するために必要な受信ディスクリプタを拡張ユニットメモリ２２０に展開する。
【００７４】
ステップＳ１０３では、デバイスドライバ２１４は、拡張ユニットメモリ２２０における受信ディスクリプタの有効範囲を示す情報（例えば、アドレス情報、ポインタなど）を下り受信ディスクリプタコントローラ２３４に通知する。通知の方法は、特に限定されず、例えば、下り受信ディスクリプタコントローラ２３４の図示しないＴａｉｌレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、受信ディスクリプタ自体をデバイスドライバ２１４から下り受信ディスクリプタコントローラ２３４へ直接供給してもよい。
【００７５】
ステップＳ１０４では、下り受信ディスクリプタコントローラ２３４は、受信ディスクリプタを取得する。ＤＭＡＣ２３３は、下り受信ディスクリプタコントローラ２３４が取得した受信ディスクリプタを解釈し、メインユニット１００から送信される転送対象データの、拡張ユニットメモリ２２０における格納場所を指す、下り受信データアドレス（第２メモリアドレス、第４メモリアドレス）を特定する。具体的には、ＤＭＡＣ２３３は、下り受信ディスクリプタコントローラ２３４が取得した、転送対象データを格納すべき下り受信データアドレス、例えば、ＤＲ１〜ＤＲｎを指す受信ディスクリプタ（第２情報）に基づいて、転送対象データを格納するべき場所を特定する。
【００７６】
ステップＳ１０５では、メインユニット１００において、第１処理装置１１０のタスク制御部１１３は、拡張ユニット２００に送信する転送対象データを生成し、メインユニットメモリ１２０に格納する。
【００７７】
ステップＳ１０６では、タスク制御部１１３は、ソケットＡＰＩを介して、デバイスドライバ１１４に対し、格納した転送対象データを拡張ユニット２００に送信するように指示する。
【００７８】
ステップＳ１０７では、デバイスドライバ１１４は、転送対象データを拡張ユニット２００に送信するために必要な送信ディスクリプタをメインユニットメモリ１２０に展開する。
【００７９】
ステップＳ１０８では、デバイスドライバ１１４は、メインユニットメモリ１２０における送信ディスクリプタの有効範囲を示す情報（例えば、アドレス情報、ポインタなど）を下り送信ディスクリプタコントローラ２３５に通知する。通知の方法は、特に限定されず、例えば、下り送信ディスクリプタコントローラ２３５の図示しないＴａｉｌレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、送信ディスクリプタ自体をデバイスドライバ１１４から下り送信ディスクリプタコントローラ２３５へ直接供給してもよい。
【００８０】
ステップＳ１０９では、下り送信ディスクリプタコントローラ２３５は、送信ディスクリプタを取得する。ＤＭＡＣ２３３は、下り送信ディスクリプタコントローラ２３５が取得した送信ディスクリプタを解釈し、拡張ユニット２００へ送信される転送対象データの、メインユニットメモリ１２０における格納場所を指す、下り送信データアドレス（第１メモリアドレス、第３メモリアドレス）を特定する。具体的には、ＤＭＡＣ２３３は、下り送信ディスクリプタコントローラ２３５が取得した、送信すべき転送対象データが格納されている下り送信データアドレス、例えば、ＤＳ１〜ＤＳｎを指す送信ディスクリプタ（第１情報）に基づいて、送信すべき転送対象データが格納されている場所を特定する。ステップＳ１０９は、ステップＳ１０４よりも先に実行されてもよい。
【００８１】
ステップＳ１１０では、ＤＭＡＣ２３３は、メインユニットメモリ１２０における格納場所（ＤＳ１〜ＤＳｎ）から読み出した転送対象データを、拡張ユニットメモリ２２０における格納場所（ＤＲ１〜ＤＲｎ）に書き込んで、データ転送を行う。転送対象データのすべてについて読み出しおよび書き込みが完了すると（Ｓ１１１のＹＥＳ）、転送装置２３０は、ステップＳ１１２に進む。
【００８２】
ステップＳ１１２では、下り送信ディスクリプタコントローラ２３５は、データ転送が完了したことを意味する転送完了フラグを、メインユニットメモリ１２０上の送信ディスクリプタの有効範囲における所定の場所に立てる。
【００８３】
ステップＳ１１３では、割込発生部２３８は、第１処理装置１１０に対してデータ転送が完了したことを通知する。具体的には、割込発生部２３８は、ＰＣＩｅ経由で、所定のアドレスに、所定のデータを書き込むことによって、ＭＳＩを発行し、第１処理装置１１０に割り込みを発生させる。
【００８４】
ステップＳ１１４では、第１処理装置１１０の割込制御部１１２は、ＭＳＩが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第１処理装置１１０に認識させる。第１処理装置１１０は、必要に応じて、転送完了後に行うべき処理を実行してもよい。
【００８５】
ステップＳ１１５では、転送装置２３０の下り受信ディスクリプタコントローラ２３４は、転送完了フラグを、拡張ユニットメモリ２２０上の受信ディスクリプタの有効範囲における所定の場所に立てる。
【００８６】
ステップＳ１１６では、割込発生部２３８は、第２処理装置２１０に対してデータ転送が完了したことを通知する。具体的には、割込発生部２３８は、ＰＣＩｅ経由で、所定のアドレスに、所定のデータを書き込むことによって、ＭＳＩを発行し、第２処理装置２１０に割り込みを発生させる。
【００８７】
ステップＳ１１７では、拡張ユニット２００の割込制御部２１２は、ＭＳＩが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第２処理装置２１０に認識させる。第２処理装置２１０がデータの転送完了を認識すると、デバイスドライバ２１４は、ソケットＡＰＩを介して、タスク実行部２１３に、転送対象データの格納場所として、拡張ユニットメモリ２２０上の格納場所（例えば、ＤＲ１〜ＤＲｎ）を通知する。タスク実行部２１３は、拡張ユニットメモリ２２０の格納場所（ＤＲ１〜ＤＲｎ）から、転送対象データを読み出す。
【００８８】
ステップＳ１１８では、タスク実行部２１３は、拡張ユニットメモリ２２０から読み出した転送対象データに応じた処理を実行する。
【００８９】
［上り転送時］
図３は、拡張ユニット２００からメインユニット１００への上り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【００９０】
ステップＳ２０１では、メインユニット１００において、第１処理装置１１０のタスク制御部１１３は、ソケットＡＰＩを介して、デバイスドライバ１１４に対し、拡張ユニット２００から送信される転送対象データの受信に備えるように指示をする。
【００９１】
ステップＳ２０２では、デバイスドライバ１１４は、上述の転送対象データを受信するために必要な受信ディスクリプタをメインユニットメモリ１２０に展開する。
【００９２】
ステップＳ２０３では、デバイスドライバ１１４は、メインユニットメモリ１２０における受信ディスクリプタの有効範囲を示す情報（例えば、アドレス情報、ポインタなど）を上り受信ディスクリプタコントローラ２３６に通知する。通知の方法は、特に限定されず、例えば、上り受信ディスクリプタコントローラ２３６の図示しないＴａｉｌレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、受信ディスクリプタ自体をデバイスドライバ１１４から上り受信ディスクリプタコントローラ２３６へ直接供給してもよい。
【００９３】
ステップＳ２０４では、上り受信ディスクリプタコントローラ２３６は、受信ディスクリプタを取得する。ＤＭＡＣ２３３は、上り受信ディスクリプタコントローラ２３６が取得した受信ディスクリプタを解釈し、拡張ユニット２００から送信される転送対象データの、メインユニットメモリ１２０における格納場所を指す、上り受信データアドレス（第４メモリアドレス、第２メモリアドレス）を把握する。具体的には、ＤＭＡＣ２３３は、上り受信ディスクリプタコントローラ２３６が取得した、転送対象データを格納すべき上り受信データアドレス、例えば、ＵＲ１〜ＵＲｍを指す受信ディスクリプタ（第２情報）に基づいて、転送対象データを格納するべき場所を特定する。
【００９４】
ステップＳ２０５では、拡張ユニット２００において、第２処理装置２１０のタスク実行部２１３は、メインユニット１００に送信する転送対象データを生成し、拡張ユニットメモリ２２０に格納する。
【００９５】
ステップＳ２０６では、タスク実行部２１３は、ソケットＡＰＩを介して、デバイスドライバ２１４に対し、格納した転送対象データをメインユニット１００に送信するように指示する。
【００９６】
ステップＳ２０７では、デバイスドライバ２１４は、転送対象データをメインユニット１００に送信するために必要な送信ディスクリプタを拡張ユニットメモリ２２０に展開する。
【００９７】
ステップＳ２０８では、デバイスドライバ２１４は、拡張ユニットメモリ２２０における送信ディスクリプタの有効範囲を示す情報（例えば、アドレス情報、ポインタなど）を上り送信ディスクリプタコントローラ２３７に通知する。通知の方法は、特に限定されず、例えば、上り送信ディスクリプタコントローラ２３７の図示しないＴａｉｌレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、送信ディスクリプタ自体をデバイスドライバ２１４から上り送信ディスクリプタコントローラ２３７へ直接供給してもよい。
【００９８】
ステップＳ２０９では、上り送信ディスクリプタコントローラ２３７は、送信ディスクリプタを取得する。ＤＭＡＣ２３３は、上り送信ディスクリプタコントローラ２３７が取得した送信ディスクリプタを解釈し、メインユニット１００へ送信される転送対象データの、拡張ユニットメモリ２２０における格納場所を指す、上り送信データアドレス（第３メモリアドレス、第１メモリアドレス）を把握する。具体的には、ＤＭＡＣ２３３は、上り送信ディスクリプタコントローラ２３７が取得した、送信すべき転送対象データが格納されている上り送信データアドレス、例えば、ＵＳ１〜ＵＳｍを指す送信ディスクリプタ（第１情報）に基づいて、送信すべき転送対象データが格納されている場所を特定する。ステップＳ２０９は、ステップＳ２０４よりも先に実行されてもよい。
【００９９】
ステップＳ２１０では、ＤＭＡＣ２３３は、拡張ユニットメモリ２２０における格納場所（ＵＳ１〜ＵＳｍ）から読み出した転送対象データを、メインユニットメモリ１２０における格納場所（ＵＲ１〜ＵＲｍ）に書き込んで、データ転送を行う。転送対象データのすべてについて読み出しおよび書き込みが完了すると（Ｓ２１１のＹＥＳ）、転送装置２３０は、ステップＳ２１２に進む。
【０１００】
ステップＳ２１２では、上り送信ディスクリプタコントローラ２３７は、データ転送が完了したことを意味する転送完了フラグを、拡張ユニットメモリ２２０上の送信ディスクリプタの有効範囲における所定の場所に立てる。
【０１０１】
ステップＳ２１３では、割込発生部２３８は、第２処理装置２１０に対してデータ転送が完了したことを通知する。具体的には、割込発生部２３８は、ＰＣＩｅ経由で、所定のアドレスに、所定のデータを書き込むことによって、ＭＳＩを発行し、第２処理装置２１０に割り込みを発生させる。
【０１０２】
ステップＳ２１４では、第２処理装置２１０の割込制御部２１２は、ＭＳＩが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第２処理装置２１０に認識させる。第２処理装置２１０は、必要に応じて、転送完了後に行うべき処理を実行してもよい。
【０１０３】
ステップＳ２１５では、転送装置２３０の上り受信ディスクリプタコントローラ２３６は、転送完了フラグを、メインユニットメモリ１２０上の受信ディスクリプタの有効範囲における所定の場所に立てる。
【０１０４】
ステップＳ２１６では、割込発生部２３８は、第１処理装置１１０に対してデータ転送が完了したことを通知する。具体的には、割込発生部２３８は、ＰＣＩｅ経由で、所定のアドレスに、所定のデータを書き込むことによって、ＭＳＩを発行し、第１処理装置１１０に割り込みを発生させる。
【０１０５】
ステップＳ２１７では、メインユニット１００の割込制御部１１２は、ＭＳＩが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第１処理装置１１０に認識させる。第１処理装置１１０がデータの転送完了を認識すると、デバイスドライバ１１４は、ソケットＡＰＩを介して、タスク制御部１１３に、転送対象データの格納場所として、メインユニットメモリ１２０の格納場所（ＵＲ１〜ＵＲｍ）を通知する。タスク制御部１１３は、メインユニットメモリ１２０の格納場所（ＵＲ１〜ＵＲｍ）から、転送対象データを読み出す。
【０１０６】
ステップＳ２１８では、タスク制御部１１３は、メインユニットメモリ１２０から読み出した転送対象データに応じた処理を実行する。
【０１０７】
［作用・効果］
以上のように、本実施形態では、第１処理装置１１０と第２処理装置２１０とがＰＣＩｅで接続されている場合であっても、アプリケーションなどの上位層において、第１処理装置１１０と第２処理装置２１０とがソケット通信にてデータの送受信を行うことができる。
【０１０８】
現在、産業用機器の制御を行っているＰＬＣなどのメインユニット１００に、新しい機能（ルータ機能またはデータベース機能など）に係るアプリケーションを追加で搭載したいというニーズがある。アプリケーションの追加は、メインユニット１００の制御性能に影響が出ることを考慮して、メインユニット１００とは別ユニットの拡張ユニット２００に搭載することが望ましい。この場合、メインユニット１００と拡張ユニット２００との高速通信を実現するために、両ユニットは、ＰＣＩｅで接続されることが望ましい。
【０１０９】
しかしながら、将来的に、メインユニット１００のＣＰＵ性能が向上し、制御性能の影響を考慮する必要がなくなれば、ハイパーバイザーなどの仮想化技術を用いて、１台のメインユニット１００上で、追加のアプリケーションを動作させたいというニーズが生まれることが予想される。もしこの時に、追加のアプリケーションがＰＣＩｅによる接続を前提に開発されていた場合、改めて１台のメインユニット１００で実行されるように、アプリケーションを再開発しなければならないという問題が生じる。
【０１１０】
本開示の一態様においては、追加のアプリケーション（例えば、タスク制御部１１３およびタスク実行部２１３）では、ソケットで通信を行うこととし、そのソケットを、デバイスドライバ（デバイスドライバ１１４およびデバイスドライバ２１４）でディスクリプタに変換する。そして、転送装置２３０のＤＭＡＣ２３３により、ディスクリプタに応じたパケットを転送先に転送し、転送先のデバイスドライバでパケットを展開するようにした。より具体的には、転送装置２３０は、ＤＭＡＣ２３３に加えて、転送先の受信ディスクリプタを取得する受信ディスクリプタコントローラと、転送元の送信ディスクリプタを取得する送信ディスクリプタコントローラとを備える。これにより、各ユニットがＰＣＩｅで接続されていながら、上位層のアプリケーション同士は、ソケット通信することが可能となる。
【０１１１】
これにより、上位層、すなわち、追加のアプリケーション（例えば、タスク制御部１１３およびタスク実行部２１３）は、汎用性に鑑みて、Ｅｔｈｅｒｎｅｔで用いられているソケットで通信できるように予め開発しておくことができる。結果として、将来、追加の機能を１台のメインユニット１００で実施する形態が実現可能に場合に、アプリケーションの再開発を行わずとも、当該形態へ移行することができる。
【０１１２】
つまり、将来に亘って、アプリケーションのユーザーインタフェースが変更されない。これにより、例えば、アプリケーションの開発者は、開発しているアプリケーションが、拡張ユニット２００としてメインユニット１００とは別のユニットで実行されるか、ハイパーバイザーなどで仮想化された環境化で１台のメインユニット１００で実行されるかを意識することなく、同じコーディングによってアプリケーションの開発を進めることができる。
【０１１３】
また、現状、メインユニット１００と拡張ユニット２００とはＰＣＩｅで接続されているため、ソケット通信以外に、相互割り込みを発生させることが可能である。以上のように、本開示の一態様によれば、ユニット同士をＰＣＩｅで接続することが望まれるような製品において、特に、好適に用いられる。
【０１１４】
§４  変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【０１１５】
＜４．１＞
図４は、メインユニット１００と拡張ユニット２００との他の接続例を示す図である。図４に示すとおり、１台のメインユニット１００に対して、複数の他のアプリケーションをそれぞれ実行する複数の拡張ユニット２００を接続することができる。
【０１１６】
拡張ユニット２００、拡張ユニット２００ａ、拡張ユニット２００ｂ・・・のそれぞれは、上述した構成の転送装置２３０をそれぞれ有する。各拡張ユニット２００は、それぞれが備える転送装置２３０を介して、メインユニット１００との間でデータ転送を行うことができる。メインユニット１００の第１処理装置１１０の上位層では、Ｅｔｈｅｒｎｅｔによる接続が複数なされているように見え、一対多のＰＣＩｅによる接続を意識する必要がない。
【０１１７】
〔ソフトウェアによる実現例〕
転送装置２３０の制御ブロック（特に、第１ＰＣＩｅインタフェース２３１、第２ＰＣＩｅインタフェース２３２、ＤＭＡＣ２３３、下り受信ディスクリプタコントローラ２３４、下り送信ディスクリプタコントローラ２３５、上り受信ディスクリプタコントローラ２３６、上り送信ディスクリプタコントローラ２３７、および、割込発生部２３８）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【０１１８】
後者の場合、転送装置２３０は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば１つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばＣＰＵ（Central Processing Unit）を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ（Read Only Memory）等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するＲＡＭ（Random Access Memory）などをさらに備えていてもよい。また、上記プログラムは、当該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１１９】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０１２０】
１００…メインユニット、１１０…第１処理装置（第１デバイス、第２デバイス）、１１１…マシン制御部、１１２…割込制御部、１１３…タスク制御部、１１４…デバイスドライバ、１１５…ＰＣＩｅインタフェース、１２０…メインユニットメモリ（第１メモリ、第２メモリ）、２００…拡張ユニット（情報処理装置）、２１０…第２処理装置（第２デバイス、第１デバイス）、２１２…割込制御部、２１３…タスク実行部（アプリケーション実行部）、２１４…デバイスドライバ、２１５…ＰＣＩｅインタフェース、２２０…拡張ユニットメモリ（第２メモリ、第１メモリ）、２３０…転送装置、２３１…第１ＰＣＩｅインタフェース、２３２…第２ＰＣＩｅインタフェース、２３３…ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）、２３４…下り受信ディスクリプタコントローラ（受信ディスクリプタコントローラ）、２３５…下り送信ディスクリプタコントローラ（送信ディスクリプタコントローラ）、２３６…上り受信ディスクリプタコントローラ（受信ディスクリプタコントローラ）、２３７…上り送信ディスクリプタコントローラ（送信ディスクリプタコントローラ）、２３８…割込発生部、ＤＳ１〜ＤＳｎ  下り送信データアドレス（第１メモリアドレス、第３メモリアドレス）、ＤＲ１〜ＤＲｎ  下り受信データアドレス（第２メモリアドレス、第４メモリアドレス）、ＵＳ１〜ＵＳｍ  上り送信データアドレス（第３メモリアドレス、第１メモリアドレス）、ＵＲ１〜ＵＲｍ  上り受信データアドレス（第４メモリアドレス、第２メモリアドレス）
【図１】
2020190765.tif 000003
【図２】
2020190765.tif 000004
【図３】
2020190765.tif 000005
【図４】
2020190765.tif 000006