JP7031630B2 - パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法 - Google Patents

パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法 Download PDF

Info

Publication number
JP7031630B2
JP7031630B2 JP2019053468A JP2019053468A JP7031630B2 JP 7031630 B2 JP7031630 B2 JP 7031630B2 JP 2019053468 A JP2019053468 A JP 2019053468A JP 2019053468 A JP2019053468 A JP 2019053468A JP 7031630 B2 JP7031630 B2 JP 7031630B2
Authority
JP
Japan
Prior art keywords
node
pipeline
unit
time
priority variable
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.)
Active
Application number
JP2019053468A
Other languages
English (en)
Other versions
JP2020154830A (ja
Inventor
弘二 西垣
隆也 清水
武紀 日下
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
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 filed Critical Omron Corp
Priority to JP2019053468A priority Critical patent/JP7031630B2/ja
Priority to PCT/JP2020/009930 priority patent/WO2020189360A1/ja
Priority to EP20773428.6A priority patent/EP3944037A4/en
Priority to US17/439,821 priority patent/US20220179708A1/en
Priority to CN202080019453.2A priority patent/CN113614658A/zh
Priority to KR1020217029772A priority patent/KR20210137472A/ko
Publication of JP2020154830A publication Critical patent/JP2020154830A/ja
Application granted granted Critical
Publication of JP7031630B2 publication Critical patent/JP7031630B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Description

本発明は、パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法に関する。
様々な生産現場におけるファクトリーオートメーション(FA)において、各種機器の動作情報や流動品の測定データ、その他の生産情報に関するサンプリングデータを収集し、データベース化を行う要請が高まっている。そのため、生産工場において、多様な各種機器へのアクセスが可能で、膨大なデータの取り扱いを行うデータ収集分析系の高性能化が求められている。
一方、情報処理装置において多様なデータを扱えるようにする技術として、パイプライン処理が良く知られている。特許文献1には、このようなパイプライン処理において、各タスクへの実行優先度を調整し、受信バッファ(受信キュー)のオーバーフローを防止して、適切なデータ処理を行う方法が開示されている。
特開平11-237993号公報
FAにおけるデータ収集分析系は、生産工程に応じ、ユーザ(工場管理者)によって、データ収集対象機器、データ処理方法等が自在に定め得るように構成される必要がある。そのためのデータ収集分析機器として、パイプライン演算装置を用いることが考えられている。
パイプライン演算装置では、データ収集対象機器や、所望のデータ処理方法に対応する準備された機能ブロック(ノード)を組み合わせることで、ユーザが要求するデータ処理手順の設定を容易に行えるようにすることができる。
更に、データ収集分析機器としてのパイプライン演算装置を、各種制御対象機器の制御を行うプログラマブルロジックコントローラ(Programmable Logic Controller:PLC)に統合することも考えられる。これにより、収集したデータを分析した結果を、各種制御対象機器への制御に反映させることも、容易となる。
このようなFAで用いるためのパイプライン演算装置の取り扱うデータは膨大であるため、その高性能化が求められる。
本発明は、一側面では、このような実情を鑑みてなされたものであり、その目的は、受信キューのオーバーフローを防止しつつも、更にパイプライン処理が全体として効率的に実行できる、改良されたパイプライン演算装置を実現することにある。
本発明は、上述した課題を解決するために、以下の構成を採用する。
本発明の一側面に係るパイプライン演算装置は、複数のノードと、複数の受信キューとを有する演算部であって、前記ノードが前記受信キューを介して複数接続されるパイプラインの少なくとも1つで構成される演算部と、ノード監視部と、キュー監視部と、優先度変数算出部と、時間割当部とを有する制御部と、を備え、前記ノード監視部は、前記ノードから、前記ノードにおける1つのメッセージの処理に要する時間であるノード処理時間を取得し、前記キュー監視部は、前記受信キューから、前記受信キューへの蓄積メッセージ量を取得し、前記優先度変数算出部は、少なくとも前記ノードの前記ノード処理時間と、当該ノードの前段の受信キューの前記蓄積メッセージ量とに基づいて、当該ノードの優先度変数を算出し、前記時間割当部は、前記ノード毎の前記優先度変数に応じ、前記各ノードに対して稼動時間を割り当てる構成を備える。
上記構成によれば、受信キューのオーバーフローを防止しつつも、更にパイプライン処理が全体として効率的に実行できる、改良されたパイプライン演算装置が実現される。
上記一側面に係るパイプライン演算装置において、前記蓄積メッセージ量は、前記受信キューへ蓄積されたメッセージ数または蓄積されたメッセージの総サイズであってもよい。
上記構成によれば、パイプライン処理が全体として効率的に実行できるようにするための優先度変数を具体的に算出できる。
上記一側面に係るパイプライン演算装置において、前記優先度変数算出部は、前記ノードの前記ノード処理時間と前記蓄積メッセージ量との積を、当該ノードの優先度変数として算出する構成を有していてもよい。
上記構成によれば、メッセージ入力待ちによるノードの動作のアイドル状態が生じる事態が発生し、パイプライン全体としての動作の効率が悪くなることを抑制しうる。
上記一側面に係るパイプライン演算装置において、前記優先度変数算出部は、前記ノード監視部が取得した前記ノードの過去からの複数の前記ノード処理時間に基づいて、当該ノードの前記優先度変数を算出するための前記ノード処理時間を生成する構成を有していてもよい。
上記構成によれば、突発的な事由による各ノードにおける極端な稼働時間の割り当ての発生を防止し得る。
上記一側面に係るパイプライン演算装置において、前記演算部は、合流監視部と、補正係数算出部とを更に備え、前記合流監視部は、前記パイプラインのうち、複数の部分パイプラインが合流するパイプラインについて、前記複数の部分パイプラインの合流点の前記ノードよりも上流の、互いに異なる部分パイプラインに属するノードの前段の受信キューの前記蓄積メッセージ量を、前記キュー監視部から取得して、前記互いに異なる部分パイプラインに属するノードの前段の受信キューの前記蓄積メッセージ量の不均衡の度合いを算出し、前記補正係数算出部は、前記互いに異なる部分パイプラインのうちの、いずれかの部分パイプラインに属するノードについて、前記不均衡の度合いに応じて補正係数を算出し、前記時間割当部は、前記ノードについて前記補正係数が算出された場合には、前記優先度変数に前記補正係数を乗じた値に応じて、前記稼動時間を割り当てる構成を有していてもよい。
上記構成によれば、合流のあるパイプラインにおいても、確実にパイプライン処理が全体として効率的に実行できるようになる。
上記一側面に係るパイプライン演算装置において、前記演算部は、メモリ監視部と、補正係数算出部とを更に備え、前記メモリ監視部は、前記受信キューの蓄積メッセージを保存するメモリの空き容量が所定値よりも小さくなった場合に前記補正係数算出部に通知し、前記補正係数算出部は、前記通知を受信した場合に、前記複数のパイプラインのうち、パイプラインでのメッセージの処理が完了するまでの時間がより短い、または、分岐のより少ないパイプラインに属する前記ノードについて、1より大きい補正係数を与え、前記時間割当部は、前記ノードについて前記補正係数が与えられた場合には、前記優先度変数に前記補正係数を乗じた値に応じて、前記稼動時間を割り当てる構成を有していてもよい。
上記構成によれば、メモリの空き容量が少なくなった場合に、演算部に滞留しているメッセージを減少させることができ、メモリ資源の不足が生じる事態の発生を抑制することができる。
本発明の一側面に係るプログラマブルロジックコントローラは、上記一側面に係るパイプライン演算装置を備えたプログラマブルロジックコントローラであってもよい。
上記構成によれば、高性能化されたデータ収集機能を有し、各種制御対象機器の制御について、収集したデータを分析した結果を反映させるFAシステムをユーザが構築することが容易となる。
本発明の一側面に係るパイプライン処理の実行方法は、ノードが受信キューを介して複数接続される少なくとも1つのパイプラインにより、パイプライン処理を実行する方法であって、前記ノードにおける1つのメッセージの処理に要する時間であるノード処理時間を取得するステップと、前記受信キューへの蓄積メッセージ量を取得するステップと、少なくとも前記ノードの前記ノード処理時間と、当該ノードの前段の受信キューの前記蓄積メッセージ量とに基づいて、当該ノードの優先度変数を算出するステップと、前記ノード毎の前記優先度変数に応じ、前記各ノードに対して稼動時間を割り当てるステップと、を備えている。
上記構成によれば、受信キューのオーバーフローを防止しつつも、更にパイプライン処理が全体として効率的に実行できる、改良されたパイプライン演算処理が実現される。
本発明の一側面に係るパイプライン演算装置によれば、受信キューのオーバーフローを防止しつつも、更にパイプライン処理が全体として効率的に実行できる、改良されたパイプライン演算を実現できる。
本発明の一側面に係るプログラマブルロジックコントローラによれば、高性能化されたデータ収集機能を有し、各種制御対象機器の制御について、収集したデータを分析した結果を反映させるFAシステムをユーザが構築することが容易となる。
本発明の一側面に係るパイプライン処理の実行方法によれば、受信キューのオーバーフローを防止しつつも、更にパイプライン処理が全体として効率的に実行できる、改良されたパイプライン演算を実現できる。
本発明の実施形態1に係るパイプライン演算装置を示す概略構成図である。 本発明の実施形態1に係るパイプライン演算装置の動作を説明するための図である。(a)、(b)はそれぞれ異なる時刻の状態を示す。 本発明の実施形態2に係るプログラマブルロジックコントローラを示す概略構成図である。 本発明の実施形態3に係るパイプライン演算装置における、パイプラインの構成と動作を説明するための図である。 本発明の実施形態4に係るパイプライン演算装置における、パイプラインの構成と動作を説明するための図である。 本発明の実施形態5に係るパイプライン演算装置を示す概略構成図である。 本発明の実施形態7に係るパイプライン演算装置を示す概略構成図である。 本発明の実施形態7に係るパイプライン演算装置における、パイプラインの構成と動作を説明するための図である。 本発明の実施形態8に係るパイプライン演算装置を示す概略構成図である。
〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)が、図面に基づいて説明される。
§1 適用例
図1を参照して、まず、本発明が適用される場面の一例が述べられる。図1は、本実施形態に係るパイプライン演算装置110の構成を示す概略図である。
パイプライン演算装置110は、演算部120と制御部160とを備える。
演算部120は、機能ブロックである、複数のノード(入力ノード130、ロジックノード140、出力ノード150)と、複数の受信キュー141、151とを有する。演算部120では、前記ノードが受信キューを介して複数接続されるパイプラインが構成されており、演算部120には少なくとも1つのパイプラインが設けられている。
制御部160は、機能ブロックであるノード監視部161と、キュー監視部162と、優先度変数算出部163と、時間割当部164とを有する。
パイプライン演算装置110は、その外部からロードした、もしくはそれが備える記録装置(不図示)からロードしたパイプライン処理実行プログラムを実行することで、機能ブロックとしてのこれら各部の機能を実現する。
ノード監視部161は、各ノード(入力ノード130、ロジックノード140、出力ノード150)から、ノードでのメッセージの処理に要する時間であるノード処理時間Tを取得する。
キュー監視部162は、受信キュー141、151から、それぞれの蓄積メッセージ量を取得する。
優先度変数算出部163は、少なくとも前記ノードのノード処理時間と、当該ノードの前段の受信キューの蓄積メッセージ量とに基づいて、当該ノードの優先度変数PRIを算出する。
時間割当部164は、ノード毎の優先度変数PRIに応じ、各ノードに対して稼動時間を割り当てて、動作させる。
このように、本実施形態のパイプライン演算装置110は、少なくともノード処理時間と受信キューの蓄積メッセージ量とに基づいて、優先度変数PRIを算出し、これに応じて各ノードに対して稼動時間を割り当てる。
よって、受信キューでのオーバーフローを防止しつつも、パイプライン処理が全体として効率的に実行できる、改良されたパイプライン演算装置が実現される。
§2 構成例
続いて、本実施形態のパイプライン演算装置110の構成の一例が説明される。
演算部120におけるノードとは、入力ノード130、ロジックノード140、出力ノード150のいずれかである。それぞれの機能は次の通りである。
入力ノード130は、パイプライン演算装置110の外部の機器等から、メッセージを収集する機能ブロックである。入力ノード130は外部の機器等の種類や扱うメッセージの種類に応じて、多種多様である。本明細書において、ひとまとまりのデータを、メッセージと称し、メッセージの内容は生産情報、制御情報、環境情報などの情報である。制御情報は、例えばサーボモータから取得できるリアルタイムのトルク等のパラメータといった情報であり得、環境情報は、例えば気温といった情報であり得る。
ロジックノード140は、入力されたメッセージに対して処理を行い、後段に出力する機能ブロックである。ロジックノード140は実施する処理の内容に応じて、多種多様である。
出力ノード150は、入力されたメッセージをパイプライン演算装置110の外部の機器等へ出力する機能ブロックである。出力ノード150は外部の機器等の種類や扱うメッセージの種類に応じて、多種多様である。
パイプライン演算装置110の外部の機器等としては、工作機械や測定機器その他の各種FA機器、各種生産情報に関するデータを収集し提供するデータベース、各種生産情報に関するデータを保存するデータベース、インターネットやその他のネットワーク上のクラウドサーバ、であり得る。
更に、パイプライン演算装置110がPLCに統合されている場合において、パイプライン演算装置110の入力ノード130または出力ノード150の接続先としては、PLCの備える記憶装置上のデータファイルや、PLC上で動作している工作機械のモーション制御プログラム等のアプリケーションでもあり得る。
生産情報とは、工作機械や測定機器その他の各種FA機器の動作に関する情報、測定データ、その他生産に係わる情報を含む概念である。
図1には、それぞれ入力ノード130、出力ノード150の接続先の外部の機器の例示としての、データサーバ11、データベース12が示されている。
演算部120においては、入力ノード130と出力ノード150との間に、順次必要なロジックノード140が接続されて、パイプラインが構成される。
ロジックノード140の前段には、ロジックノードの受信キュー141が設けられている。同様に、出力ノード150の前段には、出力ノードの受信キュー151が設けられている。それぞれの受信キュー141、151は、ロジックノード140や出力ノード150に入力されるメッセージを、ロジックノード140や出力ノード150での処理が終了して次のメッセージの受け入れが可能となるまで一時的に蓄積する。
演算部120を構成するパイプラインは、通常多数であるが、少なくとも1つあればよい。また、パイプラインは、1つの入力ノード130から1つの出力ノード150へと、単数もしくは複数のロジックノードが直列に接続されるもののみに限られず、途中で分岐や合流をするものであってもよい。
ノード監視部161、キュー監視部162、優先度変数算出部163、時間割当部164を有する制御部160の構成の概略は、上記§1適用例に記載の通りである。各部の機能の詳細は、パイプライン演算装置110の動作の説明とともに後述される。
なお本実施形態においては、各々の受信キューの蓄積メッセージ量として、メッセージの数である、蓄積メッセージ数Qが採用される。
ノード処理時間Tは具体的に、以下の開始時刻から終了時刻までの時間であり得る。ノードが受信キューからメッセージを受け取った時刻である受信キューのデキュー時刻を開始時刻とし得る。なお、入力ノード130の場合には、入力ノード130が実行のスタート(キック)を行った時刻を開始時刻とし得る。
また、ノードが接続先のノードの受信キューにメッセージを送り込む時刻である、接続先のノードの受信キューのエンキュー時刻を終了時刻とし得る。なお、出力ノード150の場合には、出力ノード150の出力先の外部機器等へのメッセージの出力が完了した時刻とし得る。更に、特にノードが後段にメッセージを出力しない場合等において、ノードが受け取ったメッセージに係る処理を、メッセージを受け取ったノード自身でそれ以上行う必要のなくなった時点(自身での処理が完了した時点)を、完了した時刻としてもよい。
§3 動作例
本実施形態のパイプライン演算装置110の動作について、より具体的な例に基づいて説明する。
入力ノード130は複数のデータサーバ11から、順次メッセージを取得する。各々のデータサーバ11は、ハイパーテキストトランスファープロトコル(Hypertext Transfer Protocol:http)やハイパーテキストトランスファープロトコルセキュア(Hypertext Transfer Protocol Secure:https)に基づいてメッセージを提供するウェブサーバ(Web Server)であり得る。
ロジックノード140は順次、入力されたメッセージから、例えば、設備の状態の解析に必要なデータの抽出を行い所要の演算を行って出力する。ロジックノード140、例えば、ハイパーテキストマークアップラングイッジ(HyperText Markup Language:html)解析スクリプトを用いた処理を行うものであってよい。
出力ノード150は、ロジックノード140が出力するメッセージを、順次、データベース12に対して出力する。
図2(a)は、各ノードがこのような動作を実行するにあたっての、演算部120におけるパイプライン121の状態を示す図である。ノード処理時間T、受信キューの蓄積メッセージ数Q、及び、優先度変数PRIについての添え字i、n、oは、それぞれ、入力ノード130、ロジックノード140あるいはその受信キュー141、出力ノード150あるいはその受信キュー151を表す。
この例において、各ノードがメッセージを処理するのに要するノード処理時間Tについて、Ti=20ms、Tn=100ms、To=50msである。
このとき、ノード監視部161が、入力ノード130、ロジックノード140、出力ノード150から、それぞれのノード処理時間Ti=20ms、Tn=100ms、To=50msを取得する。なお、ここで単位をミリ秒として表したが、CPU(Central Processing Unit)のクロック数であってもよい。
また、各々の受信キューに蓄積されたメッセージの数である蓄積メッセージ数Qについて、図2(a)の状態では、一時的にQn=3、Qo=0となっている。
このとき、キュー監視部162が、受信キュー141、151から、それぞれ蓄積メッセージ数Qn=3、Qo=0を取得する。
次に、優先度変数算出部163が、ノード監視部161から各ノードのノード処理時間Tを受信し、また、キュー監視部162から各ノードの蓄積メッセージ数Qを受信する。また、優先度変数算出部163は、入力ノード130に関して蓄積メッセージ数Qiを1とみなす。
それから優先度変数算出部163が、各ノードについての優先度変数PRIを算出する。ここで、優先度変数PRIは、少なくともノード処理時間Tと蓄積メッセージ数Qとから算出される値である。本実施形態における具体的な例示では、優先度変数PRIはノード処理時間Tと蓄積メッセージ数Qとの積である。
優先度変数算出部163は、各ノードについての優先度変数PRIを、PRIi1=1×20、PRIn=3×100、PRIo=0×50と算出する。
続いて、時間割当部164が、優先度変数算出部163が算出した各ノードについての優先度変数PRIに応じて、演算部120に与えられる時間についての情報処理資源、例えば、CPU時間を配分する。例示としては、演算部120に与えられるCPU時間を優先度変数PRIによって按分して、各ノードを稼働させる。
すると、図2(a)の状態から所定時間内は、出力ノード150にCPU時間は割り当てられず、ロジックノード140には、入力ノード130よりも大きなCPU時間が割り当てられる。
ロジックノード140には大きなCPU時間が割り当てられたため、一定時間経過後に、ロジックノード140の受信キュー141の蓄積メッセージ数Qnが減少し、例示として図2(b)の状態に遷移した。このように、入力ノード130がロジックノード140に送ったメッセージの積み上がりが解消された。
ただし時間割当部164は、入力ノード130に定周期実行の予約がされている場合、例外的に、当該入力ノード130には、その動作の定周期実行が行えるCPU時間を与える。
入力ノード130について、定周期実行の予約がされている際の、時間割当部164の動作は、次のようなものである。例えば、1msの定周期で外部機器からメッセージを取得する予約がされ、入力ノード130の処理時間が0.02msとした場合、少なくとも1ms以内に0.02msのCPU時間を確保するように、時間割当部164は、入力ノード130を稼働させる。時間割当部164は残余の演算部120に与えられるCPU時間を他のノードで按分して他の各ノードを稼働させる。
なお、入力ノード130について、定周期実行の予約がされ、入力ノード130に比較的大きな一定のCPU時間が割り当てられた場合には、入力ノード130からのメッセージの出力が高頻度となる。すると、パイプラインの動作の初期に特定のノードの受信キューにメッセージが積み上がろうとするが、この場合においても各ノードの稼働時間が上記同様に調整されて、解消される。
§4 作用、効果
上述のように、本実施形態のパイプライン演算装置110は、一時的に特定の受信キューにメッセージが過剰に蓄積されたとしても、各ノードの稼動時間が状況に応じて動的に割り当てられて、過剰な蓄積が解消するように、動作する。従って、パイプライン演算における受信キューのオーバーフローが効果的に抑制される。
また、上述のように、優先度変数PRIはノード処理時間Tと蓄積メッセージ数Qとから算出され、各ノードの動作時間が優先度変数PRIに応じて動的に割り当てられる。つまり、本実施形態のパイプライン演算装置110では、ノードにおける動作待ちが生じないような、パイプライン全体としての効率化が実現されている。
(比較1)
比較のため、制御部160による上述のような、各ノードの稼動時間の調整が無いケースが説明される。
この場合、例えばロジックノード140でのメッセージの処理が時間を要するものである際に、入力ノード130から出力されるメッセージが、ロジックノード140の受信キュー141に積みあがる(Qnが過剰になる)。このような状況が続くと、受信キュー141がオーバーフローしてしまう状況に陥る。
そこでオーバーフローを回避するため、入力ノード130の動作について、待ち時間を設けることが考えられる。例えば、ロジックノード140のノード処理時間がTn=100msである場合に、入力ノード130の動作の待ち時間を200msに設定し、200ms以上の時間間隔でしか、ロジックノード140の受信キュー141にメッセージが送付されないようにする。このような待ち時間の設計は、パイプライン後段の処理時間を考慮して行う必要がある。
しかしながら、演算部120に設定されるパイプラインが多数の場合において、このような調整をユーザが行うことは、非常に煩わしく、また適切に待ち時間を設定することも難しい。
一方、本実施形態のパイプライン演算装置110においては、ユーザが入力ノード毎にこのような調整を行わなくとも、動的にメッセージの蓄積が解消される。
よって、ユーザが各ノードの待ち時間等のパラメタを設定する必要が無く、各種機器からのデータ収集分析が可能な、データ収集システムを容易に構築できるようになる。
(比較2)
また比較のため、特許文献1の従来技術を適用したケースが説明される。従来技術を適用したパイプライン演算装置においては、各々のノードに割り当てる稼働時間は、各々のノードの受信キューに蓄積されたデータ量(メッセージによるメモリ使用量)から算出される。
一方、本実施形態のパイプライン演算装置110において、各々のノードに割り当てる稼働時間は、各々のノードの受信キューの蓄積メッセージ量である蓄積データ数Qと、ノード処理時間Tとの積である優先度変数PRIに応じて按分される。
従って、一時的にあるノードの受信キューにメッセージが過剰に蓄積された場合に、ノード処理時間まで考慮されて、ノードにCPU時間が割り当てられる。よって、パイプライン演算装置110によれば、従来技術を適用するよりも、より早くメッセージの過剰な蓄積の状態が解消され得る。
また、例えばノード処理時間100msのノードと、ノード処理時間200msのノードとが接続されている場合に一定流量のメッセージがパイプラインを通過するには、後者のノードに2倍のCPU時間が割り当てられる必要がある。よって、従来技術では、後者のノードの受信キューに前者のノード受信キューの2倍のメッセージが蓄積されると、そのような割り当てが実行される。
一方、本実施形態のパイプライン演算装置110では、そのような割り当てを実行するためにこれらのノードで蓄積するメッセージ数は同等である。蓄積メッセージ数Qと、ノード処理時間Tとの積により、CPU時間が割り当てられるからである。このように、本実施形態のパイプライン演算装置110によれば、稼動しているパイプライン121における各ノードの受信キューに蓄積されるメッセージ数に差異が生じにくい。従って、受信キューを構成するためのメモリリソースが限られた場合であっても、パイプライン演算装置110は効率的な運用が可能である。
また、従来技術のように、受信キューに蓄積されるメッセージ量にばらつきがある場合、特定のノードにおいて、処理すべきメッセージが枯渇してしまい、稼働時間の割合が更新される次のタイミングまで、そのノードが受信待ちとなる非効率な状況が生じやすい。しかし、本実施形態のパイプライン演算装置110では、このような事態が抑制されるから、パイプライン処理が全体として効率的に実行できるようになる。
以上の実施形態1に関する作用、効果については、以下の実施形態においても、同様に発揮される。
〔実施形態2〕
本発明の他の実施形態が、以下に説明される。なお、説明の便宜上、上記実施形態にて説明した構成要素と同じ機能を有する構成要素については、同じ符号が付記され、その説明は繰り返されない。
図3は、実施形態2に係るプログラマブルロジックコントローラ(PLC)200の構成を示す概略図である。
プログラマブルロジックコントローラ200は、実施形態1と同様のパイプライン演算装置210を備える。パイプライン演算装置210には、演算部220と制御部260とが設けられている。
演算部220には、ユーザ(工場管理者)が、データ収集対象機器等、データ出力対象機器等やデータ処理方法に対応するノードを接続したパイプラインを構築することで、ユーザが必要なデータ収集とその処理の設定を容易に行える。
図3において、入力ノードInput、ロジックノードLogic、出力ノードOutputにより構成される複数のパイプラインが示されている。なお、図示されないが、上記実施形態同様、各々のロジックノードLogicと出力ノードOutputの前段には受信キューが接続される。制御部260の構成は、上記実施形態と同様である。
プログラマブルロジックコントローラ200は更に、それが備える記憶装置内のデータファイル201、202や、その内部で動作する、工作機械のモーション制御プログラム等のアプリケーション203、204を有している。
パイプライン演算装置210の入力ノードInputの接続先は、データファイル201や、アプリケーション203であり得る。更に、入力ノードInputの接続先は、プログラマブルロジックコントローラ200の外部機器である、工作機械や測定機器その他の各種FA機器、各種生産情報に関するデータを収集し提供するデータサーバ11、各種生産情報に関するデータを保存するデータベース12、インターネットやその他のネットワーク上のクラウドサーバ13であり得る。
パイプライン演算装置210の出力ノードOutputの接続先は、データファイル202や、アプリケーション204であり得る。更に、出力ノードOutputの接続先は、プログラマブルロジックコントローラ200の外部機器である、工作機械や測定機器その他の各種FA機器、FA機器に関するデータを収集し提供するデータサーバ11、各種生産情報に関するデータを収集し提供するデータベース12、インターネットやその他のネットワーク上のクラウドサーバ13であり得る。
入力ノードInputの接続先であるアプリケーション203と、出力ノードOutputの接続先であるアプリケーション204とは、異なるアプリケーションであってもよいし、同一のアプリケーションであってもよい。
実施形態2によれば、データ収集分析機器としてのパイプライン演算装置210が、各種制御対象機器の制御を行うプログラマブルロジックコントローラ200に統合されている。よって、各種制御対象機器の制御について、収集したデータを分析した結果を反映させるシステムをユーザが構築することが容易となる。
〔実施形態3〕
実施形態3に係るパイプライン演算装置は、上記各実施形態と同様である。実施形態3では、パイプラインに分岐が設定された場合の演算部の動作が説明される。
図4は、実施形態3に係るパイプライン演算装置の演算部に属するパイプライン321を示す図である。パイプライン321は以下の構成を有する。
入力ノード330が、パイプライン演算装置外部の工作機械14からメッセージを取得し、ロジックノード340が必要データを抽出する。ロジックノード340の前段には、受信キュー341が設けられている。ロジックノード340は処理されたメッセージを出力ノード(A)350と出力ノード(B)352とに分岐して出力する。
出力ノード(A)350は、パイプライン演算装置外部のデータベース12に対して処理されたメッセージを出力する。出力ノード(B)352は、パイプライン演算装置外部のクラウドサーバ13に対してメッセージを出力する。出力ノード(B)352は、例えば、MQTT(Message Queuing Telemetry Transport)プロトコルにより処理を実行する。
ここで、データベース12に接続する出力ノード(A)350のノード処理時間Toaが50msであり、クラウドサーバ13に接続する出力ノード(B)352は、より時間を要して、ノード処理時間Tobが150msであるケースを想定する。データベース12が、工場内部のローカルなネットワークに接続されており、インターネット上のクラウドサーバ13に対するよりも、速やかに出力処理が実行されるようなケースに相当する。
パイプライン321の動作が開始すると、出力ノード(A)350の受信キュー351と、出力ノード(B)352の受信キュー353とには、ロジックノード340から、ほぼ同時にメッセージが出力される。そして受信キュー(A)351の蓄積メッセージ数Qoaと、受信キュー(B)353の蓄積メッセージ数Qobのいずれもが1となる。
すると、出力ノード(A)350の優先度変数PRIoa=1×50と、出力ノード(B)352の優先度変数PRIob=1×150との比率は1:3となる。この比率に従って、CPU時間が割り当てられるから、出力ノード(A)350と出力ノード(A)350におけるメッセージの処理は、ほぼ同時に終了する。
このようにメッセージの処理がほぼ同時に終了するから、その後も、蓄積メッセージ数Qoa、数Qobは、ほぼ同数であり、受信キュー(A)351と受信キュー(B)とに与えられるCPU時間の比は、ノード処理時間に対応する。従って、パイプライン321の動作が継続している間、出力ノード350、352のいずれか一方が、メッセージ入力待ちとなって、動作にアイドル状態が生じる事態になることがなく、極めて効率的に各ノードへのCPU時間の配分が実行されている。
一方、特許文献1の従来技術を適用した場合には、例えば、パイプラインの動作が開始し、受信キュー(A)351の蓄積メッセージ数Qoaと、受信キュー(B)353の蓄積メッセージ数Qobのいずれもが1となった際に、同じCPU時間が配分される。このように、特許文献1の従来技術を適用した場合には、ノード処理時間がより短い出力ノード(A)350において、メッセージ入力待ちによる動作のアイドル状態が生じる事態が発生し、パイプライン全体としての動作の効率が悪くなる。
以上のように、実施形態3の例においては、ノードにおける動作待ちが生じないような、パイプライン全体としての効率化が図られたパイプライン演算装置が実現する。
〔実施形態4〕
実施形態4に係るパイプライン演算装置は、上記各実施形態と同様である。実施形態4では、パイプラインに合流が設定された場合の演算部の動作が説明される。
図5は、実施形態4に係るパイプライン演算装置の演算部に属するパイプライン421を示す図である。ノード処理時間T、受信キューの蓄積メッセージ数Q、及び、優先度変数PRIについての添え字ia、ib、na、nb、n2は、それぞれ、入力ノード(A)430、入力ノード(B)432、ロジックノード(A)440あるいはその受信キュー(A)441、ロジックノード(B)442あるいはその受信キュー(B)443、ロジックノード(2)444あるいはその受信キュー(2)445を表す。パイプライン421は以下の構成を有する。
入力ノード(A)430が、パイプライン演算装置外部の工作機械14からメッセージを取得し、ロジックノード(A)440が必要データを抽出する。ロジックノード(A)440の前段には、受信キュー(A)441が設けられている。ロジックノード(A)440は処理したメッセージをロジックノード(2)444の受信キュー(2)445にエンキューする。
入力ノード(B)432が、パイプライン演算装置外部の工作機械15からメッセージを取得し、ロジックノード(B)442が必要データを抽出する。ロジックノード(B)442の前段には、受信キュー(B)443が設けられている。ロジックノード(B)442は処理したメッセージをロジックノード(2)444の受信キュー445にエンキューする。
このようにパイプラインが合流するロジックノード(2)444の受信キュー(2)445においては、各ノードからのメッセージを1セットとして蓄積メッセージ数Qn2をカウントする。
ロジックノード(2)444が、受信キュー445から、上記両メッセージをデキューし、両メッセージをマージする等の処理を行って、出力ノード450に出力する。出力ノード450の前段には、受信キュー451が設けられている。出力ノード450は、パイプライン演算装置外部のデータベース12に対してメッセージを出力する。
ここで、ロジックノード(A)440のノード処理時間Tnaが50msであり、ロジックノード(B)442のノード処理時間Tnbが100msであるケースを想定する。
各々の入力ノード430、432についても、優先度変数PRIに基づいたCPU時間の割り当てが実行されていれば、上記実施形態と同様にして、各ノードでのメッセージの処理は、同じ時間で完了し得る。
よって実施形態4によれば、合流点のロジックノード(2)444が、いずれかのメッセージの入力待ちとなって、動作にアイドリング状態が生じることが無いようにでき、極めて効率的に各ノードへのCPU時間の配分が実行され得る。
このように、実施形態4の例においては、ノードにおける動作待ちが生じないような、パイプライン全体としての効率化が図られたパイプライン演算装置が実現する。
なお、図5において、Qia=1、Qib=1、Qna=1、Qnb=1、Qn2=1、Tia=10ms、Tib=20ms、Tn2=100msである。また、PRIia=1×10、PRIib=1×20、PRIna=1×50、PRInb=1×100、PRIn2=1×100である。
〔実施形態5〕
実施形態4に係るパイプライン演算装置のパイプライン421のように、パイプラインに複数の入力ノードからの合流が設定されている場合に、少なくとも1つの入力ノードに定周期実行の予約がされていると次の事象が発生する。
合流する部分パイプライン同士でメッセージの処理に要する時間が異なるため合流後のノードの受信キュー(図5では受信キュー445)に、一方の部分パイプラインからのメッセージが積み上がりつつも、他方の部分パイプラインからのメッセージが枯渇する状況となる。そうして、合流後のノードがメッセージ待ちとなり、効率的なパイプラインの運用がなされない状況となる。実施形態5に係るパイプライン演算装置は、このような事象を解消し得る構成を有する。
図6は、実施形態5に係るパイプライン演算装置610の構成を示す概略図である。
パイプライン演算装置610は、演算部620と制御部660とを備える。
演算部620は、上記実施形態のパイプライン演算装置と同様であり、各種のパイプラインを内部に設定し得る。
制御部660は、パイプライン演算装置110の制御部160の構成に加えて、更に合流監視部665と、補正係数算出部666とを備える。
合流監視部665は、少なくとも合流直前のノードの受信キュー(図5では、受信キュー441、443)の蓄積メッセージ数をキュー監視部562から受け取り、それらを比較する。そうして、比較の結果、合流する部分パイプライン間の蓄積メッセージ数の不均衡の度合いを判断する。
補正係数算出部666は、合流監視部665から、合流する部分パイプライン間の蓄積メッセージ数の不均衡の状態の情報を受け取る。補正係数算出部666は、合流する部分パイプライン間の不均衡の度合いに応じて、メッセージの蓄積が生じている部分パイプラインに属するノードについて、補正係数Kを算出する。
例えば、仮に図5のような合流のあるパイプラインにおいて、受信キュー441の蓄積メッセージ数Qnaが、受信キュー443の蓄積メッセージ数Qnbの3倍になっていたとする。このようなとき、補正係数算出部666は、受信キュー441の属する部分パイプラインのノードである、入力ノード(A)430とロジックノード(A)440とに、補正係数K=3を設定する。
時間割当部664は、補正係数算出部666が算出した補正係数Kと、パイプライン演算装置110の優先度変数算出部163と同様にして優先度変数算出部663が算出した優先度変数PRIに応じて、各ノードにCPU時間を割り当てる。より具体的には、補正係数が設定されたノードについては、優先度変数PRIに補正係数を乗じた値に応じたCPU時間を割り当てる。
すると、メッセージの蓄積が生じている部分パイプラインに属するノードによりCPU時間のリソースが割り当てられ、合流点における不均衡が解消する。
このように、実施形態5に係るパイプライン演算装置610によれば、合流のあるパイプラインにおいても、確実にパイプライン処理が全体として効率的に実行できるようになる。
〔実施形態6〕
実施形態6に係るパイプライン演算装置は、上記各実施形態と同様であるが、優先度変数PRIの計算式が異なる一例である。
上記実施形態での例示において、優先度変数算出部の実行する、優先度変数算出のための計算式は、PRI=T×Qであった。つまり、ノード処理時間Tと蓄積メッセージ数Qとは、同様の重みを有していた。
しかし、演算部に与えられたメモリの空き容量が少なくなった場合には、蓄積メッセージ数Qにより重みを付けて、暫時蓄積メッセージを減少させる方向に動作することが好ましい場合がある。
実施形態6に係るパイプライン演算装置では、一例として、優先度変数算出部の実行する、優先度変数算出のための計算式を、PRI=T×Q、(r≧1)とすることができる。ここで、変数rは、蓄積メッセージ数Qに重みを付けるためのパラメタであり、1より大きい場合、蓄積メッセージ数Qに、より重みが付いていることを表す。なお、重み付けを考慮した計算式は上記のものに限られず、他の計算式が用いられてもよい。
実施形態6に係るパイプライン演算装置では、メモリの空き容量が少なくなった場合に、変数rの値を1より大きくして、蓄積メッセージ数Qを減少させる方向に動作させることができ、メモリ資源の不足が生じる事態の発生を抑制することができる。
また、実施形態6に係るパイプライン演算装置では、一例として、優先度変数算出部の実行する、優先度変数算出のための計算式を、演算部に与えられたメモリの使用率mを直接考慮して、PRI=T×Q(Q/Qmax+m)とすることができる。ここで、Qmaxは、受信キューに蓄積できるメッセージ数の最大値である。本計算式によっても、メモリ資源の不足が生じる事態の発生を抑制することができる。
〔実施形態7〕
実施形態7に係るパイプライン演算装置は、上記各実施形態と同様であるが、特定の状況で行う特別な処理を、更に備えている一例である。
図7は、実施形態7に係るパイプライン演算装置510の構成を示す概略図である。
パイプライン演算装置510は、演算部520と制御部560とを備える。
演算部520は、上記実施形態のパイプライン演算装置と同様であり、各種のパイプラインを内部に設定し得る。設定されるパイプラインの例については後述する。煩雑さを避けるため、図7には一つのパイプラインのみが示されている。
制御部560は、パイプライン演算装置110の制御部160の構成に加えて、更にメモリ監視部567と、補正係数算出部566とを備える。
メモリ監視部567は、各ノードの蓄積メッセージ数をキュー監視部562から受け取り、それらを合計する。そうして、パイプライン演算装置510の受信キューのために確保されているメモリ資源の割り当てと比較して、空き容量が所定値よりも小さくなったか否かを判断する。空き容量が所定値よりも小さくなった場合、メモリ監視部567は、その旨を補正係数算出部566に通知する。
補正係数算出部566は、メモリ監視部567から、当該通知を受け取った場合、特定のパイプラインに属するノードについての補正係数Kを設定する。補正係数Kは、規定値(例えばK=2)であってもよいし、メモリの使用の割合に応じた値でもよい。
時間割当部564は、補正係数算出部566が算出した補正係数Kと、パイプライン演算装置110の優先度変数算出部163と同様にして優先度変数算出部563が算出した優先度変数PRIに応じて、各ノードにCPU時間を割り当てる。より具体的には、補正係数が設定されたノードについては、優先度変数PRIに補正係数Kを乗じた値に応じたCPU時間を割り当てる。
図8は、実施形態7に係るパイプライン演算装置510の演算部におけるパイプライン(A)521とパイプライン(B)522を示す図である。
ノード処理時間T、受信キューの蓄積メッセージ数Q、及び、優先度変数PRIについての添え字ia、na、oaは、それぞれ入力ノード(A)530、ロジックノード(A)540あるいはその受信キュー(A)541、出力ノード(A)550あるいはその受信キュー(A)551を表す。
同様に添え字ib、nb、obは、それぞれ入力ノード(B)532、ロジックノード(B)542あるいはその受信キュー(B)543、出力ノード(B)552あるいはその受信キュー(B)553を表す。
パイプライン(A)521には、入力ノード(A)530、受信キュー(A)541、ロジックノード(A)540、受信キュー(A)551、出力ノード(A)550が順次接続されている。入力ノード(A)530、ロジックノード(A)540、出力ノード(A)550のノード処理時間は、それぞれTia=10ms、Tna=50ms、Toa=100msである。
パイプライン(B)522には、入力ノード(B)532、受信キュー(B)543、ロジックノード(B)542、受信キュー(B)553、出力ノード(B)552が順次接続されている。入力ノード(B)532、ロジックノード(B)542、出力ノード(B)552のノード処理時間は、それぞれTib=10ms、Tnb=200ms、Toa=50msである。
上記構成において、与えられたメモリの空き容量が少なくなり、メモリ監視部567からの通知がされた場合に、補正係数算出部566は、パイプライン521に属する各ノードに、補正係数K(例えばK=2)を与える。
補正係数を与えるパイプラインは、パイプラインが完了するまでの時間が短いものから選択される。図8の例では、パイプライン521の当該時間は、Tia+Tna+Toaであり、160msである。パイプライン522の当該時間は、Tib+Tnb+Tobであり、260msである。よって、図8の例では、パイプライン521が選択される。
なお、補正係数算出部566が選択するパイプラインは、パイプライン演算装置510を構築するプログラムにより、各パイプラインの処理時間の概算値に基づいてあらかじめ決定していてもよい。あるいは、ノード監視部561が取得した、各ノードのノード処理時間Tに基づいて、逐次算出されるものであってもよい。
このようにして、パイプラインが完了するまでの時間が短い所定のパイプライン521に優先的にCPU時間が配分されると、当該パイプライン521中のメッセージの処理が急速に進み、メモリの空き容量が増加する。
なお、図8においては、Qna=3、Qoa=3、PRIna=3×50、PRIoa=3×100、Qnb=3、Qob=3、PRInb=3×200、PRIob=3×50である。
このように実施形態7に係るパイプライン演算装置510では、演算部に与えられたメモリの空き容量が少なくなった場合に、時間割当部564が、パイプラインが完了するまでの時間が短いパイプラインに属するノードの稼働時間の配分を大きくし、速やかに演算部520中のメッセージを減少させる。
実施形態7に係るパイプライン演算装置510では、メモリの空き容量が少なくなった場合に、制御部560が上記特別な処理を行って、演算部520に滞留しているメッセージを減少させることができ、メモリ資源の不足が生じる事態の発生を抑制することができる。
なお、実施形態7では、分岐の無いパイプラインを複数備える場合の例について説明した。一方、例えば図4に示されたような分岐のあるパイプラインは、分岐によってパイプライン中のメッセージ急激に増大する。したがって、上記と同様の動作により、メモリの空き容量が少なくなった場合に、このような分岐のあるパイプラインの稼働時間の配分を相対的に小さくし、メモリの空き容量の回復を図ることも、有効である。
〔実施形態8〕
実施形態8に係るパイプライン演算装置710は、上記各実施形態と同様であるが、ノード監視部が取得したノードの過去からの複数のノード処理時間Tの統計値に基づいて、当該ノードの優先度変数PRIを算出するためのノード処理時間を生成する一例である。
図9は、実施形態8に係るパイプライン演算装置710の構成を示す概略図である。
パイプライン演算装置710は、演算部720、制御部760と、記録部770とを備える。
演算部720は、上記実施形態のパイプライン演算装置と同様であり、各種のパイプラインを内部に設定し得る。
制御部760は、パイプライン演算装置110の制御部160の構成に加えて、更に統計値算出部768を備える。
ノード監視部761は、演算部720の各ノードから取得したノード処理時間Tを記録部770に記録する。
統計値算出部768は、記録部770に記録された過去の各ノードのノード処理時間T及び、ノード監視部761が取得した最新のノード処理時間Tとに基づいて、ノード処理時間の統計値を算出する。統計値としては、平均値、中央値、若しくは最頻値が用いられ得る。あるいは、スミルノフ・グラブス検定等の手法を用いて、異常値を採用しないようにした最新のノード処理時間Tとしてもよい、
優先度変数算出部763は、ノード処理時間については、統計値算出部768が算出した前記統計値を用いる他は、パイプライン演算装置110の優先度変数算出部163と同様にして、優先度変数PRIを算出する。
時間割当部764の動作は、パイプライン演算装置110の時間割当部164と同様である。
実施形態8に係るパイプライン演算装置710によれば、優先度変数PRIを算出のためのノード処理時間として統計値を採用するから、突発的な事由による各ノードにおける極端な稼働時間の割り当ての発生が防止され得る。
〔付記事項〕
上記実施形態において、受信キューの蓄積メッセージ量として、蓄積されたメッセージの数である、蓄積メッセージ数Qが用いられた。
しかしながら、本発明の適用はこれに限られるもので無く、蓄積メッセージ量として、受信キューに蓄積されたメッセージの総サイズ(メモリの使用量)が用いられてもよい。この場合、優先度変数PRIは、蓄積されたメッセージの総サイズとノード処理時間Tとの積で算出され得る。
また、上記実施形態において、優先度変数PRIとして、上述の特定の例について説明された。しかしながら、本発明の適用はこれに限られるもので無く、優先度変数PRIとして、メッセージごとに、その重要度など、メッセージの処理優先度を算出する上で有用と思われる指標に応じた係数を乗じて、その総和を用いて算出してもよい。
更に、本発明のパイプライン演算装置は、演算部における全てのノードが、本発明の制御部160で制御されるものに限られるものではなく、一部のノードは他の方法によって制御されるものであってもよい。
〔ソフトウェアによる実現例〕
パイプライン演算装置110、210、510、610、710の機能ブロック(特に、入力ノード、ロジックノード、出力ノード、受信キュー、ノード監視部、キュー監視部、優先度変数算出部、時間割当部、合流監視部、補正係数算出部、メモリ監視部、統計値算出部)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、ソフトウェアによって実現してもよい。
後者の場合、パイプライン演算装置110、210、510、610、710は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば1つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。
上記プロセッサとしては、例えばCPU(Central Processing Unit)を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ROM(Read Only Memory)等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。
また、上記プログラムを展開するRAM(Random Access Memory)などを更に備えていてもよい。
また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。
なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
110、210、510、610、710 パイプライン演算装置
120、220、520、620、720 演算部
121、321、421、521、522 パイプライン
130、330、430、432、530、532、Input 入力ノード
140、340、440、442、444、540、542、Logic ロジックノード
150、350、352、450、550、552、Output 出力ノード
141、151、341、351、353、441、443、445、451、541、543、551、553 受信キュー
160、260、560、660、760 制御部
161、561、661、761 ノード監視部
162、562、662、762 キュー監視部
163、563、663、763 優先度変数算出部
164、564、664、764 時間割当部
665 合流監視部
566、666 補正係数算出部
567 メモリ監視部
768 統計値算出部
770 記録部
200 プログラマブルロジックコントローラ
201、202 データファイル
203、204 アプリケーション
11 データサーバ
12 データベース
13 クラウドサーバ
14、15 工作機械
T、Ti、Tia、Tib、Tn、Tna、Tnb、Tn2、To、Toa、Tob ノード処理時間
Q、Qi、Qia、Qib、Qn、Qna、Qnb、Qn2,Qo、Qoa、Qob 蓄積メッセージ数
PRI、PRIi、PRIia、PRIib、PRIn、PRIna、PRInb、PRIn2、PRIo、PRIoa、PRIob 優先度変数

Claims (9)

  1. 複数のノードと、複数の受信キューとを有する演算部であって、前記ノードが前記受信キューを介して複数接続されるパイプラインの少なくとも1つで構成される演算部と、
    ノード監視部と、キュー監視部と、優先度変数算出部と、時間割当部とを有する制御部と、を備え、
    前記ノード監視部は、前記ノードから、前記ノードにおける1つのメッセージの処理に要する時間であるノード処理時間を取得し、
    前記キュー監視部は、前記受信キューから、前記受信キューへの蓄積メッセージ量を取得し、
    前記優先度変数算出部は、少なくとも前記ノードの前記ノード処理時間と、当該ノードの前段の受信キューの前記蓄積メッセージ量とに基づいて、当該ノードの優先度変数を算出し、
    前記時間割当部は、前記ノード毎の前記優先度変数に応じ、前記各ノードに対して稼動時間を割り当て
    前記演算部は、合流監視部と、補正係数算出部とを更に備え、
    前記合流監視部は、前記パイプラインのうち、複数の部分パイプラインが合流するパイプラインについて、前記複数の部分パイプラインの合流点の前記ノードよりも上流の、互いに異なる部分パイプラインに属するノードの前段の受信キューの前記蓄積メッセージ量を、前記キュー監視部から取得して、前記互いに異なる部分パイプラインに属するノードの前段の受信キューの前記蓄積メッセージ量の不均衡の度合いを算出し、
    前記補正係数算出部は、前記互いに異なる部分パイプラインのうちの、いずれかの部分パイプラインに属するノードについて、前記不均衡の度合いに応じて補正係数を算出し、
    前記時間割当部は、前記ノードについて前記補正係数が算出された場合には、前記優先度変数に前記補正係数を乗じた値に応じて、前記稼動時間を割り当てる
    パイプライン演算装置。
  2. 前記優先度変数算出部は、前記ノードの前記ノード処理時間と前記蓄積メッセージ量との積を、当該ノードの優先度変数として算出する、請求項1に記載のパイプライン演算装置。
  3. 複数のノードと、複数の受信キューとを有する演算部であって、前記ノードが前記受信キューを介して複数接続されるパイプラインの少なくとも1つで構成される演算部と、
    ノード監視部と、キュー監視部と、優先度変数算出部と、時間割当部とを有する制御部と、を備え、
    前記ノード監視部は、前記ノードから、前記ノードにおける1つのメッセージの処理に要する時間であるノード処理時間を取得し、
    前記キュー監視部は、前記受信キューから、前記受信キューへの蓄積メッセージ量を取得し、
    前記優先度変数算出部は、少なくとも前記ノードの前記ノード処理時間と、当該ノードの前段の受信キューの前記蓄積メッセージ量とに基づいて、当該ノードの優先度変数を算出し、
    前記時間割当部は、前記ノード毎の前記優先度変数に応じ、前記各ノードに対して稼動時間を割り当て、
    前記優先度変数算出部は、前記ノードの前記ノード処理時間と、前記蓄積メッセージ量に前記ノード処理時間に対してより重みを付けるためのパラメータで、前記蓄積メッセージ量を累乗した値と、の積を、当該ノードの優先度変数として算出する、パイプライン演算装置。
  4. 前記演算部は、メモリ監視部と、補正係数算出部とを更に備え、
    前記メモリ監視部は、前記受信キューの蓄積メッセージを保存するメモリの空き容量が所定値よりも小さくなった場合に前記補正係数算出部に通知し、
    前記補正係数算出部は、前記通知を受信した場合に、複数の前記パイプラインのうち、パイプラインでのメッセージの処理が完了するまでの時間がより短い、または、分岐のより少ないパイプラインに属する前記ノードについて、1より大きい補正係数を与え、
    前記時間割当部は、前記ノードについて前記補正係数が与えられた場合には、前記優先度変数に前記補正係数を乗じた値に応じて、前記稼動時間を割り当てる、請求項3に記載のパイプライン演算装置。
  5. 前記蓄積メッセージ量は、前記受信キューへ蓄積されたメッセージ数または蓄積されたメッセージの総サイズである、請求項1から4のいずれか1項に記載のパイプライン演算装置。
  6. 前記優先度変数算出部は、前記ノード監視部が取得した前記ノードの過去からの複数の前記ノード処理時間に基づいて、当該ノードの前記優先度変数を算出するための前記ノード処理時間を生成する、請求項1からのいずれか1項に記載のパイプライン演算装置。
  7. 請求項1から6のいずれか1項に記載のパイプライン演算装置を備えたプログラマブルロジックコントローラ。
  8. ノードが受信キューを介して複数接続される少なくとも1つのパイプラインにより、パイプライン処理を実行する方法であって、
    前記ノードにおける1つのメッセージの処理に要する時間であるノード処理時間を取得するステップと、
    前記受信キューへの蓄積メッセージ量を取得するステップと、
    少なくとも前記ノードの前記ノード処理時間と、当該ノードの前段の受信キューの前記蓄積メッセージ量とに基づいて、当該ノードの優先度変数を算出するステップと、
    前記ノード毎の前記優先度変数に応じ、前記各ノードに対して稼動時間を割り当てるステップと、
    前記パイプラインのうち、複数の部分パイプラインが合流するパイプラインについて、前記複数の部分パイプラインの合流点の前記ノードよりも上流の、互いに異なる部分パイプラインに属するノードの前段の受信キューの前記蓄積メッセージ量を取得して、前記互いに異なる部分パイプラインに属するノードの前段の受信キューの前記蓄積メッセージ量の不均衡の度合いを算出するステップと、
    前記互いに異なる部分パイプラインのうちの、いずれかの部分パイプラインに属するノードについて、前記不均衡の度合いに応じて補正係数を算出するステップと、を備え、
    前記稼動時間を割り当てるステップでは、前記ノードについて前記補正係数が算出された場合には、前記優先度変数に前記補正係数を乗じた値に応じて、前記稼動時間を割り当てる、パイプライン処理の実行方法。
  9. ノードが受信キューを介して複数接続される少なくとも1つのパイプラインにより、パイプライン処理を実行する方法であって、
    前記ノードにおける1つのメッセージの処理に要する時間であるノード処理時間を取得するステップと、
    前記受信キューへの蓄積メッセージ量を取得するステップと、
    少なくとも前記ノードの前記ノード処理時間と、当該ノードの前段の受信キューの前記蓄積メッセージ量とに基づいて、当該ノードの優先度変数を算出するステップと、
    前記ノード毎の前記優先度変数に応じ、前記各ノードに対して稼動時間を割り当てるステップと、を備え、
    前記優先度変数を算出するステップでは、前記ノードの前記ノード処理時間と、前記蓄積メッセージ量に前記ノード処理時間に対してより重みを付けるためのパラメータで、前記蓄積メッセージ量を累乗した値と、の積を、当該ノードの優先度変数として算出する、
    パイプライン処理の実行方法。
JP2019053468A 2019-03-20 2019-03-20 パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法 Active JP7031630B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2019053468A JP7031630B2 (ja) 2019-03-20 2019-03-20 パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法
PCT/JP2020/009930 WO2020189360A1 (ja) 2019-03-20 2020-03-09 パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法
EP20773428.6A EP3944037A4 (en) 2019-03-20 2020-03-09 PIPELINE COMPUTER APPARATUS, PROGRAMMABLE LOGIC CONTROLLER AND METHOD FOR PERFORMING PIPELINE PROCESSING
US17/439,821 US20220179708A1 (en) 2019-03-20 2020-03-09 Pipeline computing apparatus, programmable logic controller, and pipeline processing execution method
CN202080019453.2A CN113614658A (zh) 2019-03-20 2020-03-09 管线运算装置、可编程逻辑控制器及管线处理的执行方法
KR1020217029772A KR20210137472A (ko) 2019-03-20 2020-03-09 파이프라인 연산 장치, 프로그래머블 로직 콘트롤러, 및 파이프라인 처리의 실행 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019053468A JP7031630B2 (ja) 2019-03-20 2019-03-20 パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法

Publications (2)

Publication Number Publication Date
JP2020154830A JP2020154830A (ja) 2020-09-24
JP7031630B2 true JP7031630B2 (ja) 2022-03-08

Family

ID=72520310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019053468A Active JP7031630B2 (ja) 2019-03-20 2019-03-20 パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法

Country Status (6)

Country Link
US (1) US20220179708A1 (ja)
EP (1) EP3944037A4 (ja)
JP (1) JP7031630B2 (ja)
KR (1) KR20210137472A (ja)
CN (1) CN113614658A (ja)
WO (1) WO2020189360A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230418659A1 (en) * 2021-03-17 2023-12-28 Hitachi Astemo, Ltd. Object recognition device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004133577A (ja) 2002-10-09 2004-04-30 Seiko Epson Corp 半導体装置
JP2012073906A (ja) 2010-09-29 2012-04-12 Canon Inc 情報処理装置、及び、プロセッサ間通信制御方法
WO2012169037A1 (ja) 2011-06-09 2012-12-13 三菱電機株式会社 プログラマブルコントローラシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11237993A (ja) * 1998-02-20 1999-08-31 Matsushita Electric Ind Co Ltd タスクの優先度制御方法およびタスクの優先度制御装置
US10140153B2 (en) * 2012-09-12 2018-11-27 Salesforce.Com, Inc. System, method, and medium for facilitating auction-based resource sharing for message queues in an on-demand services environment
US9021493B2 (en) * 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
JP6786814B2 (ja) * 2016-02-17 2020-11-18 日本電気株式会社 情報処理装置、情報処理方法、およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004133577A (ja) 2002-10-09 2004-04-30 Seiko Epson Corp 半導体装置
JP2012073906A (ja) 2010-09-29 2012-04-12 Canon Inc 情報処理装置、及び、プロセッサ間通信制御方法
WO2012169037A1 (ja) 2011-06-09 2012-12-13 三菱電機株式会社 プログラマブルコントローラシステム

Also Published As

Publication number Publication date
JP2020154830A (ja) 2020-09-24
CN113614658A (zh) 2021-11-05
WO2020189360A1 (ja) 2020-09-24
KR20210137472A (ko) 2021-11-17
US20220179708A1 (en) 2022-06-09
EP3944037A4 (en) 2022-11-09
EP3944037A1 (en) 2022-01-26

Similar Documents

Publication Publication Date Title
CN106648904A (zh) 一种流式数据处理自适应速率控制方法
US20100005468A1 (en) Black-box performance control for high-volume throughput-centric systems
CN109981744B (zh) 数据的分发方法、装置、存储介质及电子设备
WO2020004380A1 (ja) 割当装置、システム、タスク割当方法及びプログラム
CN113138860B (zh) 消息队列的管理方法及装置
US11297161B1 (en) Systems and methods for managing an automotive edge computing environment
WO2019239821A1 (ja) 分散処理システムおよび分散処理方法
WO2014127158A1 (en) Application congestion control
CN115794407A (zh) 计算资源分配方法、装置、电子设备及非易失性存储介质
JP7031630B2 (ja) パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法
Xia et al. Feedback based network scheduling of networked control systems
Anton et al. A survey of stability results for redundancy systems
CN111158904A (zh) 一种任务调度方法、装置、服务器及介质
Zheng et al. Dynamic load balancing and pricing in grid computing with communication delay
CN109981487B (zh) 一种数据调度方法、装置、电子设备及可读存储介质
CN112214299A (zh) 多核处理器及其任务调度方法和装置
WO2019167859A1 (ja) 見積り装置および見積り方法
JP7420228B2 (ja) 分散処理システムおよび分散処理方法
Kamoun Performance analysis of a non-preemptive priority queuing system subjected to a correlated Markovian interruption process
Yu et al. Performance modelling and analysis of MapReduce/Hadoop workloads
CN106533730A (zh) Hadoop集群组件指标的采集方法及装置
CN117539647B (zh) 基于边缘计算网关节点属性的任务调度规划方法和系统
CN115344389B (zh) 电磁暂态仿真中计算节点间的通信任务分配方法及装置
Mirtchev et al. A generalized Erlang-C model for the enhanced living environment as a service (ELEaaS)
US20050102413A1 (en) Real-time estimation of event-driven traffic latency distributions when layered on static schedules

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220106

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: 20220125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220207

R150 Certificate of patent or registration of utility model

Ref document number: 7031630

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150