JP7046862B2 - アプリケーション実行装置およびアプリケーション実行方法 - Google Patents

アプリケーション実行装置およびアプリケーション実行方法 Download PDF

Info

Publication number
JP7046862B2
JP7046862B2 JP2019064876A JP2019064876A JP7046862B2 JP 7046862 B2 JP7046862 B2 JP 7046862B2 JP 2019064876 A JP2019064876 A JP 2019064876A JP 2019064876 A JP2019064876 A JP 2019064876A JP 7046862 B2 JP7046862 B2 JP 7046862B2
Authority
JP
Japan
Prior art keywords
unit
data
data acquisition
application
acquisition unit
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
JP2019064876A
Other languages
English (en)
Other versions
JP2020166427A (ja
JP2020166427A5 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019064876A priority Critical patent/JP7046862B2/ja
Priority to US16/809,880 priority patent/US11106395B2/en
Priority to EP20161807.1A priority patent/EP3716061B1/en
Publication of JP2020166427A publication Critical patent/JP2020166427A/ja
Publication of JP2020166427A5 publication Critical patent/JP2020166427A5/ja
Application granted granted Critical
Publication of JP7046862B2 publication Critical patent/JP7046862B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Description

本発明はアプリケーション実行装置およびアプリケーション実行方法に関し、例えばIO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行装置およびアプリケーション実行方法に適用して好適なものである。
従来、リアルタイムシステムにおけるコントローラ上のアプリケーション(リアルタイムアプリケーション)のリアルタイム性を保証するために、専用のRTOS(Real Time Operating System)を採用し、アプリケーションのリアルタイム性を保証している。また、アプリケーションでは、主に、アプリケーションへのデータの入力処理(データ取得)、当該データの演算処理、および演算結果の出力処理(データ活用)を行っている。
しかしながら、RTOSは、リアルタイム性の保証に特化した機能しか持たず、近年のIoT(Internet of Things)に要求されている他の機器との接続性、データ処理のためのAI(Artificial Intelligence)等の技術を実装(運用)できない。そのため、Linux(登録商標)等の汎用OS(Operating System)を採用したコントローラが普及している。
一方、汎用OSは、多様な処理を行うため、リアルタイムアプリケーションのみならず他の機器との接続のためのアプリケーション、データ処理のためのアプリケーション、カーネル内のスレッド等が動作しているため、リアルタイムアプリケーションのリアルタイム性の保証が困難である。
リアルタイム性の保証のためには、アプリケーションの処理が決まった周期内で終了することを意味するデッドラインの保証と、アプリケーションが処理を開始するトリガとなるイベントが発生した時間からアプリケーションが処理を開始した時間までの時間差が予測できることを意味する定刻性の保証とが必要である。
デッドラインの保証のため、リアルタイムシステムにおいては、アプリケーションの設計時にアプリケーションの処理時間をデッドラインに対して所定の値(例えば、20%)以下にする等して、デッドラインより十分小さく設定するのが通常である。それによって、汎用OSを採用するコントローラ上でもデッドラインを満たすことができる。
しかしながら、定刻性の保証は、汎用OSでは、他のアプリケーションの処理との干渉、カーネル内の処理との干渉によって大変困難である。この点、ある処理を主CPUではなく、子プロセッサにオフロードすることで、他の処理との干渉を回避する技術が知られている(特許文献1参照)。
特表2018-513463号公報
しかしながら、特許文献1に記載の技術では、オフロードする処理量がハードウェアに依存してしまい、多様なIO処理を行うリアルタイムアプリケーションには適用が困難である。
汎用OS上で、多様なIO処理を行うリアルタイムアプリケーションのリアルタイム性を保証するために、ハードウェアの要件に依存しないリアルタイムアプリケーションの実行方法を実現することが望まれる。特に、リアルタイムアプリケーションへの入力データを取りこぼさずに取得するためには、定刻性の保証が必須である。
本発明は以上の点を考慮してなされたもので、アプリケーションのリアルタイム性を満たすことができるアプリケーション実行装置を提案しようとするものである。
かかる課題を解決するため本発明においては、IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行装置であって、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始するまでの時間が前記アプリケーションに求められている時間を満たすことができる第1の空間で前記データ取得部を実行する第1の演算装置と、前記データ取得部で取得されたデータを前記データ活用部に連携するデータ連携部と、前記第1の空間とは異なる第2の空間で前記データ活用部を実行する第2の演算装置と、を設けるようにした。
上記構成では、例えば、定刻性を満たす演算装置にデータ取得部が配置され、他の処理との干渉によりデータの取得を開始できない事態を回避しているので、汎用OSが設けられる装置であっても、汎用OSでの性能の揺らぎを抑制でき、アプリケーションの定刻性を満たすことができる。
本発明によれば、アプリケーションのリアルタイム性を満たすことができるアプリケーション実行装置を実現することができる。
第1の実施の形態によるアプリケーション実行装置に係る構成の一例を示す図である。 第1の実施の形態によるアプリケーション処理の構成とリアルタイム性を決める2つのパラメータとを示す図である。 第1の実施の形態によるIO管理テーブルの構成の一例を示す図である。 第1の実施の形態によるモデルソースの構成の一例を示す図である。 第1の実施の形態による関数テーブルの一例を示す図である。 第1の実施の形態によるデータ活用部に係る処理の一例を示す図である。 第1の実施の形態によるデータ連携部に係る処理の一例を示す図である。 第1の実施の形態によるIOドライバ部に係る処理の一例を示す図である。 第1の実施の形態によるユーザIF部に係る処理の一例を示す図である。 第1の実施の形態による生成部に係る処理の一例を示す図である。 第1の実施の形態による関数解析部に係る処理の一例を示す図である。 第1の実施の形態によるデータ取得部に係る処理の一例を示す図である。 第1の実施の形態による管理部に係る処理の一例を示す図である。 第2の実施の形態によるアプリケーション実行装置に係る構成の一例を示す図である。 第2の実施の形態による生成部に係る処理の一例を示す図である。 第2の実施の形態による関数解析部に係る処理の一例を示す図である。 第3の実施の形態による生成部に係る処理の一例を示す図である。 第3の実施の形態によるデッドライン判定処理に係るフローチャートの一例を示す図である。
以下図面について、本発明の一実施の形態を詳述する。本実施の形態は、アプリケーション(例えば、リアルタイムアプリケーション)のリアルタイム性を保証する技術に関するものである。例えば、本実施の形態では、アプリケーションをデータ取得部とデータ活用部とに分け、定刻性が求められるデータ取得部を他の処理との干渉を避けるため、他の処理との干渉が少ない空間(他のハードウェア、カーネルなど)にオフロードする。そして、オフロードされたデータ取得部は、取得したアプリケーションへの入力データをデータ活用部に渡し、データ活用部は、入力のデータの演算処理と演算結果の出力処理とを行う。
なお、以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、CPUを特に区別しないで説明する場合には、「CPU110」と記載し、個々のCPUを区別して説明する場合には、「CPU110-1」、「CPU110-2」のように記載することがある。
(1)第1の実施の形態
図1において、100は全体として第1の実施の形態によるアプリケーション実行装置を示す。
図1は、アプリケーション実行装置100に係る構成の一例を示す図である。
アプリケーション実行装置100は、演算装置101と記憶装置102とを含んで構成される。アプリケーション実行装置100は、ネットワーク装置(NW装置)103を介してネットワーク105に接続し、IO装置104からのデータを取得する。ネットワーク105は、シリアル通信、並列通信、Ethernet(登録商標)等であり、1以上のIO装置104と演算装置101との接続を形成している。IO装置104は、例えば、各種のセンサである。
演算装置101は、各種のプログラムを実行する。演算装置101は、1以上のCPU(Central Processing Unit)110と、1以上のFPGA(Field-Programmable Gate Array)111を備える。演算装置101は、NW装置103を通じて、アプリケーションで用いるデータを提供するIO装置104とネットワーク105で接続されている。なお、演算装置101は、CPU110、FPGA111に限るものではなく、GPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)などの1以上の他の半導体を備えていてもよい。
記憶装置102は、プログラムおよびプログラムの実行に必要なデータを格納する。記憶装置102は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)などである。
次に、アプリケーション実行装置100の機能構成について説明する。
アプリケーション実行装置100は、OS120と、アプリケーション部130と、生成部140と、モデルソース150と、合成ソース160と、データ取得部170とを備える。
OS120は、Linux(登録商標)、WINDOWS(登録商標)のような汎用OSであり、汎用OSが備える機能を有する。アプリケーション部130は、OS120が管理するプロセス単位でOS120によって実行される。生成部140は、モデルソース150から合成ソース160を生成し、生成した合成ソース160をコンパイルしてデータ取得部170を生成する。データ取得部170は、NW装置103を通じてIO装置104からのデータを取得する。データ取得部170は、データ取得の定刻性を保証するため、FPGA111にオフロード(配置)され、FPGA111によって実行される。
より具体的には、OS120は、OS連携部121と、IO管理テーブル122と、IOドライバ部123と、管理部124と、オフロード部125とを備える。アプリケーション部130は、データ活用部131と、データ連携部132と、データ格納部133とを備える。生成部140は、関数テーブル141と、関数解析部142とを備える。
(準備段階:OS120およびアプリケーション部130間のデータの連携)
OS連携部121は、データ取得部170により取得されたデータを格納する。OS連携部121は、アプリケーション部130のデータ連携部132によってアプリケーション部130のデータ格納部133と接続される。そのため、OS連携部121に格納されるデータは、データ格納部133にコピーなしで反映される。
より具体的には、データ連携部132がOS120内のIOドライバ部123のユーザIF部123Aを呼び出すと、IOドライバ部123がOS120の機能であるメモリマップ機能を用い、データ格納部133のメモリをOS120内のメモリの番地にマップする。かかる処理により、データ連携部132とOS連携部121とが接続される。換言するならば、データ格納部133とOS連携部121とは同じメモリを共有している。ただし、アプリケーション実行装置100では、データ格納部133とOS連携部121との接続方法については限定しない。
(準備段階:データ取得部170の生成)
以下では、FPGA111が実行できるデータ取得部170を生成する方法について説明する。
モデルソース150は、アプリケーションの開発者によって作成される。ただし、アプリケーション実行装置100では、作成言語は限定しない。モデルソース150は、3つ構成を有している。アプリケーションの開発者が作成するのは、図4に示すデータ取得処理(記述部430)である。なお、IO装置104からのデータを取得するためのIO装置104とのインターフェース処理(記述部420)、およびデータ活用部131とのインターフェース処理(記述部410)は、モデルソース150に記述されている。その詳細については、後述する。
データ取得部170を生成するために、生成部140は、モデルソース150を入力とし、入力したモデルソース150と関数テーブル141との合成を行い、合成ソース160を生成する。
関数解析部142は、合成ソース160を解析し、合成ソース160を更新する。より具体的には、関数解析部142は、IO装置104とのインターフェース処理の関連関数(後述のGET_IN関数)を読み出し、IO管理テーブル122を用い、NW装置103のメモリを読み出すような処理に置き換える(図11を参照)。また、関数解析部142は、データ活用部131とのインターフェース処理の関連関数(後述のSET_OUT関数)を読み出し、IO管理テーブル122を用い、OS連携部121のメモリへ書き出すような処理に置き換える(図11を参照)。
生成部140は、更新した合成ソース160をFPGA111で実行可能なファイルにコンパイルし、データ取得部170を生成する。生成したデータ取得部170は、OS120内部のオフロード部125によりFPGA111に書き込まれる。
(運用段階)
データ取得部170は、データを取得すると、OS連携部121にデータを格納し、演算装置101に対して割込みをあげる。割込みは、OS120で処理され、その結果、OS120は、OS120内の管理部124を起動する。管理部124は、アプリケーション部130のデータ活用部131を実行するために最優先してスケジュールする。
データ活用部131は、データ取得部170からデータ格納部133に格納されたデータについて演算(分析など)し、演算結果を出力する。ただし、アプリケーション実行装置100では、演算結果の出力先については、限定しない。
図2は、アプリケーションが実行する処理(アプリケーション処理)の構成とリアルタイム性を決める2つのパラメータ(デッドライン201および定刻性202)とを示す図である。例えば、アプリケーションは、データ取得部170と、データ活用部131とを含んで構成される。
アプリケーション処理は、主に、アプリケーションにデータを入力する入力処理と、入力したデータを演算する演算処理と、演算した結果(演算結果)を出力する出力処理とを含んで構成される。
リアルタイム性の保証のためには、アプリケーション処理が決まった周期内で終了することを意味するデッドライン201の保証と、アプリケーション処理を開始するトリガとなるイベントが発生した時間からアプリケーション処理を開始した時間までの時間差が予測できることを意味する定刻性202の保証とが必要である。
本実施の形態では、アプリケーション処理の開始の入力処理をデータ取得部170に担当させ(割り当て)、データ取得部170をFPGA111にオフロードし、処理することで、定刻性を保証する。また、演算処理と出力処理とをデータ活用部131に担当させ、管理部124で、高優先度でデータ活用部131の処理を行うことで、アプリケーション処理のデッドラインを保証する。
図3は、IO管理テーブル122の構成の一例を示す図である。IO管理テーブル122は、IO情報を管理するテーブルである。
OS120は、Linuxと同様に、IO装置104を制御するドライブの管理などを容易にするためにDevice Treeの仕組みを有している。Device Treeは、ハードウェアに係る情報を記述したデータ構造体である。Device Treeは、例えば、演算装置101内のCPU110、FPGA111、演算装置101と接続しているNW装置103の割込み制御用番号(割込み識別子)、OS120とのデータアクセス用のメモリの番地(アドレス範囲)の情報などを提供している。
IOドライバ部123は、OS120の機能を用い、Device Treeから、割込み制御用番号と、データアクセス用のメモリの番地との情報を取得し、それぞれ、IO識別子301と割込み識別子302とアドレス範囲303とに格納する。
IO管理テーブル122に格納された情報は、生成部140によりIOドライバ部123のユーザIF部123Aが用いられて取得される。
図4は、モデルソース150の構成の一例を示す図である。
モデルソース150は、記述部を3つ含んで構成される。より具体的には、データ活用部131にデータを提供するための処理「データ活用部とのインターフェース処理(OUT)」が記述される記述部410と、IO装置104からのデータを取得するNW装置103からデータを取得するための処理「IO装置とのインターフェース処理(IN)」が記述される記述部420と、「IO装置とのインターフェース処理(IN)」を用いて実際にデータ取得し、「データ活用部とのインターフェース処理(OUT)」を用いてデータ活用部131にデータを提供する処理「データ取得処理」を記述する記述部430とから構成されている。
記述部410には、後述する関数テーブル141の関数(SET_OUT関数)の呼出しが記述される。記述部420には、後述する関数テーブル141の関数(GET_IN関数)の呼出しが記述される。データ取得処理の記述部430は、アプリケーションの開発者によって作成される。
なお、IO装置104とのインターフェース処理の関連関数(GET_IN関数)、およびデータ活用部131とのインターフェース処理の関連関数(SET_OUT関数)の具体的な処理内容は、後述するように、生成部140の処理によって置き換える。
図5は、関数テーブル141の一例を示す図である。
関数テーブル141を構成する関数は、例えば、プログラミング言語において予め用意された標準で使用できる関数(built-in関数)であり、モデルソース150で呼び出される処理として参照される。
GET_IN関数510は、モデルソース150の「IO装置とのインターフェース処理(IN)」で呼び出される関数である。SET_OUT関数520は、モデルソース150の「データ活用部とのインターフェース処理(OUT)」で呼び出される関数である。
図6は、データ活用部131に係る処理の一例を示す図である。
ステップS610では、データ活用部131は、データ連携部132に対し、OS連携部121との連携を要求(連携要求)する。なお、ステップS610は、ユーザ(例えば、アプリケーションの開発者、環境構築者、運用者など)の指示を契機に実行される。
ステップS610は、データ活用部131がデータ取得部170からのデータを取得するために、データ取得部170がNW装置103から取得したデータを格納するOS連携部121をデータ活用部131からアクセスできるようにするための準備段階のステップである。なお、ステップS620~ステップS630は、運用段階のステップである。
ステップS620では、データ活用部131は、データ取得処理を行う。例えば、データ活用部131は、OS連携部121からデータ取得する。
ステップS630では、データ活用部131は、ステップS620で取得したデータの演算処理を行う。
ステップS640では、データ活用部131は、ステップS630の演算結果の出力処理を行い、ステップS620に処理を移す。出力先は、AI等のデータ処理を行う別のアプリケーションでもよい。なお、アプリケーション実行装置100では、出力先については限定しない。
図7は、データ連携部132に係る処理の一例を示す図である。かかる処理は、データ連携のための準備段階の処理であり、ステップS610の連携要求を契機に開始する。
ステップS710では、データ連携部132は、OS連携部121と連携するデータ格納部133の初期化(例えば、クリア)を行う。
ステップS720では、データ連携部132は、ユーザIF部123Aを呼び出し、データ格納部133をOS連携部121と接続するための要求(接続要求)をする。なお、呼出しは、後述するステップS920およびステップS930にて処理される。アプリケーション実行装置100では、OS120のアプリケーション側のメモリをOS120内のメモリの番地にマップするメモリマップ機能を用い、データ格納部133とOS連携部121との接続を行う。つまり、データ格納部133とOS連携部121とは、同じメモリを共有することになる。
ステップS730では、データ連携部132は、データ格納部133とOS連携部121との接続の結果(OK、NG等)をデータ活用部131に返す。
図8は、IOドライバ部123に係る処理の一例を示す図である。かかる処理は、データ連携のための準備段階の処理であり、例えば、ユーザの指示を契機に開始される。
ステップS810では、IOドライバ部123は、DEVICE TREEの情報を読み込む。
DEVICE TREEは、OS120が提供するデバイス制御のための割込み、制御、データアクセス用のメモリの番地等の情報を提供する仕組みである。なお、アプリケーション実行装置100では、デバイス制御のための情報の取得先をDEVICE TREEに限定しない。
ステップS820では、IOドライバ部123は、ステップS810で読み込んだDEVICE TREEの情報から、NW装置103の識別子、割込み識別子、アドレス範囲を読み込み、IO管理テーブル122に格納する。
ステップS830では、IOドライバ部123は、ステップS810で読み込んだDEVICE TREEの情報から、FPGA111の識別子、割込み識別子、アドレス範囲を読み込み、IO管理テーブル122に格納する。
ステップS840では、IOドライバ部123は、FPGA111の割込み識別子をもって、FPGA111からの割込みを処理する割込みハンドラーをOS120に登録する。FPGA111にオフロードさせるデータ取得部170でデータの取得が完了したとき、または、定期的なタイマーイベント等をOS120に知らせる手段として割込みを利用する。その割込みをOS120で処理するための割込みハンドラーを登録するステップである。登録された割込みハンドラーの処理時に、後述する管理部124をトリガする。
図9は、ユーザIF部123Aに係る処理の一例を示す図である。ユーザIF部123Aは、接続要求、IO管理テーブル122のIO情報の取得要求などに対する処理を行う(ユーザIFを提供する)。
ステップS910では、ユーザIF部123Aは、データ格納部133とOS連携部121との接続要求であるか否かを判定する。ユーザIF部123Aは、接続要求であると判定した場合、ステップS920に処理を移し、接続要求でないと判定した場合、ステップS940に処理を移す。
ステップS920では、ユーザIF部123Aは、データ格納部133とOS連携部121とを接続する。例えば、ユーザIF部123Aは、OS120のアプリケーション側のメモリの番地をOS120内のメモリの番地にマップするメモリマップ機能を用い、データ格納部133とOS連携部121との接続を行う。なお、マップされたメモリの番地の情報は、データ連携部132に提供される。
ステップS930では、ユーザIF部123Aは、OS連携部121の情報をIO管理テーブル122に格納する。IO識別子301には「OS連携部」、割込み識別子302には、管理部124をトリガする割込み番号を登録する。また、アドレス範囲303には、データ格納部133のメモリをOS120内のメモリの番地にマップしたメモリの番地(アドレスの範囲)を登録する。なお、OS連携部121の情報は、例えば、後述するステップS1140において生成部140によって、モデルソース150の構成の中の「データ活用部とのインターフェース処理(OUT)」の処理を実現するにあたって、利用される。
ステップS940では、ユーザIF部123Aは、ユーザIFの呼び先からのIO識別子の情報と一致する、IO管理テーブル122の該当IOの情報を返す。後述する生成部140の処理において、関数テーブル141の「GET_IN関数」と「SET_OUT関数」を実現するために必要な、NW装置103とOS連携部121とのIO情報の取得要求を処理するステップである。例えば、生成部140からの要求、より具体的には、関数解析部142の要求の際には、IO識別子情報として「NW装置」または「OS連携部」が指定される。
図10は、生成部140に係る処理の一例を示す図である。かかる処理は、データ取得部170の生成のための準備段階の処理であり、例えば、ユーザの指示を契機に開始される。
ステップS1010では、生成部140は、モデルソース150を読み込む。なお、モデルソース150は、アプリケーションの開発者が作成するものであり、図4にモデルソース150の一例を示した。
ステップS1020では、生成部140は、関数テーブル141(built-in関数)を読み込み、モデルソース150と合成し、合成ソース160を生成する。
ステップS1030では、生成部140は、合成ソース更新処理を行う。合成ソース更新処理では、関数解析部142を呼び出し、NW装置103からのデータを取得するためのIO装置104とのインターフェース処理のための処理と、OS連携部121にデータを書き込むためのデータ活用部131とのインターフェース処理とを完成し、合成ソース160を更新する。なお、詳細については、図11を用いて後述する。
ステップS1040では、生成部140は、FPGA111で動作可能な実行ファイルを生成するために、ステップS1030で更新した合成ソース160をコンパイルし、データ取得部170を生成する。アプリケーション実行装置100では、合成ソース160から実行ファイルを生成するコンパイラは限定しない。
ステップS1050では、生成部140は、オフロード部125を呼び出し、データ取得部170をFPGA111へ書き込む。アプリケーション実行装置100では、オフロード部125は、OS120(汎用OS)で提供する機能を利用する。例えば、OS120では、FPGA111が有しているデータ取得部170の書込み領域をユーザアプリケーション側でも読み書き可能にするためにファイルシステムでマップされている。そのため、オフロード部125は、通常のファイル書込みでFPGA111へオフロード可能である。
図11は、関数解析部142に係る処理の一例(合成ソース更新処理)を示す図である。
ステップS1110では、関数解析部142は、合成ソース160からGET_IN関数を検索する。
ステップS1120では、関数解析部142は、IOドライバ部123のユーザIF部123Aを呼び出し、IO管理テーブル122からNW装置103のアドレス範囲を読み出し、読み出したアドレス範囲のアドレスからデータを取得する処理を書き出し、合成ソース160のGET_IN関数(記述部420)を置き換える。IO装置104からのデータをNW装置103が取得し、NW装置103が取得したデータをデータ取得部170が取得するための処理を実現するステップである。なお、IO管理テーブル122からNW装置103のアドレス範囲を読み出しは、「NW装置」の指定を含むIO情報の取得要求により行われる。
ステップS1130では、関数解析部142は、合成ソース160からSET_OUT関数を検索する。
ステップS1140では、関数解析部142は、IOドライバ部123のユーザIF部123Aを呼び出し、IO管理テーブル122からOS連携部121のアドレス範囲を読み出し、読み出したアドレス範囲のアドレスにデータを書き込む処理を書き出し、合成ソース160のSET_OUT関数(記述部410)を置き換える。なお、IO管理テーブル122からOS連携部121のアドレス範囲を読み出しは、「OS連携部」の指定を含むIO情報の取得要求により行われる。
図12は、データ取得部170に係る処理の一例を示す図である。データ取得部170は、オフロード部125によりFPGA111に書き込みされて、FPGA111上で動作する。
ステップS1210では、データ取得部170は、NW装置103のアドレスにデータが格納されたかを確認する。
ステップS1220では、データ取得部170は、NW装置103のアドレスにデータ(入力データ)があるか否かを判定する。データ取得部170は、入力データがあると判定した場合、ステップS1230に処理を移し、入力データがないと判定した場合、ステップS1210に処理を移す。
ステップS1230では、データ取得部170は、NW装置103のアドレスからデータを読み取り、OS連携部121に格納し、OS連携部121と接続されているデータ格納部133のデータを更新する。
ステップS1240では、データ取得部170は、OS120に割込みを発生させ、ステップS840で登録された割込みハンドラーを呼び出し、管理部124を呼び出す。
図13は、管理部124に係る処理の一例を示す図である。かかる処理は、割込みハンドラーにより呼び出されたことを契機に開始する。
ステップS1310では、管理部124は、アプリケーション部130の優先度を高優先度(例えば、最高優先度)に変更する。アプリケーション部130のデータ活用部131の処理を優先させるためのステップである。データ活用部131の処理を優先することによってアプリケーション処理のデッドラインを満たすことができる。
ステップS1320では、管理部124は、アプリケーション部130をスケジュールする。ステップS1310で高優先度化されたアプリケーション部130のジョブは、OS120が有しているスケジュールキューの最初に位置することになる。CPU110は、管理部124のスケジュールキューの先頭のジョブを選択して実行する。アプリケーション部130がスケジュールされると、データ活用部131の処理(例えば、ステップS620~ステップS640)が実行される。
上述した構成では、アプリケーションのデータ取得部が、多様な処理を行う汎用OSを実現するCPUではなく、FPGAで実現されているので、コンピュータにおいて、アプリケーション処理の定刻性を保証することができる。
また、上述した構成では、アプリケーションのデータ活用部のジョブが優先的にCPUで処理されるので、アプリケーション処理のデッドラインを満たすことができる。
本実施の形態によれば、汎用OSを備える装置においてアプリケーションのリアルタイム性を保証することができる。
(2)第2の実施の形態
本実施の形態では、ユーザが指定したオフロード先にデータ取得部170をオフロードする点が第1の実施の形態と主に異なる。本実施の形態では、第1の実施の形態と異なる構成について主に説明する。
図14は、本実施の形態のアプリケーション実行装置1400に係る構成の一例を示す図である。
第1の実施の形態では、データ取得部170をFPGA111にオフロードする構成について説明した。本実施の形態では、オフロード部125にオフロード先を選択可能な機能(FPGA部1410A、カーネル部1410B、CPU部1410C)を取り入れることで、オフロード先として、FPGA111のみならず、CPU110、OS120のカーネル(カーネルモジュール)としてOS120の内部にオフロードが可能である。
例えば、モデルソース150に関数テーブル141のSET_TYPEを記述するための記述部を設け、当該記述部にオフロード先を指定し、関数解析部142において、モデルソース150の記述部410(SET_OUT関数)および記述部420(GET_IN関数)がオフロード先に合わせた処理に変換され、合成ソース160が生成される。生成された合成ソース160がコンパイルされてデータ取得部170が生成され、データ取得部170がオフロード先にオフロードされる。
次に、データ取得部170をOS120のカーネルにオフロードする構成の詳細について説明する。
ここで、本実施の形態において想定するOS120のカーネルは、例えば、LinuxのeBPF(extended Berkeley Packet Filter)と同じ機能を有している。通常、Linuxでは、NW装置103からのデータ取得は、NW処理モジュールにて処理される。eBPFは、データ取得の際に、ユーザ指定の処理をするための仕組みを提供しており、その仕組みを用いてユーザ指定の処理を登録するができる。そのため、OS120のカーネルとしてOS120の内部へオフロードするためには、関数解析部142の処理においてデータ取得部170の処理をeBPFが提供するユーザ処理として変換すればよい。
図15は、生成部140に係る処理(データ取得部170をOS120のカーネルにオフロードするための処理)の一例を示す図である。
ステップS1510では、生成部140は、モデルソース150を読み込む。
ステップS1520では、生成部140は、関数テーブル141(built-in関数)を読み込み、モデルソース150と合成し、合成ソース160を生成する。
ステップS1530では、生成部140は、合成ソース更新処理を行う。合成ソース更新処理では、関数解析部142を呼び出し、NW装置103からのデータを取得するためのIO装置104とのインターフェース処理のための処理と、OS連携部121にデータを書き込むためのデータ活用部131とのインターフェース処理とを完成し、合成ソース160を更新する。なお、詳細については、図16を用いて後述する。
ステップS1540では、生成部140は、OS120のカーネル(内部モジュール)として動作可能な実行ファイルを生成するために、ステップS1530で更新した合成ソース160をコンパイルし、データ取得部170を生成する。アプリケーション実行装置1400では、合成ソース160から実行ファイルを生成するコンパイラは限定しない。
ステップS1550では、生成部140は、オフロード部125のカーネル部1410Bを呼び出し、データ取得部170をOS120のカーネルとしてロードする。アプリケーション実行装置1400では、前述のようにeBPFのモジュールを生成する。eBPFのモジュール用のコンパイラは、Linuxで提供されているものを使用してもよい。
図16は、関数解析部142に係る処理の一例(合成ソース更新処理)を示す図である。
ステップS1610では、関数解析部142は、合成ソース160からGET_IN関数を検索する。
ステップS1620では、関数解析部142は、NW装置103からデータを取得するOS120のカーネルにデータを取得する処理を登録する処理を書き出し、合成ソース160のGET_IN関数(記述部420)を置き換える。IO装置104からのデータをNW装置103が取得し、NW装置103が取得したデータをデータ取得部170が取得するための処理を実現するステップである。
ステップS1630では、関数解析部142は、合成ソース160からSET_OUT関数を検索する。
ステップS1640では、関数解析部142は、IOドライバ部123のユーザIF部123Aを呼び出し、IO管理テーブル122からOS連携部121のアドレス範囲を読み出し、読み出したアドレス範囲のアドレスにデータを書き込む処理を書き出し、合成ソース160のSET_OUT関数(記述部410)を置き換える。
なお、本実施の形態では、データ取得部170をカーネルにオフロードする例を説明したが、データ取得部170をCPU110にオフロードする場合の原理は、FPGA111、OS120のカーネル等にオフロードする場合と同様であるので、その説明については省略する。
上述した構成では、アプリケーション空間(ユーザ空間)ではなく、カーネル空間にデータ取得部170がオフロードされるので、IO装置104からのデータの取得をカーネル空間で行うことができ、空間の移動にかかるオーバヘッドを排除することができる。なお、アプリケーション空間は、アプリケーションに割り当てられる計算リソースであり、実行しているアプリケーションが直接アクセス可能なリソースである。カーネル空間は、カーネルに割り当てられる計算リソースであり、アプリケーションが直接アクセスできないリソースである。
上述した構成では、モデルソース150と関数テーブル141とにより、オフロード先を指定することができ、ユーザは、オフロード先に依存しないデータ取得部170の処理(記述部430)を書くことができる。
本実施の形態によれば、オフロード先を指定することで、指定したオフロード先に対応したデータ取得部が生成されるので、ユーザは、所望のオフロード先にデータ取得部を容易にオフロードすることができる。
(3)第3の実施の形態
本実施の形態では、適切なオフロード先を生成部140が決定する点が第1の実施の形態と主に異なる。本実施の形態では、第1の実施の形態と異なる構成について主に説明する。
図17は、生成部140に係る処理の一例(オフロード先を決定する処理)を示す図である。
ステップS1710では、生成部140は、許容するデッドラインの情報(許容デッドライン情報)を読み込む。例えば、許容デッドライン情報は、アプリケーションの開発者により、モデルソース150に設定される。許容デッドライン情報は、許容するデッドラインの値であってもよいし、範囲であってもよい。
ステップS1720では、生成部140は、デッドライン判定処理を行う。デッドライン判定処理では、アプリケーション処理がデッドラインを満たすか否か(CPU110にデータ取得部170をオフロードしたときにデッドラインを超えるか否か)が判定される。なお、デッドライン判定処理の詳細については、図18を用いて後述する。
ステップS1730では、生成部140は、デッドラインを超えると判定した場合(後述のデッドライン判定の結果がNG)、ステップS1780に処理を移し、デッドラインを超えないと判定した場合(後述のデッドライン判定の結果がOK)、ステップS1740に処理を移す。
ステップS1740では、生成部140は、CPU110のコア数が2以上(複数)であるか否かを判定する。生成部140は、2以上であると判定した場合、ステップS1750に処理を移し、2以上でないと判定した場合、ステップS1770に処理を移す。
ステップS1750では、生成部140は、CPU110が仮想化機能を搭載しているか否かを判定する。生成部140は、CPU110が仮想化機能を搭載していると判定した場合、ステップS1760に処理を移し、CPU110が仮想化機能を搭載していないと判定した場合、ステップS1770に処理を移す。
ステップS1760では、生成部140は、データ取得部170を専用コアにオフロードすると決定し、処理を終了する。例えば、第1のロジカルパーティションにOS120を実行する第1のCPUコアが割り当てられ、第2のロジカルパーティションに第2のCPUコアが割り当てられているとき、生成部140は、第2のCPUコアにオフロードすると決定する。なお、生成部140は、続いて、図10、図15等と同様に、データ取得部170を生成する。例えば、生成部140は、関数解析部142を呼び出し、NW装置103からのデータを取得するためのIO装置104とのインターフェース処理のための処理と、OS連携部121にデータを書き込むためのデータ活用部131とのインターフェース処理とを完成し、合成ソース160を更新し、専用コアで動作可能な実行ファイルを生成するために、更新した合成ソース160をコンパイルし、データ取得部170を生成する。
ステップS1770では、生成部140は、データ取得部170をカーネルにオフロードすると決定し、処理を終了する。なお、生成部140は、続いて、図15の処理を行う。
ステップS1780では、生成部140は、データ取得部170をFPGA111にオフロードすると決定し、処理を終了する。なお、生成部140は、続いて、図10の処理を行う。
図18は、デッドライン判定処理に係るフローチャートの一例を示す図である。
ステップS1810では、生成部140は、合成ソース更新処理後の合成ソース160を参照し、ベーシックブロック(IF文などの分岐がない処理のブロック)単位でステップ数を算出する。
ステップS1820では、生成部140は、性能実績値1801を読み出す。性能実績値1801は、CPU110の性能値の平均、分散などであり、これくらいのステップ数ならこれくらいの時間がかかるといった情報である。なお、性能実績値1801は、CPU110の性能を測るベンチマークツール等により取得され、記憶装置102に登録されているものとする。
ステップS1830では、生成部140は、性能実績値1801およびステップ数からアプリケーション処理にかかる主な処理時間(処理量)を算出する。
ステップS1840では、生成部140は、処理時間にIO処理時間を加算する。
ステップS1850では、生成部140は、処理時間にIO処理時間を加算した時間にハードウェアディレイ値(レイテンシ)を加算し、アプリケーション処理時間を算出する。
ステップS1860では、生成部140は、許容デッドライン情報を参照し、アプリケーション処理時間がデッドラインを満たす否か(例えば、デッドライン≧アプリケーション処理時間であるか否か)を判定し、満たすと判定した場合、OKを判定結果とし、満たさないと判定した場合、NGを判定結果とし、処理を終了する。
本実施の形態によれば、適切なオフロード先が選定されてデータ取得部がオフロードされるので、演算装置の構成が異なるアプリケーション実行装置であっても適切にアプリケーションのリアルタイムを保証することができる。
(4)他の実施の形態
なお上述の実施の形態においては、本発明をアプリケーション実行装置に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上述の実施の形態において、説明の便宜上、XXテーブル、XXファイルを用いて各種のデータを説明したが、データ構造は限定されるものではなく、XX情報などと表現してもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、本発明は、例えば、下記に示す特徴的な構成を有する。
IO装置(例えば、IO装置104)から送信されたデータを取得するデータ取得部(例えば、データ取得部170)と、上記データ取得部により取得されたデータを活用するデータ活用部(例えば、データ活用部131)とを含んで構成されるアプリケーションを実行するアプリケーション実行装置(例えば、アプリケーション実行装置100、アプリケーション実行装置1400)であって、上記アプリケーションを開始するイベントが発生してから上記アプリケーションが開始するまでの時間が上記アプリケーションに求められている時間を満たすことができる第1の空間(例えば、カーネル空間、FPGA111上)で上記データ取得部を実行する第1の演算装置(例えば、CPU110、FPGA111。なお、GPUなどの他の演算装置であってもよい。)と、上記データ取得部で取得されたデータを上記データ活用部に連携するデータ連携部(例えば、データ連携部132)と、上記第1の空間とは異なる第2の空間(例えば、アプリケーション空間)で上記データ活用部を実行する第2の演算装置(例えば、CPU110、FPGA111)と、を備えることを特徴とする。付言するならば、第1の演算装置と第2の演算装置とは、同じ演算装置であってもよいし、異なる演算装置であってもよい。また、上記第2の空間は、例えば、上記データ活用部の処理とは異なる他の処理(例えば、アプリケーション空間で実行される他のアプリケーションの処理、OS120が実行するカーネル内部の処理、IOドライバ部123の処理)との干渉が上記第1の空間よりも多い空間である。
上記構成では、例えば、定刻性を満たす演算装置にデータ取得部が配置され、他の処理との干渉によりデータの取得を開始できない事態を回避しているので、汎用OSが設けられる装置であっても、汎用OSでの性能の揺らぎを抑制でき、アプリケーションの定刻性を満たすことができる。
上記データ活用部とのインターフェース処理を指定する関数(例えば、SET_OUT関数)を示す第1の記述(例えば、記述部410)と、上記IO装置とのインターフェース処理を指定する関数(例えば、GET_IN関数)を示す第2の記述(例えば、記述部420)と、データ取得処理を示す第3の記述(例えば、記述部430)とを含むモデルソース(例えば、モデルソース150)から、上記第1の記述および上記第2の記述を上記第1の演算装置に対応した記述に変換した合成ソース(例えば、合成ソース160)を生成し、生成した合成ソースをコンパイルすることで上記データ取得部を生成する生成部(例えば、生成部140)を備えることを特徴とする。
上記構成では、例えば、データ活用部とのインターフェース処理を指定する関数と、IO装置とのインターフェース処理を指定する関数とを記述すると、第1の記述および第2の記述を第1の演算装置に対応した記述に変換した合成ソースが生成されるので、データ取得部を第1の演算装置に対応させるユーザの作業負担を軽減することができる。
なお、生成されたデータ取得部については、オフロード部(例えば、オフロード部125)により第1の演算装置にオフロードされてもよいし、ユーザにより手動で第1の演算装置に設けられてもよい。
上記データ活用部とのインターフェース処理を指定する関数を示す第1の記述と、上記IO装置とのインターフェース処理を指定する関数を示す第2の記述と、データ取得処理を示す第3の記述と、上記データ取得部を実行する演算装置を指定する第4の記述(例えば、SET_TYPEを記述するための記述部)を含むモデルソースから、上記第1の記述および上記第2の記述を上記第4の記述で指定された演算装置に対応した記述に変換した合成ソースを生成し、生成した合成ソースをコンパイルすることで上記データ取得部を生成する生成部(例えば、生成部140)を備える、ことを特徴とする。
上記構成では、例えば、演算装置を指定する第4の記述をすると、指定した演算装置に対応した合成ソースが生成されるので、データ取得部を指定した演算装置に対応させるユーザの作業負担を軽減することができる。
モデルソースから上記データ取得部を生成する生成部(例えば、生成部140)を備え、上記第2の演算装置は、上記第1の演算装置(例えば、CPU110-2、FPGA111)とは異なる演算装置(例えば、CPU110-1)であり、上記生成部は、上記データ取得部を上記第2の演算装置で実行可能であるか否かを判定し、上記第2の演算装置で上記データ取得部を実行できないと判定した場合、上記モデルソースを上記第1の演算装置に対応するように変更して上記データ取得部を生成する、ことを特徴とする。
上記構成では、例えば、第2の演算装置でデータ取得部を実行できない場合に、第1の演算装置で実行するようにしたので、第1の演算装置を無駄に利用する事態を低減することができる。
上記第2の演算装置には、オペレーティングシステム(例えば、OS120)が設けられ、上記生成部は、上記第2の演算装置で上記データ取得部を実行できると判定した場合、上記第2の演算装置が複数のコアを有しているか否かを判定し、上記第2の演算装置が複数のコアを有していないと判定した場合、上記モデルソースを上記オペレーティングシステムのカーネルに対応するように変更して上記データ取得部を生成する、ことを特徴とする。
上記構成によれば、例えば、第2の演算装置として、複数のコアを有していない演算装置を採用することができる。
上記生成部は、上記第2の演算装置が複数のコアを有していると判定した場合、上記データ取得部に専用のコアが設けられているか否かを判定し、専用のコアが設けられていると判定した場合、上記モデルソースを上記専用のコアに対応するように変更して上記データ取得部を生成する、ことを特徴とする。
上記構成では、例えば、第2の演算装置として、複数のコアを有している演算装置を採用することができる。
上記第2の空間で行われる処理のスケジュールを管理する管理部(例えば、管理部124)を備え、上記管理部は、上記データ活用部の処理を優先してスケジュールする、ことを特徴とする。
上記構成では、例えば、データ活用部の処理が優先して実行されるので、データ活用部の揺らぎを吸収(処理の開始までの時間を短縮)できるので、アプリケーションのデッドラインを満たさなくなる事態を回避できるようになる。
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
上記構成によれば、アプリケーションのリアルタイム性を満たすことができる。
100……アプリケーション実行装置、101……演算装置、131……データ活用部、132……データ連携部、170……データ取得部。

Claims (9)

  1. IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行装置であって、
    前記アプリケーションに求められている時間内に、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始できる、第1のハードウェアまたは第1のカーネルに割り当てられた第1の空間で、前記データ取得部を実行するように構成されている第1の演算装置と、
    前記データ取得部で取得されたデータを前記データ活用部に連携するデータ連携部と、
    前記第1の空間とは異なる空間であって、前記第1のハードウェアまたは前記第1のカーネルとは異なる第2のハードウェアまたは第2のカーネルに割り当てられた空間である第2の空間で、前記データ活用部を実行するように構成されている第2の演算装置と
    前記データ活用部とのインターフェース処理を指定する関数を示す第1の記述と、前記IO装置とのインターフェース処理を指定する関数を示す第2の記述と、データ取得処理を示す第3の記述とを含むモデルソースから、前記第1の記述および前記第2の記述を前記第1の演算装置に対応した記述に変換した合成ソースを生成し、生成した合成ソースをコンパイルすることで前記データ取得部を生成するように構成されている生成部と、
    を備えるアプリケーション実行装置。
  2. 前記第2の空間で行われる処理のスケジュールを管理する管理部を備え、
    前記管理部は、前記データ活用部の処理を優先してスケジュールする、
    請求項1に記載のアプリケーション実行装置。
  3. IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行装置であって、
    前記アプリケーションに求められている時間内に、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始できる、第1のハードウェアまたは第1のカーネルに割り当てられた第1の空間で、前記データ取得部を実行するように構成されている第1の演算装置と、
    前記データ取得部で取得されたデータを前記データ活用部に連携するデータ連携部と、
    前記第1の空間とは異なる空間であって、前記第1のハードウェアまたは前記第1のカーネルとは異なる第2のハードウェアまたは第2のカーネルに割り当てられた空間である第2の空間で、前記データ活用部を実行するように構成されている第2の演算装置と、
    記データ活用部とのインターフェース処理を指定する関数を示す第1の記述と、前記IO装置とのインターフェース処理を指定する関数を示す第2の記述と、データ取得処理を示す第3の記述と、前記データ取得部を実行する演算装置を指定する第4の記述を含むモデルソースから、前記第1の記述および前記第2の記述を前記第4の記述で指定された演算装置に対応した記述に変換した合成ソースを生成し、生成した合成ソースをコンパイルすることで前記データ取得部を生成するように構成されている生成部と、
    を備えるアプリケーション実行装置。
  4. IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行装置であって、
    前記アプリケーションに求められている時間内に、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始できる、第1のハードウェアまたは第1のカーネルに割り当てられた第1の空間で、前記データ取得部を実行するように構成されている第1の演算装置と、
    前記データ取得部で取得されたデータを前記データ活用部に連携するデータ連携部と、
    前記第1の空間とは異なる空間であって、前記第1のハードウェアまたは前記第1のカーネルとは異なる第2のハードウェアまたは第2のカーネルに割り当てられた空間である第2の空間で、前記データ活用部を実行するように構成されている第2の演算装置と、
    デルソースから前記データ取得部を生成する生成部と、を備え、
    前記第2の演算装置は、前記第1の演算装置とは異なる演算装置であり、
    前記生成部は、前記データ取得部を前記第2の演算装置で実行可能であるか否かを判定し、前記第2の演算装置で前記データ取得部を実行できないと判定した場合、前記モデルソースを前記第1の演算装置に対応するように変更して前記データ取得部を生成する、
    プリケーション実行装置。
  5. 前記第2の演算装置には、オペレーティングシステムが設けられ、
    前記生成部は、前記第2の演算装置で前記データ取得部を実行できると判定した場合、前記第2の演算装置が複数のコアを有しているか否かを判定し、前記第2の演算装置が複数のコアを有していないと判定した場合、前記モデルソースを前記オペレーティングシステムのカーネルに対応するように変更して前記データ取得部を生成する、
    求項4に記載のアプリケーション実行装置。
  6. 前記生成部は、前記第2の演算装置が複数のコアを有していると判定した場合、前記データ取得部に専用のコアが設けられているか否かを判定し、専用のコアが設けられていると判定した場合、前記モデルソースを前記専用のコアに対応するように変更して前記データ取得部を生成する、
    求項5に記載のアプリケーション実行装置。
  7. IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行方法であって、
    第1の演算装置が、前記アプリケーションに求められている時間内に、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始できる、第1のハードウェアまたは第1のカーネルに割り当てられた第1の空間で、前記データ取得部を実行する第1のステップと、
    データ連携部が、前記データ取得部で取得されたデータを前記データ活用部に連携する第2のステップと、
    第2の演算装置が、前記第1の空間とは異なる空間であって、前記第1のハードウェアまたは前記第1のカーネルとは異なる第2のハードウェアまたは第2のカーネルに割り当てられた空間である第2の空間で、前記データ活用部を実行する第3のステップと、
    生成部が、前記データ活用部とのインターフェース処理を指定する関数を示す第1の記述と、前記IO装置とのインターフェース処理を指定する関数を示す第2の記述と、データ取得処理を示す第3の記述とを含むモデルソースから、前記第1の記述および前記第2の記述を前記第1の演算装置に対応した記述に変換した合成ソースを生成し、生成した合成ソースをコンパイルすることで前記データ取得部を生成する第4のステップと、
    を備えるアプリケーション実行方法。
  8. IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行方法であって、
    第1の演算装置が、前記アプリケーションに求められている時間内に、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始できる、第1のハードウェアまたは第1のカーネルに割り当てられた第1の空間で、前記データ取得部を実行する第1のステップと、
    データ連携部が、前記データ取得部で取得されたデータを前記データ活用部に連携する第2のステップと、
    第2の演算装置が、前記第1の空間とは異なる空間であって、前記第1のハードウェアまたは前記第1のカーネルとは異なる第2のハードウェアまたは第2のカーネルに割り当てられた空間である第2の空間で、前記データ活用部を実行する第3のステップと、
    生成部が、前記データ活用部とのインターフェース処理を指定する関数を示す第1の記述と、前記IO装置とのインターフェース処理を指定する関数を示す第2の記述と、データ取得処理を示す第3の記述と、前記データ取得部を実行する演算装置を指定する第4の記述を含むモデルソースから、前記第1の記述および前記第2の記述を前記第4の記述で指定された演算装置に対応した記述に変換した合成ソースを生成し、生成した合成ソースをコンパイルすることで前記データ取得部を生成する第4のステップと、
    を備えるアプリケーション実行方法。
  9. IO装置から送信されたデータを取得するデータ取得部と、前記データ取得部により取得されたデータを活用するデータ活用部とを含んで構成されるアプリケーションを実行するアプリケーション実行方法であって、
    第1の演算装置が、前記アプリケーションに求められている時間内に、前記アプリケーションを開始するイベントが発生してから前記アプリケーションが開始できる、第1のハードウェアまたは第1のカーネルに割り当てられた第1の空間で、前記データ取得部を実行する第1のステップと、
    データ連携部が、前記データ取得部で取得されたデータを前記データ活用部に連携する第2のステップと、
    第2の演算装置が、前記第1の空間とは異なる空間であって、前記第1のハードウェアまたは前記第1のカーネルとは異なる第2のハードウェアまたは第2のカーネルに割り当てられた空間である第2の空間で、前記データ活用部を実行する第3のステップと、
    生成部が、モデルソースから前記データ取得部を生成する第4のステップと、を備え、
    前記第2の演算装置は、前記第1の演算装置とは異なる演算装置であり、
    前記生成部は、前記データ取得部を前記第2の演算装置で実行可能であるか否かを判定し、前記第2の演算装置で前記データ取得部を実行できないと判定した場合、前記モデルソースを前記第1の演算装置に対応するように変更して前記データ取得部を生成する、
    を備えるアプリケーション実行方法。
JP2019064876A 2019-03-28 2019-03-28 アプリケーション実行装置およびアプリケーション実行方法 Active JP7046862B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019064876A JP7046862B2 (ja) 2019-03-28 2019-03-28 アプリケーション実行装置およびアプリケーション実行方法
US16/809,880 US11106395B2 (en) 2019-03-28 2020-03-05 Application execution apparatus and application execution method
EP20161807.1A EP3716061B1 (en) 2019-03-28 2020-03-09 Application execution apparatus and application execution method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019064876A JP7046862B2 (ja) 2019-03-28 2019-03-28 アプリケーション実行装置およびアプリケーション実行方法

Publications (3)

Publication Number Publication Date
JP2020166427A JP2020166427A (ja) 2020-10-08
JP2020166427A5 JP2020166427A5 (ja) 2021-11-11
JP7046862B2 true JP7046862B2 (ja) 2022-04-04

Family

ID=69784170

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019064876A Active JP7046862B2 (ja) 2019-03-28 2019-03-28 アプリケーション実行装置およびアプリケーション実行方法

Country Status (3)

Country Link
US (1) US11106395B2 (ja)
EP (1) EP3716061B1 (ja)
JP (1) JP7046862B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023007618A1 (ja) 2021-07-28 2023-02-02 三菱電機株式会社 情報処理装置
US20240163184A1 (en) * 2022-11-16 2024-05-16 Red Hat, Inc. Lightweight container networking solution for resource constrained devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070265A (ja) 2007-09-14 2009-04-02 Ricoh Co Ltd 情報処理装置
JP2016001417A (ja) 2014-06-12 2016-01-07 株式会社日立製作所 計算機システム
JP2018534651A (ja) 2015-08-27 2018-11-22 フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. エッジインテリジェンスプラットフォーム、およびインターネット・オブ・シングス・センサストリームシステム
WO2019026139A1 (ja) 2017-07-31 2019-02-07 三菱電機株式会社 情報処理装置および情報処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5441626B2 (ja) * 2009-11-06 2014-03-12 日立オートモティブシステムズ株式会社 車載用マルチアプリ実行装置
TWI439925B (zh) 2011-12-01 2014-06-01 Inst Information Industry 內嵌式系統及其執行緒與緩衝區管理方法
US9626227B2 (en) 2015-03-27 2017-04-18 Intel Corporation Technologies for offloading and on-loading data for processor/coprocessor arrangements

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070265A (ja) 2007-09-14 2009-04-02 Ricoh Co Ltd 情報処理装置
JP2016001417A (ja) 2014-06-12 2016-01-07 株式会社日立製作所 計算機システム
JP2018534651A (ja) 2015-08-27 2018-11-22 フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. エッジインテリジェンスプラットフォーム、およびインターネット・オブ・シングス・センサストリームシステム
WO2019026139A1 (ja) 2017-07-31 2019-02-07 三菱電機株式会社 情報処理装置および情報処理方法

Also Published As

Publication number Publication date
JP2020166427A (ja) 2020-10-08
EP3716061B1 (en) 2024-05-01
US11106395B2 (en) 2021-08-31
US20200310693A1 (en) 2020-10-01
EP3716061A1 (en) 2020-09-30

Similar Documents

Publication Publication Date Title
CN109814986B (zh) 任务并行处理方法、存储介质、计算机设备、装置和系统
WO2016112701A1 (zh) 异构多核可重构计算平台上任务调度的方法和装置
TWI525540B (zh) 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯
WO2014115613A1 (ja) 並列性の抽出方法及びプログラムの作成方法
KR20140080434A (ko) 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법
US11082364B2 (en) Network interface device
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
JP7046862B2 (ja) アプリケーション実行装置およびアプリケーション実行方法
EP3436944B1 (en) Fast transfer of workload between multiple processors
JP5659780B2 (ja) コンピュータ、コア割り当て方法およびプログラム
JP4873423B2 (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
JPWO2012105593A1 (ja) データフローグラフ処理装置、データフローグラフ処理方法およびデータフローグラフ処理プログラム
CN112363752B (zh) 基于可配置的操作系统的芯片验证方法及其设备
US12050927B2 (en) Techniques for concurrently supporting virtual NUMA and CPU/memory hot-add in a virtual machine
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
KR101640231B1 (ko) 자동 분산병렬 처리 하둡 시스템의 지원을 위한 클라우드 구동 방법
CN115033356A (zh) 一种基于异构可重构的动态资源调度方法及系统
WO2024109312A1 (zh) 任务调度执行方法、任务调度执行指令的生成方法及装置
WO2016008317A1 (zh) 数据处理方法和中心节点
CN111857972A (zh) 虚拟化网络功能vnf的部署方法、部署装置、部署设备
US20240061718A1 (en) Method and system for managing hybrid spark cluster for efficient spark job execution
Yoshinaka et al. Model-based development considering self-driving systems for many-core processors
Stamelos et al. A novel framework for the seamless integration of fpga accelerators with big data analytics frameworks in heterogeneous data centers
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210310

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220323

R150 Certificate of patent or registration of utility model

Ref document number: 7046862

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150