(57)【特許請求の範囲】
【請求項１】
各々が時刻信号の生成器（２２０、Ｄ０−Ｄ３、Ｔ０−Ｔ３）に対応付けられた、並列に動作する複数の処理ユニット（Ｃ０−Ｃ３）にてプログラム（４１０−４５０）を実行するための制御方法（３００）であって、時刻満了時に、対応付けられた処理ユニット（Ｃ０−Ｃ３）にて実行され、
上記処理ユニット（Ｃ０−Ｃ３）にて実行可能なプログラム（４１０−４５０）を選択するステップ（３２０）と、
満了時刻信号の生成器（２２０、Ｄ０−Ｄ３、Ｔ０−Ｔ３）に所定の持続時間を設定するステップ（３５０）と、
上記処理ユニット（Ｃ０−Ｃ３）にて選択されたプログラム（４１０−４５０）を開始するステップ（３５５）と、
上記所定の持続時間の満了が、異なる処理ユニット（Ｃ０−Ｃ３）に割り当てられた時刻信号の生成器（２２０、Ｄ０−Ｄ３、Ｔ０−Ｔ３）の予定された満了から、所定の持続時間未満だけ外れているかどうかを比較するステップ（３４０）と、
外れていた場合は、上記所定の持続時間を修正するステップ（３４５）とを含むことを特徴とする制御方法（３００）。
【請求項２】
上記プログラム（４１０−４５０）が実行される処理ユニット（Ｃ０−Ｃ３）はリアルタイム処理能力を有し、オペレーティングシステム（５１０）がさらに実行可能であり、上記オペレーティングシステム（５１０）が実行される処理ユニット（Ｃ０−Ｃ３）は非リアルタイム処理能力を有し、同じ処理ユニット（Ｃ０−Ｃ３）における制御方法（３００）を連続して実行するために、上記プログラム（４１０−４５０）と上記オペレーティングシステム（５１０）とを上記処理ユニット（Ｃ０−Ｃ３）が交互に選択することを特徴とする請求項１に記載の制御方法（３００）。
【請求項３】
上記修正するステップは、固定値（Δ）でシフトすることを含むことを特徴とする請求項１に記載の制御方法（３００）。
【請求項４】
処理ユニット（Ｃ０−Ｃ３）に割り当てられたプログラム（４１０−４５０）が記載された、処理ユニット（Ｃ０−Ｃ３）毎に割り当てられたリスト（４００）を含み、上記リスト（４００）におけるエントリーに基づいて選択するステップ（３２０）が実行されることを特徴とする請求項１から３のいずれか１項に記載の制御方法（３００）。
【請求項５】
それぞれのエントリーは優先順位を有し、優先順位に応じて上記選択するステップ（３２０）が実行されることを特徴とする請求項４に記載の制御方法（３００）。
【請求項６】
処理ユニット（Ｃ０−Ｃ３）のうちの少なくともいずれかの過去の稼働率に基づいて、上記リスト（４００）のうちの１つにプログラム（４１０−４５０）を入力するステップをさらに含むことを特徴とする請求項４または５に記載の制御方法（３００）。
【請求項７】
請求項１〜６のいずれか１項に記載の制御方法（３００）をコンピュータに実行させるためのコンピュータプログラムであって、コンピュータに上記各ステップを実行させるためのコンピュータプログラム。
【請求項８】
コンピュータ読み取り可能な記録媒体に格納された請求項７に記載のコンピュータプログラム。
【請求項９】
複数の処理ユニット（Ｃ０−Ｃ３）におけるいくつかのプログラム（４１０−４５０）を実行するシステムであって、
各々に時刻信号の生成器（２２０、Ｄ０−Ｄ３、Ｔ０−Ｔ３）が割り当てられた、複数の処理ユニット（Ｃ０−Ｃ３）を含み、
上記処理ユニット（Ｃ０−Ｃ３）のうちの１つにて請求項１〜６のいずれか１項に記載の制御方法（３００）が実行されることを特徴とするシステム。
【請求項１０】
上記処理ユニット（Ｃ０−Ｃ３）は集積回路（２００）によって構成されることを特徴とする請求項９に記載のシステム。
【請求項１１】
時刻信号の生成器（２２０，Ｄ０−Ｄ３，Ｔ０−Ｔ３）は、クロック信号によって動作するカウンタ（Ｔ０−Ｔ３）を含み、それぞれのカウンタ（Ｔ０−Ｔ３）は、所定値に達すると直ちに時刻信号の生成器に割り当てられた処理ユニット（Ｃ０−Ｃ３）への割り込みを行うことを特徴とする請求項９または１０に記載のシステム。
【請求項１２】
それぞれのカウンタは、すべての分周器に共有されるクロック信号を、カウンタ（Ｔ０−Ｔ３）に割り当てられた個々のクロック信号に分ける、プログラム可能な分周器を含む請求項９から１１のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列に動作する複数の処理ユニットにおける複数のプログラムの制御方法および上記プログラムを実行するための方法に関するものである。
【背景技術】
【０００２】
機械及び設備は、メモリからプログラム可能な制御システム（SPS）に基づいて、しばしば制御される。この目的において、マイクロコンピュータは、機械又は設備のそれぞれに接続された、いくつかのセンサの状態に関わるプログラムを実行するために、及び、機械又は設備のそれぞれに接続された、いくつかのアクチュエータにアクセスするために、決定された状態に基づいて使用される。複合機械及び設備のそれぞれは、複数のセンサ及びアクチュエータを含み、マイクロコンピュータに高性能を要求する。
【０００３】
機械及び設備のそれぞれを制御するために、マイクロコンピュータはいくつかのプログラムをしばしば並列に実行する。プログラムは互いに作用するか、又は、互いに独立している。異なるプログラムは、例えば、センサの状態変化、又は、センサのサンプリングの頻度、場合によってはアクチュエータの数値の出力に対して最低限保障された応答時間に達したとき、マイクロコンピュータへ異なる要求を行なう。
【０００４】
コントロールシステムに対するさらなる要求は、一定の度合いに至るまで、マイクロコンピュータにおいてより早く刻時するマイクロプロセッサによって満たされる。しかしながら、物理的な状態のせいで、この種のパワー強化は望みどおりには増加しない。なぜなら、それらのパワーを増加させるために、従来のマイクロプロセッサは、大部分が、いくつかの並列に動作する演算コアに依存しているためである。１つの演算コアのみによって、機械制御のためのいくつかのプログラムの定義済みシーケンスを制御するために使用される従来の方法は、複数の演算コアへプログラムを分配することにほとんど適していない。
【０００５】
DE 196 48 422 C2は、機械制御のためのリアルタイム処理能力を有するプログラムに、および、タイムスライス制御によって非リアルタイム処理能力を有するオペレーティングシステムに、演算コアが利用できる演算時間を交互に分配する方法を提案している。提案されているタイムスライス制御は、所定時間量の満了により演算コアに割り込み（ＩＮＴ）を起こすためのプログラマブルタイマによって制御されている。オペレーティングシステムに割り当てられた演算時間は、制御プログラムに割り当てられた演算時間とは独立に定められる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の基本的な目的は、複数の並列に動作する処理ユニットにて機械制御のためのいくつかのプログラムを実行するための方法及びシステムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明が解決しようとする課題は、請求項１の特徴を備えた制御方法と、請求項１２の特徴を備えたシステムによって解決される。本発明の利点を示す実施形態は、従属請求項に示されている。
【０００８】
第１の実施形態において、時刻信号の生成器は、並列に動作する複数の処理ユニットのそれぞれに割り当てられ、プログラムを実行するための制御処理は、時刻信号の生成器が満了するときに、割り当てられた処理ユニットにて実行される。この中で、制御方法は、処理ユニットにて実行可能なプログラムを選択するステップと、所定の持続時間で満了する時刻信号の生成器を設定するステップと、処理ユニットにて選択されたプログラムを開始するステップとを含む。
【０００９】
このように、時刻信号の生成器によって制御された持続時間が満了した際、制御方法は、実行されたプログラムの変更を制御するために、処理ユニット上でそれぞれアクセスされる。このようにして、複数の処理ユニットを含む従来のマイクロプロセッサは、上述の処理ユニット上で実行される制御コマンドによって、マイクロプロセッサの処理ユニットの１つでのみ開始されるという条件で使用される。特に、複数の演算コアを含むｘ８６型のマイクロプロセッサは上述のような方法で構成され、制御方法を実行するために有利に使用される。
【００１０】
従来の方法によると、マイクロプロセッサの２つ目の処理ユニットで実行されるプログラムの制御によって、マイクロプロセッサの１つ目の処理ユニットのプログラムの初期化を制御するために、２つの制御プログラムの間でのみならず、１つ目の処理ユニット上でのさらなるプログラム制御の開始を通常余儀なくさせるような、多くの時間と努力が必要となる。さらに同期化の試みが原因で、両方の処理ユニットは、比較的長い持続時間でマイクロプロセッサの他の実行プログラムを利用できない。結果として、マイクロプロセッサの全能力を使用できない。
【００１１】
実行可能なプログラムは、リアルタイム処理能力を有し、加えて、非リアルタイム処理能力を有するオペレーティングシステムが演算コアで実行されるために供給される。連続して同じ処理ユニットで制御方法が実行されたとき、リアルタイム処理能力を有するプログラムと非リアルタイム処理能力を有するオペレーティングシステムとは交互に選択される。
【００１２】
時刻信号の生成器に設定された所定の持続時間の選択に応じて、持続時間は、処理ユニットがプログラムまたはオペレーティングシステムのそれぞれに利用される間、選択されたプログラムまたはオペレーティングシステムのそれぞれに割り当てられる。従って、プログラムがアクセスされる間隔、プログラムを実行するための最大待機時間、および、以前にアクセスされたプログラムの処理に要する演算時間が影響される。プログラムの実行に並行して、非リアルタイム処理能力を有するオペレーティングシステムは、ハードディスクやディスプレイにプログラムデータをそれぞれ入力したり、出力したりするような標準タスクを実行するために使用される。オペレーティングシステムや、それによって制御されるプログラムは、それぞれ、１つまたはいくつかの演算コアで並行して実行される。
【００１３】
持続時間は制限なく自由に設定される。オペレーティングシステムの所定の持続時間とリアルタイム処理能力を有するプログラムの所定の持続時間とは、処理ユニットに割り当てられたサイクル時間となるように、互いに補完し合う。異なる処理ユニットは、異なる関連したサイクル時間を構成する。サイクル時間がオペレーティングシステムとリアルタイム処理能力を有するプログラムとに分配される比率は、例えば、パラメータに基づいて修正される。このパラメータは、プログラムにより制御された機械の可変な負荷状態を考慮するために、処理ユニットの動作中またはマイクロプロセッサの動作中のそれぞれにて修正可能である。
【００１４】
時刻信号の生成器の満了に所定の持続時間を設定するのに先立って、所定の持続時間は、予定された持続時間の満了が、異なる処理ユニットの時刻信号の生成器の予定された満了から、所定の持続時間未満だけ外れないような方法が適用される。これは、すなわち、制御方法は、同時に複数の制御ユニットにアクセスされないという保護措置となる。このことは、制御プログラムが、複数の処理ユニットで多くのプログラムを連携するために必要なタスクであって、制御プログラムのいくつかのインスタンスの同時実行を排除する、タスクをさらに実行した場合、特に有利である。そのようなタスクは、例えば、プログラムまたはオペレーティングシステムのそれぞれに共有資源を割り当てること、または、プログラム間通信を制御することを含んでもよい。
【００１５】
上述されたように所定の持続時間を調整することによって、処理ユニットの全体出力は、処理ユニットが制御プログラムを実行する前に待機しなければならないということを回避することによって、最大化される。
【００１６】
調整は、予定された持続時間の一時的な修正によってもたらされる。その代わりに、プログラムに割り当てられた持続時間は、調整がプログラムの後続の全てのアクセスにおいて効果を生じるように修正される。対応する演算コアのサイクル時間は、他の処理ユニットのサイクルとの衝突が持続的に起こらないようにするために、結果として変化する。特に、満了が周期的に衝突するサイクル時間は、それぞれ単独の場合にはおそらくない調整が行なわれ、避けられる。
【００１７】
さらなる実施形態において、制御方法は、制御方法のさらなるアクセスを許可にする最後のステップだけでなく、制御方法のさらなるアクセスを避ける先行のステップを含む。上述したように、制御方法が、複数の処理ユニット上で並列に実行されることがなければ、これらのステップは、処理エラーに対して付加的な保護手段として働く。
【００１８】
このように生成された、制御プログラムの同時多重アクセサビリティーによって、制御プログラムは、例えば、制御ユニットで動作するプログラムに活発にアクセスすることによって、例えば、時刻信号の生成器に関して非同期に起こるイベントに基づいてアクセスされる。
【００１９】
リストは、処理ユニット毎に割り当てられる。処理ユニットで実行可能なプログラムはリストに記載される。それから、プログラムの選択は、上述のリスト上に記載されたものから行われる。このように、個別のプログラムは、特定の処理ユニットに割り当てられる。並行して実行されることが好ましいプログラムは異なる処理ユニットに割り当てられる一方、順次に実行されることが好ましいプログラムは同じ処理ユニットに割り当てられる。このように、例えば多くのプログラムによって制御された機械によって引き起こされたプログラム間の依存関係は、考慮される。
【００２０】
プログラムの処理ユニットへの割り当ては、ユーザのシステムに関する知識が使用されるために、ユーザによって実行される。さらなる実施形態において、割り当ては、制御プログラムによって実行される。例えば、制御プログラムは、決定的な割り当て基準として、少なくとも１つの制御ユニットの過去の稼働率を使用する。制御プログラムによる割り当てによって、処理ユニットの一様な稼働率が達成される。処理ユニットが節電モードに設定されている場合に、プログラムまたはオペレーティングシステムのそれぞれの実行から処理ユニットの１つを部分的に、または完全に除外することもさらに可能である。
【００２１】
リストにおけるプログラムのエントリーは、プログラムの優先順位を含み、プログラムの選択は、優先順位に基づいて実行される。これによって、優先順位の高いプログラムが、演算コアから優先順位の低いプログラムを押し出すことを可能にする。優先順位を考慮することにより、制御機械に時間を供給することは、制御システムの自由度および信頼性の潜在的な増加に従う。リストは、演算コアのそれぞれによって局地的にのみ評価されるため、異なる優先順位を有するプログラムは、異なる演算コアで同時に実行される。
【００２２】
制御方法は、コンピュータプログラム製品の形をとってコンピュータシステム上で実行される、または、コンピュータ読み取り可能な記録媒体に格納される。
【００２３】
第２の実施形態によると、多くのプログラムを実行するシステムは、上述した制御方法だけでなく、複数の処理ユニット、および、それぞれの処理ユニットに対応する時刻信号の生成器を含む。処理ユニットは、集積回路によって構成される。特に、処理ユニットは、演算コア（コア）、または、例えばハイパースレッディングに用いられるような、仮想演算コアを含む。結果として、例えば、複雑な技術設備の制御が、互いに接続された複数のプログラムによってより効果的に達成されるために、集積回路上で処理ユニットの緊密な連結を作ることができる。
【００２４】
時刻信号の生成器は、クロック信号で動作するカウンタとして実装され、それぞれのカウンタは、カウンタが所定値に到達すると直ちに、関係する処理ユニット内で割り込み（ＩＮＴ）を起こす。特に、カウンタはカウントダウンされ、所定値はゼロである。そのようなカウンタは、複数の処理ユニットを含む従来のマイクロプロセッサですでに供給されている。
【００２５】
それぞれのカウンタは、すべてのカウンタにおいて共通のシステムクロックを、カウンタに割り当てられたクロック信号に分周するためのプログラム可能な分周器を含んでもよい。これによって、すべての持続時間は同じ時間基準に由来し、互いに既知の比率を有する。全く異なる要求のプログラムを処理するフレキシブルシステムを達成するために、カウンタがセットする値を選択すること、および、それに応じて関連する分周器をプログラミングすることにより、カウンタの持続時間は制限なくセットされる。
【図面の簡単な説明】
【００２６】
以下に、添付の図面を用いて、本発明を詳細に記述する。
【図１】制御技術設備の概略図である。
【図２】図１のプロセッサの概略図である。
【図３】図２のプロセッサにおける動作方法のフローチャートである。
【図４】図３の方法における処理テーブルの典型例である。
【図５】図２のプロセッサにおける設定持続時間終了の衝突を防ぐための種々のヒューリスティックである。
【発明を実施するための形態】
【００２７】
図１は、制御技術設備１００の概略図である。制御技術設備１００は、既知の方法で、メインメモリ１２０、ＲＯＭ１３０、ディスプレイ１４０、および入力デバイス１５０と接続されたマイクロコンピュータ１１０を含んでいる。マイクロコンピュータ１１０は、少なくとも１つのマイクロプロセッサ（プロセッサ、CPU（central processing unit））と、電源、メインメモリ１２０およびＲＯＭ１３０へのインタフェースのような、種々の付加的な部品とを通常含む。ディスプレイ１４０および入力デバイス１５０は、マイクロコンピュータをユーザに操作させるために供給される。マイクロコンピュータ１１０は、ネットワークインタフェース、および、該ネットワークインタフェースにさらに接続されたコンピュータシステムを介したアクセスによって、任意に、または付加的に使用される。ある実施形態においては、ディスプレイ１４０および出力デバイス１５０は、適宜省略されてもよい。
【００２８】
生産機１６０は、センサインタフェース１７０に接続された複数のセンサ１６５と、アクチュエータインタフェース１８０に接続された複数のアクチュエータ１７５とを含む。インタフェース１７０と１８０とは、それぞれ、マイクロコンピュータ１１０に接続される。リアルタイム処理能力を有するネットワークは、例えば、センサインタフェース１７０にセンサ１６５を接続するために、または、アクチュエータインタフェース１８０にアクチュエータ１７５を接続するために、および／または、ＥｔｈｅｒＣａｔのように、マイクロコンピュータ１１０にインタフェース１７０および１８０を接続するために、供給される。
【００２９】
記載されている生産機１６０は、マイクロコンピュータ１１０によって制御される望ましい機械および設備を表している。生産機１６０は、例えば、ＣＮＣ機械ツール、または、鉄をシート状にする圧延装置である。別の実施形態において、記載されているセンサ１６５およびアクチュエータ１７５の少なくともいずれかは含まれなくてもよい。センサ１６５は、アナログセンサおよびデジタルセンサの少なくともいずれかあり、例えば、パスセンサ、光センサ、温度センサ、速度センサ、音波センサ、またはその他のセンサの形式である。複雑な生産機１６０の場合、センサ１６５の数は１００以上にもなる。アクチュエータ１７５は、アナログおよびデジタルアクチュエータ値の少なくともいずれかで実現され、例えば、バルブ、駆動、光および温度の制御、または他のアクチュエータの形式である。複雑な生産機１６０は、８０以上の基軸を制御するためのアクチュエータを含む。
【００３０】
部品１１０〜１５０で構成されているコンピュータシステムは、センサ１６５をサンプリングし、サンプリングされた値に基づいてアクチュエータ１７５を制御する。生産機１６０の構成に基づいて、１つ以上のプログラムは、アクチュエータ１７５の起動を決定するためにコンピュータシステム１１０〜１５０で実行される。
【００３１】
図２は、図１のマイクロコンピュータ１１０のプロセッサ２００の概略図である。プロセッサ１２０は、４つの演算コアＣ０−Ｃ３が配置されている、ハウジング２１０を含む。別の実施形態において、異なる数の演算コアＣ０−Ｃ３がプロセッサ２００によって含まれる。プロセッサ２００における演算コアＣ０−Ｃ３の代表的な数は、２，４，８，１６，３２である。プロセッサ２００における演算コアＣ０−Ｃ３の数に上限は無いが、加えて、プロセッサ２００中の演算コアの数は、必ずしも２の指数ではない。演算コアＣ０−Ｃ３は、プロセッサ２００に物理的に実装されるか、またはハイパースレッディングのような仮想技術によって供給される。各演算コアＣ０−Ｃ３は、各演算コアＣ０−Ｃ３に割り当てられたカウンタＴ０−Ｔ３に接続されており、カウンタもまた、各演算コアＣ０−Ｃ３に割り当てられた分周器Ｄ０−Ｄ３に接続されている。分周器Ｄ０−Ｄ３の全ては、共通クロック生成器２２０に接続されている。クロック生成器２２０は、例えば、図１のマイクロコンピュータ１１０内に存在し、または別の実施形態では、プロセッサ２００のハウジング２１０内に存在する。好ましい実施形態では、演算コアＣ０−Ｃ３にパルスを発生させるために使用されるクロック信号、および、クロック生成器２２０によって供給されたクロック信号は、共通クロック信号に由来する。
【００３２】
各演算コアＣ０−Ｃ３は、各演算コアＣ０−Ｃ３に割り当てられたカウンタＴ０−Ｔ３および分周器Ｄ０−Ｄ３に、書込み操作、および、望ましくはさらに読み取り操作のためにアクセスする。割り当てられた演算コアＣ０−Ｃ３によって実行される書込み操作によって、分周器Ｄ０−Ｄ３に除数がプログラムされ、クロック生成器２２０により供給されたクロック信号が、プログラムされた除数によって周波数に分けられ、その結果として得られるクロック信号がカウンタＴ０−Ｔ３のそれぞれに供給される。
【００３３】
カウンタＴ０−Ｔ３は、カウンタの状態がゼロに到達したときに、関連付けられた演算コアＣ０−Ｃ３に割り込みを起こす、減衰計である。減少の開始点であるカウンタの状態は、関連付けられた演算コアによってカウンタＴ０−Ｔ３に書き込まれる。好ましい実施形態として、カウンタＴ０−Ｔ３はまた、関連付けられた演算コアによって停止、および開始される。
【００３４】
分周器Ｄ０−Ｄ３およびカウンタＴ０−Ｔ３の、演算コアＣ０−Ｃ３とのつながりは、演算コアＣ１からＣ３のうちの１つで実行されるプログラムが、プログラムが実行されている演算コアＣ０−Ｃ３に関連付けられた分周器Ｄ０−Ｄ３およびカウンタＴ０−Ｔ３にアクセスするだけであると考えるとわかりやすい。関連付けられた分周器Ｄ０−Ｄ３およびカウンタＴ０−Ｔ３にアクセスするためのプログラムコマンドは、すべての演算コアＣ０−Ｃ３で同一である。プロセッサ２００のアーキテクチャのために、異なる演算コアＣ０−Ｃ３の分周器Ｄ０−Ｄ３またはカウンタＴ０−Ｔ３へのアクセスは不可能である。
【００３５】
例えば、演算コアＣ１で実行されるプログラムが、演算コアＣ０に関連付けられたカウンタＴ０に書き込まれるためのものである場合、演算コアＣ１で実行されるプログラムは、演算コアＣ０で実行されるために演算コアの変更を確実に行わなければならない。または、演算コアＣ１で実行されるプログラムは、後続のプログラムがカウンタＴ０への所望のアクセスを実行するために、演算コアＣ０でさらに実行されるプログラムへ通知しなければならない。
【００３６】
割り込みが演算コアＣ０−Ｃ３の１つで起こった場合、制御プログラム（スケジューラー）は、例えば、割り込みベクトル予備設定や、対応する演算コアＣ０−Ｃ３で実行されるスケジューラー選択プログラムによって、演算コアＣ０−Ｃ３のそれぞれでアクセスされる。その後、制御プログラムは、割り当てられたカウンタＴ０−Ｔ３および割り当てられた分周器Ｄ０−Ｄ３の少なくともいずれかを再設定し、選択されたプログラムを開始する。このように、新しい割り込みが再び制御プログラムにアクセスする前に、選択されたプログラムに制限された演算時間のみを供給するタイムスライス機構が実装され、制御プログラムは、どのプログラムが次に続けられるものかを調べる。
【００３７】
制御プログラムは、すべての演算コアＣ０−Ｃ３で同じである。結果として、制御プログラムは、割り当てられたカウンタＴ０−Ｔ３によって最後に割り込まれた演算コアＣ０−Ｃ３に、演算コアＣ０−Ｃ３で実行可能なプログラムを割り当てる。このようにして、タイムスライス機構は、分配方法において複数の演算コアＣ０−Ｃ３で多くのプログラムを実行するために実装される。制御プログラムが実行される演算コアのそれぞれで局地的に実行されるプログラムを選択することによって、制御プログラムは、すべての演算コアＣ０−Ｃ３で効果的に実行され、従って、既に得ている演算コアＣ０−Ｃ３へのプログラムの負荷の配分と、単体の演算コアで実行される中央制御プログラムによってプロセッサ２００で実行される全てのプログラムを制御するための複雑な方法は、もはや必要ではない。
【００３８】
図３は、図１のマイクロコンピュータ１１０における図２のプロセッサ２００で実行される方法３００のフローチャートである。方法３００は、図２を参照して説明した制御プログラム（スケジューラー）の本質的なステップを表す。
【００３９】
最初のステップ３０５において、方法３００は初期状態にある。ステップ３０５は、方法３００が、例えば、図２のカウンタＴ０−Ｔ３のうち１つの割り込みによってアクセスされた後、方法３００によって実行される最初のステップである。続くステップ３１０において、方法３００はまず、方法３００のいくつかのインスタンスが複数の演算コアＣ０−Ｃ３で並行して実行されることを防ぐために、方法３００のさらなるアクセスをブロックする。ブロックは、例えば、同時に利用できないリソースへの演算コアＣ０−Ｃ３の競合アクセスの調整を提供する、セマフォまたは対応するレジスタなどの、プロセッサ２００の既知の同期化機構によってもたらされる。ステップ３１０は、方法３００が、演算コアＣ０−Ｃ３にプログラムの過度な割り当てを行うようなサービス、および、方法３００の並行実行を禁止するようなサービスを供給したときのみ必要とされる。そのようなサービスは、例えば、読み出し専用メモリ１３０などの排他的に使用されるリソースを、演算コアＣ０−Ｃ３で実行されるプログラムへ割り当てることを含んでいる。演算コアＣ０−Ｃ３へのプログラムの単なる割り当てについては、多くの方法３００を同時に実行することは異なる演算コアＣ０−Ｃ３で可能であり、ステップ３１０に記述されたブロックは必要ない。
【００４０】
続くステップ３１５において、リアルタイム処理能力を有するプログラム、または非リアルタイム処理能力を有するオペレーティングシステムが、演算コアＣ０−Ｃ３のそれぞれで次に実行されるかどうかが調べられる。方法３００は、同じ演算コアＣ０−Ｃ３における方法３００のアクセスが連続する場合、オペレーティングシステムおよびリアルタイム処理能力を有するプログラムが、交互に実行されるように構成される。リアルタイム処理能力を有するプログラムが実行される場合、方法２００は、ステップ３２０に分岐し、方法３００が実行される演算コアＣ０−Ｃ３に割り当てられたテーブルからのエントリーを選択する。当該エントリーは、詳細には図４を参照しながら後述するように、演算コアＣ０−Ｃ３で実行可能な多数の可能性のあるプログラムの１つを表す。
【００４１】
続くステップ３２５において、演算コアＣ０−Ｃ３にプログラムを新しく割り当てるために、方法３００が、時間制御方法で再びアクセスされる前に、選択されたプログラムに持続時間が供給されることが決定される。
【００４２】
しかしながら、ステップ３１５において、オペレーティングシステムが実行されることが決定された場合、方法３００は、ステップ３３０に分岐し、次に実行されるプログラムとしてオペレーティングシステムを選択する。オペレーティングシステムが他のプログラムを調整し、演算コアＣ０−Ｃ３の１つへのオペレーティングシステムの割り当ては、方法３００によってではなく、オペレーティングシステム自身によって制御される。オペレーティングシステムに依存するこのようなプログラムは、方法３００の制御プログラムによってオペレーティングシステムに供給される時間フレーム内で実行される。上述したステップ３２５と同様に、続くステップ３３５にて、実行するためにオペレーティングシステムに割り当てる持続時間が決定される。
【００４３】
ステップ３２５および３３５の少なくともいずれかが実行された後、方法は、定義された持続時間の満了が、タイマＴ０−Ｔ３の１つがプログラムされた異なる持続時間の満了と衝突するかどうかを調べるステップ３４０を続ける。この目的のために、すべてのカウンタＴ０−Ｔ３の満了時間は、各演算コアＣ０−Ｃ３によってアクセスされるメモリ領域に格納される。
【００４４】
この状況において、持続時間の満了が衝突することは、ステップ３２５または３３５の一方で決定される持続時間の満了が、所定の値よりも、タイマＴ０−Ｔ３の１つが満了する時間、および、方法３００がアクセスされる時間に近いことを意味する。この所定の範囲は少なくとも、一時的な実行のために方法３００によって通常必要とされる時間に対応する。
【００４５】
ステップ２４０が、所定の持続時間の満了と、別の持続時間の満了とが衝突すると判定する場合、所定の持続時間は、ステップ３４５において調整される。この目的のために、所定の持続時間は、所定の値だけ増減される。所定の持続時間を調整するためのステップ３４５で使用されるヒューリスティックもまた、カウンタＴ０−Ｔ３が割り込みを起こす時の周期性を考慮してもよい。ある実施形態において、ステップ３４０および３４５は、持続時間の調整により、衝突が起こらないことの保証が得られるまで、繰り返される。ステップ３４０および３４５のエンドレスループを防ぐための通常の保護ステップが使用されてもよい。
【００４６】
ステップ３５０において、方法３００が実行される演算コアＣ０−Ｃ３と関連付けられるカウンタＴ０−Ｔ３は、所定の持続時間に対応する値に設定される。
【００４７】
最終的に、ステップ３５５において、方法３００のさらなるアクセスが可能となり、ステップ３２０または３３０の一方で選択されたプログラムまたはオペレーティングシステムが開始されるために、ステップ３１０で設定されたブロックは除去される。選択されたプログラムまたはオペレーティングシステムのそれぞれが演算コアＣ０−Ｃ３で開始される前に、方法３００が再開されないので、これらのアクションの両方がそれぞれ、ある単独のステップで実行されることが望ましい。
【００４８】
図４は、図３の方法３００を使用するための典型的な処理テーブル４００を示している。個々の処理テーブル４００は、図２の各演算コアＣ０−Ｃ３が割り当てられる。処理テーブル４００にプログラム４１０−４５０を入力することによって、それぞれの演算コアＣ０−Ｃ３へのプログラム４１０−４５０の割り当てが実行される。
【００４９】
プログラム４１０−４５０はテーブル４００に記録される。入力されたプログラム４１０−４５０は、優先順位、待機時間、状態、および時間ステップ数が割り当てられる。優先順位とは、実行されるプログラム４１０−４５０の緊急性を表し、高い優先順位は高い緊急性に対応する。実行可能な多くのプログラムのうち、高い優先順位を有するプログラム４１０−４５０は、方法３００の制御プログラムによって選択される。プログラム４１０−４５０の待機時間とは、プログラム４１０−４５０の連続的なアクセスの間にどれくらいの時間が経過するのかを表す。待機時間は、通常、演算コアＣ０−Ｃ３のために調整可能なシステムクロックの単位で表され、システムクロックは合計で１０μｓから１００μｓ、望ましくは１００μｓから１ｍｓであればよい。ある実施形態において、システムクロックは、テーブル４００に記録されたすべてのプログラム４１０―４５０の待機時間の最短時間に設定される。その上で、例えば、図１の生産機１６０に集積された別の処理システムとの通信を単純化するために、システムクロックと他のクロックとを同期させる。すなわち、複数の分配されたクロック生成器またはクロックのそれぞれが、異なる制御処理の時間基準を備える技術設備１００のフレームワーク内で供給される。同期は、例えば、待機サイクルの挿入によって起こる。
【００５０】
プログラム４１０−４５０の状態とは、プログラム４１０−４５０が実行可能か、待機中か、または実行されているかどうかを表す。プログラム４１０−４５０の状態が“ＨＩＧＨ  ＲＥＡＤＹ”である場合、長時間の実行待機中であり、実行の準備ができている。プログラム４１０−４５０が演算時間を必要とせず、その次のアクセスを待つ状態である場合、状態は“ＷＡＩＴＩＮＧ”である。プログラム４１０−４５０が実行されている場合、その状態は“ＥＸＥＣＵＴＩＮＧ”である。各プログラム４１０−４５０の時間ステップ数は、システムクロック毎に１つずつ減らされる。
【００５１】
プログラム４１０−４５０の時間ステップ数がゼロに到達した場合、プログラム４１０−４５０の状態は“ＨＩＧＨ  ＲＥＡＤＹ”に設定される。しかしながら、プログラム４１０−４５０が図３の方法３００の制御プログラムによって実行を選択されるまで、時間ステップはカウントされ続ける。続いて、プログラム４１０−４５０の状態が“ＥＸＥＣＵＴＩＮＧ”に設定され、プログラム４１０−４５０の時間ステップ数がその待機時間に設定される。
【００５２】
“ＷＡＩＴＩＮＧ”から“ＨＩＧＨ  ＲＥＡＤＹ”へのプログラム４１０−４５０の状態の変更は、直ちに図２の演算コアＣ０−Ｃ３のうちの１つでプログラム４１０−４５０を実行するという結果になるわけではない。その代わり、プログラム４１０−４５０の状態は実行可能性を示しており、方法３００の制御プログラムが次にアクセスするまでの間、状態が“ＨＩＧＨ  ＲＥＡＤＹ”、かつ、その際に最も高い優先順位を有するプログラム４１０−４５０が実行される。
【００５３】
実行されたプログラム４１０−４５０が、タスクを完了し、次回にアクセスされるまでにさらなる演算時間を必要としない場合、プログラム４１０−４５０は、図３の方法３００の制御プログラムにアクセスする。処理テーブル４００におけるプログラム４１０−４５０の状態は“ＥＸＥＣＵＴＩＮＧ”から“ＷＡＩＴＩＮＧ”に設定される。
【００５４】
ある実施形態において、テーブル４００または演算コアＣ０−Ｃ３のそれぞれへのプログラム４１０−４５０の割り当ては、方法３００の制御プログラムによってもたらされる。制御プログラムは、プログラム４１０−４５０が選択されたときのアクセスのそれぞれを記録する。実行可能なプログラムが無いために、プログラム４１０−４５０が選択されない場合、演算コアのアイドル時間が記録される。制御プログラムは、記録された動作時間およびアイドル時間から演算コアの稼働率を決定するとともに、必要に応じて、他の演算コアＣ０−Ｃ３より低い稼働率の演算コアＣ０−Ｃ３へプログラム４１０−４５０を割り当てる。
【００５５】
最小数の演算コアＣ０−Ｃ３ができるだけ高い稼働率を示し、残りの演算コアＣ０−Ｃ３が全くまたは僅かしか使用されず省電力モードに移行されるように、割り当てが実行されてもよい。
【００５６】
さらなる実施形態において、テーブルまたは演算コアＣ０−Ｃ３のそれぞれへのプログラム４１０−４５０の割り当ては、マイクロコンピュータ１１０のユーザによって手動で実行される。上述したように、それにもかかわらず、方法３００の制御プログラムは、ユーザによる割り当ての実行に基づいて、対応する記録エントリーを収集してもよい。支持手段として、記録されたデータは、例えば、リストまたはグラフィックの形式で処理される。別の実施形態において、複数の演算コアＣ０−Ｃ３の稼働率の度合いは時間の進行として、場合によっては、演算コアＣ０−Ｃ３の稼働率の平均と共に、ユーザに示される。テーブル４００または演算コアＣ０−Ｃ３のそれぞれへのプログラム４１０−４５０の割り当ては、状態変動の調整またはマイクロコンピュータの要求を斟酌して、図１のマイクロコンピュータ１１０の動作中に変更されてもよい。
【００５７】
両方のアプローチはまた、例えば、テーブルまたは演算コアＣ０−Ｃ３のそれぞれへのいくつかのプログラム４１０−４５０の、ユーザによる手動での割り当てによって、および、テーブルまたは演算コアＣ０−Ｃ３それぞれへの他のプログラムの、方法３００の制御プログラムによる自動での割り当てによって、並行して実行される。
【００５８】
図５は、図２のプロセッサ２００で設定された持続時間の満了の衝突を防ぐための種々のヒューリスティックである。時間の進行は、横方向で表されている。縦方向において、プログラム４１０−４５０と、オペレーティングシステム５１０との実行シーケンスの４つの列が、典型例としての演算コアＣ０またはＣ１において示されている。暗領域はオペレーティングシステムの配置を表し、明領域はリアルタイム処理能力を有するプログラム４１０−４５０の具体例である。
【００５９】
明領域と暗領域との間での各変更では、図３における方法３００の制御プログラムがアクセスされる。演算コアＣ０−Ｃ３のそれぞれにてオペレーティングシステムおよびリアルタイム処理能力を有するプログラム４１０−４５０に使用される時間と比較したとき、方法３００の実行時間はとても小さく、図５の描写で表せない。
【００６０】
最初の列は、演算コアＣ０でのオペレーティングシステムと、リアルタイム処理能力を有するプログラム４１０−４５０との一連の配置を描いたものである。２番目の列は、演算コアＣ１でのオペレーティングシステムと、リアルタイム処理能力を有するプログラム４１０−４５０との、対応する一連の配置である。２つの列を繋ぐ縦の破線は、演算コアＣ０およびＣ１での方法３００のアクセスが衝突する位置を示している。
【００６１】
３番目の列では、２番目の列の進行が、一定値だけ時間軸に沿ってシフトされている。このシフトは、プログラム４１０−４５０に割り当てられた持続時間が、図５（縦の破線）の描写の右端で衝突を防ぐために、所定の時間Δによって延長されることによって引き起こされる。時間Δの挿入は、１度だけ実行される。
【００６２】
４番目の列は、衝突防止のための別のアプローチを概説したものである。ここで、プログラム４１０−４５０に割り当てられた持続時間は、プログラム４１０−４５０に割り当てられた持続時間の満了時に、時間Δだけ延長される。
【００６３】
３番目の列に従った衝突防止のためのヒューリスティックは、他の演算コアＣ０における方法３００の次のアクセスだけが考慮されるので、より簡単に見える。
【００６４】
４番目の列に従ったアプローチは、オペレーティングシステムに割り当てられた持続時間と、プログラム４１０−４５０に割り当てられた持続時間との合計としてもたらされるサイクル時間が、互いに補完されるという利点を有する。
【００６５】
最初および２番目の列の進行のサイクル時間比が、互いに関連しあうことによって、３番目および４番目の列のアプローチが、演算コアＣ０およびＣ１での方法３００の一時的な衝突を防ぐために選択される。その上、例えば、最初の調整に直接依存しているサイクル時間をレンダリングすることによって、および、２度目の調整で互いに１度シフトし合うことによって、両方のヒューリスティックの組み合わせが可能である。
【図１】
0005528568.tif 000002
【図２】
0005528568.tif 000003
【図３】
0005528568.tif 000004
【図４】
0005528568.tif 000005
【図５】
0005528568.tif 000006