(57)【要約】【課題】  従来の機器組み込み制御ソフトウェアは、現在実行中のシーケンス制御プログラムと並行して新たなシーケンス制御プログラムを実行したい場合には、一つのシーケンス制御プログラムで二つ以上の処理を行わせるよう、プログラマが随時工夫しなければならなかった。【解決手段】  本発明の実時間処理ソフトウェア実行装置は、シーケンス制御プログラムの断片を保持するシーケンス断片データベース１０２と、シーケンス制御プログラムの雛形を表すシーケンステンプレート群を保持するシーケンステンプレート保持部１０５と、シーケンステンプレートに従ってシーケンス制御プログラム断片を組み合わせ実装させる複数のシーケンス実行部１０１と、各シーケンス実行部の実行状態を保持する実行状態保持部１０４とから構成され、シーケンス断動的に組み合わせて実行できるようにした。【選択図】  図１（ａ）
2006215668.tif 000002
【特許請求の範囲】
【請求項１】
シーケンス制御プログラムを構成する所要の処理単位であるシーケンス制御プログラム断片を複数個保持するシーケンス断片記憶部と、
各々が複数の前記シーケンス制御プログラム断片の実行制御情報を記述してなる複数のシーケンステンプレートを保持するシーケンステンプレート保持部と、
該シーケンステンプレート保持部に保持された各シーケンステンプレートに基づいて複数の前記シーケンス制御プログラム断片を動的に組み合わせて複数のシーケンス制御プログラムを実装するシーケンス実装部とを備える、
ことを特徴とする並列処理ソフトウェア実装装置。
【請求項２】
請求項１に記載の並列処理ソフトウェア実装装置において、
前記シーケンス断片記憶部からシーケンス制御プログラム断片を検索するシーケンス制御プログラム断片検索部と、
前記シーケンステンプレート保持部からシーケンステンプレートを検索するシーケンステンプレート検索部とをさらに備える、
ことを特徴とする並列処理ソフトウェア実装装置。
【請求項３】
請求項１に記載の並列処理ソフトウェア実装装置において、
前記シーケンステンプレートは複数のシーケンスステップ情報から構成される、
ことを特徴とする並列処理ソフトウェア実装装置。
【請求項４】
請求項３に記載の並列処理ソフトウェア実装装置において、
前記シーケンスステップ情報は、各ステップ情報に対し一義的に付されたステップ番号と、各ステップに対応するシーケンス断片を示すシーケンス断片番号と、シーケンス断片を実行する際の実行前提条件と、シーケンス断片の実行後の次ステップ移行条件と、該次ステップ移行条件を満足した場合に移行する次ステップ番号とを有する、
ことを特徴とする並列処理ソフトウェア実装装置。
【請求項５】
請求項１に記載の並列処理ソフトウェア実装装置において、
前記シーケンス実装部により実装された複数のシーケンス制御プログラムを並列実行する実行エンジン部をさらに備える、
ことを特徴とする並列処理ソフトウェア実行装置。
【請求項６】
シーケンス制御プログラムを構成する所要の処理単位であるシーケンス制御プログラム断片とその実行制御情報を記述した複数のシーケンステンプレートを作成し、
各シーケンステンプレートに基づいて複数の前記シーケンス制御プログラム断片を動的に組み合わせて複数のシーケンス制御プログラムを実装する、
ことを特徴とする並列処理ソフトウェア実装方法。
【請求項７】
コンピュータに請求項６に記載の並列処理ソフトウェア実装方法を実行させる、
ことを特徴とする並列処理ソフトウェア実装プログラム。
【請求項８】
請求項７に記載の並列処理ソフトウェア実装プログラムを記録した、
ことを特徴とする並列処理ソフトウェア実装プログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理ソフトウェア実装装置，並列処理ソフトウェア実行装置，並列処理ソフトウェア実装方法，並列処理ソフトウェア実装プログラムおよび並列処理ソフトウェア実装プログラム記録媒体に関するものであり、特に、機器組み込み用途向けの実時間並列処理ソフトウェアの実装，実行方法の改良を図ったものに関する。
【背景技術】
【０００２】
従来の機器組み込み向けの実時間並列処理ソフトウェア構成方法には、例えば特許文献１に示すような構成方法があった。
【０００３】
図１２は特許文献１に記載された従来の状態遷移動作システムの構成方法である。
図１２に示す従来の状態遷移動作システムは、シーケンス部品（内部状態部品）１２０１の組み合わせと、状態部品を接合する接合部品（イベント入力部品）１２０２とからなる。内部状態部品１２０１は内部にシーケンス制御プログラムを持ち、内部状態が遷移すると内部状態部品に内包されたシーケンス制御プログラムが起動される。イベント入力部品１２０２は外部からのイベントが入力されると内部状態部品１２０１にイベントを配信して内部状態の遷移を行わせる。
【０００４】
ＤＶＤレコーダの制御を例にとると、接合部品１２０２に入力されるイベント１は、プレイボタンの押下，ＤＶＤのディスクを最後まで再生し終端に達した旨の情報等、動作のトリガになるものである。
【０００５】
接合部品１２０２からシーケンス部品１２０１ａ，あるいは１２０１ｂに出力されるイベント２，３は、シーケンス部品１２０１を起動するイベントであり、接合部品からシーケンス部品１２０１への状態問い合わせは、シーケンス部品１２０１が個別に動作状態を持っている、その状態を問い合わせるコマンドであり、同じく状態指定はこのコマンドで問い合わせた状態より、例えば再生状態等の他の状態に移行すべき旨のコマンドであり、シーケンス部品１２０１からの出力は、例えば画像デコードチップに対するコマンド出力，画面出力，デバイスドライバのソフトウエアに対する指令等である。
【０００６】
このように、シーケンス制御システムを、状態遷移図として表現可能な動作仕様を分割してなる部分的な動作仕様を実現する少なくとも２つのシーケンス部品と、各シーケンス部品間を接合する接合部品とを備えるように構成することで、既存の状態遷移動作システムを再利用して新たな状態遷移動作システムを効率的に開発することが可能となる。
【特許文献１】特開平１１−３３８６８４号公報（第４頁−第７頁  図１−図３）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前記従来の機器組み込み制御ソフトウェアでは、内部状態に対応するシーケンス制御プログラムは同時に一つしか動作させることができない構造であった。
【０００８】
このため、シーケンス制御プログラムの動作中に新たなイベント入力が行われた場合に、現在実行中のシーケンス制御プログラムと並行して新たなシーケンス制御プログラムを実行したい場合には、一つのシーケンス制御プログラムで二つ以上の処理を行わせるよう、プログラマが随時工夫しなければならなかった。
【０００９】
即ち、前記従来例を含め従来の一般的な機器組み込み制御ソフトウェアは、常に一定の繰り返し処理を行い、必要なタイミングに従って制御信号を出力、ユーザ操作の信号を取得などしつつ、自機器の状態を変化させ機器全体の制御を行っている。
【００１０】
以下、図１３を用いて従来の機器組み込み制御ソフトウェアの構造を説明する。
図１３に示す従来の機器組み込み制御ソフトウェアは、制御信号出力１３０１，内部状態遷移１３０２，ユーザ入力取得１３０３，入力判定１３０４，制御信号出力１３０５，ユーザ入力取得１３０６，入力判定１３０７，内部状態遷移１３０８，制御信号出力１３０９，制御信号出力１３１０の各ステップからなるループ構造１３１１を有する。
【００１１】
この従来の機器組み込み制御ソフトウェアは、常に一定の繰り返し処理を行うためのループ構造１３１１を備え、ループ構造１３１１中において制御対象物を制御するための制御信号出力１３０１，１３１０などの処理を行う。またループ構造１３１１中では制御信号出力を行うことに加え、制御対象機器の現行状態を管理するための内部状態遷移１３０２処理などを行う。さらにループ構造１３１１中では制御信号出力１３０１，１３０５，１３０９，１３１０処理と内部状態遷移１３０２，１３０８処理を行うことに加え、ユーザからの操作入力を受け付けるためのユーザ入力取得１３０３，１３０６処理などを行う。ユーザ入力処理は入力の種類に従い、例えば入力判定１３０４に示す様に通常は出力しない制御信号出力１３０５を出力する場合もある。さらに入力の種類によっては内部状態遷移処理１３０８を行って内部状態を遷移させると共に、通常は出力しない制御信号出力１３０９を行う。
【００１２】
このように、従来の機器組み込み制御ソフトウェアは常に一定の繰り返し処理を行い、必要なタイミングに従って制御信号を出力し、ユーザ操作の信号を取得などしつつ、自機器の状態を変化させ機器全体の制御を行っている。
【００１３】
この従来の機器組み込み制御ソフトウェアは、個々のシーケンス部品に動作状態が個別に含まれており、シーケンス制御プログラムの動作中に新たなイベント入力が行われた場合に、現在実行中のシーケンス制御プログラムと並行して新たなシーケンス制御プログラムを実行したい場合には、一つのシーケンス制御プログラムで二つ以上の処理を行うように記述する必要がある。このため、プログラム作成に時間を要し保守が困難になるという問題があった。
【００１４】
本発明は上記課題を解決するためになされたもので、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングを行う必要が無く、容易に複数同時に実行可能なシーケンス制御プログラムを作成でき、作成したプログラムを入力して実行可能なシーケンス制御プログラムを実装、さらには実行できる並列処理ソフトウェア実装装置，並列処理ソフトウェア実行装置，並列処理ソフトウェア実装方法，並列処理ソフトウェア実装プログラムおよび並列処理ソフトウェア実装プログラム記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
前記従来の課題を解決するために、本発明の請求項１に係る並列処理ソフトウェア実装装置は、シーケンス制御プログラムを構成する所要の処理単位であるシーケンス制御プログラム断片を複数個保持するシーケンス断片記憶部と、各々が複数の前記シーケンス制御プログラム断片の実行制御情報を記述してなる複数のシーケンステンプレートを保持するシーケンステンプレート保持部と、該シーケンステンプレート保持部に保持された各シーケンステンプレートに基づいて複数の前記シーケンス制御プログラム断片を動的に組み合わせて複数のシーケンス制御プログラムを実装するシーケンス実装部とを備えることを特徴とする。
【００１６】
また、本発明の請求項２に係る並列処理ソフトウェア実装装置は、請求項１に記載の並列処理ソフトウェア実装装置において、前記シーケンス断片記憶部からシーケンス制御プログラム断片を検索するシーケンス制御プログラム断片検索部と、前記シーケンステンプレート保持部からシーケンステンプレートを検索するシーケンステンプレート検索部とをさらに備えることを特徴とする。
【００１７】
また、本発明の請求項３に係る並列処理ソフトウェア実装装置は、請求項１に記載の並列処理ソフトウェア実装装置において、前記シーケンステンプレートは複数のシーケンスステップ情報から構成されることを特徴とする。
【００１８】
また、本発明の請求項４に係る並列処理ソフトウェア実装装置は、請求項３に記載の並列処理ソフトウェア実装装置において、前記シーケンスステップ情報は、各ステップ情報に対し一義的に付されたステップ番号と、各ステップに対応するシーケンス断片を示すシーケンス断片番号と、シーケンス断片を実行する際の実行前提条件と、シーケンス断片の実行後の次ステップ移行条件と、該次ステップ移行条件を満足した場合に移行する次ステップ番号とを有することを特徴とする。
【００１９】
また、本発明の請求項５に係る並列処理ソフトウェア実行装置は、請求項１に記載の並列処理ソフトウェア実装装置において、前記シーケンス実装部により実装された複数のシーケンス制御プログラムを並列実行する実行エンジン部をさらに備えることを特徴とする。
【００２０】
また、本発明の請求項６に係る並列処理ソフトウェア実装方法は、シーケンス制御プログラムを構成する所要の処理単位であるシーケンス制御プログラム断片とその実行制御情報を記述した複数のシーケンステンプレートを作成し、各シーケンステンプレートに基づいて複数の前記シーケンス制御プログラム断片を動的に組み合わせて複数のシーケンス制御プログラムを実装することを特徴とする。
【００２１】
また、本発明の請求項７に係る並列処理ソフトウェア実装プログラムは、コンピュータに請求項６に記載の並列処理ソフトウェア実装方法を実行させることを特徴とする。
【００２２】
また、本発明の請求項８に係る並列処理ソフトウェア実装プログラム記録媒体は、請求項７に記載の並列処理ソフトウェア実装プログラムを記録したことを特徴とする。
【発明の効果】
【００２３】
本発明によれば、複数のシーケンス制御プログラムの同時実行を予め考慮してプログラミングを行う必要が無く、容易に複数同時に実行可能なシーケンス制御プログラムを作成することができ、作成したシーケンス断片とシーケンステンプレートよりなる該シーケンス制御プログラムを装置に入力することにより、並列実行可能なシーケンス制御プログラムを実装でき、さらにはこれらを並列実行できる。
【００２４】
即ち、本願の請求項１の発明に係る並列処理ソフトウェア実装装置によれば、シーケンステンプレートに記述した実行制御情報に従ってシーケンス断片を組み合わせることでシーケンス制御プログラムを実装するようにしたので、動作状態に応じて自動的に複数のシーケンス制御プログラムを動作させることにより、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングする必要がなく、容易に複数同時に実行可能なシーケンス制御プログラムを作成でき、シーケンス断片とシーケンステンプレートよりなるシーケンス制御プログラムを入力して実行可能なシーケンス制御プログラムを実装することが可能な装置が得られる効果がある。
【００２５】
また、本願の請求項２の発明に係る並列処理ソフトウェア実装装置によれば、請求項１に記載の並列処理ソフトウェア実装装置において、シーケンステンプレート群の中からシーケンステンプレートを検索しこれに対応するシーケンス断片を検索するようにしたので、所要のシーケンス制御プログラムを実装することが可能となる効果がある。
【００２６】
また、本願の請求項３の発明に係る並列処理ソフトウェア実装装置によれば、シーケンステンプレートは複数のシーケンスステップ情報から構成されるようにしたので、各ステップで行うべき実行制御の内容を明確にしてプログラム作業を行うことが可能となり、プログラム作成時や保守時のエラー軽減が可能となる効果がある。
【００２７】
また、本願の請求項４の発明に係る並列処理ソフトウェア実装装置によれば、各シーケンスステップ情報には、該ステップ情報に対し一義的に付されたステップ番号と、各ステップに対応するシーケンス断片を示すシーケンス断片番号と、シーケンス断片を実行する際の実行前提条件と、シーケンス断片の実行後の次ステップ移行条件と、該次ステップ移行条件を満足した場合に移行する次ステップ番号とを含むようにしたので、各ステップで行うべき実行制御の項目が全てのステップにおいて同一であるため、プログラム作成時や保守時のエラー軽減が可能となる効果がある。
【００２８】
また、本願の請求項５の発明に係る並列処理ソフトウェア実行装置によれば、シーケンステンプレートに記述した実行制御情報に従ってシーケンス断片を組み合わせることでシーケンス制御プログラムを実装し、各制御シーケンスの動作状態に応じて自動的に複数のシーケンス制御プログラムを動作させるようにしたので、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングを行う必要がなく、容易に複数同時に実行可能なシーケンス制御プログラムを作成することができ、シーケンス断片とシーケンステンプレートよりなるシーケンス制御プログラムを入力して実装されたシーケンス制御プログラムを実行することが可能な装置が得られる効果がある。
【００２９】
また、本願の請求項６の発明に係る並列処理ソフトウェア実装方法によれば、シーケンステンプレートに記述した実行制御情報に従ってシーケンス断片を組み合わせることでシーケンス制御プログラムを実装するようにしたので、動作状態に応じて自動的に複数のシーケンス制御プログラムを動作させることにより、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングを行う必要がなく、容易に複数同時に実行可能なシーケンス制御プログラムを作成でき、シーケンス断片とシーケンステンプレートよりなるシーケンス制御プログラムを入力して、実行可能なシーケンス制御プログラムを実装することが可能な方法が得られる効果がある。
【００３０】
また、本願の請求項７の発明に係る並列処理ソフトウェア実装プログラムによれば、シーケンステンプレートに記述した実行制御情報に従ってシーケンス断片を組み合わせることでシーケンス制御プログラムを実装する方法をコンピュータに実行させるようにしたので、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングを行う必要がなく、容易に複数同時に実行可能なシーケンス制御プログラムを作成でき、シーケンス断片とシーケンステンプレートよりなるシーケンス制御プログラムを入力して、実行可能なシーケンス制御プログラムを実装することが可能なプログラムが得られる効果がある。
【００３１】
また、本願の請求項８の発明に係る並列処理ソフトウェア実装プログラム記録媒体によれば、シーケンステンプレートに記述した実行制御情報に従ってシーケンス断片を組み合わせることでシーケンス制御プログラムを実装する方法をコンピュータに実行させるプログラムを記録媒体に記録するようにしたので、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングを行う必要がなく、容易に複数同時に実行可能なシーケンス制御プログラムを作成でき、シーケンス断片とシーケンステンプレートよりなるシーケンス制御プログラムを入力して、実行可能なシーケンス制御プログラムを実装することが可能なプログラムを記録した媒体が得られる効果がある。
【発明を実施するための最良の形態】
【００３２】
以下に本発明の実施の形態について、図面を参照しながら説明する。
（実施の形態１）
この実施の形態１は、シーケンス制御プログラムの断片と、シーケンス制御プログラムのテンプレートデータを用い、動作状態に応じて自動的に複数のシーケンス制御プログラムを動作させることで、各シーケンス制御プログラムは複数同時実行を予め考慮してプログラミングする必要が無く、容易に複数同時に実行可能なシーケンス制御プログラムを作成することができ、このようなプログラムを入力して実行可能なシーケンス制御プログラムを実装、さらには実行できるようにしたものである。
【００３３】
図１（ａ）は本発明の実施の形態１における実時間処理を行う並列処理ソフトウェア実行装置の構成図である。
図１（ａ）において、シーケンス実行部１０１はＣＰＵなどの演算部(図示せず)あるいはＯＳからのシーケンス実行指示を受け取り、シーケンス制御プログラムを実行する。シーケンス実行部１０１はＯＳのタスクに相当するもので、同時に並行して動作させるシーケンス制御プログラム（以下、プログラムと称す）分が予め用意される。実行状態保持部１０４は現在のＣＰＵの値やプログラムの実行中の値，シーケンスを実行する条件等、各シーケンス実行部の現在の実行状態を保持する。シーケンス断片データベース１０２はシーケンス実行部１０１で実行されるべきシーケンス制御プログラム断片１０３を複数個保持する。このシーケンス断片１０３はシーケンス制御プログラムの断片であり、それぞれ意味のある処理を行う。シーケンステンプレート保持部１０５はシーケンス制御プログラムにおけるシーケンス断片１０３の実行制御情報、例えば実行順序情報および実行条件情報を保持する。シーケンステンプレート１０６はＯＳからシーケンス実行部に与えられる実行指示に対応して複数個保持される。スケジューリング部１０７は複数用意されるシーケンス実行部１０１の実行スケジュールを決定する。
【００３４】
図１（ｃ）は図１（ａ）のシーケンス実行部の構成図である。
図１（ｃ）において、シーケンス断片検索部１０１ａは図１（ａ）のシーケンス断片データベース１０２の中から所要のシーケンス断片１０３を検索する。シーケンステンプレート検索部１０１ｂは図１（ａ）のシーケンステンプレート保持部１０５の中から所要のシーケンステンプレート１０６を検索する。これらシーケンス断片検索部１０１ａおよびシーケンステンプレート検索部１０１ｂは協調して動作し、互いに対応するシーケンス断片およびシーケンステンプレートを検索する。シーケンス実装部１０１ｃは図１（ｂ）に示すように、シーケンステンプレートに記述された情報に基づき所要のシーケンス断片を組み合わせる（連結する）ことでシーケンス制御プログラムを組み立てる（実装する）。実行エンジン部１０１ｄはこのように実装されたシーケンス制御プログラムを実行する。
【００３５】
なお、並列処理ソフトウェア実装装置はこの図１（ｃ）の構成から実行エンジン部を省略したもので、この場合、シーケンス実行部はシーケンス実装部となる。
【００３６】
次に、シーケンステンプレートの構成を図２に示す。図２において、シーケンステンプレート２０１は複数のシーケンスステップ情報２０２から成り、シーケンスの実行順序，実行条件（実行制御情報）とシーケンス断片との組み合わせ情報を保持する。シーケンスステップ情報の最後にはシーケンスの終了を示すシーケンス終了マーク２０３が配置される。
【００３７】
シーケンスステップ情報の構成を図３に示す。シーケンスステップ情報３０１は、各ステップに一意なステップ番号３０２と、各ステップに対応するシーケンスプログラム断片を示すシーケンス断片番号３０３と、各ステップを実行するための前提条件を示す実行前提条件３０４と、各ステップから次のステップに移行するための条件を示す次ステップ移行条件３０５と、次に実行すべきステップ番号を示す次ステップ番号３０６とから成る。
【００３８】
次に、本実時間処理向けソフトウェア実行装置が実行可能なプログラムを作成する際の手順を図４に示す。
まず、プログラマは作成したいプログラムを構成するシーケンスを定義する（ステップ４０１）。この時点では単にシーケンスの名称を定義するだけである。次に各シーケンスの内容を分析する（ステップ４０２）。この分析結果に基づき、予めライブラリとして用意されているシーケンス断片の中から所要のシーケンスを構成するシーケンス断片を検索する（ステップ４０３）。シーケンス断片が存在する場合は検索したシーケンス断片を選択しこれを使用する（ステップ４０４，４０５）。シーケンス断片が存在しない場合は新たにシーケンス断片を作成する（ステップ４０４，４０６）。
【００３９】
次に、シーケンスステップ情報を作成する（ステップ４０７）。これは、ステップ番号順に、各ステップにおいて使用するシーケンス断片の番号３０３，当該シーケンス断片を実行する前提条件３０４，次のステップに移行する条件３０５，次のステップの番号３０６を記述したデータ構造として作成する。
【００４０】
このシーケンスステップ情報を各ステップに対し作成してゆき、最後のステップの後のシーケンス終了マーク２０３を付加したものをシーケンステンプレート２０１として保存する。このシーケンステンプレートを各シーケンス毎に作成する。
【００４１】
次にこのように作成したプログラムを実行する際の動作について説明する。
図５（ａ），図５（ｂ）は、シーケンス実行部１０１がシーケンス実行の指示を受けてシーケンス制御プログラムを実行する処理を示す。この処理では、ＣＰＵなどの演算部(図示せず)あるいはＯＳが以下の各ステップ５０１〜５１８の処理を行う。
【００４２】
まず、図５（ａ）に示すように、シーケンス実行部１０１がシーケンス実行のイベントを受ける（ステップ５０１）。次に入力されたイベントに対応するシーケンステンプレートをシーケンステンプレート保持部から検索し、選択する（ステップ５０２）。次にスケジューリング部１０７が現在空き状態のシーケンス実行部を選択する（ステップ５０３）。この選択は例えば優先度が高いものを選択する等で行う。選択されたシーケンス実行部がシーケンステンプレートをシーケンステンプレート保持部１０５から検索し読み込む（ステップ５０４）。読み込まれたシーケンステンプレートに従ってシーケンス実行部１０１がシーケンス制御プログラムを実行する（ステップ５０５）。
【００４３】
以下、シーケンス制御プログラムの実行手順を示す。まず、図５（ｂ）に示すように、ステップカウントに数値１を代入する（ステップ５０６）。次にシーケンステンプレートから現在のステップカウントに対応するシーケンスステップ情報２０２を取得する（ステップ５０７）。取得したシーケンスステップ情報が終了マークであるかどうか判定し、終了マーク２０３であればシーケンス制御プログラムの実行を終了する。終了マークでなければ実行を継続する（ステップ５０８）。
【００４４】
次に、実行状態保持部１０４から現在の実行状態を取得する（ステップ５０９）。その後、シーケンスステップ情報から実行前提条件を取得する（ステップ５１０）。取得した実行前提条件と現在の実行状態を比較し、実行前提条件を満たさなければステップ５０９に戻り実行前提条件が満たされるまで繰り返す。実行前提条件が満たされれば処理を継続する（ステップ５１１）。次に、シーケンスステップ情報からシーケンス断片番号を取得する（ステップ５１２）。取得したシーケンス断片番号に該当するシーケンス断片をシーケンス断片データベースから検索する（ステップ５１３）。次にシーケンスステップ情報から次ステップ移行条件を取得する（ステップ５１４）。次に、取得したシーケンス断片をシーケンス実行部で実行する（ステップ５１５）。
【００４５】
次に、シーケンス断片の実行結果がステップ５１４で取得した次ステップ移行条件を満たすかどうか判定する。次ステップ移行条件が満たされなければステップ５１５に戻って繰り返し処理を行う。次ステップ移行条件が満たされれば処理を継続する（ステップ５１６）。次に、シーケンスステップ情報から次ステップ番号を取得する（ステップ５１７）。ステップカウントに取得したステップ番号を代入する（ステップ５１８）。以降ステップ５０７に戻って繰り返し処理を行う。
【００４６】
図６は、本実施の形態１による並列処理プログラム実行装置により実行されるシーケンス制御プログラムの一例として、ＤＶＤレコーダの制御プログラムを作成する場合における、ＤＶＤレコーダの制御シーケンスを示すものである。なお、この図６はＤＶＤレコーダの動作を簡略化して示している。
【００４７】
この図６において、オブジェクト６０１は箱の中にオブジェクト名が下線付きで表示されている。また、ライフライン６０２はオブジェクトから下方に向けて引かれた破線でオブジェクトの生存を示す。アクティベーション６０３はライフライン中の矩形で表わされ、オブジェクトが実際に動作している期間を表わす。メッセージ６０４は矢印付きの実線とその上のSetupDecoder等のラベルで表わされ、イベントの送信を表わす。
この図６の例で使用されているシーケンス断片群の意味は以下の通りである。
【００４８】
■シーケンス断片群の例
＜共通＞
１：AllocBuf()          /* メモリバッファ取得指示   */
＜録画系＞
２：SetupEncoder()      /* エンコーダ設定           */
３：SetEncodeData()     /* エンコード対象データ設定 */
４：ExecuteDataEncode() /* エンコード指示           */
５：UpdateRecInfo()     /* 録画情報更新             */
＜再生系＞
６：SetupDecoder()      /* デコーダ設定             */
７：SearchDiskData()    /* ディスク情報読み込み     */
８：PlayPG()            /* タイトル再生指示         */
９：UpdatePlayInfo()    /* 再生情報更新             */
【００４９】
シーケンス断片AllocBuf()は録画系，再生系の双方で共通に使用される。
このシーケンス断片を用いて表わされる実際のＤＶＤの動作プログラムを、Ｃ言語の文法に準拠して記述すれば次のようになる。
【００５０】
■実際の処理の例
/*********************************************/
RecInfo recInfo;
Record()
{
SetupEncoder();
while(recInfo.next != END){
AllocBuf();
SetEncodeData();
ExecuteDataEncode();
UpdateRecInfo();
}
}
/*********************************************/
/*********************************************/
PlayInfo playInfo;
Play()
{
SetupDecoder();
while(playInfo.next != END){
AllocBuf();
SearchDiskData();
PlayPGC();
UpdatePlayInfo();
}
}
/*********************************************/
【００５１】
プログラムRecordの動作は次のようになる。
即ち、
エンコーダ（のデバイスドライバ）を設定し、録画情報がなくなる（＝ENDになる）まで、メモリバッファを取得し、エンコード対象データを設定し、エンコードを指示し、録画情報を更新する。
【００５２】
プログラムPlayの動作は次のようになる。
即ち、
デコーダ（のデバイスドライバ）を設定し、再生情報がなくなる（＝ENDになる）まで、メモリバッファを取得し、ディスク情報を読み込み、タイトル再生を指示し、再生情報を更新する。
【００５３】
これらプログラムRecordおよびプログラムPlayを実現するシーケンステンプレートに含まれるシーケンスステップ情報のデータ構造は、例えば次のように記述できる。なお、次ステップ番号は、同一のシーケンステンプレート内のシーケンスステップ情報を記入するものとする。
【００５４】
■シーケンスステップ情報の例
＜録画系＞
/* ステップ 番号 0 */
SeqStepInfo recStep_0.piece      = 2;           /* シーケンス断片番号   */
SeqStepInfo recStep_0.precond    = "NULL";      /* 実行前提条件         */
SeqStepInfo recStep_0.chagecond  = "INIT_OK";   /* 次ステップ移行条件   */
SeqStepInfo recStep_0.netx_stap  = 1;           /* 次ステップ番号       */
/* ステップ 番号 1 */
SeqStepInfo recStep_1.piece      = 1;           /* シーケンス断片番号   */
SeqStepInfo recStep_1.precond     = "NULL";     /* 実行前提条件         */
SeqStepInfo recStep_1.chagecond  = "ALLOC_OK";  /* 次ステップ移行条件   */
SeqStepInfo recStep_1.netx_stap  = 2;           /* 次ステップ番号       */
/* ステップ 番号 2 */
SeqStepInfo recStep_2.piece      = 3;           /* シーケンス断片番号   */
SeqStepInfo recStep_2.precond    = "ENCODER_READY"; /* 実行前提条件     */
SeqStepInfo recStep_2.chagecond  = "ALLOC_OK";  /* 次ステップ移行条件   */
SeqStepInfo recStep_2.netx_stap  = 3;           /* 次ステップ番号       */
/* ステップ 番号 3 */
SeqStepInfo recStep_3.piece      = 4;           /* シーケンス断片番号   */
SeqStepInfo recStep_3.precond    = "ENCODER_READY"; /* 実行前提条件     */
SeqStepInfo recStep_3.chagecond  = "STAT_OK";   /* 次ステップ移行条件   */
SeqStepInfo recStep_3.netx_stap  = 4;           /* 次ステップ番号       */
/* ステップ 番号 4 */
SeqStepInfo recStep_4.piece      = 5;           /* シーケンス断片番号   */
SeqStepInfo recStep_4.precond    = "NULL";      /* 実行前提条件         */
SeqStepInfo recStep_4.chagecond  = "NULL";      /* 次ステップ移行条件   */
SeqStepInfo recStep_4.netx_stap  = 1;           /* 次ステップ番号       */
＜再生系＞
/* ステップ 番号 0 */
SeqStepInfo playStep_0.piece     = 6;           /* シーケンス断片番号   */
SeqStepInfo playStep_0.precond   = "NULL";      /* 実行前提条件         */
SeqStepInfo playStep_0.chagecond = "INIT_OK";   /* 次ステップ移行条件   */
SeqStepInfo playStep_0.netx_stap = 1;           /* 次ステップ番号       */
/* ステップ 番号 1 */
SeqStepInfo playStep_1.piece     = 1;           /* シーケンス断片番号   */
SeqStepInfo playStep_1.precond   = "NULL";      /* 実行前提条件         */
SeqStepInfo playStep_1.chagecond = "ALLOC_OK";  /* 次ステップ移行条件   */
SeqStepInfo playStep_1.netx_stap = 2;           /* 次ステップ番号       */
/* ステップ 番号 2 */
SeqStepInfo playStep_2.piece     = 7;           /* シーケンス断片番号   */
SeqStepInfo playStep_2.precond   = "DISK_READY";/* 実行前提条件         */
SeqStepInfo playStep_2.chagecond = "VALID_DATA";/* 次ステップ移行条件   */
SeqStepInfo playStep_2.netx_stap = 3;           /* 次ステップ番号       */
/* ステップ 番号 3 */
SeqStepInfo playStep_3.piece     = 8;           /* シーケンス断片番号   */
SeqStepInfo playStep_3.precond   = "DISK_READY";/* 実行前提条件         */
SeqStepInfo playStep_3.chagecond = "STAT_OK";   /* 次ステップ移行条件   */
SeqStepInfo playStep_3.netx_stap = 4;           /* 次ステップ番号       */
/* ステップ 番号 4 */
SeqStepInfo playStep_4.piece     = 9;           /* シーケンス断片番号   */
SeqStepInfo playStep_4.precond   = "NULL";      /* 実行前提条件         */
SeqStepInfo playStep_4.chagecond = "NULL";      /* 次ステップ移行条件   */
SeqStepInfo playStep_4.netx_stap = 1;           /* 次ステップ番号       */
【００５５】
録画系のシーケンスステップ情報の場合、
シーケンスステップ情報０において、シーケンス断片番号は２、即ち、エンコーダの設定であり、実行前提条件はNULL、即ち無しであり、次ステップ移行条件は初期化OKであり、次に移行するステップ番号は１である。以下同様に、移行条件が成立すると昇順で次のステップ番号のシーケンスステップ情報に移行してゆく。
【００５６】
シーケンスステップ情報１はメモリバッファの取得指示を行い、実行前提条件は無しであり、メモリバッファ取得完了が移行条件である。
【００５７】
シーケンスステップ情報２はエンコーダを対象とするデータ設定を行い、実行前提条件はエンコーダの準備完了であり、メモリバッファ取得完了が移行条件である。
【００５８】
シーケンスステップ情報３はエンコード指示を行い、実行前提条件はエンコーダの準備完了であり、エンコーダの状態OKが移行条件である。
【００５９】
シーケンスステップ情報４は録画情報の更新を行い、実行前提条件は無しであり、移行条件も無しである。シーケンスステップ情報４ではその移行先はシーケンスステップ情報１である。
【００６０】
また、再生系のシーケンスステップ情報の場合、
シーケンスステップ情報０はデコーダ設定を行い、実行前提条件は無しであり、初期化完了が移行条件である。
【００６１】
シーケンスステップ情報１はメモリバッファの取得指示を行い、実行前提条件は無しであり、メモリバッファ取得完了が移行条件である。
【００６２】
シーケンスステップ情報２はディスク情報の読み込みを行い、実行前提条件はディスクの準備完了であり、データが有効であることが移行条件である。
【００６３】
シーケンスステップ情報３はタイトル再生指示であり、実行前提条件はディスクの準備完了であり、ディスクの状態OKが移行条件である。
【００６４】
シーケンスステップ情報４は再生情報の更新を行い、実行前提条件は無しであり、移行条件も無しである。シーケンスステップ情報４ではその移行先はシーケンスステップ情報１である。
これらシーケンス情報を組み合わせて作成したシーケンステンプレートは次のようになる。
【００６５】
■シーケンステンプレートの例
＜録画＞
SeqTemplate RecTemplate = {
recStep_0,
recStep_1,
recStep_2,
recStep_3,
recStep_4
};
＜再生＞
SeqTemplate PlayTemplate = {
playStep_0,
playStep_1,
playStep_2,
playStep_3,
playStep_4
};
【００６６】
これらは、前述のように、録画系のシーケンスステップ情報recStep_0ないしrecStep_4および再生系のシーケンスステップ情報playStep_0ないしplayStep_4を昇順で並べている。
【００６７】
図７は本実施の形態１による実時間処理ソフトウェアの開発対象であるＤＶＤレコーダ等のマイコン組み込み機器の構成を示す。
【００６８】
マイコン組み込み機器７０１はマイコン７０２を搭載している。マイコン７０２はＣＰＵ７０３，不揮発性メモリ７０４，ＲＡＭ７０５およびＩ／Ｏ７０６等を有し、これらがバス７０７により結合されている。
【００６９】
図８は図７の不揮発性メモリ７０４に対応する不揮発性メモリ８０１の記憶内容を示す。
不揮発性メモリ８０１は、アプリケーション記憶部８０２，リアルタイムＯＳカーネル（中核）部８０３およびリアルタイムＯＳインターフェース部８０４が内蔵されるように、予めこれらのプログラムが書き込まれている。
【００７０】
図９はＯＳのカーネル部の一般的な構造を示す。
ＯＳのカーネル部は、図７のマイコン７０２のようなハードウエア９０１の上に、メモリ管理部９０２，スケジューリング部９０３，プロセス管理部９０４，システムコールインターフェース部９０５，ネットワークプロトコル部９０６，ファイルシステム９０７，入出力サブシステム９０８を有する。複数のタスク９０９はスケジューリング部９０３のスケジューリングアルゴリズムに従って実行順序が制御される。
【００７１】
このスケジューリングアルゴリズムは、例えば図１０に示すように、タスクの優先度および待ち順に従ってタスクの実行順序を決定する。
【００７２】
図１０の場合、タスク１００１ないしタスク１００８は、図中の上に行くほど優先度が高く、右に行くほど待ち順が後になる。従って、この図１０の例でのタスクの実行順序は、タスク番号の順、即ち、
タスク１００１→タスク１００２→・・・→タスク１００８の順となる。
【００７３】
タスクの優先度は、例えば、各タスクに所定の時間（いわゆるquantum）が割り当てられ、最後のquantumでタスクが使用した時間の割合等で決定される。この場合、例えば３０ｍｓのquantum中でタスクが１ｍsecしか使用しない場合、優先度は３０、３０ｍsecを使用した場合の優先度は１である。
【００７４】
タスク優先度の変化は、タスクの発生時やタスクの終了時、Ｉ／Ｏ割り込みの発生等であり、ＤＶＤレコーダの場合は、使用者の各種キー操作などがそのトリガとなる。
【００７５】
図１１はタスクの切り換えの際の動作を示す。
まず、ＯＳはタスクＡがサービスコールを発生したか否かを検出する（ステップ１１１１）。サービスはＯＳのバックグラウンドで起動されるソフトウエアである。サービスコールを発生した場合、ＯＳはこのサービスコールに対応するサービス機能処理を実行する（ステップ１１１２）。次に、ＯＳのスケジューラ（スケジューリング部９０３）が切り換え処理を実行する。その後、ＯＳはタスクＢに対するサービスコールを発生する（ステップ１１１４）。これにより、タスクＢが再開する（ステップ１１１５）。
【００７６】
このように、（リアルタイム）ＯＳのスケジューリング部がタスクスケジューリングアルゴリズムに基づき、予め複数用意されているシーケンス実行部を動的に切り換え、各シーケンスは、一連のシーケンス中の一部の動作を記述したシーケンス断片の実行制御手順が記述されたシーケンステンプレートに従ってシーケンス断片を連結し、連結されたシーケンス断片を順次実行する。
【００７７】
このため、各シーケンスは処理単位で動作状態を持たず、処理が終了すべきタイミングで終了する処理としてプログラムを作成できる。従って、実時間処理プログラムの作成時に、プログラマが処理の切り換えを予め考慮してプログラミングを行う必要が無く、複数同時に実行可能なシーケンス制御プログラムを高い生産性で作成することが可能となり、またその保守作業も容易となる。また、既存のシーケンス制御プログラム断片の組み合わせによるシーケンステンプレートを作成するだけで、新しいシーケンス制御プログラムを作成することが容易に可能となる。
【００７８】
なお、上記実施の形態１では、実時間処理ソフトウェアを実装，実行する場合について説明したが、並列処理を行うソフトウェアであれば、実時間処理に限るものではない。
【００７９】
また、上記実施の形態１では、タスクスケジューリングアルゴリズムとして、優先度および待ち状態をベースにするものを用いるものとしたが、優先度のみをベースにするものでもよく、さらに他の基準に基づきスケジュールを決定するものを用いてもよい。
【００８０】
さらに、上記実施の形態１では、ＤＶＤレコーダの制御ソフトウエアを開発する場合を例にとって説明したが、マイコン組み込み機器全般、さらには各種情報処理装置に適用してもよい。
【００８１】
また、上記実施の形態１では並列処理プログラム実装装置あるいは並列処理プログラム実行装置を示したが、該装置が使用している並列処理プログラム実装方法、さらには実行方法として提供してもよく、あるいはこれらの方法を記述したプログラムやこれらプログラムを記録した記録媒体として提供してもよい。
【００８２】
このように、本実施の形態１によれば、シーケンス実行部がシーケンステンプレートと現在の実行状態に従ってシーケンス断片を動的に組み合わせて実行することにより、シーケンス制御プログラムを作成する際、複数の制御シーケンスを同時実行することを考慮してプログラミングを行う必要がなくなり、容易にシーケンス制御プログラムを設計することが可能となり、シーケンス断片とシーケンステンプレートとからなるプログラムを入力して、実行可能なシーケンス制御プログラムを実装でき、さらにはこれを実行することが可能となる。
【産業上の利用可能性】
【００８３】
以上のように、本発明は、例えばＤＶＤレコーダなどのように、同時に複数のリアルタイム制御シーケンスを動作させなければないような機器の組み込みソフトウェア制御方法として利用することができ、その産業上の利用可能性は非常に広く且つ大きい。
【図面の簡単な説明】
【００８４】
【図１（ａ）】本発明の実施の形態１における並列処理ソフトウェア実行装置の構成図
【図１（ｂ）】本発明の実施の形態１における並列処理ソフトウェア実行装置の実装動作を示す模式図
【図１（ｃ）】本発明の実施の形態１における並列処理ソフトウェア実行装置のシーケンス実行部の構成図
【図２】本発明の実施の形態１におけるシーケンステンプレートの構成図
【図３】本発明の実施の形態１におけるシーケンスステップ情報の構成図
【図４】本発明の実施の形態１における並列処理ソフトウェアの開発手法を示す流れ図
【図５（ａ）】本発明の実施の形態１におけるシーケンス制御プログラム実行の様子を示す流れ図
【図５（ｂ）】本発明の実施の形態１におけるシーケンス制御プログラムのシーケンス実行サブルーチンの実行の様子を示す流れ図
【図６】本発明の実施の形態１における並列処理ソフトウェアの開発対象としてのＤＶＤレコーダの簡略化した動作の制御シーケンス図
【図７】本発明の実施の形態１における並列処理ソフトウェアの開発対象としてのＤＶＤレコーダ等のマイコン組み込み機器の構成図
【図８】図７のマイコン組み込み機器のマイコンの不揮発性メモリの内容を示す図
【図９】ＯＳのカーネルの構造を示す図
【図１０】スケジューリングアルゴリズムとして優先度および待ち順ベースでタスクの切り換えを行う場合の実行例を示す図
【図１１】タスクの切り換えの様子を示す流れ図
【図１２】特許文献１の図１を抜粋して示す図
【図１３】従来の実時間処理ソフトウェアの代表的構成方法の流れ図
【符号の説明】
【００８５】
１０１  シーケンス実行部
１０１ａ  シーケンス断片検索部
１０１ｂ  シーケンステンプレート検索部
１０１ｃ  シーケンス実装部
１０１ｄ  実行エンジン部
１０２  シーケンス断片データベース
１０３  シーケンス断片
１０４  実行状態保持部
１０５  シーケンステンプレート保持部
１０６  シーケンステンプレート
１０７  スケジューリング部
２０１  シーケンステンプレート
２０２  シーケンスステップ情報
２０３  シーケンス終了マーク
３０１  シーケンスステップ情報
３０２  ステップ番号
３０３  シーケンス断片番号
３０４  実行前提条件
３０５  次ステップ移行条件
３０６  次ステップ番号
４０１  シーケンスを定義するステップ
４０２  シーケンスの内容を分析するステップ
４０３  シーケンス断片を検索するステップ
４０４  ライブラリ中に存在するか？を判定するステップ
４０５  検索されたシーケンス断片を選択するステップ
４０６  シーケンス断片を作成するステップ
４０７  シーケンスステップ情報を作成するステップ
５０１  シーケンス実行イベントトリガ入力を実行するステップ
５０２  イベントに対応するシーケンステンプレート選択を実行するステップ
５０３  空き実行器を選択するステップ
５０４  シーケンステンプレート読み込みを実行するステップ
５０５  シーケンス実行のサブルーチンを示すステップ
５０６  ステップカウント＝１と設定するステップ
５０７  シーケンステンプレートから現ステップカウントのシーケンスステップ情報取得を実行するステップ
５０８  シーケンス終了マークか？を判定するステップ
５０９  実行状態保持部から現在の実行状態を取得するステップ
５１０  シーケンスステップ情報から実行前提条件を取得するステップ
５１１  実行前提条件を満たすか？を判定するステップ
５１２  シーケンスステップ情報からシーケンス断片番号を取得するステップ
５１３  シーケンス断片番号に該当するシーケンス断片を検索するステップ
５１４  シーケンスステップ情報から次ステップ移行条件を取得するステップ
５１５  シーケンス実行部でシーケンス断片を実行するステップ
５１６  実行結果が次ぎステップ移行条件を満たすか？を判定するステップ
５１７  シーケンスステップ情報から次ステップ番号を取得するステップ
５１８  ステップカウント←次ステップ番号と設定するステップ
６０１  オブジェクト
６０２  ライフライン
６０３  アクティベーション
６０４  メッセージ
７０１  マイコン組み込み機器
７０２  マイコン
７０３  ＣＰＵ
７０４  不揮発性メモリ
７０５  ＲＡＭ
７０６  Ｉ／Ｏ
７０７  バス
８０１  不揮発性メモリ
８０２  アプリケーション記憶部
８０３  リアルタイムＯＳカーネル部
８０４  リアルタイムＯＳインターフェース部
９０１  ハードウエア
９０２  メモリ管理部
９０３  スケジューリング部
９０４  プロセス管理部
９０５  システムコールインターフェース部
９０６  ネットワークプロトコル部
９０７  ファイルシステム
９０８  入出力サブシステム部
９０９  タスク
１００１  タスク
１００２  タスク
１００３  タスク
１００４  タスク
１００５  タスク
１００６  タスク
１００７  タスク
１００８  タスク
１１１１  タスクＡがサービスコールを発生？を判定するステップ
１１１２  ＯＳはサービス機能処理を実行するステップ
１１１３  ＯＳのスケジューラが切り換え処理を実行するステップ
１１１４  タスクＢに対するサービスコール発生を実行するステップ
１１１５  タスクＢが再開した状態を示すステップ
１２０１  シーケンス部
１２０２  接合部品
１３０１  制御信号出力１
１３０２  内部状態遷移１
１３０３  ユーザ入力取得１
１３０４  入力判定
１３０５  制御信号出力２
１３０６  ユーザ入力取得２
１３０７  入力判定
１３０８  内部状態遷移２
１３０９  制御信号出力３
１３１０  制御信号出力４
１３１１  繰り返し処理を行うためのループ構造
【図１（ａ）】
2006215668.tif 000003
【図１（ｂ）】
2006215668.tif 000004
【図１（ｃ）】
2006215668.tif 000005
【図２】
2006215668.tif 000006
【図３】
2006215668.tif 000007
【図４】
2006215668.tif 000008
【図５（ａ）】
2006215668.tif 000009
【図５（ｂ）】
2006215668.tif 000010
【図６】
2006215668.tif 000011
【図７】
2006215668.tif 000012
【図８】
2006215668.tif 000013
【図９】
2006215668.tif 000014
【図１０】
2006215668.tif 000015
【図１１】
2006215668.tif 000016
【図１２】
2006215668.tif 000017
【図１３】
2006215668.tif 000018