JP2020190765A - 転送装置、情報処理装置、および、データ転送方法 - Google Patents

転送装置、情報処理装置、および、データ転送方法 Download PDF

Info

Publication number
JP2020190765A
JP2020190765A JP2019094031A JP2019094031A JP2020190765A JP 2020190765 A JP2020190765 A JP 2020190765A JP 2019094031 A JP2019094031 A JP 2019094031A JP 2019094031 A JP2019094031 A JP 2019094031A JP 2020190765 A JP2020190765 A JP 2020190765A
Authority
JP
Japan
Prior art keywords
transfer
memory
data
processing device
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019094031A
Other languages
English (en)
Other versions
JP7326863B2 (ja
Inventor
好博 中谷
Yoshihiro Nakatani
好博 中谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2019094031A priority Critical patent/JP7326863B2/ja
Priority to EP20809808.7A priority patent/EP3971724A4/en
Priority to PCT/JP2020/008813 priority patent/WO2020235174A1/ja
Priority to CN202080029540.6A priority patent/CN113711195A/zh
Priority to US17/605,227 priority patent/US11625348B2/en
Publication of JP2020190765A publication Critical patent/JP2020190765A/ja
Priority to JP2023120263A priority patent/JP2023126702A/ja
Application granted granted Critical
Publication of JP7326863B2 publication Critical patent/JP7326863B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

【課題】ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にする。【解決手段】転送装置(230)は、第1処理装置(110または210)および第2処理装置(210または110)とPCIeで通信を行う転送装置(230)であって、第1処理装置の第1メモリ(120または220)から第2処理装置の第2メモリ(220または120)へのデータ転送を制御するDMAC(233)と、第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、第1処理装置から取得する第1の送信ディスクリプタコントローラ(235または237)と、第2メモリにおける転送対象データを格納すべき第2メモリアドレスに関する情報を、第2処理装置から取得する第1の受信ディスクリプタコントローラ(234または236)とを備える。【選択図】図1

Description

本発明は、転送装置、情報処理装置、および、データ転送方法に関する。
特許文献1には、プロセッサ22とデータ転送コントローラ30とを備えるコントローラモジュール20間を、PCIe(Peripheral Component Interconnect Express)で通信可能に接続することが提案されている。
特開2014−106940号公報(2014年6月9日公開)
PCIeによる通信では、伝送路がシリアル化されているため、デバイス間の高速な通信を実現することができる。そのため、例えば、産業用機械の制御を行っているメインユニットに、新しい機能を搭載する代わりに、当該新しい機能を別ユニット(以下、拡張ユニット)に持たせて、メインユニットと拡張ユニットとの接続をPCIeで実現することが考えられる。このように構成することで、新しい機能の搭載によってメインユニットの制御性能に悪影響が出るリスクを回避できる。
一方で、上述の新しい機能を実現するアプリケーションが、ユニット間のPCIeによる接続を前提に開発されると、将来メインユニットの処理性能が向上して、メインユニットで従来の機能と新しい機能との両立が可能となった場合に、当該アプリケーションの再開発が必要になってしまうという問題がある。
このため、新しい機能を実現するアプリケーションは、アプリケーションの再開発が必要とならないように、汎用性に鑑みてEthernet(登録商標)で用いられているソケット通信でデータの転送を行うことを前提に開発したいという要求が生まれる。
本発明の一態様は、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にする転送装置を実現することを目的とする。
本発明は、本開示の一例として、上述した課題を解決するために、以下の構成を採用する。
すなわち、本発明の一側面に係る転送装置は、第1デバイスおよび第2デバイスとPCIeで通信を行う転送装置であって、前記第1デバイスの第1メモリから前記第2デバイスの第2メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、前記第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、前記第1デバイスから取得する第1の送信ディスクリプタコントローラと、前記第2メモリにおける前記転送対象データを格納すべき第2メモリアドレスに関する情報を、前記第2デバイスから取得する第1の受信ディスクリプタコントローラとを備える。
前記構成によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
前記一側面に係る転送装置において、前記転送対象データの転送が完了すると、前記第1デバイスまたは前記第2デバイスに対して割り込みを発生させ、転送完了を通知する割込発生部を備えてもよい。これにより、第1デバイスまたは第2デバイスに対して、適時にデータ転送の完了を認識させることができる。
前記一側面に係る転送装置において、前記第2メモリにおける転送対象データが格納されている第3メモリアドレスに関する情報を、前記第2デバイスから取得する第2の送信ディスクリプタコントローラと、前記第1メモリにおける前記転送対象データを格納すべき第4メモリアドレスに関する情報を、前記第1デバイスから取得する第2の受信ディスクリプタコントローラとを備え、前記ダイレクトメモリアクセスコントローラは、前記第2デバイスの前記第2メモリから、前記第1デバイスの前記第1メモリへのデータ転送を制御してもよい。これにより、第1メモリから第2メモリへのデータ転送に加えて、第2メモリから第1メモリへのデータ転送が、ソケット通信にて可能となる。
本発明の一側面に係る情報処理装置は、上述のいずれかの転送装置と、前記第2デバイスと、前記第2メモリとを備える情報処理装置であって、前記第2デバイスは、前記転送対象データを処理するアプリケーション実行部と、前記アプリケーション実行部からソケットAPIを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第2メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する。
前記構成によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
前記一側面に係る情報処理装置において、前記第2デバイスの前記デバイスドライバは、前記送信ディスクリプタを前記第2メモリに格納し、前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記第2メモリから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定してもよい。これにより、ダイレクトメモリアクセスコントローラは、転送すべき転送対象データを第2メモリから正しく読み出すことができる。
前記一側面に係る情報処理装置において、前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記デバイスドライバから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定してもよい。これにより、ダイレクトメモリアクセスコントローラは、転送すべき転送対象データを第2メモリから正しく読み出すことができる。
本発明の一側面に係るデータ転送方法は、データの転送元である第1デバイスおよび当該データの転送先である第2デバイスとPCIeで通信を行う転送装置が実行するデータ転送方法であって、前記転送装置の送信ディスクリプタコントローラが、前記第1デバイスの第1メモリにおける、転送対象データが格納されている第1メモリアドレスに関する第1情報を、前記第1デバイスから取得するステップと、前記転送装置の受信ディスクリプタコントローラが、前記第2デバイスの第2メモリにおける、前記転送対象データを格納すべき第2メモリアドレスに関する第2情報を、前記第2デバイスから取得するステップと、前記転送装置のダイレクトメモリアクセスコントローラが、前記第1メモリから前記第2メモリへのデータを転送するステップとを含む。なお、第2情報を取得するステップは、第1情報を取得するステップに先行して実行されてもよい。
前記方法によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
本発明の一態様によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
本実施形態に係る第1処理装置、第2処理装置および転送装置の機能構成の一例を模式的に例示する図である。 下り転送の処理手順の一例を例示するフローチャートである。 上り転送の処理手順の一例を例示するフローチャートである。 メインユニットと拡張ユニットとの他の接続例を示す図である。
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。
〔実施形態1〕
§1 適用例
図1は、本実施形態に係る転送装置230の適用場面の一例を模式的に例示する図である。転送装置230は、一例として、メインユニット100のプロセッサである第1処理装置110と、メインユニット100の新しい機能を外付けした拡張ユニット200(情報処理装置)のプロセッサである第2処理装置210との間のデータ転送を実現するものとして、拡張ユニット200に設けられる。
転送装置230は、第1処理装置110(第1デバイスまたは第2デバイス)および第2処理装置210(第2デバイスまたは第1デバイス)のそれぞれとPCIeで通信を行うべく、PCIeの規格に準拠したbusで、それぞれ接続されている。転送装置230は、典型的には、FPGA(Field-Programmable gate array)等のハードウェアで構成される。
メインユニット100は、一例として、産業用機器の制御を行うものであり、典型的には、PLC(Programmable Logic Controller)である。メインユニット100のプロセッサである第1処理装置110は、例えば、CPU(Central Processing Unit)である。
拡張ユニット200が担う新しい機能は、特に限定されないが、例えば、データの統計機能、ルータ機能またはデータベース機能などが想定されている。拡張ユニット200のプロセッサである第2処理装置210は、典型的には、MPU(Micro Processing Unit)等のハードウェアで構成される。
以下では、便宜上、メインユニット100の第1処理装置110から拡張ユニット200の第2処理装置210へデータを転送することを、下り転送と称し、第2処理装置210から第1処理装置110へデータを転送することを上り転送と称する。
転送装置230は、下り転送を実現するために、少なくとも、DMAC(Direct Memory Access Controller)233と、下り送信ディスクリプタコントローラ235と、下り受信ディスクリプタコントローラ234とを備える構成である。
DMAC233(ダイレクトメモリアクセスコントローラ)は、第1処理装置110(第1デバイス)のメインユニットメモリ120から第2処理装置210(第2デバイス)の拡張ユニットメモリ220へのデータ転送を制御する。
下り送信ディスクリプタコントローラ235(送信ディスクリプタコントローラ)は、メインユニットメモリ120における送信データ(転送対象データ)が格納されている第1メモリアドレス(例えば、下り送信データアドレスDS1〜DSn)に関する情報、一例として、送信ディスクリプタを、第1処理装置110から取得する。
下り受信ディスクリプタコントローラ234(受信ディスクリプタコントローラ)は、拡張ユニットメモリ220における受信データ(転送対象データ)を格納すべき第2メモリアドレス(例えば、下り受信データアドレスDR1〜DRn)に関する情報、一例として、受信ディスクリプタを、第2処理装置210から取得する。
転送装置230は、上り転送を実現するために、さらに、上り送信ディスクリプタコントローラ237と、上り受信ディスクリプタコントローラ236とを備えてもよい。
上り送信ディスクリプタコントローラ237(送信ディスクリプタコントローラ)は、拡張ユニットメモリ220における送信データ(転送対象データ)が格納されている第3メモリアドレス(例えば、上り送信データアドレスUS1〜USm)に関する情報、一例として、送信ディスクリプタを、第2処理装置210から取得する。
上り受信ディスクリプタコントローラ236(受信ディスクリプタコントローラ)は、メインユニットメモリ120における受信データ(転送対象データ)を格納すべき第4メモリアドレス(例えば、上り受信データアドレスUR1〜URm)に関する情報、一例として、受信ディスクリプタを、第1処理装置110から取得する。
これにより、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を実現することができる。具体的には、新しい機能に係るアプリケーションを、PCIeによる接続を前提に開発せずに、最初からソケット通信でのデータ転送を前提としてアプリケーションを開発しておくことができる。これにより、将来、メインユニット100において、従来の産業用機器の制御と新しい機能の実行との両立が可能となり、当該アプリケーションにおいてソケット通信を利用する必要が出てきた場合に、当該アプリケーションを再開発する必要がなくなるという顕著な効果を奏する。
§2 構成例
[ハードウェア構成]
図1は、本実施形態に係るメインユニット100および拡張ユニット200のハードウェア構成の一例を模式的に例示する図である。
<メインユニット100>
図1の例では、メインユニット100は、第1処理装置110、および、メインユニットメモリ120(第1メモリ、第2メモリ)を備える。メインユニット100は、他にも、入力装置、出力装置、および、ROM(Read Only Memory)等の不揮発性の記憶装置などを備えていてもよい。
第1処理装置110は、メインユニット100を統括的に制御するものである。第1処理装置110は、例えば、CPUであり、産業用の機械および設備などの制御対象のマシンを制御したり、拡張ユニット200を制御して追加された新しい機能に係る処理をタスクとして管理したりする。
メインユニットメモリ120は、揮発性の記憶領域(RAM;Random Access Memory)である。メインユニットメモリ120は、第1処理装置110によって生成された送信データ、第1処理装置110が処理すべき、第2処理装置210によって生成された受信データ、および、第1処理装置110で実行されるべき各種プログラムを格納する。また、メインユニットメモリ120は、第1処理装置110による各種プログラムの実行時の作業用メモリとして使用されてもよい。メインユニットメモリ120としては、典型的には、DRAM(Dynamic Random Access Memory)等を用いることができる。
<拡張ユニット200>
図1の例では、拡張ユニット200は、第2処理装置210、拡張ユニットメモリ220(第2メモリ、第1メモリ)、および、転送装置230を備える。
第2処理装置210は、拡張ユニット200を統括的に制御するものである。第2処理装置210は、例えば、MPUであり、第1処理装置110が生成したデータに基づいて、追加された新しい機能に係る処理をタスクとして実行する。
拡張ユニットメモリ220は、揮発性の記憶領域(RAM)である。拡張ユニットメモリ220は、第2処理装置210によって生成された送信データ、第2処理装置210が処理すべき、第1処理装置110によって生成された受信データ、および、第2処理装置210で実行されるべき各種プログラムを格納する。また、拡張ユニットメモリ220は、第2処理装置210による各種プログラムの実行時の作業用メモリとして使用されてもよい。拡張ユニットメモリ220としては、典型的には、DRAM等を用いることができる。
転送装置230は、第1処理装置110および第2処理装置210とPCIeで通信を行うものであり、第1処理装置110と第2処理装置210との間の下り転送、および、必要に応じて上り転送を制御する。上述のとおり、転送装置230は、典型的には、FPGAである。
[機能構成]
図1は、本実施形態に係る第1処理装置110、第2処理装置210および転送装置230の機能構成の一例を模式的に例示する図である。
<第1処理装置110>
第1処理装置110は、不図示の不揮発性記憶装置に記憶されたメインユニット100の制御プログラムをメインユニットメモリ120に展開する。そして、第1処理装置110は、メインユニットメモリ120に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図1に示される通り、本実施形態に係る第1処理装置110は、マシン制御部111、割込制御部112、タスク制御部113、デバイスドライバ114、および、PCIeインタフェース115を備える。
マシン制御部111は、メインユニット100に接続される産業用機器を制御するものである。産業用機器は、例えば、製造工程に配置されている製造装置、製造装置またはワークの状態をセンシングするセンシングデバイスなどが想定されている。これらの産業用機器をマシン制御部111が制御することにより、FA(Factory Automation)が実現される。
また、マシン制御部111は、各産業用機器と定周期で通信し、各産業用機器から、
下流の工程で処理されるデータを取得する。例えば、取得されたデータは、拡張ユニット200によって処理されてもよい。
割込制御部112は、PCIe経由で、特定のアドレスに対して値が書き込まれることにより、第1処理装置110に割り込みを発生させる。このように特定のアドレスに対して値を書き込むことで割り込みとする手法をMSI(Message Signal Interrupt)と呼び、割り込みのために特定のアドレスに対して値を書き込むことを、MSIを発行すると呼ぶ。一例として、割込制御部112は、PCIe経由で割込発生部238よりMSIが発行されることにより、第1処理装置110に割り込みを発生させ、データの転送が完了したことを第1処理装置110に認識させる。
タスク制御部113は、メインユニット100が管轄するFAシステムにおいて蓄積されたデータに対し、実施すべき処理をタスクとして管理する。また、タスク制御部113は、当該タスクを、タスク実行者である周辺の拡張ユニット200に割り当てる。具体的には、タスク制御部113は、どのデータを、どの拡張ユニット200に転送するのかを制御する。
例えば、メインユニット100をFTPサーバ、拡張ユニット200をFTPクライアントとしてFTP(File Transfer Protocol)を介したサーバクライアントシステムを構築してもよい。この場合、タスク制御部113は、拡張ユニット200のタスク実行部213からの接続要求に応答して、タスク実行部213との接続を確立し、タスクの実行に必要なデータをタスク実行部213に転送したり、タスク実行部213が処理済みのデータを受け付けたりする。
デバイスドライバ114は、ディスクリプタをメインユニットメモリ120に書き込むことにより、メインユニット100の第1処理装置110が、転送装置230を介して、拡張ユニット200の第2処理装置210との間で、データを転送することを可能にする。例えば、デバイスドライバ114は、ソケットAPI(Application Program Interface)を介して、タスク制御部113からデータ転送の指示を受け付ける。デバイスドライバ114は、拡張ユニット200との間でデータ転送を行うために必要なディスクリプタをメインユニットメモリ120に書き込む。
メインユニットメモリ120に書き込まれるディスクリプタのうち、送信ディスクリプタは、DMAC233が下り転送を実現するための動作の一部を規定する。これにより、第1処理装置110のタスク制御部113が、第2処理装置210のタスク実行部213へデータを送信することが可能となる。受信ディスクリプタは、DMAC233が上り転送を実現するための動作の一部を規定する。これにより、第1処理装置110のタスク制御部113が、第2処理装置210のタスク実行部213から送信されたデータを受信することが可能となる。
より具体的には、ディスクリプタは、DMAC233がDMA(ダイレクトメモリアクセス)操作を行うためのDMA命令のリストを構成する。一例として、DMA命令のリストは、ディスクリプタのチェーンで構成されている。各ディスクリプタは、処理すべき次のディスクリプタへのポインタを持っていて、最後のディスクリプタはチェーンの最初のディスクリプタへのポインタを持っている。DMAC233は、各ディスクリプタに順次したがって動作することにより、一連のデータ転送を実現することができる。送信ディスクリプタには、例えば、他のメモリへ転送すべき転送対象データが格納されている場所(メモリのアドレス)、データ長、および、転送が無事に完了したときに立てる転送完了フラグなどが含まれる。受信ディスクリプタには、例えば、他のメモリから転送されてきた転送対象データを格納する場所(メモリのアドレス)、および、転送が無事に完了したときに立てる転送完了フラグなどが含まれる。
PCIeインタフェース115は、第1処理装置110が、PCIebusを介して、転送装置230とPCIeで接続するためのインタフェースである。
<第2処理装置210>
第2処理装置210は、不図示の不揮発性記憶装置に記憶された拡張ユニット200の制御プログラムを拡張ユニットメモリ220に展開する。そして、第2処理装置210は、拡張ユニットメモリ220に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図1に示される通り、本実施形態に係る第2処理装置210は、割込制御部212、タスク実行部213(アプリケーション実行部)、デバイスドライバ214、および、PCIeインタフェース215を備える。
割込制御部212は、PCIe経由で、特定のアドレスに対して値が書き込まれることにより、第2処理装置210に割り込みを発生させる。一例として、割込制御部212は、PCIe経由で割込発生部238よりMSIが発行されることにより、第2処理装置210に割り込みを発生させ、データの転送が完了したことを第2処理装置210に認識させる。
タスク実行部213は、追加された新しい機能を、タスク制御部113が管理するタスクとして実行する。タスク実行部213は、典型的には、アプリケーションで実現される。タスク実行部213は、一例として、タスク制御部113とソケット通信するように構成されており、タスク制御部113が生成したデータをソケット通信にて受信し、当該データを所定のプログラムにしたがって処理することによりタスクを実行する。また、タスク実行部213は、処理結果としてのデータを、ソケット通信にて、タスク制御部113に返す。
例えば、メインユニット100をFTPサーバ、拡張ユニット200をFTPクライアントとしてFTPを介したサーバクライアントシステムを構築する場合、タスク実行部213は、メインユニット100に対して接続要求を行って、タスク制御部113との接続を確立し、FTPを介して、データのダウンロードまたはアップロードを行う。
デバイスドライバ214は、ディスクリプタを拡張ユニットメモリ220に書き込むことにより、拡張ユニット200の第2処理装置210が、転送装置230を介して、メインユニット100の第1処理装置110との間で、データを転送することを可能にする。例えば、デバイスドライバ214は、ソケットAPIを介して、タスク実行部213からデータ転送の指示を受け付ける。デバイスドライバ214は、メインユニット100との間でデータ転送を行うために必要なディスクリプタを拡張ユニットメモリ220に書き込む。
拡張ユニットメモリ220に書き込まれるディスクリプタのうち、送信ディスクリプタは、DMAC233が上り転送を実現するための動作の一部を規定する。これにより、第2処理装置210のタスク実行部213が、第1処理装置110のタスク制御部113へデータを送信することが可能となる。受信ディスクリプタは、DMAC233が下り転送を実現するための動作の一部を規定する。これにより、第2処理装置210のタスク実行部213が、第1処理装置110のタスク制御部113から送信されたデータを受信することが可能となる。
PCIeインタフェース215は、第2処理装置210が、PCIebusを介して、転送装置230とPCIeで接続するためのインタフェースである。
<転送装置230>
転送装置230は、メインユニットメモリ120または拡張ユニットメモリ220に展開されたディスクリプタにしたがって、メインユニット100と拡張ユニット200との間のデータ転送を、第1処理装置110および第2処理装置210とは独立して直接制御する。そのための構成要素として、転送装置230は、第1PCIeインタフェース231、第2PCIeインタフェース232、DMAC233、下り受信ディスクリプタコントローラ234、下り送信ディスクリプタコントローラ235、上り受信ディスクリプタコントローラ236、上り送信ディスクリプタコントローラ237、および、割込発生部238を備える。
第1PCIeインタフェース231は、転送装置230が、PCIebusを介して、第1処理装置110とPCIeで接続するためのインタフェースである。
第2PCIeインタフェース232は、転送装置230が、PCIebusを介して、第2処理装置210とPCIeで接続するためのインタフェースである。
DMAC233は、メインユニットメモリ120または拡張ユニットメモリ220に展開されたディスクリプタを解釈し、その内容にしたがって、メインユニットメモリ120および拡張ユニットメモリ220について、データの読み出しおよび書き込みを直接行う。
下り受信ディスクリプタコントローラ234は、下り転送において、第1処理装置110から送信される転送対象データを、第2処理装置210に受信させるために必要な受信ディスクリプタを拡張ユニットメモリ220から直接取得する。例えば、下り受信ディスクリプタコントローラ234は、図示しない内部レジスタに設定されたポインタにしたがって、拡張ユニットメモリ220に書き込まれた受信ディスクリプタを順次フェッチし、DMAC233に渡す。
下り送信ディスクリプタコントローラ235は、下り転送において、第1処理装置110が、第2処理装置210宛てに転送対象データを送信するために必要な送信ディスクリプタをメインユニットメモリ120から直接取得する。例えば、下り送信ディスクリプタコントローラ235は、図示しない内部レジスタに設定されたポインタにしたがって、メインユニットメモリ120に書き込まれた送信ディスクリプタを順次フェッチし、DMAC233に渡す。
上り受信ディスクリプタコントローラ236は、上り転送において、第2処理装置210から送信される転送対象データを、第1処理装置110に受信させるために必要な受信ディスクリプタをメインユニットメモリ120から直接取得する。例えば、上り受信ディスクリプタコントローラ236は、図示しない内部レジスタに設定されたポインタにしたがって、メインユニットメモリ120に書き込まれた受信ディスクリプタを順次フェッチし、DMAC233に渡す。
上り送信ディスクリプタコントローラ237は、上り転送において、第2処理装置210が、第1処理装置110宛てに転送対象データを送信するために必要な送信ディスクリプタを拡張ユニットメモリ220から直接取得する。例えば、上り送信ディスクリプタコントローラ237は、図示しない内部レジスタに設定されたポインタにしたがって、拡張ユニットメモリ220に書き込まれた送信ディスクリプタを順次フェッチし、DMAC233に渡す。
割込発生部238は、第1処理装置110または第2処理装置210に割り込み(例えば、MSI)を、PCIe経由で、第1処理装置110または第2処理装置210に発生させる。割込発生部238は、第1処理装置110に割り込みを発生させる第1割込発生部と、第2処理装置210に割り込みを発生させる第2割込発生部と含んで構成されてもよい。
§3 動作例
次に、図2および図3を用いて、メインユニット100および拡張ユニット200の動作例を説明する。
[下り転送時]
図2は、メインユニット100から拡張ユニット200への下り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
ステップS101では、拡張ユニット200において、第2処理装置210のタスク実行部213は、ソケットAPIを介して、デバイスドライバ214に対し、メインユニット100から送信される転送対象データの受信に備えるように指示をする。
ステップS102では、デバイスドライバ214は、上述の転送対象データを受信するために必要な受信ディスクリプタを拡張ユニットメモリ220に展開する。
ステップS103では、デバイスドライバ214は、拡張ユニットメモリ220における受信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を下り受信ディスクリプタコントローラ234に通知する。通知の方法は、特に限定されず、例えば、下り受信ディスクリプタコントローラ234の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、受信ディスクリプタ自体をデバイスドライバ214から下り受信ディスクリプタコントローラ234へ直接供給してもよい。
ステップS104では、下り受信ディスクリプタコントローラ234は、受信ディスクリプタを取得する。DMAC233は、下り受信ディスクリプタコントローラ234が取得した受信ディスクリプタを解釈し、メインユニット100から送信される転送対象データの、拡張ユニットメモリ220における格納場所を指す、下り受信データアドレス(第2メモリアドレス、第4メモリアドレス)を特定する。具体的には、DMAC233は、下り受信ディスクリプタコントローラ234が取得した、転送対象データを格納すべき下り受信データアドレス、例えば、DR1〜DRnを指す受信ディスクリプタ(第2情報)に基づいて、転送対象データを格納するべき場所を特定する。
ステップS105では、メインユニット100において、第1処理装置110のタスク制御部113は、拡張ユニット200に送信する転送対象データを生成し、メインユニットメモリ120に格納する。
ステップS106では、タスク制御部113は、ソケットAPIを介して、デバイスドライバ114に対し、格納した転送対象データを拡張ユニット200に送信するように指示する。
ステップS107では、デバイスドライバ114は、転送対象データを拡張ユニット200に送信するために必要な送信ディスクリプタをメインユニットメモリ120に展開する。
ステップS108では、デバイスドライバ114は、メインユニットメモリ120における送信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を下り送信ディスクリプタコントローラ235に通知する。通知の方法は、特に限定されず、例えば、下り送信ディスクリプタコントローラ235の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、送信ディスクリプタ自体をデバイスドライバ114から下り送信ディスクリプタコントローラ235へ直接供給してもよい。
ステップS109では、下り送信ディスクリプタコントローラ235は、送信ディスクリプタを取得する。DMAC233は、下り送信ディスクリプタコントローラ235が取得した送信ディスクリプタを解釈し、拡張ユニット200へ送信される転送対象データの、メインユニットメモリ120における格納場所を指す、下り送信データアドレス(第1メモリアドレス、第3メモリアドレス)を特定する。具体的には、DMAC233は、下り送信ディスクリプタコントローラ235が取得した、送信すべき転送対象データが格納されている下り送信データアドレス、例えば、DS1〜DSnを指す送信ディスクリプタ(第1情報)に基づいて、送信すべき転送対象データが格納されている場所を特定する。ステップS109は、ステップS104よりも先に実行されてもよい。
ステップS110では、DMAC233は、メインユニットメモリ120における格納場所(DS1〜DSn)から読み出した転送対象データを、拡張ユニットメモリ220における格納場所(DR1〜DRn)に書き込んで、データ転送を行う。転送対象データのすべてについて読み出しおよび書き込みが完了すると(S111のYES)、転送装置230は、ステップS112に進む。
ステップS112では、下り送信ディスクリプタコントローラ235は、データ転送が完了したことを意味する転送完了フラグを、メインユニットメモリ120上の送信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS113では、割込発生部238は、第1処理装置110に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第1処理装置110に割り込みを発生させる。
ステップS114では、第1処理装置110の割込制御部112は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第1処理装置110に認識させる。第1処理装置110は、必要に応じて、転送完了後に行うべき処理を実行してもよい。
ステップS115では、転送装置230の下り受信ディスクリプタコントローラ234は、転送完了フラグを、拡張ユニットメモリ220上の受信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS116では、割込発生部238は、第2処理装置210に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第2処理装置210に割り込みを発生させる。
ステップS117では、拡張ユニット200の割込制御部212は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第2処理装置210に認識させる。第2処理装置210がデータの転送完了を認識すると、デバイスドライバ214は、ソケットAPIを介して、タスク実行部213に、転送対象データの格納場所として、拡張ユニットメモリ220上の格納場所(例えば、DR1〜DRn)を通知する。タスク実行部213は、拡張ユニットメモリ220の格納場所(DR1〜DRn)から、転送対象データを読み出す。
ステップS118では、タスク実行部213は、拡張ユニットメモリ220から読み出した転送対象データに応じた処理を実行する。
[上り転送時]
図3は、拡張ユニット200からメインユニット100への上り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
ステップS201では、メインユニット100において、第1処理装置110のタスク制御部113は、ソケットAPIを介して、デバイスドライバ114に対し、拡張ユニット200から送信される転送対象データの受信に備えるように指示をする。
ステップS202では、デバイスドライバ114は、上述の転送対象データを受信するために必要な受信ディスクリプタをメインユニットメモリ120に展開する。
ステップS203では、デバイスドライバ114は、メインユニットメモリ120における受信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を上り受信ディスクリプタコントローラ236に通知する。通知の方法は、特に限定されず、例えば、上り受信ディスクリプタコントローラ236の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、受信ディスクリプタ自体をデバイスドライバ114から上り受信ディスクリプタコントローラ236へ直接供給してもよい。
ステップS204では、上り受信ディスクリプタコントローラ236は、受信ディスクリプタを取得する。DMAC233は、上り受信ディスクリプタコントローラ236が取得した受信ディスクリプタを解釈し、拡張ユニット200から送信される転送対象データの、メインユニットメモリ120における格納場所を指す、上り受信データアドレス(第4メモリアドレス、第2メモリアドレス)を把握する。具体的には、DMAC233は、上り受信ディスクリプタコントローラ236が取得した、転送対象データを格納すべき上り受信データアドレス、例えば、UR1〜URmを指す受信ディスクリプタ(第2情報)に基づいて、転送対象データを格納するべき場所を特定する。
ステップS205では、拡張ユニット200において、第2処理装置210のタスク実行部213は、メインユニット100に送信する転送対象データを生成し、拡張ユニットメモリ220に格納する。
ステップS206では、タスク実行部213は、ソケットAPIを介して、デバイスドライバ214に対し、格納した転送対象データをメインユニット100に送信するように指示する。
ステップS207では、デバイスドライバ214は、転送対象データをメインユニット100に送信するために必要な送信ディスクリプタを拡張ユニットメモリ220に展開する。
ステップS208では、デバイスドライバ214は、拡張ユニットメモリ220における送信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を上り送信ディスクリプタコントローラ237に通知する。通知の方法は、特に限定されず、例えば、上り送信ディスクリプタコントローラ237の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、送信ディスクリプタ自体をデバイスドライバ214から上り送信ディスクリプタコントローラ237へ直接供給してもよい。
ステップS209では、上り送信ディスクリプタコントローラ237は、送信ディスクリプタを取得する。DMAC233は、上り送信ディスクリプタコントローラ237が取得した送信ディスクリプタを解釈し、メインユニット100へ送信される転送対象データの、拡張ユニットメモリ220における格納場所を指す、上り送信データアドレス(第3メモリアドレス、第1メモリアドレス)を把握する。具体的には、DMAC233は、上り送信ディスクリプタコントローラ237が取得した、送信すべき転送対象データが格納されている上り送信データアドレス、例えば、US1〜USmを指す送信ディスクリプタ(第1情報)に基づいて、送信すべき転送対象データが格納されている場所を特定する。ステップS209は、ステップS204よりも先に実行されてもよい。
ステップS210では、DMAC233は、拡張ユニットメモリ220における格納場所(US1〜USm)から読み出した転送対象データを、メインユニットメモリ120における格納場所(UR1〜URm)に書き込んで、データ転送を行う。転送対象データのすべてについて読み出しおよび書き込みが完了すると(S211のYES)、転送装置230は、ステップS212に進む。
ステップS212では、上り送信ディスクリプタコントローラ237は、データ転送が完了したことを意味する転送完了フラグを、拡張ユニットメモリ220上の送信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS213では、割込発生部238は、第2処理装置210に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第2処理装置210に割り込みを発生させる。
ステップS214では、第2処理装置210の割込制御部212は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第2処理装置210に認識させる。第2処理装置210は、必要に応じて、転送完了後に行うべき処理を実行してもよい。
ステップS215では、転送装置230の上り受信ディスクリプタコントローラ236は、転送完了フラグを、メインユニットメモリ120上の受信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS216では、割込発生部238は、第1処理装置110に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第1処理装置110に割り込みを発生させる。
ステップS217では、メインユニット100の割込制御部112は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第1処理装置110に認識させる。第1処理装置110がデータの転送完了を認識すると、デバイスドライバ114は、ソケットAPIを介して、タスク制御部113に、転送対象データの格納場所として、メインユニットメモリ120の格納場所(UR1〜URm)を通知する。タスク制御部113は、メインユニットメモリ120の格納場所(UR1〜URm)から、転送対象データを読み出す。
ステップS218では、タスク制御部113は、メインユニットメモリ120から読み出した転送対象データに応じた処理を実行する。
[作用・効果]
以上のように、本実施形態では、第1処理装置110と第2処理装置210とがPCIeで接続されている場合であっても、アプリケーションなどの上位層において、第1処理装置110と第2処理装置210とがソケット通信にてデータの送受信を行うことができる。
現在、産業用機器の制御を行っているPLCなどのメインユニット100に、新しい機能(ルータ機能またはデータベース機能など)に係るアプリケーションを追加で搭載したいというニーズがある。アプリケーションの追加は、メインユニット100の制御性能に影響が出ることを考慮して、メインユニット100とは別ユニットの拡張ユニット200に搭載することが望ましい。この場合、メインユニット100と拡張ユニット200との高速通信を実現するために、両ユニットは、PCIeで接続されることが望ましい。
しかしながら、将来的に、メインユニット100のCPU性能が向上し、制御性能の影響を考慮する必要がなくなれば、ハイパーバイザーなどの仮想化技術を用いて、1台のメインユニット100上で、追加のアプリケーションを動作させたいというニーズが生まれることが予想される。もしこの時に、追加のアプリケーションがPCIeによる接続を前提に開発されていた場合、改めて1台のメインユニット100で実行されるように、アプリケーションを再開発しなければならないという問題が生じる。
本開示の一態様においては、追加のアプリケーション(例えば、タスク制御部113およびタスク実行部213)では、ソケットで通信を行うこととし、そのソケットを、デバイスドライバ(デバイスドライバ114およびデバイスドライバ214)でディスクリプタに変換する。そして、転送装置230のDMAC233により、ディスクリプタに応じたパケットを転送先に転送し、転送先のデバイスドライバでパケットを展開するようにした。より具体的には、転送装置230は、DMAC233に加えて、転送先の受信ディスクリプタを取得する受信ディスクリプタコントローラと、転送元の送信ディスクリプタを取得する送信ディスクリプタコントローラとを備える。これにより、各ユニットがPCIeで接続されていながら、上位層のアプリケーション同士は、ソケット通信することが可能となる。
これにより、上位層、すなわち、追加のアプリケーション(例えば、タスク制御部113およびタスク実行部213)は、汎用性に鑑みて、Ethernetで用いられているソケットで通信できるように予め開発しておくことができる。結果として、将来、追加の機能を1台のメインユニット100で実施する形態が実現可能に場合に、アプリケーションの再開発を行わずとも、当該形態へ移行することができる。
つまり、将来に亘って、アプリケーションのユーザーインタフェースが変更されない。これにより、例えば、アプリケーションの開発者は、開発しているアプリケーションが、拡張ユニット200としてメインユニット100とは別のユニットで実行されるか、ハイパーバイザーなどで仮想化された環境化で1台のメインユニット100で実行されるかを意識することなく、同じコーディングによってアプリケーションの開発を進めることができる。
また、現状、メインユニット100と拡張ユニット200とはPCIeで接続されているため、ソケット通信以外に、相互割り込みを発生させることが可能である。以上のように、本開示の一態様によれば、ユニット同士をPCIeで接続することが望まれるような製品において、特に、好適に用いられる。
§4 変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
<4.1>
図4は、メインユニット100と拡張ユニット200との他の接続例を示す図である。図4に示すとおり、1台のメインユニット100に対して、複数の他のアプリケーションをそれぞれ実行する複数の拡張ユニット200を接続することができる。
拡張ユニット200、拡張ユニット200a、拡張ユニット200b・・・のそれぞれは、上述した構成の転送装置230をそれぞれ有する。各拡張ユニット200は、それぞれが備える転送装置230を介して、メインユニット100との間でデータ転送を行うことができる。メインユニット100の第1処理装置110の上位層では、Ethernetによる接続が複数なされているように見え、一対多のPCIeによる接続を意識する必要がない。
〔ソフトウェアによる実現例〕
転送装置230の制御ブロック(特に、第1PCIeインタフェース231、第2PCIeインタフェース232、DMAC233、下り受信ディスクリプタコントローラ234、下り送信ディスクリプタコントローラ235、上り受信ディスクリプタコントローラ236、上り送信ディスクリプタコントローラ237、および、割込発生部238)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、ソフトウェアによって実現してもよい。
後者の場合、転送装置230は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば1つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばCPU(Central Processing Unit)を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ROM(Read Only Memory)等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するRAM(Random Access Memory)などをさらに備えていてもよい。また、上記プログラムは、当該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
100…メインユニット、110…第1処理装置(第1デバイス、第2デバイス)、111…マシン制御部、112…割込制御部、113…タスク制御部、114…デバイスドライバ、115…PCIeインタフェース、120…メインユニットメモリ(第1メモリ、第2メモリ)、200…拡張ユニット(情報処理装置)、210…第2処理装置(第2デバイス、第1デバイス)、212…割込制御部、213…タスク実行部(アプリケーション実行部)、214…デバイスドライバ、215…PCIeインタフェース、220…拡張ユニットメモリ(第2メモリ、第1メモリ)、230…転送装置、231…第1PCIeインタフェース、232…第2PCIeインタフェース、233…DMAC(ダイレクトメモリアクセスコントローラ)、234…下り受信ディスクリプタコントローラ(受信ディスクリプタコントローラ)、235…下り送信ディスクリプタコントローラ(送信ディスクリプタコントローラ)、236…上り受信ディスクリプタコントローラ(受信ディスクリプタコントローラ)、237…上り送信ディスクリプタコントローラ(送信ディスクリプタコントローラ)、238…割込発生部、DS1〜DSn 下り送信データアドレス(第1メモリアドレス、第3メモリアドレス)、DR1〜DRn 下り受信データアドレス(第2メモリアドレス、第4メモリアドレス)、US1〜USm 上り送信データアドレス(第3メモリアドレス、第1メモリアドレス)、UR1〜URm 上り受信データアドレス(第4メモリアドレス、第2メモリアドレス)

Claims (7)

  1. 第1デバイスおよび第2デバイスとPCIeで通信を行う転送装置であって、
    前記第1デバイスの第1メモリから前記第2デバイスの第2メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、
    前記第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、前記第1デバイスから取得する第1の送信ディスクリプタコントローラと、
    前記第2メモリにおける前記転送対象データを格納すべき第2メモリアドレスに関する情報を、前記第2デバイスから取得する第1の受信ディスクリプタコントローラとを備える、転送装置。
  2. 前記転送対象データの転送が完了すると、前記第1デバイスまたは前記第2デバイスに対して割り込みを発生させ、転送完了を通知する割込発生部を備える、請求項1に記載の転送装置。
  3. 前記第2メモリにおける転送対象データが格納されている第3メモリアドレスに関する情報を、前記第2デバイスから取得する第2の送信ディスクリプタコントローラと、
    前記第1メモリにおける前記転送対象データを格納すべき第4メモリアドレスに関する情報を、前記第1デバイスから取得する第2の受信ディスクリプタコントローラとを備え、
    前記ダイレクトメモリアクセスコントローラは、前記第2デバイスの前記第2メモリから、前記第1デバイスの前記第1メモリへのデータ転送を制御する、請求項1または2に記載の転送装置。
  4. 請求項1から3のいずれか1項に記載の転送装置と、前記第2デバイスと、前記第2メモリとを備える情報処理装置であって、
    前記第2デバイスは、
    前記転送対象データを処理するアプリケーション実行部と、
    前記アプリケーション実行部からソケットAPIを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第2メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する、情報処理装置。
  5. 前記第2デバイスの前記デバイスドライバは、前記送信ディスクリプタを前記第2メモリに格納し、
    前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記第2メモリから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定する、請求項4に記載の情報処理装置。
  6. 前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記デバイスドライバから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定する、請求項4に記載の情報処理装置。
  7. データの転送元である第1デバイスおよび当該データの転送先である第2デバイスとPCIeで通信を行う転送装置が実行するデータ転送方法であって、
    前記転送装置の送信ディスクリプタコントローラが、前記第1デバイスの第1メモリにおける、転送対象データが格納されている第1メモリアドレスに関する第1情報を、前記第1デバイスから取得するステップと、
    前記転送装置の受信ディスクリプタコントローラが、前記第2デバイスの第2メモリにおける、前記転送対象データを格納すべき第2メモリアドレスに関する第2情報を、前記第2デバイスから取得するステップと、
    前記転送装置のダイレクトメモリアクセスコントローラが、前記第1メモリから前記第2メモリへのデータを転送するステップとを含む、データ転送方法。
JP2019094031A 2019-05-17 2019-05-17 転送装置、情報処理装置、および、データ転送方法 Active JP7326863B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2019094031A JP7326863B2 (ja) 2019-05-17 2019-05-17 転送装置、情報処理装置、および、データ転送方法
EP20809808.7A EP3971724A4 (en) 2019-05-17 2020-03-03 Transfer device, information processing device, and data transfer method
PCT/JP2020/008813 WO2020235174A1 (ja) 2019-05-17 2020-03-03 転送装置、情報処理装置、および、データ転送方法
CN202080029540.6A CN113711195A (zh) 2019-05-17 2020-03-03 传输装置、信息处理装置以及数据传输方法
US17/605,227 US11625348B2 (en) 2019-05-17 2020-03-03 Transfer device, information processing device, and data transfer method
JP2023120263A JP2023126702A (ja) 2019-05-17 2023-07-24 情報処理装置、および、データ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019094031A JP7326863B2 (ja) 2019-05-17 2019-05-17 転送装置、情報処理装置、および、データ転送方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023120263A Division JP2023126702A (ja) 2019-05-17 2023-07-24 情報処理装置、および、データ転送方法

Publications (2)

Publication Number Publication Date
JP2020190765A true JP2020190765A (ja) 2020-11-26
JP7326863B2 JP7326863B2 (ja) 2023-08-16

Family

ID=73453925

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019094031A Active JP7326863B2 (ja) 2019-05-17 2019-05-17 転送装置、情報処理装置、および、データ転送方法
JP2023120263A Pending JP2023126702A (ja) 2019-05-17 2023-07-24 情報処理装置、および、データ転送方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023120263A Pending JP2023126702A (ja) 2019-05-17 2023-07-24 情報処理装置、および、データ転送方法

Country Status (5)

Country Link
US (1) US11625348B2 (ja)
EP (1) EP3971724A4 (ja)
JP (2) JP7326863B2 (ja)
CN (1) CN113711195A (ja)
WO (1) WO2020235174A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116501670A (zh) * 2022-01-18 2023-07-28 联发科技(新加坡)私人有限公司 传感装置的中断处理方法及其集成电路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274436A (ja) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk データ転送方式
US20120166699A1 (en) * 2010-12-22 2012-06-28 Panakaj Kumar Method and apparatus to provide a high availability solid state drive
JP2013065079A (ja) * 2011-09-15 2013-04-11 Ricoh Co Ltd 中継装置および通信システム
JP2016224560A (ja) * 2015-05-27 2016-12-28 キヤノン株式会社 マルチチップシステム、及びその制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997000480A1 (en) * 1995-06-15 1997-01-03 Intel Corporation Architecture for an i/o processor that integrates a pci to pci bridge
KR100606163B1 (ko) * 2004-07-10 2006-08-01 삼성전자주식회사 디렉트 메모리 엑세스 장치, 디렉트 메모리 엑세스 장치를통한 데이터를 송수신하는 시스템 및 방법
KR100958685B1 (ko) * 2005-04-01 2010-05-20 후지쯔 가부시끼가이샤 Dma 컨트롤러, 노드, 데이터 전송 제어 방법 및 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
JP4724494B2 (ja) * 2005-08-26 2011-07-13 キヤノン株式会社 Pciブリッジ及pciブリッジを搭載するシステム
CN102681952B (zh) * 2012-05-12 2015-02-18 北京忆恒创源科技有限公司 将数据写入存储设备的方法与存储设备
JP5998884B2 (ja) 2012-11-30 2016-09-28 富士通株式会社 ストレージ装置、およびモジュール間データ転送方法
ES2687609T3 (es) * 2013-05-02 2018-10-26 Huawei Technologies Co., Ltd. Sistema informático, método para acceder a un terminal de interconexión de componentes periféricos exprés y equipo
JP6176058B2 (ja) * 2013-10-29 2017-08-09 株式会社ソシオネクスト ダイレクトメモリアクセス制御装置、その制御方法、及び情報処理システム
CN105988953B (zh) * 2015-02-12 2019-03-12 深圳市中兴微电子技术有限公司 一种直接内存存取dma控制器及数据传输的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274436A (ja) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk データ転送方式
US20120166699A1 (en) * 2010-12-22 2012-06-28 Panakaj Kumar Method and apparatus to provide a high availability solid state drive
JP2013065079A (ja) * 2011-09-15 2013-04-11 Ricoh Co Ltd 中継装置および通信システム
JP2016224560A (ja) * 2015-05-27 2016-12-28 キヤノン株式会社 マルチチップシステム、及びその制御方法

Also Published As

Publication number Publication date
US20220179813A1 (en) 2022-06-09
US11625348B2 (en) 2023-04-11
EP3971724A4 (en) 2023-06-28
EP3971724A1 (en) 2022-03-23
JP7326863B2 (ja) 2023-08-16
WO2020235174A1 (ja) 2020-11-26
JP2023126702A (ja) 2023-09-07
CN113711195A (zh) 2021-11-26

Similar Documents

Publication Publication Date Title
US7984218B2 (en) Processor, electronic apparatus, interruption control method and interruption control program
KR102145795B1 (ko) 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치
US11341087B2 (en) Single-chip multi-processor communication
WO2017032112A1 (zh) 一种与无中央处理器单板通讯的方法及通讯设备
Deschambault et al. Efficient implementation of the MQTT protocol for embedded systems
US20070067151A1 (en) Memory access to virtual target device
CN109839890B (zh) 控制装置、控制方法以及计算机可读存储介质
JP2023126702A (ja) 情報処理装置、および、データ転送方法
JP2007221364A (ja) コントローラ、制御システム及び制御装置の拡張方法
US20140089533A1 (en) Allocation of flow control credits for high performance devices
US10757177B1 (en) Data locality-aware MapReduce using IoT devices
EP4290378A1 (en) Electronic device and method for processing sensor data of electronic device
KR20050080704A (ko) 프로세서간 데이터 전송 장치 및 방법
US11360926B2 (en) Configuration management device, configuration management system, configuration management method, and non-transitory computer readable storage medium
US11528348B2 (en) Communication system, communication device, communication method, and program for reliably receiving periodic data
JP2016197446A (ja) デバイスプロキシ装置及びそれを含む計算機システム
WO2023248551A1 (ja) 制御システム、中継装置および通信方法
WO2024014048A1 (ja) 制御システム、制御装置および通信方法
JP2015049600A (ja) 周辺機器制御装置、周辺機器制御方法および周辺機器制御プログラム
WO2024014047A1 (ja) 制御システム、制御装置および通信方法
JP2021064166A (ja) メモリ制御装置、および制御方法
KR20220076198A (ko) 디지털 트윈 기반 함수 처리 장치 및 방법
CN116954877A (zh) 一种分布式资源共享方法及相关装置
JP2013050911A (ja) 通信装置、通信方法、及びプログラム
JP2009069939A (ja) マルチcpuシステム移行方法及びcpuシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230623

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230717

R150 Certificate of patent or registration of utility model

Ref document number: 7326863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150