(57)【特許請求の範囲】
【請求項１】
外部デバイスに対するアクセス処理を行なうための送信処理部と受信処理部とを含んだ処理実行単位を複数有し、前記処理実行単位を切替えて実行させる制御部と、
前記送信処理部による外部デバイスに対するアクセス要求を蓄積するバッファ部と、
前記バッファ部に空きがない場合に、前記アクセス要求に関する情報を蓄積する待ち行列部とを備え、
前記受信処理部は、外部デバイスからアクセス要求に対する応答を受信すると、応答処理を行ない、対応するバッファ部を解放した後、前記待ち行列部にアクセス要求に関する情報が蓄積されている場合には、他の処理実行単位が行なったアクセス要求であっても、当該アクセス要求に関する情報の前記バッファへの詰替を行なうとともに、当該アクセス要求に関する情報に対応するアクセス要求を、対応する外部デバイスに送信することを特徴とする外部デバイスアクセス装置。
【請求項２】
外部デバイスに対するアクセス処理を行なうための送信処理部と受信処理部とを含んだ処理実行単位を複数有し、前記処理実行単位を切替えて実行させる制御部と、
前記送信処理部による外部デバイスに対するアクセス要求を蓄積するバッファ部と、
前記バッファ部に空きがない場合に、前記アクセス要求に関する情報を蓄積する待ち行列部として情報処理装置を機能させるコンピュータプログラムであって、
前記受信処理部は、外部デバイスからアクセス要求に対する応答を受信すると、応答処理を行ない、対応するバッファ部を解放した後、前記待ち行列部にアクセス要求に関する情報が蓄積されている場合には、他の処理実行単位が行なったアクセス要求であっても、当該アクセス要求に関する情報の前記バッファへの詰替を行なうとともに、当該アクセス要求に関する情報に対応するアクセス要求を、対応する外部デバイスに送信することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の外部デバイスに対するアクセスが同時並行的に発生する外部デバイスアクセス装置および情報処理装置を外部デバイスアクセス装置として機能させるコンピュータプログラムに関する。
【背景技術】
【０００２】
図７は、従来の外部デバイスアクセス装置の外部デバイスに対するアクセス手順について説明する図である。本図において、外部デバイスアクセス装置のＭＰＵ（Micro Processing Unit）３００では、プログラム単位Ａ３１０ａ、プログラム単位Ｂ３１０ｂ、プログラム単位Ｃ３１０ｃが起動しており、プログラム切替部３０１により、プログラム単位３１０の実行が切替えられている（特に区別する必要がないときは、プログラム単位３１０と総称する。後述する送信処理モジュール３１１、受信処理モジュール３１２、外部デバイス２０１等および実施例の記載についても同様とする）。ここで、プログラム切替部３０１は、プログラム単位Ａ３１０ａ、プログラム単位Ｂ３１０ｂ、プログラム単位Ｃ３１０ｃの順で実行を切替えるものとする。
【０００３】
各プログラム単位３１０は、送信処理モジュール３１１と、受信処理モジュール３１２を含んでおり、これらのモジュールにしたがって、外部デバイスアクセス装置に接続された外部デバイス（１）２０１ａ、外部デバイス（２）２０１ｂ、外部デバイス（３）２０１ｃ…外部デバイス（Ｎ）２０１ｎに対するアクセス処理を行なう。
【０００４】
また、外部デバイスアクセス装置のメモリ領域にはバッファ３２１が設けられている。プログラム単位３１０は、外部デバイス２０１にアクセス要求を送ると、外部デバイス２０１から応答があるまでプログラムの実行が止まり、処理を保留する。バッファ３２１は、外部デバイス２０１からの応答を待つ間、アクセス要求を保持するために用いられる。プログラム単位３１０が外部デバイス２０１からの応答待ち状態になると、プログラム切替部３０１は、次のプログラム単位３１０に実行を切替える。
【０００５】
外部デバイス２０１からの応答を待っているプログラム単位３１０が応答を受信すると、実行順にかかわらず、受信処理モジュール３１２が、応答処理を行ない、バッファ３２１を解放する。
【０００６】
図７と図８を参照して、プログラム単位３１０の外部デバイスへのアクセス手順について説明する。まず、実行対象となったプログラム単位Ａ３１０ａが、送信処理モジュール３１１ａにしたがって、アクセス要求をバッファ３２１に蓄積し、外部デバイス２０１に送信する。そして、応答待ち状態となり、プログラム単位Ｂ３１０ｂに実行が切替えられる。
【０００７】
プログラム単位Ｂ３１０ｂも同様に、送信処理モジュール３１１ｂにしたがって、アクセス要求をバッファ３２１に蓄積し、外部デバイス２０１に送信する。そして、応答待ち状態となり、プログラム単位Ｂ３１０ｃに実行が切替えられる。
【０００８】
プログラム単位Ｃ３１０ｃも同様に、送信処理モジュール３１１ｃにしたがって、アクセス要求をバッファ３２１に蓄積し（図７、図８の１］蓄積）、外部デバイス２０１に送信する（２］送信）。そして、応答待ち状態となる。
【０００９】
プログラム単位Ａ３１０ａに外部デバイス２０１から応答があると、受信処理モジュール３１１ａにしたがって、応答処理を行ない、バッファ３２１を解放する。プログラム単位Ｂ３１０ｂに外部デバイス２０１から応答があると、受信処理モジュール３１１ｂにしたがって、応答処理を行ない、バッファ３２１を解放する。プログラム単位Ｃ３１０ｃに外部デバイス２０１から応答があると（３］応答）、受信処理モジュール３１１ｂにしたがって、応答処理を行ない（４］応答処理）、バッファ３２１を解放する（５］解放）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１３９７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
バッファ３２１の数は有限であるが、その上限を超えて送信要求が発生した場合にも対応できるように、外部デバイスアクセス装置のメモリ領域には、図９に示すように待ち行列３２２が設けられている。待ち行列３２２は、バッファ３２１の上限を超えて蓄積できなくなったアクセス要求に関する情報をＦＩＦＯで格納する領域である。なお、待ち行列３２２に蓄積されるアクセス要求に関する情報は、バッファ３２１に蓄積されるアクセス要求よりも情報量が少なく、サイズが小さいものとする。
【００１２】
図９、図１０を参照し、待ち行列３２２を使用したときのアクセス手順についてプログラム単位Ｃ３１０ｃに注目して説明する。ここでは、プログラム単位Ａ３１０ａがアクセス要求をバッファ３２１に蓄積し、さらに、プログラム単位Ｂ３１０ｂがアクセス要求をバッファ３２１に蓄積した時点で、バッファ３２１がすべて埋まったものとする。
【００１３】
このため、プログラム単位Ｃ３１０ｃからのアクセス要求は、バッファ３２１に蓄積することはできず、アクセス要求に関する情報が待ち行列３２２に蓄積される（図９、図１０の１］待ち行列に蓄積）。
【００１４】
プログラム単位Ａ３１０ａに外部デバイス２０１から応答（２］応答）があると、プログラム単位Ａ３１０ａは、応答処理を行ない（３］応答処理）、バッファ３２１を解放する（４］バッファ解放）。また、プログラム単位Ｂ３１０ｂに外部デバイス２０１から応答があると、プログラム単位Ｂ３１０ｂは、応答処理を行ない、バッファ３２１を解放する。
【００１５】
バッファが解放された後、実行順がプログラム単位Ｃ３１０ｃに切替えられると、プログラム単位Ｃ３１０ｃは、待ち行列３２２に蓄積されているアクセス要求に関する情報を、バッファ３２１に詰め替え（５］詰替）、外部デバイス２０１に送信する（６］送信）。そして、応答待ち状態となる。
【００１６】
このように、待ち行列３２２に蓄積された後の詰替処理と外部デバイス２０１へのアクセス要求送信は、実行順が回ってきて送信処理実行の際に行なわれるため、図１０に示すように、１］待ち行列に蓄積してから、６］送信するまでに送信遅延が発生する。
【００１７】
この送信遅延は、送信関連処理だけでなく、送信関連処理以外の処理を行ないたいために、所定期間内に行なう送信関連処理の回数や、時間に制限を持たせている場合に顕著となる。例えば、図１１に示すように、１秒間に行なえる送信関連処理を１回に制限している場合には、プログラム単位Ｃ３１０ｃの処理スケジュールが示すように、バッファ３２１が埋まっており、待ち行列に蓄積されると、プログラム単位Ａ３１０ａのバッファ解放によりバッファ３２１に空きができても、詰替を行なってアクセス要求を送信できるのは、次の１秒サイクルになってしまい、送信遅延が拡大することになり。この送信遅延は、通信以外の処理にも影響を与え、通信以外の処理の実行も遅延することになる。
【００１８】
また、別例として、従来の外部デバイスアクセス装置の外部デバイスに対するアクセスは、図１２、図１３に示すような手順で行なわれる場合もある。別例においても、バッファ３２１が埋まっている場合、プログラム単位Ｃ３１０ｃからのアクセス要求は、アクセス要求に関する情報が待ち行列３２２に蓄積される（図１２、図１３の１］待ち行列に蓄積）。
【００１９】
そして、プログラム単位Ａ３１０ａに外部デバイス２０１から応答（２］応答）があると、プログラム単位Ａ３１０ａは、応答処理を行ない（３］応答処理）、バッファ３２１を解放するとともに（４］バッファ解放）、待ち行列３２２に蓄積されているアクセス要求に関する情報を、バッファ３２１に詰め替える（５］詰替）。すなわち、バッファ３２１の解放を行なったプログラム単位３１０がアクセス要求の詰め替え処理を引き続き行なう。
【００２０】
その後、実行順がプログラム単位Ｃ３１０ｃに切替えられると、プログラム単位Ｃ３１０ｃは、バッファ３２１に詰め替えられているアクセス要求を、外部デバイス２０１に送信する（６］送信）。そして、応答待ち状態となる。
【００２１】
この場合も、実際にアクセス要求を送信するのは、実行順がプログラム単位Ｃ３１０ｃに切替えられたタイミングであるため、図１３に示すように、１］待ち行列に蓄積してから、６］送信するまでに送信遅延が発生することになる。
【００２２】
また、この送信遅延は、上記の例と同様に、送信関連処理だけでなく送信関連処理以外の処理を行ないたいために、所定期間内に行なう送信関連処理の回数や、時間に制限を持たせている場合に顕著となる。例えば、図１４に示すように、１秒間に行なえる送信関連処理を１回に制限している場合には、プログラム単位Ｃ３１０ｃの処理スケジュールが示すように、バッファ３２１が埋まっており、待ち行列に蓄積されると、プログラム単位Ａ３１０ａがバッファ３２１を解放して詰替を行なっても、アクセス要求を送信できるのは、次の１秒サイクルになってしまい、送信遅延が拡大することになり。この遅延は、通信以外の処理にも影響を与え、通信以外の処理の実行も遅延することになる。
【００２３】
そこで、本発明は、外部デバイスへのアクセス要求を蓄積するバッファに空きがない場合におけるアクセス要求の送信待ち時間を短縮することを目的とする。
【課題を解決するための手段】
【００２４】
上記課題を解決するため、本発明によれば、外部デバイスに対するアクセス処理を行なうための送信処理部と受信処理部とを含んだ処理実行単位を複数有し、前記処理実行単位を切替えて実行させる制御部と、前記送信処理部による外部デバイスに対するアクセス要求を蓄積するバッファ部と、前記バッファ部に空きがない場合に、前記アクセス要求に関する情報を蓄積する待ち行列部とを備え、前記受信処理部は、外部デバイスからアクセス要求に対する応答を受信すると、応答処理を行ない、対応するバッファ部を解放した後、前記待ち行列部にアクセス要求に関する情報が蓄積されている場合には、当該アクセス要求に関する情報の前記バッファへの詰替を行なうとともに、当該アクセス要求に関する情報に対応するアクセス要求を、対応する外部デバイスに送信することを特徴とする外部デバイスアクセス装置が提供される。
【００２５】
また、本発明によれば、外部デバイスに対するアクセス処理を行なうための送信処理部と受信処理部とを含んだ処理実行単位を複数有し、前記処理実行単位を切替えて実行させる制御部と、前記送信処理部による外部デバイスに対するアクセス要求を蓄積するバッファ部と、前記バッファ部に空きがない場合に、前記アクセス要求に関する情報を蓄積する待ち行列部として情報処理装置を機能させるコンピュータプログラムであって、前記受信処理部は、外部デバイスからアクセス要求に対する応答を受信すると、応答処理を行ない、対応するバッファ部を解放した後、前記待ち行列部にアクセス要求に関する情報が蓄積されている場合には、当該アクセス要求に関する情報の前記バッファへの詰替を行なうとともに、当該アクセス要求に関する情報に対応するアクセス要求を、対応する外部デバイスに送信することを特徴とするコンピュータプログラムが提供される。
【発明の効果】
【００２６】
本発明によれば、受信処理において、バッファの解放を行なうとともに、待ち行列に蓄積されたアクセス要求に関する情報に対応するアクセス要求を外部デバイスに送信するため、外部デバイスへのアクセス要求を蓄積するバッファに空きがない場合におけるアクセス要求の送信待ち時間を短縮することができる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態に係る外部デバイスアクセスシステムの構成を示すブロック図である。
【図２】ＭＰＵで起動するプログラム単位について説明するための図である。
【図３】本実施形態における受信処理モジュールの動作について説明するためのフローチャートである。
【図４】本実施形態の受信処理の手順について説明するための図である。
【図５】本実施形態の受信処理の手順について説明するための図である。
【図６】１秒間に行なえる送信関連処理を１回に制限している場合の本実施形態の処理スケジュールを説明するための図である。
【図７】従来の外部デバイスアクセス装置の外部デバイスに対するアクセス手順について説明するための図である。
【図８】プログラム単位の外部デバイスへのアクセス手順について説明するための図である。
【図９】待ち行列について説明するための図である。
【図１０】待ち行列を使用したときのアクセス手順について説明するための図である。
【図１１】１秒間に行なえる送信関連処理を１回に制限している場合の処理スケジュールを説明するための図である。
【図１２】従来の外部デバイスアクセス装置の外部デバイスに対するアクセス手順の他の例について説明するための図である。
【図１３】プログラム単位の外部デバイスへのアクセス手順の他の例について説明するための図である。
【図１４】１秒間に行なえる送信関連処理を１回に制限している場合の処理スケジュールを説明するための図である。
【発明を実施するための形態】
【００２８】
本発明の実施の形態について図面を参照して説明する。図１は、本実施形態に係る外部デバイスアクセスシステムの構成を示すブロック図である。本図に示すように外部デバイスアクセスシステムは、外部デバイスアクセス装置１０が、複数台の外部デバイス２０１と接続されて構成される。例えば、外部デバイスアクセス装置１０は、フィールド・コントロール・システムとして、外部デバイス２０１をフィールド機器とすることができるが、外部デバイスアクセスシステムは、これらの装置に限られない。また、外部デバイスアクセス装置１０は、所定のコンピュータプログラムをインストールした汎用的な情報処理装置を用いて構成することもできる。
【００２９】
外部デバイスアクセス装置１０は、ＭＰＵ１００と、メモリ１２０と、外部デバイスと通信を行なうための通信Ｉ／Ｆ１４０とを備えており、それぞれが内部バスによって接続されている。ここで、ＭＰＵ１００は、制御部として機能する。
【００３０】
図２に示すように、外部デバイスアクセス装置１０のＭＰＵ１００では、プログラム単位Ａ１１０ａ、プログラム単位Ｂ１１０ｂ、プログラム単位Ｃ１１０ｃが起動しており、プログラム切替部１０１により、プログラム単位１１０の実行が切替えられている。ここで、プログラム切替部１０１は、プログラム単位Ａ１１０ａ、プログラム単位Ｂ１１０ｂ、プログラム単位Ｃ１１０ｃの順で実行を切替えるものとする。
【００３１】
各プログラム単位１１０は、送信処理モジュール１１１と、受信処理モジュール１１２を含んでおり、これらのモジュールにしたがって、外部デバイスアクセス装置１０に接続された外部デバイス（１）２０１ａ、外部デバイス（２）２０１ｂ、外部デバイス（３）２０１ｃ…外部デバイス（Ｎ）２０１ｎに対するアクセス処理を行なう。
【００３２】
なお、プログラム単位１１０は、処理実行単位として機能し、送信処理モジュール１１１は、送信処理部として機能し、受信処理モジュール１１２は、受信処理部として機能する。
【００３３】
また、外部デバイスアクセス装置１０のメモリ１２０には、バッファ部として機能するバッファ１２１および待ち行列部として機能する待ち行列１２２が設けられている。バッファ１２１は、プログラム単位１１０が、外部デバイス２０１にアクセス要求送信後、外部デバイス２０１からの応答を待つ間、アクセス要求を保持するために用いられる。待ち行列１２２は、バッファ１２１が埋まっている場合に、アクセス要求に関する情報を蓄積するために用いられる。
【００３４】
次に、本実施形態における受信処理モジュール１１２の動作について図３のフローチャートを参照して説明する。本図に示すように、送信処理モジュール１１１により、アクセス要求が外部デバイス２０１に送信され、応答待ち状態にあるときに、外部デバイス２０１から応答があった場合（Ｓ１０１：Ｙｅｓ）は、応答に対する応答処理を行なって（Ｓ１０２）、バッファ１２１を解放する（Ｓ１０３）。
【００３５】
その後、待ち行列１２２にアクセス要求に関する情報が蓄積されているかどうかを判定し（Ｓ１０４）、待ち行列１２２にアクセス要求に関する情報が蓄積されていれば（Ｓ１０４：Ｙｅｓ）、アクセス要求の詰替を行なう（Ｓ１０５）。アクセス要求の詰替は、例えば、待ち行列１２２にアクセス要求に関する情報を蓄積したプログラム単位１１０を動作させたり、待ち行列１２２にアクセス要求に関する情報を蓄積したプログラム単位１１０から情報を取得することで行なうことができる。
【００３６】
さらに、受信処理モジュール１１２は、詰め替えられたアクセス要求を外部デバイスに対して送信する（Ｓ１０６）。このように、本実施形態では、受信処理モジュール１１２における応答処理において、バッファの解放を行なった際に、待ち行列１２２にアクセス要求に関する情報が蓄積されている場合には、詰替を実行するのみならず、アクセス要求の送信まで実行することにより、待ち行列１２２への蓄積からアクセス要求送信までの送信遅延を短縮するようにしている。
【００３７】
図４、図５を参照して、本実施形態の受信処理の手順についてプログラム単位Ａ１１０ｃに注目して説明する。ここでは、プログラム単位Ａ１１０ａが、アクセス要求をバッファ１２１に蓄積し、さらに、プログラム単位Ｂ１１０ｂが、アクセス要求をバッファ１２１に蓄積した時点で、バッファ１２１がすべて埋まったものとする。
【００３８】
このため、プログラム単位Ｃ１１０ｃからのアクセス要求は、バッファ１２１に蓄積することはできず、アクセス要求に関する情報が待ち行列１２２に蓄積される（図４、図５の１］待ち行列に蓄積）。
【００３９】
プログラム単位Ａ１１０ａに外部デバイス２０１から応答（２］応答）があると、プログラム単位Ａ１１０ａは、応答処理を行ない（３］応答処理）、バッファ１２１を解放するとともに（４］バッファ解放）、待ち行列１２２に蓄積されているアクセス要求に関する情報を、バッファ１２１に詰め替える（５］詰替）。そして、さらに、詰め替えたアクセス要求を外部デバイス２０１に対して送信する（６］送信）。
【００４０】
この結果、図５に示すように、プログラム単位Ｃ１１０ｃでは、従来のスケジュールと比較して、待ち行列１２２に蓄積してからアクセス要求が送信されるまでの送信待ち時間が短縮されることになる。
【００４１】
また、この送信待ちの短縮は、送信関連処理だけでなく送信関連処理以外の処理を行ないたいために、所定期間内に行なう送信関連処理の回数や、時間に制限を持たせている場合にも効果を奏する。例えば、図６に示すように、１秒間に行なえる送信関連処理を１回に制限している場合には、プログラム単位Ｃ１１０ｃの処理スケジュールが示すように、プログラム単位Ａ１１０ａがバッファ１２１を解放した後、詰替および送信を行なうため、従来のスケジュールと比較して、待ち行列１２２に蓄積してからアクセス要求が送信されるまでの送信待ち時間が大きく短縮されることになる。また、この送信待ち時間の短縮により、通信以外の処理の実行待ち時間を短縮することができる。
【符号の説明】
【００４２】
１０…外部デバイスアクセス装置、１０１…プログラム切替部、１１０…プログラム単位、１１１…送信処理モジュール、１１２…受信処理モジュール、１２０…メモリ、１２１…バッファ、１２２…待ち行行列、１４０…通信Ｉ／Ｆ、２０１…外部デバイス、３０１…プログラム切替部、３１０…プログラム単位、３１１…送信処理モジュール、３１２…受信処理モジュール、３２１…バッファ、３２２…待ち行列
【図１】
0005652648.tif 000002
【図２】
0005652648.tif 000003
【図３】
0005652648.tif 000004
【図４】
0005652648.tif 000005
【図５】
0005652648.tif 000006
【図６】
0005652648.tif 000007
【図７】
0005652648.tif 000008
【図８】
0005652648.tif 000009
【図９】
0005652648.tif 000010
【図１０】
0005652648.tif 000011
【図１１】
0005652648.tif 000012
【図１２】
0005652648.tif 000013
【図１３】
0005652648.tif 000014
【図１４】
0005652648.tif 000015