(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-15
(45)【発行日】2022-08-23
(54)【発明の名称】コントローラ
(51)【国際特許分類】
G05B 19/042 20060101AFI20220816BHJP
G06F 13/12 20060101ALI20220816BHJP
G06F 13/14 20060101ALI20220816BHJP
G06F 13/38 20060101ALI20220816BHJP
【FI】
G05B19/042
G06F13/12 340A
G06F13/14 330E
G06F13/38 320Z
(21)【出願番号】P 2020156097
(22)【出願日】2020-09-17
【審査請求日】2021-10-01
(73)【特許権者】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(73)【特許権者】
【識別番号】501137636
【氏名又は名称】東芝三菱電機産業システム株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】中川 克敏
(72)【発明者】
【氏名】山田 裕太
【審査官】堀内 亮吾
(56)【参考文献】
【文献】特開2010-152837(JP,A)
【文献】特開2007-164764(JP,A)
【文献】特開2017-211767(JP,A)
【文献】特開2002-163075(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/042
G06F 13/12
G06F 13/14
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
産業プラントにおける機器群に接続される入出力装置と接続され、所定の処理単位で処理を実行する複数の処理部を備えるコントローラであって、
それぞれの前記処理部は、
アクセス要求データの送信先である前記入出力装置に対するアクセスの待ち時間と、前記アクセス要求データに従って出力を要求するデータを分割するか否かを決定するためのデータサイズの閾値であるアクセス分割サイズ閾値と、の対応関係を示す分割テーブルを記憶する分割テーブル記憶部と、
前記分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在の前記アクセスの待ち時間に対応する前記アクセス分割サイズ閾値よりも大きい場合、当該出力を要求するデータを前記アクセス分割サイズ閾値以下のサイズに分割して前記アクセス要求データを更新する分割部と、
所定の周期でタスク処理部によって実行されるタスク処理の前段の入出力処理で、前記アクセス要求データを前記入出力装置に対して出力する際に、前記分割部によって前記アクセス要求データが更新された場合には、更新された前記アクセス要求データを前記入出力装置に対して出力する出力処理部と、
前記入出力装置から前記アクセス要求データに対応するデータを入力する入力処理部と、
を備えるコントローラ。
【請求項2】
それぞれの前記処理部は、
前記入出力装置に対するアクセスの平均待ち時間と、前記アクセス要求データの平均処理時間と、を含む統計情報に基づいて、前記分割テーブルにおける前記アクセス分割サイズ閾値を変更する変更部を、さらに備える、請求項1に記載のコントローラ。
【請求項3】
それぞれの前記処理部は、
処理ごとの優先度の閾値である優先度閾値を記憶する処理優先度閾値記憶部を、さらに備え、
前記分割部は、前記分割テーブルを参照して、出力予定の前記アクセス要求データに従って出力を要求するデータのサイズが現在の前記アクセスの待ち時間に対応する前記アクセス分割サイズ閾値よりも大きい場合であって、かつ、前記アクセス要求データの処理の優先度が前記処理優先度閾値記憶部に記憶された当該処理に対応する前記優先度閾値以下の場合に、前記アクセス要求データに従って出力を要求するデータを前記アクセス分割サイズ閾値以下のサイズに分割して前記アクセス要求データを更新する、請求項1に記載のコントローラ。
【請求項4】
それぞれの前記処理部は、
前記入出力装置に対するアクセスの平均待ち時間と、前記アクセス要求データの平均処理時間と、を含む統計情報に基づいて、前記平均待ち時間が小さくなるように、前記周期の繰り返しのタイミングを調整する調整部を、さらに備える請求項1に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コントローラに関する。
【背景技術】
【0002】
従来から、産業プラントにおける機器群に接続される入出力装置と接続され、CPU(Central Processing Unit)モジュールを備えるコントローラがある。また、近年は、CPUのマルチコア化が進み、複数のCPUコアのそれぞれでコントローラプロセスを実行し、それぞれのコントローラプロセスによって同一の入出力装置にアクセスする構成もある。
【0003】
CPUコアが実行するコントローラプロセスは、制御対象機器の時間的制約からリアルタイム性が求められ、定周期でタスク処理を実現する。また、CPUコアは、コントローラプロセスによって、定周期処理の前段では、演算の対象となるI/Oデータの入出力処理を行っている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2010-186241号公報
【文献】国際公開第2012/086040号
【文献】特開2018-29326号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術において、1つのコントローラプロセスから入出力処理で入出力装置にアクセスしている場合、他のコントローラプロセスはその入出力装置にアクセスできないので待たされる。このように、コントローラプロセスの待ち時間が発生し、入出力処理が遅延すると、タスク処理も遅延するので、リアルタイム性の点で改善の余地がある。
【0006】
そこで、本発明の実施形態の課題は、産業プラントにおける機器群に接続される入出力装置と接続され、所定の処理単位で処理を実行する複数の処理部から入出力装置へのアクセスの待ち時間を低減することができるコントローラを提供することである。
【課題を解決するための手段】
【0007】
実施形態のコントローラは、産業プラントにおける機器群に接続される入出力装置と接続され、所定の処理単位で処理を実行する複数の処理部を備えるコントローラであって、それぞれの前記処理部は、アクセス要求データの送信先である前記入出力装置に対するアクセスの待ち時間と、前記アクセス要求データに従って出力を要求するデータを分割するか否かを決定するためのデータサイズの閾値であるアクセス分割サイズ閾値と、の対応関係を示す分割テーブルを記憶する分割テーブル記憶部と、前記分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在の前記アクセスの待ち時間に対応する前記アクセス分割サイズ閾値よりも大きい場合、当該出力を要求するデータを前記アクセス分割サイズ閾値以下のサイズに分割して前記アクセス要求データを更新する分割部と、所定の周期でタスク処理部によって実行されるタスク処理の前段の入出力処理で、前記アクセス要求データを前記入出力装置に対して出力する際に、前記分割部によって前記アクセス要求データが更新された場合には、更新された前記アクセス要求データを前記入出力装置に対して出力する出力処理部と、前記入出力装置から前記アクセス要求データに対応するデータを入力する入力処理部と、を備える。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1実施形態の制御システムの全体構成の一例を示す図である。
【
図2】
図2は、第1実施形態のコントローラの機能構成の一例を示すブロック図である。
【
図3】
図3は、第1実施形態の分割テーブルの一例を示す図である。
【
図4】
図4は、第1実施形態のCPUコアによる処理の一例を示すフローチャートである。
【
図5】
図5は、第1実施形態におけるCPUコアの入出力処理の説明図である。
【
図6】
図6は、第1実施形態におけるCPUコアのアクセス要求データの分割処理の説明図である。
【
図7】
図7は、第1実施形態におけるIOCTL統計情報の取得処理の説明図である。
【
図8】
図8は、第1実施形態におけるアクセス分割サイズ閾値の設定処理の説明図である。
【
図9】
図9は、第1実施形態のタスク実行処理の説明図である。
【
図10】
図10は、第2実施形態のCPUコアによる処理の一例を示すフローチャートである。
【
図11】
図11は、第3実施形態のタスク実行処理の説明図である。
【発明を実施するための形態】
【0009】
以下、本発明のコントローラの実施形態について、図面を参照して説明する。
【0010】
(第1実施形態)
図1は、第1実施形態の制御システムSの全体構成の一例を示す図である。本実施形態の制御システムSは、例えば、産業プラントに適用されるシステムである。
図1に示すように、制御システムSは、PC(Personal Computer)1と、コントローラ2と、を備える。
【0011】
PC1は、ユーザが、コントローラ2で実行するアプリケーションプログラムの生成や、コントローラ2の稼動状況をモニタリングするために用いるコンピュータである。PC1は、ソフトウェアであるエンジニアリングツール11を有する。エンジニアリングツール11は、制御システムSに関するシステム構築、プログラミング、モニタリング、情報収集、監視等を行うソフトウェアである。PC1は、エンジニアリングツール11の機能によってコントローラ2を管理する。
【0012】
コントローラ2は、産業プラントにおける機器群に接続されるI/O機器3(入出力装置)と通信路5で接続され、所定の処理単位(例えばスレッド単位)で処理を実行する複数の処理部(例えばCPUコア)を備える。コントローラ2は、マルチコアCPU20、21、RAM(Random Access Memory)22、HDD(Hard Disk Drive)23、ツールインタフェース24、I/Oインタフェース25、および、バス26を備える。
【0013】
マルチコアCPU20、21は、複数のCPUコア(以下、単に「コアともいう。)を有するCPUである。マルチコアCPU20は、コアA301およびコアB302を備える。マルチコアCPU21は、コアC303およびコアD304を備える。なお、マルチコアCPU20、21それぞれが有するコアの数は一例であり、2つに限らない。マルチコアCPU20、21は、コントローラ2全体を制御する。RAM22は、マルチコアCPU20、21の動作領域であり、書き込み可能な記憶媒体である。
【0014】
HDD23は、制御ソフトウェア、ブート処理プログラム、アプリケーションプログラム、OS(Operating System)等を記憶する。
【0015】
ツールインタフェース24は、通信路4を介してPC1との間で情報の送受信を行うためのインタフェースである。通信路4は、PC1とコントローラ2を結ぶ通信路であり、例えば、Ethernet(登録商標)やUSB(Universal Serial Bus)などの高速の通信路であるが、それらに限定されない。
【0016】
I/Oインタフェース25は、通信路5を介してI/O機器3との間で情報の送受信を行うためのインタフェースである。通信路5は、コントローラ2とI/O機器3を結ぶ通信路である。また、バス26は、コントローラ2の内部のデータ伝送路である。
【0017】
I/O機器3は、産業プラントを構成する機器群との入出力を行うための機器である。I/O機器3としては、例えば、制御対象設備に設置されたセンサ等からの信号の入力を行う入力装置(AI(Analog Input)機器、DI(Digital Input)機器)や、制御対象設備のアクチュエータ等に対して信号の出力を行う出力装置(AO(Analog Output)機器、DO(Digital Output)機器)がある。
図1では、I/O機器3およびI/Oインタフェース25は1つずつ記載されているが、これに限らない。例えば、プラントの構成によって、I/O機器3およびI/Oインタフェース25の数は異なる。ただし、以下では、一組のI/O機器3およびI/Oインタフェース25に着目して説明する。
【0018】
図2は、第1実施形態のコントローラ2の機能構成の一例を示すブロック図である。コントローラ2は、マルチコアCPU20のコアA301によって動作するコントローラプロセスとして、コントローラスレッド41Aを実現する。また、コントローラ2は、マルチコアCPU20のコアB302によって動作するコントローラプロセスとして、コントローラスレッド41Bを実現する。以下、コントローラスレッド41A、41Bのうち、主に代表してコントローラスレッド41Aについて説明する。
【0019】
さらに、コントローラ2は、マルチコアCPU21のコアC303によって動作するコントローラプロセスとして、コントローラスレッド41Cを実現する。また、マルチコアCPU21のコアD304によって動作するコントローラプロセスとして、コントローラスレッド41Dを実現する。
【0020】
コントローラスレッド41Aは、機能構成として、入力処理部421と、出力処理部422と、ドライバAPI(Application Program Interface)43と、を備える。ドライバAPI43は、取得部430と、タスク処理部431と、分割部432と、変更部433と、調整部434と、分割テーブル記憶部435と、処理優先度閾値記憶部436と、を備える。なお、コントローラスレッド41B、41C、41Dも、コントローラスレッド41Aと同様の構成を備えているものとして、説明を省略する。
【0021】
分割テーブル記憶部435と処理優先度閾値記憶部436は、例えば、RAM22(
図1)、HDD23(
図1)によって実現される(詳細は後述)。
【0022】
分割テーブル記憶部435は、I/O機器3に対するアクセスの待ち時間と、出力予定のアクセス要求データに従って出力を要求するデータを分割するか否かを決定するためのデータサイズの閾値であるアクセス分割サイズ閾値と、の対応関係を示す分割テーブルを記憶する。
【0023】
ここで、
図3は、第1実施形態の分割テーブルの一例を示す図である。分割テーブルは、アクセスの待ち時間ごとにアクセス分割サイズ閾値が定義されたテーブルである。例えば、アクセスの待ち時間が長いほど、アクセス分割サイズ閾値は小さい。
【0024】
図2に戻って、入力処理部421は、各種情報の入力処理を行う。入力処理部421は、例えば、I/O機器3からアクセス要求データに対応するデータを入力する。
【0025】
出力処理部422は、各種情報の出力処理を行う。出力処理部422は、例えば、所定の周期でタスク処理部431によって実行されるタスク処理の前段の入出力処理でアクセス要求データをI/O機器3に対して出力する。その際に、出力処理部422は、アクセス要求データが分割部432によって更新されたときは、更新されたアクセス要求データをI/O機器3に対して出力する。出力を要求するデータの残りについても必要に応じて分割部432で更新し、I/O機器3に対して出力を要求する。
【0026】
取得部430は、コントローラスレッド41や、デバイスドライバ52や、I/O機器3などから、各種情報を取得する。
【0027】
タスク処理部431は、I/O機器3から取得したデータに基づいて所定のタスク処理を行う。
【0028】
分割部432は、分割テーブル記憶部435に記憶されている分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合、当該出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。
【0029】
また、コントローラ2は、統計情報記憶部210を記憶する。統計情報記憶部210は、例えば、RAM22(
図1)、HDD23(
図1)によって実現される。統計情報記憶部210は、I/O機器3に対するアクセス要求データの平均待ち時間と、アクセス要求データの平均処理時間と、を含む統計情報を記憶する。
【0030】
例えば、
図7のIOCTL統計情報55は、統計情報の一例である。IOCTL統計情報55は、CPUコアA~D毎のIOCTL平均待ち時間551と、全体IOCTL平均待ち時間552と、CPUコアA~D毎のIOCTL平均処理時間553と、全体IOCTL平均処理時間554と、を含む情報である。
【0031】
図2に戻って、変更部433は、分割テーブルにおけるアクセス分割サイズ閾値を変更する。変更部433は、例えば、統計情報記憶部210に記憶されている統計情報(
図7のIOCTL統計情報55)に基づいて、分割テーブルにおけるアクセス分割サイズ閾値を変更する(詳細は後述)。調整部434については、第3実施形態で説明する。
【0032】
図4は、第1実施形態のCPUコアによる処理の一例を示すフローチャートである。なお、コアA301、コアB302、コアC303、コアD304のそれぞれが
図4の処理を行うが、代表してコアA301を動作主体とする。
【0033】
コアA301がアクセス要求データをI/O機器3に送信(出力)する場合、まず、ステップS101において、分割部432は、分割テーブル記憶部435に記憶されている分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが、現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きいか否かを判定し、Yesの場合はステップS102に進み、Noの場合はステップS103に進む。
【0034】
ステップS102において、分割部432は、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。そして、ステップS103において、出力処理部422は、I/O機器3にアクセス要求データを出力する。ステップS102を経由している場合、出力処理部422は、I/O機器3に、ステップS102で更新されたアクセス要求データを出力する。
【0035】
以下、さらに具体的な例について説明する。
図5は、第1実施形態におけるCPUコアの入出力処理の説明図である。コントローラ2において、RAM22にユーザプロセス空間40とOS50によるカーネル空間51が生成される。そして、ユーザプロセス空間40において、CPUモジュール上で動作するコントローラプロセスは、複数のコントローラスレッド41A、41B、41C、41Dに分割されている。例えば、コアA301がコントローラスレッド41Aを実現し、コアB302がコントローラスレッド41Bを実現し、コアC303がコントローラスレッド41Cを実現し、コアD304がコントローラスレッド41Dを実現する。
【0036】
なお、本実施形態では、2つのマルチコアCPU20、21に搭載された2つずつのコア(コアA~D)によって各コントローラスレッドを実現するものとしたが、これに限定されない。例えば、各コントローラスレッドは、1つのマルチコアCPUに搭載された4つのコアによって実現してもよいし、あるいは、CPU自体が4つに分離しているマルチプロセッサ構成によって実現してもよい。また、処理単位は、コントローラスレッド単位に限定されず、例えば、コントローラプロセス単位であってもよい。
【0037】
以下、説明を簡潔にするために、コントローラスレッドを動作主体として記載する場合がある。また、コントローラスレッド41A、41B、41C、41Dについて、同様の動作を行う場合には、代表してコントローラスレッド41Aについて説明する場合がある。また、コントローラスレッドを単に「スレッド」ともいう。
【0038】
コントローラスレッド41Aは、設定された制御周期に従ったタスク実行時間となるようにタスク実行処理を周期的に繰り返し実施する。ここで、
図9は、第1実施形態のタスク実行処理の説明図である。
図9に示すように、タスク実行処理91は、入出力処理92と、タスク処理93と、同期処理94と、から構成される。このようなタスク実行処理91が周期的に繰り返される。
【0039】
図5に戻って、コントローラスレッド41Aは、入出力処理92(
図9)でI/O機器3にアクセスする場合、ドライバAPI43によってデバイスドライバ52にIOCTL(システムコール)を発行する。これを受けて、デバイスドライバ52は、IOCTL処理によってI/O機器3へアクセスを行う。
【0040】
また、デバイスドライバ52は、デバイスオブジェクト53と、ドライバオブジェクト56と、を有する。デバイスオブジェクト53は、IOCTL待ちキュー54と、IOCTL統計情報55と、を有する。
【0041】
ドライバオブジェクト56は、IOCTLエントリ57を有する。IOCTLエントリ57は、PIO(Programmed I/O)読み出し、PIO書き込み、DMA(Direct Memory Access)読み出し、DMA書き込みなどの情報を記憶する。
【0042】
デバイスドライバ52は、I/O機器3へのアクセスを開始した後は、アクセスを中断することができない。つまり、デバイスドライバ52が一つのスレッドのIOCTL処理を実施中、他のスレッドのIOCTL処理はIOCTL待ちキュー54に格納されて待たされる。
【0043】
デバイスドライバ52は、処理中であったIOCTL処理が終了すると、IOCTL待ちキュー54の先頭のスレッドをデキューし、IOCTL処理を開始する。また、デバイスドライバ52の処理は、他スレッドへの実行の切り替えを禁止した状態で実施する。したがって、IOCTL処理の待ち時間が増えると、コントローラスレッドのスキャン実行時間の遅延につながる。
【0044】
ドライバAPI43は、アクセス分割サイズ閾値を含む分割テーブル(
図3)を保持している。以下、
図6も併せて参照する。
図6は、第1実施形態におけるCPUコアのアクセス要求データの分割処理の説明図である。なお、スレッド優先度閾値64については第2実施形態で説明する。
【0045】
ドライバAPI43は、コントローラスレッド41からドライバAPI43の関数呼び出しがあった時(
図6のS1)、要求アクセスサイズ61(アクセス要求データに従って出力を要求するデータのサイズ)を残りアクセスサイズ63に保存する。
【0046】
次に、ドライバAPI43は、要求アクセスサイズ61とアクセス分割サイズ閾値62(
図3参照)を比較し、要求アクセスサイズ61がアクセス分割サイズ閾値62より大きい場合は、要求アクセスサイズ61をアクセス分割サイズ閾値62のサイズに変更し(
図6のS2)、デバイスドライバ52へIOCTL処理を要求する(
図6のS3)。
【0047】
デバイスドライバ52の処理が完了し、ドライバAPI43に動作が復帰した時(
図6のS4の後)、ドライバAPI43は、残りアクセスサイズ63から要求アクセスサイズ61を減算し、残りアクセスサイズ63が存在する場合は、残りアクセスサイズ63を要求アクセスサイズ61とし、デバイスドライバ52へIOCTL処理の要求を繰り返し実行する。
【0048】
また、デバイスドライバ52の動作が完了し、ドライバAPI43に動作が復帰すると、他の実行優先度が高いスレッドへの実行の切り替えが可能となる。前記のようにコントローラスレッド41からI/O機器3へのアクセス要求データに従って出力を要求するデータをドライバAPI43でアクセス分割サイズ閾値62以下のアクセスサイズに分割してアクセス要求データを更新して、デバイスドライバ52に要求することで、コントローラスレッド41間のI/O機器3へのアクセスの競合時に、実行優先度の高いコントローラスレッド41が、実行優先度の低いコントローラスレッド41のために待たされる時間を低減することができる。また、
図6のS4の後、ドライバAPI43からコントローラスレッド41にI/O機器3からのデータが渡される(
図6のS5)。
【0049】
以下、
図7、
図8も併せて参照する。
図7は、第1実施形態におけるIOCTL統計情報の取得処理の説明図である。
図8は、第1実施形態におけるアクセス分割サイズ閾値の設定処理の説明図である。ドライバAPI43は、アクセス分割サイズ閾値設定API72(変更部433)を具備しており、コントローラスレッド41がアクセス分割サイズ閾値設定API72を呼び出した時(
図8のS21、S22)、アクセス分割サイズ閾値設定API72はパラメータで指定された値をアクセス分割サイズ閾値62に設定する。これにより、コントローラスレッド41がタスク処理93(
図9)を開始しているRUN状態においてもアクセス分割サイズ閾値62を動的に変更することが可能となる。また、
図8に示すように、ドライバAPI43はIOCTL平均待ち時間取得API81(取得部430)を具備している。
【0050】
また、アクセス分割サイズ閾値62は、より具体的に、以下のようにして変更することができる。
図7に示すように、デバイスドライバ52は、IOCTL統計情報55として、CPUコアA~D毎のIOCTL平均待ち時間551と全体IOCTL平均待ち時間552とCPUコアA~D毎のIOCTL平均処理時間553と全体IOCTL平均処理時間554とを含む情報を保持しており、IOCTL処理の終了時にIOCTL統計情報55の更新を行う。
【0051】
また、ドライバAPI43は、IOCTL統計情報取得API71(取得部430)を具備しており、コントローラスレッド41からIOCTL統計情報の取得を要求された時に(
図7のS11)、デバイスドライバ52で保持しているIOCTL統計情報55を取得し(
図7のS12、S13)、コントローラスレッド41に応答する(
図7のS14)。これにより、コントローラスレッド41は、IOCTL統計情報55を認識することができる。
【0052】
コントローラスレッド41のアクセス分割サイズ閾値設定API72は、前記機能を使用して認識した全体IOCTL平均待ち時間552と全体IOCTL平均処理時間554と、コントローラスレッド41のタスク実行時間(
図9のタスク実行処理91の時間)に応じてあらかじめ設定されているIOCTL処理の上限時間から適切なアクセス分割サイズ閾値62を算出し、アクセス分割サイズ閾値62をRUN状態において動的に変更することが可能となる。
【0053】
このように、第1実施形態のコントローラ2によれば、I/O機器3へのアクセス要求データを、出力を要求するデータのサイズが現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合に、当該サイズがアクセス分割サイズ閾値以下のサイズになるように分割してアクセス要求データを更新することで、アクセスの待ち時間を低減することができる。
【0054】
また、アクセス分割サイズ閾値を、動的、かつ、統計情報に基づいて適切な値に変更することができる。
【0055】
(第2実施形態)
次に、第2実施形態について説明する。第1実施形態と同様の事項については、説明を適宜省略する。
図2において、分割部432は、分割テーブル記憶部435の分割テーブルを参照して、出力予定のアクセス要求データに従って出力を要求するデータのサイズが現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きい場合であって、かつ、アクセス要求データの処理の優先度が処理優先度閾値記憶部436(
図2)に記憶された当該処理に対応する優先度閾値(
図6のスレッド優先度閾値64)以下の場合に、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。
【0056】
図10は、第2実施形態のCPUコアによる処理の一例を示すフローチャートである。
図4の場合と同様、代表してコアA301を動作主体とする。
【0057】
コアA301がアクセス要求データをI/O機器3に送信(出力)する場合、まず、ステップS100において、分割部432は、処理優先度閾値記憶部436を参照して、処理対象のスレッドの優先度が優先度閾値以下であるか否かを判定し、Yesの場合はステップS101に進み、Noの場合はステップS103に進む。
【0058】
ステップS101において、分割部432は、分割テーブル記憶部435に記憶されている分割テーブルを参照して、アクセス要求データに従って出力を要求するデータのサイズが、現在のアクセスの待ち時間に対応するアクセス分割サイズ閾値よりも大きいか否かを判定し、Yesの場合はステップS102に進み、Noの場合はステップS103に進む。
【0059】
ステップS102において、分割部432は、アクセス要求データに従って出力を要求するデータをアクセス分割サイズ閾値以下のサイズに分割してアクセス要求データを更新する。そして、ステップS103において、出力処理部422は、I/O機器3に対してアクセス要求データを出力する。ステップS102を経由している場合、出力処理部422は、I/O機器3に、ステップS102で更新されたアクセス要求データを出力する。
【0060】
このようにして、第2実施形態のコントローラ2によれば、処理優先度閾値記憶部436(ドライバAPI43)でスレッドの優先度の閾値を保持しており、ドライバAPI43が実行された時、実行中のスレッドの優先度と閾値を比較し、実行中のスレッドの優先度が閾値以下の場合に、アクセス要求データに従って要求するデータをアクセス分割サイズ閾値62以下のサイズに分割してアクセス要求データを更新して、デバイスドライバ52に要求する。これにより、実行優先度の高いスレッドのオーバヘッドが削減され、実効性の高いアクセスの待ち時間の低減を実現できる。
【0061】
(第3実施形態)
次に、第3実施形態について説明する。第1実施形態と同様の事項については、説明を適宜省略する。
図2において、調整部434は、統計情報記憶部210に記憶された統計情報(
図7のIOCTL統計情報55)に基づいて、平均待ち時間が小さくなるように、複数のスレッドそれぞれの処理周期の繰り返しのタイミングを調整する。
【0062】
図11は、第3実施形態のタスク実行処理の説明図である。
図11(a)は、CPUコアAの処理周期を示している。ここで、調整部434は、統計情報記憶部210に記憶された統計情報に基づいて、平均待ち時間が小さくなるように、例えば、CPUコアBのタスク実行処理の開始タイミングを調整する。
【0063】
図11(b)は、CPUコアBの処理周期を示している。
図11(a)におけるCPUコアAのタスク実行処理の開始タイミング101と比較して、
図11(b)におけるCPUコアBのタスク実行処理の開始タイミング103は、開始調整時間102の分だけ遅く調整されている。
【0064】
調整部434は、開始調整時間102を、例えば、「プロセスの動作するコア番号×全体IOTCL平均待ち時間」を「タスク実行時間-全体IOTCL平均待ち時間-全体IOTCL平均処理時間」で除算した余りとして算出することができる。
【0065】
このようにして、第3実施形態のコントローラ2によれば、IOCTL統計情報55に基づいて平均待ち時間が小さくなるようにスレッドごとのタスク実行処理の開始タイミングを調整することで、コントローラスレッド間の入出力処理の競合を削減することができ、アクセスの待ち時間をより低減することができる。
【0066】
なお、上述の各実施形態のコントローラ2で実行されるプログラムは、HDDなどに記録されている。当該プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、フレキシブルディスク、CD-R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。さらに、当該プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、当該プログラムを、ROM等に予め組み込んで提供するように構成しても良い。
【0067】
当該プログラムは、上述した各部(入力処理部421、出力処理部422、取得部430、タスク処理部431、分割部432、変更部433、調整部434)を含むモジュール構成となっており、実際のハードウェアとしてはマルチコアCPU20、21が上記HDDから制御処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされて主記憶装置上に生成されるようになっている。
【0068】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0069】
1…PC、2…コントローラ、3…I/O機器、4、5…通信路、11…エンジニアリングツール、20、21…マルチコアCPU、22…RAM、23…HDD、24…ツールインタフェース、25…I/Oインタフェース、26…バス、301…コアA、302…コアB、303…コアC、304…コアD