JP2017161954A - Data processing system, data processing method, and program - Google Patents
Data processing system, data processing method, and program Download PDFInfo
- Publication number
- JP2017161954A JP2017161954A JP2014155806A JP2014155806A JP2017161954A JP 2017161954 A JP2017161954 A JP 2017161954A JP 2014155806 A JP2014155806 A JP 2014155806A JP 2014155806 A JP2014155806 A JP 2014155806A JP 2017161954 A JP2017161954 A JP 2017161954A
- Authority
- JP
- Japan
- Prior art keywords
- node
- cpu
- application
- processing
- data processing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
本発明は、複数のCPU(Central Processing Unit)コアを有するマルチコアプロセッサに関する。 The present invention relates to a multi-core processor having a plurality of CPU (Central Processing Unit) cores.
複数のCPUコアを有するマルチコアプロセッサを用いて処理時間を短くする等、効率よく処理を実行するため、ソフトウェア処理モジュールを実行する際に、処理専用のCPUコアに割り当て実行させる方法(特許文献1)や、特定の処理プロセスを実行させるCPUコアを割り当てる方法(特許文献2)が示されている。 In order to execute processing efficiently, such as shortening processing time using a multi-core processor having a plurality of CPU cores, when executing a software processing module, a method for assigning and executing a processing-only CPU core (Patent Document 1) In addition, a method of assigning a CPU core for executing a specific processing process (Patent Document 2) is shown.
これら従来技術ではマルチコア上で複数の独立したOSを定常的に動作させるため、各OSがそれぞれメモリを消費し効率が悪い。
またマルチコアでアプリケーションプログラム(以下、単にアプリケーションともいう)を複数のCPUで動的に負荷を分散して処理を行う対象型マルチプロセッサ(SMP)を用いるシステムでは使用可能なコア数が多いほど並列度が高く、スループットが向上しやすいのに対し、マルチコアで複数の独立したOSを動作させた場合には並列動作が限定されるという課題がある。
換言すると、同じCPUがアプリケーションプログラムとデバイスドライバの双方を実行する構成の場合は、並列度が低く、スループットが低いという課題がある。
In these conventional techniques, since a plurality of independent OSs are steadily operated on a multi-core, each OS consumes a memory and is inefficient.
Furthermore, in a system using a target multiprocessor (SMP) that dynamically processes application programs (hereinafter simply referred to as applications) with multiple CPUs by dynamically distributing the load, the parallelism increases as the number of cores that can be used increases. However, there is a problem that parallel operation is limited when a plurality of independent OSs are operated with a multi-core.
In other words, when the same CPU executes both the application program and the device driver, there is a problem that the degree of parallelism is low and the throughput is low.
この発明は上記のような課題を解決することを主な目的としており、マルチコアを構成するCPUを同時並行に使用し、処理能力を向上させることを主な目的とする。 The main object of the present invention is to solve the above-described problems, and it is a main object of the present invention to improve the processing capability by simultaneously using the CPUs constituting the multi-core.
本発明に係るデータ処理システムは、
複数のCPU(Central Processing Unit)が含まれるデータ処理システムであって、
前記複数のCPUの中から、アプリケーションプログラムを実行させる専用のCPUをアプリケーションCPUとして選択し、デバイスドライバを実行させる専用のCPUをデバイスドライバCPUとして選択するCPU選択部を有することを特徴とする。
A data processing system according to the present invention includes:
A data processing system including a plurality of CPUs (Central Processing Units),
A CPU selection unit that selects a dedicated CPU that executes an application program from among the plurality of CPUs as an application CPU and selects a dedicated CPU that executes a device driver as a device driver CPU.
本発明によれば、アプリケーションプログラムを実行するCPUとデバイスドライバを実行するCPUとを別のCPUとすることができ、デバイスドライバの実行を含めて、複数のCPUを同時並行に使用させることができ、処理能力を向上させることができる。 According to the present invention, a CPU that executes an application program and a CPU that executes a device driver can be separate CPUs, and a plurality of CPUs can be used simultaneously in parallel, including the execution of a device driver. , Processing capacity can be improved.
実施の形態1.
図1は、本実施の形態に係る制御装置(データ処理システムの例)のハードウェア構成例を示す。
図1において、マルチコアSoC(System on Chip)100は、CPUコア101を複数個搭載するマルチコアプロセッサであり、IO(Input Output)インタフェースやメモリコントローラを含む。
マルチコアSoC100には、IOデバイス111、IOデバイス112、ROM(Read Only Memory)121及びRAM(Random Access Memory)122が接続されている。
IOデバイス111及びIOデバイス112は、例えば、ディスプレイ装置等の出力装置、マウス、キーボード、スイッチ等の入力装置である。
タッチパネル式のディスプレイであってもよい。
FIG. 1 shows a hardware configuration example of a control device (an example of a data processing system) according to the present embodiment.
In FIG. 1, a multi-core SoC (System on Chip) 100 is a multi-core processor having a plurality of
An
The
A touch panel display may be used.
図2は本実施の形態に係るマルチコアSoC100におけるノード構成例を示す。
マスタノード201は、システム起動時にシステム全体の初期設定やシステム全体を管理する。
アプリケーションノード202及びアプリケーションノード203は、アプリケーションプログラムを実行する。
連携ノード204及び連携ノード205は、アプリケーションノード202、203と後述のIOノード206、207との間の伝達制御を行う。
IOノード206及びIOノード207は、IOデバイス111及びIOデバイス112を制御する。
IOノード206はIOデバイス111の制御を専門に行い、IOノード207はIOデバイス112の制御を専門に行う。
予備CPUコア208は、マルチコアSoC100を構成するCPUコア101のうち、前述のどのノードにも割り当てられていないCPUコアである。
FIG. 2 shows a node configuration example in the
The
The
The
The
The
The
図3は、本実施の形態に係るノードの構成例を示す。
マスタノード201、アプリケーションノード202、アプリケーションノード203、連携ノード204、連携ノード205、IOノード206及びIOノード207は、それぞれ、CPUコア101とソフトウェア303で構成される。
CPUコア101は、ソフトウェア303を実行する。
ソフトウェア303は、それぞれのノードの機能に対応するソフトウェアである。
マスタノード201、アプリケーションノード202、アプリケーションノード203、連携ノード204、連携ノード205、IOノード206及びIOノード207を区別する必要がない場合は、これらを総称してノード301という。
ソフトウェア303は、ROM121に記憶されており、RAM122にロードされ、RAM122にロードされたソフトウェア303の少なくとも一部をCPUコア101が読み込んで実行することにより、ノード301の機能(マスタノード201としての機能、アプリケーションノード202としての機能等)が実現される。
各ノードにおけるソフトウェアの詳細は後述する。
FIG. 3 shows a configuration example of a node according to the present embodiment.
The
The
The
When it is not necessary to distinguish the
The
Details of the software in each node will be described later.
図4は、本実施の形態に係るアプリケーションノード202の構成例を示す。
OS(Operating System)411は、アプリケーションノード202で動作するアプリケーションプログラム414の実行管理を行う。
アプリケーションプログラム414は、CPUコア101により実行されるアプリケーションプログラムである。
1つのアプリケーションノード202に複数のアプリケーションプログラム414が存在してもよい。
IO制御インタフェースプログラム413は、IO制御のインタフェースとして機能する。
ノード通信制御プログラム412は、ノード間の要求の伝達及び通知を行う。
OS411、ノード通信制御プログラム412、IO制御インタフェースプログラム413及びアプリケーションプログラム414が、アプリケーションノード202におけるソフトウェア303(図3)である。
アプリケーションノード202に含まれるCPUコア101は、複数のCPUコアの中からアプリケーションプログラム414の実行用に選択されたれたCPUコアであり、アプリケーションCPUの例に相当する。
FIG. 4 shows a configuration example of the
An OS (Operating System) 411 performs execution management of the
The
A plurality of
The IO
The node
The OS 411, the node
The
図2のアプリケーションノード203は、アプリケーションノード202と同じ構成を持ち、処理内容が異なるアプリケーションプログラムを実行する。
つまり、アプリケーションノード203は、図4と同じ構成で、アプリケーションプログラム414の種類がアプリケーションノード202とは異なる。
また、アプリケーションノード202とアプリケーションノード203で動作するOS411は、互いに異なるOSであってもよい。
アプリケーションノード202のOS411とアプリケーションノード203のOS411が異なっていても、アプリケーションノード202及びアプリケーションノード203は、それぞれ、2つのOSで共通するフォーマットでIOデバイス111、112へのリクエスト(READリクエスト、WRITEリクエスト、IO Controlリクエスト)を連携ノード204、205を介してIOノード206、207に発行する。
IOノード206、207は、アプリケーションノード202、203のOS411が異なっていても、両アプリケーションノードからのリクエストを同じように処理することができる。
The
That is, the
Further, the
Even if the
Even if the
図5は、本実施の形態に係る連携ノード204の構成例を示す。
ノード間データ授受制御プログラム421はアプリケーションノード202及びアプリケーションノード203とIOノード206及びIOノード207の間のデータの受け渡しを管理する。
ノード間データ授受制御プログラム421が、連携ノード204におけるソフトウェア303(図3)である。
連携ノード204に含まれるCPUコア101は、アプリケーションノードのCPUコア101とIOノードのCPUコア101との間でデータ中継を行うCPUコアであり、データ中継CPUの例に相当する。
FIG. 5 shows a configuration example of the
The inter-node data
The inter-node data
The
図2の連携ノード205は、連携ノード204と同じ構成を持つ。
つまり、連携ノード205は、図5と同じ構成を持つ。
The
That is, the
図6は、本実施の形態に係るIOノード206の構成例を示す。
IOノード通信制御プログラム432は、ノード間の要求の伝達及び通知を行う。
IOデバイス制御プログラム431は、IOデバイス111の制御を行う。
IOノード通信制御プログラム432及びIOデバイス制御プログラム431が、IOノード206におけるソフトウェア303(図3)である。
なお、IOノード通信制御プログラム432及びIOデバイス制御プログラム431はデバイスドライバを構成する。
IOノード206に含まれるCPUコア101は、複数のCPUコアの中からデバイスドライバの実行用に選択されたれたCPUコアであり、デバイスドライバCPUの例に相当する。
FIG. 6 shows a configuration example of the
The IO node
The IO
The IO node
The IO node
The
なお、図2におけるIOノード207はIOノード206と同じ構成を持ち、処理内容が異なるIOノード通信制御プログラム432及びIOデバイス制御プログラム431を実行する。
つまり、IOノード207は、図6と同じ構成を持つが、IOデバイス112用のIOノード通信制御プログラム432及びIOデバイス制御プログラム431を実行する。
2 executes the IO node
That is, the IO node 207 has the same configuration as that in FIG. 6, but executes the IO node
図7は、本実施の形態に係るマスタノード201の構成例を示す。
FIG. 7 shows a configuration example of the
起動処理プログラム441は、マルチコアSoC100を構成する各ノードの初期設定を行う。
より具体的には、起動処理プログラム441は、アプリケーションノード202、203を構成するCPUコア101を選択する。
つまり、アプリケーションノード202、203のアプリケーションプログラム414を実行させるCPUコア101を選択する。
そして、選択したCPUコア101にアプリケーションプログラム414の実行を指示する。
更に、起動処理プログラム441は、IOノード206、207を構成するCPUコア101を選択する。
つまり、IOノード206、207のデバイスドライバ(IOノード通信制御プログラム432及びIOデバイス制御プログラム431)を実行させるCPUコア101を選択する。
そして、選択したCPUコア101にデバイスドライバの実行を指示する。
連携ノード204、205についても同様に、起動処理プログラム441は、CPUコア101を選択し、選択したCPUコア101にノード間データ授受制御プログラム421の実行を指示する。
なお、CPUコア101が起動処理プログラム441を実行することにより、CPU選択部及び実行指示部の機能が実現される。
The
More specifically, the
That is, the
Then, the selected
Furthermore, the
That is, the
Then, it instructs the selected
Similarly, for the
The
ノード間通信制御プログラム442は、ノード間の要求の伝達及び通知を行う。
ノード管理プログラム443は、マルチコアSoC100中のノード全体の管理を行う。
より具体的には、ノード管理プログラム443は、ノード301ごとにCPUコア101の負荷状態を検出し、いずれかのノード301のCPUコア101の負荷状態が適正ではない場合に、当該ノード301に対して新たなCPUコア101を選択し、当該ノード301に新たなCPUコア101を追加する。
また、ノード管理プログラム443は、ノード301ごとにCPUコア101の応答状態を検出し、いずれかのノード301のCPUコア101の応答状態が適正ではない場合に、当該ノード301に対して新たなCPUコア101を選択し、当該ノード301に新たなCPUコア101を追加する。
CPUコア101が起動処理プログラム441を実行することにより、負荷状態検出部、応答状態検出部及びCPU選択部の機能が実現される。
The inter-node
The
More specifically, the
Further, the
When the
なお、起動処理プログラム441、ノード間通信制御プログラム442及びノード管理プログラム443が、マスタノード201におけるソフトウェア303(図3)である。
The
図8は、本実施の形態に係るROM121に保存されているデータの例を示す。
ブートローダイメージ511は、システム起動時にマスタノード201が実行する起動処理プログラム441のイメージファイルである。
システム構成情報512は、マルチコアSoC100全体のノード構成を記述した情報である。
アプリケーションノードイメージ513は、アプリケーションノード202、203が実行するOS411、ノード通信制御プログラム412、IO制御インタフェースプログラム413及びアプリケーションプログラム414のイメージファイルである。
連携ノードイメージ514は、連携ノード204、205が実行するノード間データ授受制御プログラム421のイメージファイルである。
IOノードイメージ515は、IOノード206、207が実行するIOノード通信制御プログラム432及びIOデバイス制御プログラム431のイメージファイルである。
FIG. 8 shows an example of data stored in the
The
The
The
The
The
図9は、本実施の形態に係るRAM122の保存領域を示す。
個別メモリ領域521は、ノードごとに個別に割り当てられ、ノードごとに個別に使用されるメモリ領域である。
ノード用ワークメモリ523は、個別メモリ領域521中にある各ノードが個別に使用するメモリ領域である。
共有メモリ領域522は、全ノードに共通に使用されるメモリ領域である。
処理管理テーブル524は、共有メモリ領域522に配置され、ノード間の通信内容を管理するテーブルである。
メモリプール525は、データ転送に使用するメモリ領域を要求に従い各ノードに割り当てるために確保された領域である。
一時バッファ526は、データ転送のために各ノードに一時的に割り当てられるメモリ領域である。
メモリプール525は、処理要求を発行したときに各ノードからマスタノード201に対して要求し、マスタノード201がMMU(メモリマネジメントユニット)等でメモリ空間を管理し、各ノードに一時バッファ526を割り当てる。
FIG. 9 shows a storage area of the
The
The
The shared
The process management table 524 is a table that is arranged in the shared
The
The
The
図10は、図9に示す処理管理テーブル524の構成例を示す。
処理管理テーブル524は、ノード間の通信(トランザクション)を表形式で管理する。
処理番号531の欄には、処理要求を識別するための処理番号が設定される。
要求元ID532の欄には、処理要求の発行元のノードIDが設定される。
要求先ID533の欄には、処理要求の実行対象のノードIDが設定される。
処理コマンド534の欄には、処理要求の内容が設定される。
コマンドパラメータ535の欄には、処理に付随するパラメータが設定される。
バッファオフセット536の欄には、処理に使用するデータの設定先がメモリプール上のオフセット値で設定される。
要求領域サイズ537の欄には、処理に使用するデータの領域サイズが設定される。
処理状態538の欄には、トランザクションの処理状態が設定される。
FIG. 10 shows a configuration example of the process management table 524 shown in FIG.
The process management table 524 manages communication (transactions) between nodes in a table format.
A processing number for identifying a processing request is set in the
In the
In the field of
The content of the processing request is set in the
Parameters associated with the process are set in the
In the column of the buffer offset 536, a setting destination of data used for processing is set as an offset value on the memory pool.
In the field of requested
In the
図11は、図10の処理管理テーブル524の処理コマンド534の欄に設定される処理コマンドの例を示す。
READは、要求先に対してデータ読み出し操作を要求する処理コマンドである。
WRITEは、要求先に対してデータの書き込み操作を要求する処理コマンドである。
IO Controlは、要求先に対してREAD/WRITE以外の操作を要求する際の処理コマンドである。
これらREAD、WRITE、IO Controlは、主にIOノードに対する要求コマンドである。
Health Checkは、マスタノードから各ノードに対して、応答性を確認するための応用要求を発行する際に使用する処理コマンドである。
Add CPUは、ノードに対して予備CPUコア208の追加を要求するために、マスタノード201から発行される処理コマンドである。
Delete CPUは、ノードで使用するCPUの削減を要求するために、マスタノード201から発行される処理コマンドである。
FIG. 11 shows an example of processing commands set in the
READ is a processing command for requesting a data read operation to the request destination.
WRITE is a processing command for requesting a data write operation to the request destination.
IO Control is a processing command for requesting an operation other than READ / WRITE to the request destination.
These READ, WRITE, and IO Control are request commands mainly for the IO node.
Health Check is a processing command used when issuing an application request for confirming responsiveness from the master node to each node.
The Add CPU is a processing command issued from the
The Delete CPU is a processing command issued from the
図12は、図10の処理管理テーブル524の処理状態538の欄に設定される処理状態(各トランザクションにおける処理状態)の例を示す。
「登録中」は、処理管理テーブル524に新規レコードを追加する際に設定される状態である。
「未処理」は、要求元がトランザクション開始時に、処理管理テーブル524に登録した際に設定される状態である。
「処理中」は、要求先が処理を受け付けた際に設定される状態である。
「完了」は、要求元が処理を完了し必要なデータが共有メモリ上に用意できた時の状態である。
「エラー」は、トランザクション実行時にエラーが発生したときに設定される状態である。
この「エラー」は、IOアクセスでエラーが発生した場合や、トランザクション発行時にメモリプールから必要サイズのメモリが確保できない状況で設定される。
FIG. 12 shows an example of the processing state (processing state in each transaction) set in the
“Registering” is a state set when a new record is added to the process management table 524.
“Unprocessed” is a state that is set when the request source is registered in the process management table 524 at the start of the transaction.
“Processing” is a state set when the request destination receives the processing.
“Completed” is a state when the request source completes the processing and necessary data is prepared in the shared memory.
“Error” is a state set when an error occurs during transaction execution.
This “error” is set when an error occurs during IO access or when a memory of the required size cannot be secured from the memory pool when a transaction is issued.
図13は、図10の処理管理テーブル524のコマンドパラメータ535の欄に設定されるコマンドパラメータの例を示す。
「READデータサイズ」は、READ操作の際にIOデバイスから実際に読み出すデータサイズである。
「READデータ保存先」は、READ操作の際に読み出したデータを保存する個別メモリ領域521内のノード用ワークメモリ523の物理アドレスである。
「WRITEデータサイズ」は、WRITE操作の際にIOデバイスへ実際に書き込むデータサイズである。
「WRITEデータ保存先」は、WRITE操作の際に書き込むデータが存際する個別メモリ領域521内のノード用ワークメモリ523の物理アドレスである。
「IO Controlパラメータ」はIO Controlコマンド実行時に必要な拡張パラメータが保管される個別メモリ領域521内のノード用ワークメモリ523の物理アドレスである。
FIG. 13 shows an example of command parameters set in the
The “READ data size” is a data size that is actually read from the IO device during the READ operation.
The “READ data storage destination” is a physical address of the
“WRITE data size” is the data size that is actually written to the IO device during the WRITE operation.
The “WRITE data storage destination” is a physical address of the
The “IO control parameter” is a physical address of the
次に、本実施の形態に係る制御装置の動作例について説明する。
図24は、アプリケーションプログラムがIOアクセスする際の、処理手順を表すシーケンス図である。
図24のシーケンス図を元に以下動作を示す。
なお、以下では、プログラム(例えばアプリケーションプログラム414)が「〜する」という説明を行うが、厳密には、CPUコア101がプログラム(例えばアプリケーションプログラム414)を実行して「〜する」という意味である。
Next, an operation example of the control device according to the present embodiment will be described.
FIG. 24 is a sequence diagram showing a processing procedure when an application program makes an IO access.
The following operation is shown based on the sequence diagram of FIG.
In the following description, the program (for example, the application program 414) will be described as “to do”, but strictly speaking, it means that the
(1)アプリケーションがIOデバイスへREAD操作を行う際の動作
[アプリケーションノード動作]
ここでは、アプリケーションノード202のアプリケーションプログラム414がIOデバイス111に対してREAD操作を行う場合を想定する。
アプリケーションプログラム414がOS411を介してIO制御インタフェースプログラム413にREAD要求を行うと(7001)、要求内容をノード通信制御プログラム412が、処理管理テーブル524のリストに追加し、要求元ID532、要求先ID533、処理コマンド534、コマンドパラメータ535、要求領域サイズ537を設定する。
更に、ノード通信制御プログラム412は、処理番号531に新規追加を示す値を設定(図10ではNEWと表記)する。
また、ノード通信制御プログラム412は、処理状態538に「登録中」を設定し、ノード通信制御プログラム412からマスタノード201へノード間割り込みを発行する(7002)。
(1) Operation when application performs READ operation to IO device [application node operation]
Here, it is assumed that the
When the
Further, the node
The node
[マスタノード動作]
マスタノード201ではノード間通信制御プログラム442が動作し、処理管理テーブル524をスキャンして、処理番号に新規追加を示す値(図10ではNEW)を見つけた場合、要求領域サイズ537で示されるメモリ領域(一時バッファ526)をメモリプール525から確保する(7003)。
一時バッファ526の確保に成功した場合に、ノード間通信制御プログラム442は、一時バッファ526のメモリプール内のアドレスオフセット値(バッファオフセット)を処理管理テーブル524のバッファオフセット536に設定する。
また、ノード間通信制御プログラム442は、処理状態538に「未処理」を設定する。
更に、ノード間通信制御プログラム442は、処理番号531にトランザクションを識別できるトランザクションID値を設定し、マスタノード201から、要求元のアプリケーションノード202にノード間割り込みを発行(7004)するととともに、転送処理を担当する連携ノードを決定し、その連携ノードにノード間割り込みを発行(7005)する。
[Master node operation]
When the
When the
The inter-node
Further, the inter-node
[アプリケーションノード動作]
マスタノード201から割り込み(7004)を受けたアプリケーションノード202は、ノード通信制御プログラム412が処理管理テーブル524の処理番号を取得し、ノード内に保管して、ノード通信制御プログラム412の処理は割り込み待ち(7012)状態となる。
処理番号531に設定するトランザクションID値は、他のトランザクションと識別できるような、固有の値を設定し、UUID(Universally Unique Identifier)を用いてもよい。
また、マスタノード201が転送処理を担当する連携ノードを決定する方法として、複数の連携ノードに順番に処理を与えるラウンドロビン方式や、連携ノードの処理負荷から処理を担当する連携ノードを決定してもよい。
[Application node operation]
Upon receiving an interrupt (7004) from the
The transaction ID value set in the
In addition, as a method for determining a cooperation node in which the
[連携ノード動作]
マスタノード201から割り込み(7005)を受けた連携ノード(たとえば連携ノード204)では、ノード間データ授受制御プログラム421が処理管理テーブル524を参照し、処理状態538に「未処理」があることを見つけると、処理状態538に「処理中」を設定する。
また、ノード間データ授受制御プログラム421は、コマンドパラメータ543に設定されるREADデータサイズを読み出し、処理コマンド534がREADであることを判断する。
そして、ノード間データ授受制御プログラム421は、要求先ID533にあるノードに対してノード間割り込み(7007)で通知する(この場合はIOノード206)。
[Linked node operation]
In a cooperation node (for example, cooperation node 204) that has received an interrupt (7005) from the
Further, the inter-node data
Then, the inter-node data
[IOノード動作]
ノード間割り込み(7007)を受けたIOノード206では、IOノード通信制御プログラム432が処理管理テーブル524を参照し、自ノード宛処理で「処理中」状態のリストに記載される内容を実行する。
ここでの例では処理コマンド534に記載されるREADコマンドと、コマンドパラメータ535に設定される543で示した構造体からREADデータサイズ、バッファオフセット536を読み出し、IOデバイス制御プログラム431を起動し、IOデバイス111に対してREAD制御を行う。
IOデバイス111に対するREAD操作により読み出したデータは、一時バッファ526に保存される。
次に、IOノード通信制御プログラム432は、処理状態538に「完了」を設定してマスタノード201にノード間割り込みを発行する(7008)。
[IO node operation]
In the
In this example, the READ data size and the buffer offset 536 are read from the READ command described in the
Data read by the READ operation on the
Next, the IO node
[マスタノード動作]
ノード間割り込み(7008)を受けたマスタノード201では、ノード間通信制御プログラム442が処理管理テーブル524を参照し、処理状態538が「完了」であるリストを参照し、転送処理を担当する連携ノードを決定して、その連携ノードにノード間割り込みを発行(7009)する。
[Master node operation]
In the
[連携ノード動作]
割込み(7009)を受けた連携ノードでは、ノード間データ授受制御プログラム421が処理管理テーブル524を参照し、処理状態538が「完了」であるリストを確認する。
処理コマンド534がREADの場合、コマンドパラメータ535、バッファオフセット536の情報から、一時バッファ526とノード用ワークメモリ523の間のデータ転送(7010)を行い、データ転送完了後、要求元ID532に設定されているノードに対して割り込みを発行(7011)する。
[Linked node operation]
In the cooperation node that has received the interrupt (7009), the inter-node data
When the
[アプリケーションノード動作]
割込み(7011)を受けたアプリケーションノード202では、ノード通信制御プログラム412が処理管理テーブル524を参照し、保存した処理番号のうち処理状態538が「完了」であるものを見つけ、IO制御インタフェースプログラム413へ結果を通知する。
その後、ノード通信制御プログラム412は、処理管理テーブル524からリストを削除する。
[Application node operation]
In the
Thereafter, the node
(2)アプリケーションがIOデバイスへWRITE操作を行う際の動作
[アプリケーションノード動作]
ここでは、アプリケーションノード202のアプリケーションプログラム414がIOデバイス111に対してWRITE操作を行う場合を想定する。
アプリケーションプログラム414は、OS411を介してIO制御インタフェースプログラム413にWRITE要求を行うと(7001)、ノード通信制御プログラム412が要求内容を処理管理テーブル524のリストに追加し、要求元ID532、要求先ID533、処理コマンド534、コマンドパラメータ535、要求領域サイズ537を設定し、更に処理番号531に新規追加を示す値を設定する。
また、ノード通信制御プログラム412は、処理状態538に「登録中」を設定する。
そして、ノード通信制御プログラム412からマスタノード201へノード間割り込みを発行する(7002)。
(2) Operation when application performs WRITE operation to IO device [application node operation]
Here, it is assumed that the
When the
Further, the node
Then, an inter-node interrupt is issued from the node
[マスタノード動作]
マスタノード201ではノード間通信制御プログラム442が動作し、処理管理テーブル524をスキャンして、処理番号に新規リストを見つけた場合、要求領域サイズ537で示されるメモリ領域(一時バッファ526)をメモリプール525から確保する(7003)。
一時バッファ526の確保に成功した場合に、ノード間通信制御プログラム442は、一時バッファ526のメモリプール内のアドレスオフセット値(バッファオフセット)を処理管理テーブル524のバッファオフセット536に設定する。
また、ノード間通信制御プログラム442は、処理状態538に「未処理」を設定する。
更に、ノード間通信制御プログラム442は、処理番号531にトランザクションを識別できるトランザクションID値を設定し、マスタノード201から、要求元のアプリケーションノード202にノード間割り込みを発行(7004)するととともに、転送処理を担当する連携ノードを決定し、その連携ノードにノード間割り込みを発行(7005)する。
[Master node operation]
In the
When the
The inter-node
Further, the inter-node
[アプリケーションノード動作]
マスタノード201から割り込み(7004)を受けたアプリケーションノード202は、ノード通信制御プログラム412が処理管理テーブル524の処理番号を取得し、ノード内に保管して、ノード通信制御プログラム412の処理は割込み待ち状態へ遷移(7012)する。
[Application node operation]
Upon receiving an interrupt (7004) from the
[連携ノード動作]
マスタノード201から割り込み(7005)を受けた連携ノード(たとえば連携ノード204)では、ノード間データ授受制御プログラム421が処理管理テーブル524を参照し、処理状態538に「未処理」があることを見つけると、処理状態538に「処理中」を設定する。
また、ノード間データ授受制御プログラム421は、コマンドパラメータ543に設定されるWRITEデータサイズを読み出し、処理コマンド534がWRITEであることを判断する。
そして、ノード間データ授受制御プログラム421は、コマンドパラメータ543(図13)の構造体で保存されるWRITEデータ保存先から、バッファオフセット536で示される一時バッファ526の領域へデータをCOPY(7006)する。
そして、ノード間データ授受制御プログラム421は、要求先ID533にあるノードに対してノード間割り込みで処理要求(7007)を行う(この場合はIOノード206)。
[Linked node operation]
In a cooperation node (for example, cooperation node 204) that has received an interrupt (7005) from the
The inter-node data
Then, the inter-node data
Then, the inter-node data
[IOノード動作]
ノード間割り込み(7007)を受けたIOノード206では、IOノード通信制御プログラム432が処理管理テーブル524を参照し、自ノード宛処理で「処理中」状態のリストに記載される内容を実行する。
ここでの例では処理コマンド541(図11)に記載されるWRITEコマンドと、コマンドパラメータ543(図13)の構造体のWRITEデータサイズ、バッファオフセット536を読み出し、IOデバイス制御プログラム431を起動し、IOデバイス111に対してWRITE制御を行う。
IOデバイス111へのWRITE操作を完了すると、IOノード通信制御プログラム432は、処理状態538に「完了」を設定してマスタノード201にノード間割り込みを発行(7008)する。
[IO node operation]
In the
In this example, the WRITE command described in the processing command 541 (FIG. 11), the WRITE data size of the structure of the command parameter 543 (FIG. 13), and the buffer offset 536 are read, the IO
When the WRITE operation to the
[マスタノード動作]
ノード間割り込み(7008)を受けたマスタノード201では、ノード間通信制御プログラム442が処理管理テーブル524を参照し、処理状態538が「完了」であるリストを参照し、転送処理を担当する連携ノードを決定して、その連携ノードにノード間割り込みを発行(7009)する。
[Master node operation]
In the
[連携ノード動作]
割込み(7009)を受けた連携ノードでは、ノード間データ授受制御プログラム421が処理管理テーブル524を参照し、処理状態538が「完了」であるリストを確認する。
処理コマンド534がWRITEである場合、要求元ID532に設定されているノードに対して割り込みを発行(7011)する。
[Linked node operation]
In the cooperation node that has received the interrupt (7009), the inter-node data
If the
[アプリケーションノード動作]
割込み(7011)を受けたアプリケーションノード202では、ノード通信制御プログラム412が処理管理テーブル524を参照し、保存した処理番号のうち処理状態538が「完了」であるものを見つけ、IO制御インタフェースプログラム413へ結果を通知する。
その後、ノード通信制御プログラム412は、処理管理テーブル524からリストを削除する。
[Application node operation]
In the
Thereafter, the node
(3)IOノード間、アプリケーションノード間の転送
以上ではアプリケーションノードとIOノード間のコマンドの手順を示したが、IOノード間や、アプリケーションノード間でも同様の操作を行うことができる。
(3) Transfer between IO Nodes and Application Nodes Although the command procedure between the application nodes and the IO nodes has been described above, the same operation can be performed between IO nodes or between application nodes.
(4)起動処理
制御装置の起動時の動作について説明する。
前述したように、図8はROM121に保存される情報を示している。
制御装置の起動時にはマスタノード201のみが動作し、ブートローダイメージ511を実行する。
ブートローダイメージ511には、マルチコアSoC100に搭載される複数のCPUコア101を、アプリケーションノード202、203、連携ノード204、205、IOノード206、207の何れに構成するかを示すシステム構成情報512(図14)が含まれる。
マスタノード201の起動処理プログラム441は、システム構成情報512を読み出し、各ノードを構成する。
つまり、起動処理プログラム441は、システム構成情報512に従い、アプリケーションノードに対して、該当するCPUコア101を選択し、選択したCPUコア101にアプリケーションプログラム414の実行を指示し、当該CPUコア101にアプリケーションプログラム414を実行させる。
図2の例では、マルチコアSoC100には、アプリケーションノード202とアプリケーションノード203が存在するので、起動処理プログラム441は、アプリケーションノード202及びアプリケーションノード203の各々に対して、CPUコア101を選択し、選択したCPUコア101にアプリケーションプログラム414を実行させる。
また、起動処理プログラム441は、システム構成情報512に従い、連携ノードに対して、該当するCPUコア101を選択し、選択したCPUコア101にノード間データ授受制御プログラム421の実行を指示し、当該CPUコア101にノード間データ授受制御プログラム421を実行させる。
図2の例では、マルチコアSoC100には、連携ノード204と連携ノード205が存在するので、起動処理プログラム441は、連携ノード204及び連携ノード205の各々に対して、CPUコア101を選択し、選択したCPUコア101にノード間データ授受制御プログラム421を実行させる。
また、起動処理プログラム441は、システム構成情報512に従い、IOノードに対して、該当するCPUコア101を選択し、選択したCPUコア101にデバイスドライバの実行を指示し、当該CPUコア101にデバイスドライバを実行させる。
図2の例では、マルチコアSoC100には、IOノード206とIOノード207が存在するので、起動処理プログラム441は、IOノード206及びIOノード207の各々に対して、CPUコア101を選択し、選択したCPUコア101にデバイスドライバを実行させる。
(4) Start-up process The operation at the time of start-up of the control device will be described.
As described above, FIG. 8 shows information stored in the
Only the
In the
The
In other words, the
In the example of FIG. 2, since the
Further, the
In the example of FIG. 2, since the
Further, the
In the example of FIG. 2, since the
アプリケーションプログラム414の実行が指示されたCPUコア101(アプリケーションノードの役割を割り当てられたCPUコア)は、アプリケーションノードイメージ513を起動してアプリケーションノード202(203)を構成する。
前述したように、アプリケーションノードイメージ513は、図4に示した、OS411やアプリケーションプログラム414等の構成要素を含む。
ノード間データ授受制御プログラム421の実行が指示されたCPUコア101(連携ノードの役割を割り当てたCPUコア)は、連携ノードイメージ514を起動して連携ノード204(205)を構成する。
前述したように、連携ノードイメージ514は、図5に示すノード間データ授受制御プログラム421を含む。
デバイスドライバの実行が指示されたCPUコア101(IOノードの役割を割り当てたCPUコア)は、IOノードイメージ515を起動して連携ノード204(205)を構成する。
前述したように、IOノードイメージ515は、図6に示すIOノード通信制御プログラム432及びIOデバイス制御プログラム431を含む。
The CPU core 101 (CPU core assigned the role of an application node) instructed to execute the
As described above, the
The CPU core 101 (CPU core to which the role of the cooperation node is assigned) instructed to execute the inter-node data
As described above, the
The CPU core 101 (CPU core to which the role of the IO node is assigned) instructed to execute the device driver activates the
As described above, the
(6)健全性確保、システム負荷調整
マスタノード201のノード管理プログラム443は、アプリケーションノード202、203、連携ノード204、205やIOノード206、207に対して、一定間隔で健全性の確認のため応答要求を発行する。
そして、応答時間が規定時間から遅れる状態が続く場合は、ノード管理プログラム443は、当該ノードに対して予備CPUコア208の追加割り当てを行い、複数のCPUコア101で処理させることでスループットを向上させる。
一定間隔で応答を確認する動作において、各ノードからシステム負荷状態をマスタノード201に応答で返すことにより、ノード管理プログラム443が各ノードにおける負荷状態が確認でき、ノード管理プログラム443は、負荷状態が低い状態が続くノードから、当該ノードに割り当てているCPUコア101を分離して、予備CPUコア208とすることもできる。
(6) Ensuring soundness and system load adjustment The
If the response time continues to be delayed from the specified time, the
In the operation of confirming the response at a fixed interval, the
また、アプリケーションノード202、203とIOノード206、207間の通信量が増え、連携ノード204、205のスループットが低下する状態をマスタノード201が検知した場合に、ノード管理プログラム443が予備CPUコア208を使用して連携ノードを新たに追加することで、アプリケーションノードとIOノード間の通信経路を増やし、スループットを向上させることもできる。
この場合、利用可能な連携ノードの一覧は、マスタノード201で管理する。
Further, when the
In this case, a list of available cooperation nodes is managed by the
次に、図15〜図23にて各ノードの動作を示す。 Next, the operation of each node is shown in FIGS.
図15及び図16は、アプリケーションノード202のIO制御インタフェースプログラム413及びノード通信制御プログラム412の処理内容を示したものである。
アプリケーションノード203での処理内容も同様である。
15 and 16 show the processing contents of the IO
The processing contents in the
アプリケーションノード202において、アプリケーションプログラム414がIOアクセスを行う場合、OS411を介して、IO制御インタフェースプログラム413が、処理要求を受け付ける(6101)。
IO制御インタフェースプログラム413は、処理要求の宛先(処理対象)を判別し(6102)、処理要求を送付する宛先ごとに、メッセージを作成する(6103〜6106)。
つまり、処理要求の宛先がIOデバイス111であれば、IOデバイス111宛のメッセージを作成する(6103)。
処理要求の宛先がIOデバイス112であれば、IOデバイス112宛のメッセージを作成する(6104)。
また、処理要求の宛先が他のアプリケーションノード203であれば、アプリケーションノード203宛のメッセージを作成する(6105)。
また、処理要求の宛先がマスタノード201であれば、マスタノード201宛のメッセージを作成する(6106)。
そして、IO制御インタフェースプログラム413は、作成したメッセージをノード通信制御プログラム412へ伝達する(6107)。
When the
The IO
That is, if the destination of the processing request is the
If the destination of the processing request is the
If the destination of the processing request is another
If the destination of the processing request is the
Then, the IO
図16において、ノード通信制御プログラム412は、IO制御インタフェースプログラム413が作成したメッセージを受付け(6201)、メッセージを元に処理管理テーブル524に新要求のエントリを作成し(6202)、マスタノード201に対して処理要求を発行し(6203)、マスタノード201からの処理受付通知を待つ(6204)。
マスタノード201から処理受付け通知を受けると、ノード通信制御プログラム412は、処理管理テーブル524からトランザクションID番号を取り出し(6205)、対象のトランザクションID番号の完了通知を待つ(6206)。
処理完了通知を受けると、ノード通信制御プログラム412は、処理6202で作成した処理要求エントリを処理管理テーブル524から削除する(6207)。
In FIG. 16, the node
Upon receiving the process acceptance notification from the
Upon receiving the process completion notification, the node
図17は、マスタノード201の処理フローを示すフローチャート図である。
FIG. 17 is a flowchart showing the processing flow of the
ノード間通信制御プログラム442は、他ノードからの割込みを受け付け(6301)、割込みがあると処理管理テーブル524を参照して処理状態を判定する(6302)。
処理状態が「登録中」の場合は、ノード間通信制御プログラム442は、処理状態を「未処理」に更新し(6304)、要求に基づくメモリ領域を確保する(6305)。
また、ノード間通信制御プログラム442は、処理番号531に新たなトランザクションID番号を設定し(6306)、要求元ノードへ通知(図24の7004)するとともに、連携ノードへの通知(図24の7005)をノード間割込みで発行する(6307)。
一方、処理状態が「完了」の場合は、ノード間通信制御プログラム442は、連携ノードに対して完了処理の要求(図24の7009)をノード間割込みで発行する(6303)。
The inter-node
When the processing state is “registering”, the inter-node
Further, the inter-node
On the other hand, when the processing state is “complete”, the inter-node
図18は、連携ノード204の処理フローを示すフローチャート図である。
連携ノード205での処理内容も同様である。
FIG. 18 is a flowchart showing the processing flow of the
The processing contents in the
ノード間データ授受制御プログラム421は、ノード間の要求割込みを受け付けると(6900)、処理管理テーブル524を参照し(6402)、処理状態が「未処理」の場合は処理状態を「処理中」に更新し(6404)、処理内容を判定する(6405)。
処理内容がWRITE処理の場合は、ノード間データ授受制御プログラム421は、コマンドパラメータ記載のアドレスに従い、WRITEデータを固有領域からメモリプールの確保領域にコピーする(6406)。
一方、処理内容がIO Controlの場合は、ノード間データ授受制御プログラム421は、コマンドパラメータ記載のアドレスに従い、IO Control情報を固有領域からメモリプールの確保領域にコピーする(6407)。
その後、ノード間データ授受制御プログラム421は、処理要求先のノードに処理要求を発行(図24の7007)する(6408)。
なお、処理内容がREADの場合は、データ操作は行わずに、処理要求先のノードに処理要求を発行(図24の7007)する(6408)。
When the inter-node data
When the processing content is the WRITE processing, the inter-node data
On the other hand, when the processing content is the IO control, the inter-node data
Thereafter, the inter-node data
If the processing content is READ, a data processing is not performed and a processing request is issued to the processing request destination node (7007 in FIG. 24) (6408).
また、処理6402で処理状態が「完了」の場合は、ノード間データ授受制御プログラム421は、処理内容を判定する(6403)。
処理内容がREADの場合は、ノード間データ授受制御プログラム421は、コマンドパラメータ記載のアドレスに従い、READデータをメモリプールの確保領域から固有領域にコピーする(6409)。
一方、処理内容がIO Controlの場合は、ノード間データ授受制御プログラム421は、コマンドパラメータ記載のアドレスに従い、IO Control情報をメモリプールの確保領域から固有領域にコピーする(6410)。
その後、ノード間データ授受制御プログラム421は、処理要求元のノードに完了通知(図7の7011)を発行する(6411)。
なお、処理内容がWRITEの場合は、データ操作は行わずに、処理要求元のノードに完了通知(図7の7011)を発行する(6411)。
If the processing state is “complete” in
When the processing content is READ, the inter-node data
On the other hand, when the processing content is IO Control, the inter-node data
Thereafter, the inter-node data
If the processing content is WRITE, the data request is not performed and a completion notification (7011 in FIG. 7) is issued to the processing request source node (6411).
図19は、IOノード206におけるIOノード通信制御プログラム432の処理フローを示す。
IOノード207のIOノード通信制御プログラム432の処理フローも同様である。
FIG. 19 shows a processing flow of the IO node
The processing flow of the IO node
ノード間割込みを受け付けると(6900)、IOノード通信制御プログラム432は、処理管理テーブル524から処理対象の要求を読み出し(6502)、処理内容を判定する(6503)。
処理内容がREADの場合、IOデバイス制御プログラム431へREAD要求を発行する(6504)。
処理内容がWRITEの場合、IOデバイス制御プログラム431へWRITE要求を発行する(6505)。
処理内容がIO Controlの場合、IOデバイス制御プログラム431へIO Control要求を発行する(6506)。
次に、IOノード通信制御プログラム432は、IO操作が成功したかどうかを判断し(6507)、IO操作が成功の場合は、処理管理テーブル524の処理状態538に「完了」を設定する(6508)。
一方、IO操作が失敗の場合は、処理管理テーブル524の処理状態538に「エラー」を設定する(6509)。
その後、IOノード通信制御プログラム432は、マスタノード201に対して処理終了を通知する(図24の7008)(6510)。
When an inter-node interrupt is accepted (6900), the IO node
If the processing content is READ, a READ request is issued to the IO device control program 431 (6504).
If the processing content is WRITE, a WRITE request is issued to the IO device control program 431 (6505).
If the processing content is IO Control, an IO Control request is issued to the IO device control program 431 (6506).
Next, the IO node
On the other hand, if the IO operation has failed, “error” is set in the
Thereafter, the IO node
図20は、IOノード206におけるIOデバイス制御プログラム431の処理フローを示す。
IOノード207のIOデバイス制御プログラム431の処理フローも同様である。
FIG. 20 shows a processing flow of the IO
The processing flow of the IO
IOデバイス制御プログラム431は、IOノード通信制御プログラム432からのコマンド(図19の処理6504のREAD要求、処理6505のWRITE要求、処理6506のIO Control要求)を受け付ける(6601)。
次に、IOデバイス制御プログラム431は、コマンド種別を判定し(6602)、コマンドがREADの場合は、IOデバイス111のREAD操作を行う(6603)。
更に、IOデバイス111から読み出したデータを共有メモリ領域522へ保存する(6604)。
また、コマンドがWRITEの場合は、IOデバイス制御プログラム431は、共有メモリ領域522からデータを読み出し(6605)、IOデバイス111に対しデータを書き込む(6606)。
また、コマンドがIO Controlの場合は、共有メモリ領域522からデータ読み出し(6607)、IOデバイス111を操作し(6608)、共有メモリ領域522へ必要なデータを保存する(6609)。
The IO
Next, the IO
Further, the data read from the
If the command is WRITE, the IO
If the command is IO Control, data is read from the shared memory area 522 (6607), the
図21は、マスタノード201における起動処理プログラム441の処理フローを示す。
FIG. 21 shows a processing flow of the
制御装置の起動後に、起動処理プログラム411は、ROM121にあるシステム構成情報512を読み出す(6713)。
起動処理プログラム441は、図14のシステム構成情報512の各行を順に読み出す。
読み出し対象のシステム構成情報512がマスタノードを構成するためのマスタノード構成情報(図14の1行目の情報)である場合(6702でYES)は、マスタノード構成情報を読み出す(6706)。
読み出し対象のシステム構成情報512がアプリケーションノードを構成するためのアプリケーションノード構成情報(図14の2行目の情報)である場合(6703でYES)は、アプリケーションノード構成情報を読み出す(6707)。
読み出し対象のシステム構成情報512が連携ノードを構成するための連携ノード構成情報(図14の3行目の情報)である場合(6704でYES)は、連携ノード構成情報を読み出す(6708)。
読み出し対象のシステム構成情報512がIOノードを構成するためのIOノード構成情報(図14の4行目の情報)である場合(6705でYES)は、IOノード構成情報を読み出す(6709)。
次に、起動処理プログラム441は、各ノードで必要な個数分のCPUコア101を確保し(6710)、各ノードで実行するイメージのアドレスを対象のCPUコア101に設定し(6711)、割り当てたCPUコア101にイメージを起動させる起動要求を発行する(6712)。
各ノードの構成起動が完了すると、ノード管理プログラム443に処理が移行する。
After the control device is activated, the
The
If the
If the
When the
When the
Next, the
When the configuration activation of each node is completed, the processing shifts to the
図22は、マスタノード201におけるノード管理プログラム433の処理フローを示す。
FIG. 22 shows a processing flow of the node management program 433 in the
ノード管理プログラム433は、ノードnの遅延応答カウント及び負荷超過カウントを初期化する(6801)。
ノードnは、アプリケーションノード202、203、連携ノード204、205、IOノード26、207の各々である。
次に、ノード管理プログラム433は、処理コマンドとしてHealth Checkを指定したコマンドをノードnへ発行する(6802)。
次に、ノード管理プログラム433は、ノードnからの応答を待ち(6803)、所定時間内で応答が有った場合(6804)は、ノードnの遅延応答カウントを0にする(6805)。
次に、ノード管理プログラム433は、ノードnの応答として返されたシステム負荷状態を判定する(6813)。
負荷状態が規定値を超えた場合は、ノード管理プログラム433は、負荷超過カウントを+1する(6814)。
負荷超過カウントが規定数を超えた場合(6815)は、ノード管理プログラム433は、ノードnへCPUコア101の追加指示を発行する(6816)。
その後、ノード管理プログラム433は、ノードnの負荷超過カウントをクリアする(6817)。
また、処理6813において負荷状態が規定値を超えない場合も、ノード管理プログラム433は、ノードnの負荷超過カウントをクリアする(6817)。
The node management program 433 initializes the delay response count and the overload count of the node n (6801).
The node n is each of the
Next, the node management program 433 issues a command specifying Health Check as a processing command to the node n (6802).
Next, the node management program 433 waits for a response from the node n (6803), and when there is a response within a predetermined time (6804), sets the delay response count of the node n to 0 (6805).
Next, the node management program 433 determines the system load state returned as the response of the node n (6813).
When the load state exceeds the specified value, the node management program 433 increments the load excess count by 1 (6814).
If the overload count exceeds the specified number (6815), the node management program 433 issues an instruction to add the
Thereafter, the node management program 433 clears the overload count of the node n (6817).
Also, in the case where the load state does not exceed the specified value in the
一方、処理6804において所定時間内でノードnからの応答が無い場合は、ノード管理プログラム433は、遅れて応答があるか否かを判断する(6806)。
遅れて応答が有った場合には、ノード管理プログラム433は、遅延応答カウントを+1する(6807)。
遅延応答カウントが規定値を超えた場合(6808)は、対象のノードnに対し、CPUコア101の追加指示を発行する(6809)。
その後、ノードnの遅延応答カウントをクリアする(6810)。
一方、処理6806においてノードnから全く応答がない場合は、ノード管理プログラム433は、ノードnが動作不可の状態と判断し、ノードnのCPUコア101を停止させ、CPUコア101のリセットを行い、当該CPUコア101を予備CPUコア208へ移行させる(6811)。
更に、ノード管理プログラム433は、他の予備CPUコア208を新たにノードnを構成するCPUコアとして選択し、当該CPUコアを用いてノードnの複製を生成し、新たなノードnとして起動させる(6812)。
ノード管理プログラム433は、以上の処理を、アプリケーションノード202、203、連携ノード204、205、IOノード26、207の各々に対して行う。
On the other hand, if there is no response from the node n within the predetermined time in the
If there is a response with a delay, the node management program 433 increments the delay response count by 1 (6807).
If the delay response count exceeds the specified value (6808), an instruction to add the
Thereafter, the delay response count of the node n is cleared (6810).
On the other hand, if there is no response from the node n in the
Further, the node management program 433 newly selects another
The node management program 433 performs the above processing on each of the
図23は、アプリケーションノード202、203、連携ノード204、205、IOノード206、207で動作するノード間割込みハンドラの処理フローを示す。
図23は、例えば、図18の処理6900、図19の処理6900の詳細を示す。
FIG. 23 shows a processing flow of an inter-node interrupt handler that operates on the
FIG. 23 shows details of the
ノード間割込みハンドラは、処理管理テーブル524のリストを検索し(6901)、要求先ID533が自ノード宛の場合(6902でYES)で、処理コマンドがHealth Checkの場合(6903でYES)は、自ノードのシステム負荷状態をコマンドパラメータに設定する(6910)。
一方、処理コマンドがAdd CPUの場合(6904でYES)は、予備CPUコアを自ノードに追加し、ノードを構成する(6906)。
処理コマンドがDelete CPU(6905でYES)の場合は、自ノードで稼働するCPUコアが複数である場合は、CPUコアの1つを切り離し、切り離したCPUコアを予備CPUコアへ移行させる(6907)。
処理6910、6906、6907の後、ノード間割込みハンドラは、処理管理テーブル524の処理状態538の値を「完了」に設定し(6908)、マスタノードへノード間割込みを発行する(6909)。
Health Check、 Add CPU、 Delete CPU以外のコマンドの場合は、各ノードにおける続きの処理へ移行する。
The inter-node interrupt handler searches the list of the process management table 524 (6901), and when the
On the other hand, if the processing command is Add CPU (YES in 6904), a spare CPU core is added to the own node to configure the node (6906).
When the processing command is Delete CPU (YES in 6905), if there are a plurality of CPU cores operating on the own node, one of the CPU cores is disconnected, and the disconnected CPU core is transferred to the spare CPU core (6907). .
After the
In the case of a command other than Health Check, Add CPU, and Delete CPU, the process proceeds to subsequent processing in each node.
以上、本実施の形態では、IO制御に単独のノード及びCPUコアを割り当てる機能分散マルチコア制御装置を説明した。 As described above, in the present embodiment, the function distributed multi-core control device that allocates a single node and a CPU core to the IO control has been described.
また、本実施の形態では、アプリケーションを実行するノードが動作しなくなった場合に、動的に当該ノードのCPUコアを分離して、新たなCPUコアを当該ノードに割り当てて動作を回復する機能分散マルチコア制御装置を説明した。 Also, in this embodiment, when a node that executes an application stops operating, the function distribution that dynamically separates the CPU core of the node and assigns a new CPU core to the node to recover the operation. A multi-core controller has been described.
また、本実施の形態では、システム上に複数の異なるOSが存在しても、共通のIOデバイスを、競合を意識することなく利用することができる機能分散マルチコア制御装置を説明した。 Further, in the present embodiment, the function distributed multi-core control device that can use a common IO device without being aware of competition even when a plurality of different OSs exist in the system has been described.
実施の形態2.
以上の実施の形態1では、連携ノードを用いたデータ操作方法を示したが、連携ノードを省略し、アプリケーションノードとIOノードで構成することも可能である。
In the first embodiment described above, the data operation method using the cooperation node has been described. However, the cooperation node may be omitted and the application node and the IO node may be used.
100 マルチコアSoC、101 CPUコア、111 IOデバイス、112 IOデバイス、121 ROM、122 RAM、201 マスタノード、202 アプリケーションノード、203 アプリケーションノード、204 連携ノード、205 連携ノード、206 IOノード、207 IOノード、208 予備CPUコア、301 ノード、303 ソフトウェア、411 OS、412 ノード通信制御プログラム、413 IO制御インタフェースプログラム、414 アプリケーションプログラム、421 ノード間データ授受制御プログラム、431 IOデバイス制御プログラム、432 IOノード通信制御プログラム、441 起動処理プログラム、442 ノード間通信制御プログラム、443 ノード管理プログラム、511 ブートローダイメージ、512 システム構成情報、513 アプリケーションノードイメージ、514 連携ノードイメージ、515 IOノードイメージ、521 個別メモリ領域、522 共有メモリ領域、523 ノード用ワークメモリ、524 処理管理テーブル、525 メモリプール、526 一時バッファ。
100 multi-core SoC, 101 CPU core, 111 IO device, 112 IO device, 121 ROM, 122 RAM, 201 master node, 202 application node, 203 application node, 204 cooperation node, 205 cooperation node, 206 IO node, 207 IO node, 208 spare CPU core, 301 node, 303 software, 411 OS, 412 node communication control program, 413 IO control interface program, 414 application program, 421 inter-node data transfer control program, 431 IO device control program, 432 IO node
Claims (10)
前記複数のCPUの中から、アプリケーションプログラムを実行させる専用のCPUをアプリケーションCPUとして選択し、デバイスドライバを実行させる専用のCPUをデバイスドライバCPUとして選択するCPU選択部を有することを特徴とするデータ処理システム。 A data processing system including a plurality of CPUs (Central Processing Units),
A data processing system comprising: a CPU selection unit that selects, from among the plurality of CPUs, a dedicated CPU that executes an application program as an application CPU, and selects a dedicated CPU that executes a device driver as a device driver CPU. system.
複数のデバイスドライバについて、デバイスドライバごとに、デバイスドライバCPUを選択することを特徴とする請求項1に記載のデータ処理システム。 The CPU selection unit
The data processing system according to claim 1, wherein a device driver CPU is selected for each of the plurality of device drivers.
前記アプリケーションCPUに前記アプリケーションプログラムの実行を指示し、前記デバイスドライバCPUに前記デバイスドライバの実行を指示する実行指示部を有することを特徴とする請求項1に記載のデータ処理システム。 The data processing system further includes:
The data processing system according to claim 1, further comprising: an execution instruction unit that instructs the application CPU to execute the application program and instructs the device driver CPU to execute the device driver.
3つ以上のCPUが含まれ、
前記データ処理システムは、更に、
前記アプリケーションCPUの負荷状態、及び前記デバイスドライバCPUの負荷状態のうちの少なくともいずれかを検出する負荷状態検出部を有し、
前記CPU選択部は、
前記負荷状態検出部により検出された前記アプリケーションCPUの負荷状態に基づき、前記アプリケーションCPUに加えて新たなアプリケーションCPUを選択し、
前記負荷状態検出部により検出された記デバイスドライバCPUの負荷状態に基づき、前記デバイスドライバCPUに加えて新たなデバイスドライバCPUを選択することを特徴とする請求項1に記載のデータ処理システム。 The data processing system includes
3 or more CPUs are included,
The data processing system further includes:
A load state detection unit that detects at least one of a load state of the application CPU and a load state of the device driver CPU;
The CPU selection unit
Based on the load state of the application CPU detected by the load state detection unit, a new application CPU is selected in addition to the application CPU,
2. The data processing system according to claim 1, wherein a new device driver CPU is selected in addition to the device driver CPU based on the load state of the device driver CPU detected by the load state detection unit.
3つ以上のCPUが含まれ、
前記データ処理システムは、更に、
前記アプリケーションCPUの応答状態、及び前記デバイスドライバCPUの応答状態のうちの少なくともいずれかを検出する応答状態検出部を有し、
前記CPU選択部は、
前記応答状態検出部により検出された前記アプリケーションCPUの応答状態に基づき、前記アプリケーションCPUに代えて新たなアプリケーションCPUを選択し、
前記応答状態検出部により検出された前記デバイスドライバCPUの応答状態に基づき、前記デバイスドライバCPUに代えて新たなデバイスドライバCPUを選択することを特徴とする請求項1に記載のデータ処理システム。 The data processing system includes
3 or more CPUs are included,
The data processing system further includes:
A response state detection unit that detects at least one of the response state of the application CPU and the response state of the device driver CPU;
The CPU selection unit
Based on the response state of the application CPU detected by the response state detection unit, a new application CPU is selected instead of the application CPU,
2. The data processing system according to claim 1, wherein a new device driver CPU is selected in place of the device driver CPU based on the response state of the device driver CPU detected by the response state detection unit.
複数のOS(Operating System)に共通するフォーマットでIO(Input Output)デバイスへのリクエストを生成し、生成したリクエストを前記デバイスドライバCPUに出力することを特徴とする請求項1に記載のデータ処理システム。 The application CPU is
2. The data processing system according to claim 1, wherein a request to an IO (Input Output) device is generated in a format common to a plurality of OSs (Operating System), and the generated request is output to the device driver CPU. .
3つ以上のCPUが含まれ、
前記CPU選択部は、
前記アプリケーションCPUと前記デバイスドライバCPUとの間でのデータ中継を行う専用CPUをデータ中継CPUとして選択することを特徴とする請求項1に記載のデータ処理システム。 The data processing system includes
3 or more CPUs are included,
The CPU selection unit
The data processing system according to claim 1, wherein a dedicated CPU that relays data between the application CPU and the device driver CPU is selected as a data relay CPU.
複数のOS(Operating System)で共通するフォーマットでIO(Input Output)デバイスへのリクエストを生成し、生成したリクエストを前記データ中継CPUを介して前記デバイスドライバCPUに出力することを特徴とする請求項7に記載のデータ処理システム。 The application CPU is
A request to an IO (Input Output) device is generated in a format common to a plurality of OS (Operating System), and the generated request is output to the device driver CPU via the data relay CPU. 8. The data processing system according to 7.
前記3つ以上のCPUのうちの前記特定のCPUを除く他のCPUの中から、アプリケーションプログラムを実行させる専用のCPUをアプリケーションCPUとして選択し、デバイスドライバを実行させる専用のCPUをデバイスドライバCPUとして選択することを特徴とするデータ処理方法。 A specific CPU among three or more CPUs (Central Processing Units) included in the data processing system is
Of the three or more CPUs other than the specific CPU, a dedicated CPU that executes an application program is selected as an application CPU, and a dedicated CPU that executes a device driver is selected as a device driver CPU. A data processing method characterized by selecting.
前記3つ以上のCPUのうちの前記特定のCPUを除く他のCPUの中から、アプリケーションプログラムを実行させる専用のCPUをアプリケーションCPUとして選択し、デバイスドライバを実行させる専用のCPUをデバイスドライバCPUとして選択するCPU選択処理を実行させることを特徴とするプログラム。
To a specific CPU among three or more CPUs (Central Processing Units) included in the data processing system,
Of the three or more CPUs other than the specific CPU, a dedicated CPU that executes an application program is selected as an application CPU, and a dedicated CPU that executes a device driver is selected as a device driver CPU. A program for executing a CPU selection process to be selected.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014155806A JP2017161954A (en) | 2014-07-31 | 2014-07-31 | Data processing system, data processing method, and program |
PCT/JP2015/061849 WO2016017219A1 (en) | 2014-07-31 | 2015-04-17 | Data processing system, data processing method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014155806A JP2017161954A (en) | 2014-07-31 | 2014-07-31 | Data processing system, data processing method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017161954A true JP2017161954A (en) | 2017-09-14 |
Family
ID=55217123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014155806A Pending JP2017161954A (en) | 2014-07-31 | 2014-07-31 | Data processing system, data processing method, and program |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2017161954A (en) |
WO (1) | WO2016017219A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020090009A1 (en) * | 2018-10-30 | 2020-05-07 | 富士通株式会社 | Arithmetic processing device and control method thereof |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3710501A2 (en) | 2017-11-15 | 2020-09-23 | ExxonMobil Chemical Patents Inc. | Polymerization processes |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0844575A (en) * | 1994-08-03 | 1996-02-16 | Fujitsu Ltd | Monitor and load control system for cpu |
JP5167844B2 (en) * | 2008-02-05 | 2013-03-21 | 日本電気株式会社 | Processor, electronic device, interrupt control method, and interrupt control program |
US8661458B2 (en) * | 2008-03-11 | 2014-02-25 | Nec Corporation | Multiprocessor system, and method for shared use of devices among operating systems of multiprocessor system |
JP5516737B2 (en) * | 2010-07-30 | 2014-06-11 | 富士通株式会社 | Processor system, control program, and control method |
JP2012221040A (en) * | 2011-04-05 | 2012-11-12 | Nec Corp | Call processing control device and call processing control method |
-
2014
- 2014-07-31 JP JP2014155806A patent/JP2017161954A/en active Pending
-
2015
- 2015-04-17 WO PCT/JP2015/061849 patent/WO2016017219A1/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020090009A1 (en) * | 2018-10-30 | 2020-05-07 | 富士通株式会社 | Arithmetic processing device and control method thereof |
JPWO2020090009A1 (en) * | 2018-10-30 | 2021-09-24 | 富士通株式会社 | Arithmetic processing unit and its control method |
JP7036226B2 (en) | 2018-10-30 | 2022-03-15 | 富士通株式会社 | Arithmetic processing unit and its control method |
Also Published As
Publication number | Publication date |
---|---|
WO2016017219A1 (en) | 2016-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2639693C1 (en) | Method for resource processing, operating system and device | |
US9996401B2 (en) | Task processing method and virtual machine | |
US9798565B2 (en) | Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor | |
US20140082244A1 (en) | Enhanced I/O Performance in a Multi-Processor System Via Interrupt Affinity Schemes | |
TWI684864B (en) | Managing function level reset in an io virtualization-enabled storage device | |
US9454397B2 (en) | Data processing systems | |
US10459773B2 (en) | PLD management method and PLD management system | |
JP5862359B2 (en) | Thin client system, connection management server, connection management method, and connection management program | |
US10108463B2 (en) | System, method of controlling to execute a job, and apparatus | |
WO2019056771A1 (en) | Distributed storage system upgrade management method and device, and distributed storage system | |
JP2017503420A (en) | Packet flow control method, related apparatus, and computing node | |
WO2016017219A1 (en) | Data processing system, data processing method, and program | |
JP5294014B2 (en) | File sharing method, computer system, and job scheduler | |
JP5655612B2 (en) | Information processing system, information processing method, and control program | |
JP5996110B2 (en) | Computer system and control method | |
US10942821B1 (en) | Method and apparatus for dynamic binding and unbinding thin logical storage volumes to snapshots of a file system | |
JP2011221634A (en) | Computer system, logic section management method and logic division processing program | |
JP2016173741A (en) | Information processing apparatus, information processing method, and program | |
JP5994690B2 (en) | Information processing apparatus, program, and storage area acquisition method | |
JP6075882B2 (en) | Distributed processing system and distributed processing method | |
KR20130104958A (en) | Apparatus and methods for executing multi-operating systems | |
JP2016184310A (en) | Information processing system, control apparatus, and information processing system control method | |
KR102505996B1 (en) | Apparatus for remote processing for virtual machine processor and method for the same | |
JP2010205207A (en) | Host computer, multipath system, and method and program for allocating path | |
WO2009113571A1 (en) | Information processing device and method capable of operating a plurality of basic software programs |