JP2006338391A - ステートマシンおよびステートマシンの動作方法 - Google Patents

ステートマシンおよびステートマシンの動作方法 Download PDF

Info

Publication number
JP2006338391A
JP2006338391A JP2005162994A JP2005162994A JP2006338391A JP 2006338391 A JP2006338391 A JP 2006338391A JP 2005162994 A JP2005162994 A JP 2005162994A JP 2005162994 A JP2005162994 A JP 2005162994A JP 2006338391 A JP2006338391 A JP 2006338391A
Authority
JP
Japan
Prior art keywords
event
routine
state
processing routine
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.)
Withdrawn
Application number
JP2005162994A
Other languages
English (en)
Inventor
Jun Soda
純 曽田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2005162994A priority Critical patent/JP2006338391A/ja
Publication of JP2006338391A publication Critical patent/JP2006338391A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】イベントの発生を引き起こす処理を行うルーチンが、そのイベントを発生させる処理を行わない場合でも、適切に動作するステートマシンを提供する。
【解決手段】現在のステートと発生するイベントとに対応して実行される処理ルーチンの情報を保持するマトリクステーブルに基づいて処理手順を決定する。イベントに応答してマトリックステーブルを参照し、今回実行する処理ルーチンを実行ルーチンとして抽出する処理ルーチン抽出手段と、処理ルーチン抽出手段が抽出した実行ルーチンを実行する処理ルーチン実行手段と、実行ルーチンに基づいて次のステートを決定する次ステート決定手段と、新たなイベントを待機するイベント待機動作を停止させるイベント待機停止手段と、新たなイベント待機動作が停止しているときに、次のステートに対応して新たな処理ルーチンの抽出を処理ルーチン抽出手段に要求するスキップ状況判断手段を具備する。
【選択図】 図11

Description

本発明は、ステートマシンおよびステートマシンの動作方法に関する。
技術の進歩に伴って、複数の機能を有する所謂多機能機器が市場に流通してきている。多機能機器には、その複数の機能を制御するための制御用ソフトウェアが搭載されている。多機能機器に使用される制御用ソフトウェアを開発する場合には、そのデバッグ作業が必要である。しかしながら、その制御用ソフトウェア全体を一度にデバッグすることは、非常に困難である。
そこで、制御用ソフトウェアのデバッグを適切に実行するために、制御用ソフトウェアを複数のモジュールで構成し、モジュールごとにデバッグを行うことで、制御用ソフトウェア全体の品質を向上させる方法が用いられている。
このように、複数のモジュールで構成される制御用ソフトウェアを適切に動作させるためには、各モジュールのつながりをきちんと制御しなければならない。各モジュールのつながりを適切に制御する技術としては、ステートマシンを用いた技術が知られている(例えば、特許文献1、2参照。)。
図1は、特許文献1に記載のステートマシンの構成を例示するブロック図である。図1を参照すると、特許文献1に記載のステートマシンは、イベント解析手段101と、ルーチン解析手段102と、ルーチン処理手段103と、ステータス決定手段104と、マトリクステーブル105とを含んで構成されている。イベント解析手段101は、外部からの起動要求(以下イベントという)を待ち、イベントが発生したら解析を行っている。したがって、特許文献1に開示されている技術において、イベント解析手段101が解析を行なうためには、イベントの発生が必須である。これは、イベント解析手段101が、イベントを待つか、あるいはイベント解析手段101の前段にイベントを待つ手段があることを示している。以下、イベント解析手段101が、イベントを待つものとして説明する。
ルーチン解析手段102は、解析されたイベントの内容とその時のステート(図1ではステータスと表記)をもとに、マトリクステーブル105より実行ル−チンを抽出する。ルーチン処理手段103は、マトリクステーブル105より抽出されたル−チンでの処理を実行する。ステータス決定手段104は、ルーチン解析手段102と同様に、イベントと現在のステートによりマトリクステーブル105より次のステートを抽出し、ステートの遷移を行なう。ステートが遷移した後は、再びイベント解析手段101が呼び出され、次のイベントの発生を待ち、イベントが発生したら一連の処理を行う。特許文献1に記載のステートマシンは、移行ステータスの決定をルーチンでは行なわず、マトリクステーブルにより移行ステータスを決定している。
図2は、特許文献1に記載のマトリクステーブルの構成を示すテーブルである。図2を参照すると、第1行121はルーチン名を要素としている。第2行122は、ルーチンに対応して実行後のステータスを要素としている。図2を参照すると、要素111−121には第1ルーチンR1が設定され、要素111−122には、その処理が終わったときの移行先ステート(第2ステートS02)が設定されている。また、要素112−121にも第1ルーチンR1が設定されている。図2に示されているように、要素112−122には移行先ステートとして第3ステートS03が設定されている。さらに、要素113−121にも第1ルーチンR1が設定されている。図2に示されているように、このときの移行先ステートは第4ステートS04である。
このように、特許文献1に記載の技術において、各ルーチンは処理の実行のみを行い、状態の遷移はマトリクステーブルにより決定されている。特許文献1に記載の技術は、イベントを待ちながら順次的に処理を進めていく順次処理を行う場合にも適用可能である。
図3は、順次処理を行う場合のマトリクステーブルの構成を示すテーブルである。図3に示されているマトリクステーブルにおいて、第1ステートS01と第2ステートS02はステートを示している。第1ルーチンF01と第2ルーチンF02はイベントに対する処理ルーチンを示している。第1イベントE01はイベントを示し、と第2イベントEf01は、第1ルーチンF01(または、第2ルーチンF02)を実行したことによって発生するイベントをあらわしている。なお、以下の説明では、初期状態が第1ステートS01である場合に対応しているものとする。
図3を参照すると、イベント解析手段101は、初期状態においてイベントの発生を待ち、イベントが発生したら解析する。このとき解析されたイベントは第1イベントE01であるものとする。
イベント解析手段101は解析結果をルーチン解析手段102に通知する。ルーチン解析手段102は、その解析結果に応答してマトリクステーブルを参照する。ルーチン解析手段102は、現在のステートと解析されたイベント(E01)から第1ルーチンF01を実行する必要があると判断する。
ルーチン解析手段102は抽出したルーチンをルーチン処理手段103に通知し、ルーチン処理手段103は、ルーチン解析手段102が選んだ第1ルーチンF01を実行する。
ルーチン処理手段103は、第1ルーチンF01の実行に応答して、ステータス決定手段104に次にステートの決定を要求する。ステータス決定手段104は、その要求に応答してマトリクステーブルを参照する。ステータス決定手段104は、現在のステート(S01)とイベント(E01)からステートを第2ステートS02に遷移させる。ステートの遷移が完了すると、処理はイベント待機状態に戻る。
イベント解析手段101は、イベントの発生を待ち、イベントが発生したら解析する。ここで、解析されたイベントが、第2イベントEf01であるとする。
ルーチン解析手段102は、マトリクステーブルを参照する。ルーチン解析手段102は、現在のステートとイベントから第2ルーチンF02を実行する必要があると判断する。ルーチン処理手段103は、ルーチン解析手段102が選んだ第2ルーチンF02を実行する。ステータス決定手段104は、マトリクステーブルを参照する。ステータス決定手段104は、現在のステートとイベントからステートを第1ステートS01に遷移させる。特許文献1には、このような構成・動作によって、同じ処理を行うルーチンの数を低減させ、プログラムサイズを縮小するための技術が開示されている。
さらに、特許文献2(特開2002−110796号公報)には、ステートマシンに遷移条件予備入力を設けることにより、状態の遷移に関する動作を変更する技術が記載されている。図4は、特許文献2に記載のステートマシンの構成を示すブロック図である。
図4を参照すると、特許文献2に記載のステートマシは、現在の状態が如何なる状態にあっても特定の状態へ選択的な活性レベル入力によりそれぞれ優先的に遷移させる遷移条件予備入力を備えることを特徴とし、次の状態を入力および保持し現在の状態を出力する状態レジスタと、現在の状態,遷移条件入力および遷移条件予備入力を基にして次の状態を生成する次状態生成組合せ回路とを備えている。
図4の遷移条件入力はイベントの入力である。また、図4の遷移条件予備入力は、ステートを優先的に変更するための、予備のイベントの入力である。特許文献2に記載の技術において、遷移条件予備入力にイベントを与えると、現在のステートに関係なく、遷移条件予備入力で指定されたステートに遷移する。したがって、図4で示されるように、遷移条件予備入力は遷移条件入力の拡張である。
図5は、特許文献2に記載の技術を用いた半導体集積回路におけるステートマシンの初期接続を示すブロック図である。図5に示されているように、その半導体集積回路では、各遷移条件予備入力Y0〜Y6は、LSI開発初期の回路設計において、不活性レベルである接地に初期接続されている。
図6は、特許文献2におけるステートマシンの状態遷移を示す状態遷移図である。図6を参照すると、遷移条件予備入力にイベントが発生したときは、現在のステートにかかわらず、特定のステートに遷移することが示されている。特許文献2に記載の技術は、マトリックステーブルを使わないステートマシンを開示している。特許文献2に記載の技術を、におけるステートマシンの動作をマトリックステーブルで表すことができる。
図7は、特許文献2に記載の技術に対応するマトリクステーブル構成を示すテーブルである。特許文献2に記載の技術における半導体回路の構成では、各イベントを別の端子で受けるようになっている。そなため、同時に複数のイベントを受ける場合がある。その場合に、マトリックステーブルの上方で指定されたイベントを優先的に扱うものとする。図7を参照すると、遷移条件予備入力Y0〜Y6が上方にある、従って、遷移条件予備入力が優先的に処理される。
図8は、遷移条件予備入力がないときのマトリックステーブルである。図8を参照すると、特許文献2に記載の技術は、遷移条件予備入力からのイベントを、マトリックステーブルの優先される位置に追加したものであることが示されている。
特開平4−267435号公報 特開2002−110796号公報
上述してきたように、ステートマシンはイベントが発生したときに、そのイベントと現在のステートを元に必要な処理ルーチンを実行するものである。従来のステートマシンは、イベントを待ちながら順次的に処理を進めていく順次処理を行う場合にも用いられている。
ここで、特許文献1に記載のステートマシンの動作おいて、第1ルーチンF01が何らかの状況によってはイベントEf01の発生を引き起こす処理を行わない場合がある。しかし、その場合でも第2イベントEf01が発生する場合と同様に、第2ルーチンF02を実行して、第1ステートS01に遷移する必要がある場合がある。
特許文献1に記載の技術は、イベントが発生しない限り次のステートの処理は行わない。そのため、このような場合イベント解析手段101で処理が停止してしまい、所定の動作を実現できなくなることがある。また、特許文献2に記載の技術は、遷移条件予備入力からのイベントをマトリックステーブルに追加しただけのものであるので、特許文献1に記載の技術と同様に、イベントが発生しない限り次のステートの処理が行われない。
本発明が解決しようとする課題は、通常はイベントの発生を引き起こす処理を行うルーチンが、何らかの要因によって、そのイベントを発生させる処理を行わない場合でも、適切に動作するステートマシンを提供することにある。
以下に、[発明を実施するための最良の形態]で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
現在のステート(S1、S2)と発生するイベント(E1、Ef1、E2)とに対応して実行される処理ルーチン(F1、F2)の情報を保持するマトリクステーブル(12、16)に基づいて処理手順を決定するステートマシン(1)を構成する。そのステートマシン(1)は、前記イベント(E1、Ef1、E2)に応答して前記マトリックステーブル(12、16)を参照し、前記現在のステート(S1、S2)と前記イベント(E1、Ef1、E2)とに基づいて、今回実行する処理ルーチンを実行ルーチンとして抽出する処理ルーチン抽出手段(5)と、前記処理ルーチン抽出手段(5)が抽出した前記実行ルーチンを実行する処理ルーチン実行手段(7)と、前記実行ルーチンに基づいて次のステート(S1、S2)を決定する次ステート決定手段(8)と、新たなイベント(E1、Ef1、E2)を待機するイベント待機動作を停止させるイベント待機停止手段(6)と、前記新たなイベント待機動作が停止しているときに、前記次のステート(S1、S2)に対応して新たな処理ルーチンの抽出を前記処理ルーチン抽出手段に要求するスキップ状況判断手段(9)を具備する構成であることが好ましい。
また前記イベント待機停止手段(6)は、前記実行ルーチンの抽出完了に応答して、イベント待機停止状態を示すイベント待機情報(13)を生成し、前記スキップ状況判断手段(9)は、前記イベント待機情報(13)に基づいて、前記次のステート(S1、S2)に対応するイベント待機動作をスキップし、前記新たな処理ルーチンの抽出を前記処理ルーチン抽出手段(5)に要求する。
イベントを発生させる元になる処理が行われなかったときは、イベント待機情報(イベントスキップ情報13)のフラグをONにして、イベントスキップを実行する。そして、イベント待機情報(イベントスキップ情報13)のフラグがONの時は、遷移後のステートでイベントを待たずに処理ルーチンを実行し、さらに次のステートへ遷移する。
本発明によると、通常はイベントの発生を引き起こす処理を行うルーチンが、何らかの要因によって、そのイベントを発生させる処理を行わない場合でも、適切に動作するステートマシンを提供することが可能となる。
[第1の実施の形態]
以下に、図面を参照して本発明のステートマシン1に関して説明を行なう。以下の説明において、ステートマシン1は、外部から供給される起動要求(以下、本実施の形態において、イベントと称す)に応答して、その時の処理の実行段階(以下、本実施の形態において、ステートと称す)に基づいて実行する処理ルーチンを決定する。
図9は、第1の実施形態における本発明のステートマシン1の構成を例示するブロック図である。図9を参照すると、第1の実施形態のステートマシン1は、処理部2と、記憶部3とを含んで構成されている。図9に示されているように、処理部2は、イベント解析部4と、処理ルーチン抽出部5と、イベント待ちスキップ停止部6と、処理ルーチン実行部7と、次ステート決定部8と、イベント待ちスキップ判断部9と、イベント待ちスキップ開始部10と、イベント発生トリガ監視部とを含んで構成されている。また、図9に示されているように、記憶部3は、マトリクステーブル12と、イベント待ちスキップ情報13とを含んで構成されている。
マトリクステーブル12は、ステートマシン1が実行する処理ルーチンの決定に使用されるテーブルである。ここで、マトリクステーブル12の構成に関する詳細な説明は後述する。イベント待ちスキップ情報13は、本実施の形態のステートマシン1の記憶部3に保持され、イベント待ちを行なうか停止するかの判断に使用される情報である。イベント待ちスキップ情報13は、スキップ実行フラグを含んで構成され、そのフラグがONのときは、ステートマシン1のイベント待ち動作がスキップされる。したがって、そのフラグがOFFのときは、ステートマシン1はイベント待ち状態になる。
イベント解析部4は、イベントに応答して、そのイベントの解析を行なう情報処理機能ブロックである。イベント解析部4は、キー入力やデータの受信をイベントとし、そのイベントに応答してイベント解析を実行する。イベント解析部4は、そのイベント解析によって、イベントを予め決められたイベントコードに分類する。イベント解析部4は、イベントの解析完了に応答して、解析結果であるイベントコードを処理ルーチン抽出部5に通知する。
処理ルーチン抽出部5は、イベント解析部4から通知されるイベントコードと、その時のステートに基づいて、マトリクステーブル12から処理ルーチンを抽出する情報処理機能ブロックである。
イベント待ちスキップ停止部6は、処理ルーチンの実行の前に、イベント待ちスキップを停止させる処理を実行する情報処理機能ブロックである。イベント待ちスキップ停止部6は、処理ルーチン抽出部5による処理ルーチンの抽出が完了したときに、イベント待ちスキップ情報13を更新し、スキップ実行フラグをOFFにする。
処理ルーチン実行部7は、処理ルーチン抽出部5が抽出した処理ルーチンを実行する情報処理機能ブロックである。次ステート決定部8は、マトリクステーブル12に基づいて、次のステートを決定する情報処理機能ブロックである。イベント待ちスキップ判断部9は、イベント待ちスキップ情報13のスキップ実行フラグの状態に基づいて、イベント待ちを実行するかどうかの判断をする情報処理機能ブロックである。イベント待ちスキップ開始部10は、イベント待ちスキップを停止状態から実行状態にする(=イベント待ちをスキップする)情報処理機能ブロックである。本実施の形態のイベント待ちスキップ開始部10は、イベント待ちスキップ情報13のスキップ実行フラグをOFFからONに変更することで、イベント待ちスキップを停止状態から実行状態にする。
イベント発生トリガ監視部は、現在実行中の処理ルーチンに対応して実行されるイベント発生用処理が行われたかどうかを監視する情報処理機能ブロックである。本実施の形態のステートマシン1は、処理ルーチンが実行されることにより、イベント発生用のトリガが生成されるかどうかの監視を行い、そのトリガが生成されていないけれども、ステートの遷移を行なわなければならない場合に、適切にステートの遷移を行なうことが可能である。
以下に、マトリクステーブル12に関する詳細な説明を行なう。図10は、マトリクステーブル12の構成を例示するブロック図である。図10を参照すると、マトリクステーブル12は、現在のステートと待ちイベントとに対応して処理ルーチンを特定することが可能な構成になっている。第1の実施の形態のステートマシンは、第1ステートS1と第2ステートS2との二つの状態に対応している。したがって、図10に示されているように、マトリクステーブル12は、第1イベントE1または第3イベントE2に応答して、現在のステートにおける処理ルーチン(第1ルーチンF1または第2ルーチンF2)と次ステート(第1ステートS1または第2ステートS2)を関連付けて保持している。
さらに、図面を参照して、第1の実施の形態の動作に関して説明を行なう。なお第1ルーチンF1は、通常は第2イベントEf1の発生を引き起こす処理を行うが、条件によっては第2イベントEf1の発生を引き起こす処理を行わないものとする。
図11は、第1の実施形態におけるステートマシンの動作を例示するフローチャートである。図11に示されているように、本実施の形態のステートマシン1の動作は、通常、発生するイベントに応答して開始する。
ステップS101において、イベント解析部4は、外部で発生するイベントを解析し、そのイベントを識別するためのイベント識別子を処理ルーチン抽出部5に通知する。
ステップS102において、処理ルーチン抽出部5は、イベント解析部4から通知されるイベント識別子に応答して、記憶部3のマトリクステーブル12を参照し、そのイベント識別子と現在のステートとから現在実行する処理ルーチンを抽出する。
ステップS103において、イベント待ちスキップ停止部6は、処理ルーチン抽出部5が処理ルーチンの抽出を完了したことに応答して、イベント待ちスキップ情報13のスキップ実行フラグをOFFにして、イベント待ちスキップを停止状態にする。
ステップS104において、処理ルーチン実行部7は、イベント待ちがスキップしていることに対応して、処理ルーチン抽出部5が抽出した処理ルーチンを実行する。
ステップS105において、次ステート決定部8は、現在実行されている処理ルーチンに関連付けられている次ステートをマトリクステーブル12に基づいて決定する。
ステップS106において、イベント待ちスキップ判断部9は、次ステートが決定したときに、イベント待ちスキップ情報13を読み込む。イベント待ちスキップ判断部9は、イベント待ちスキップ情報13の読み込み完了に応答してステップS107の処理を実行する。
ステップS107において、イベント待ちスキップ判断部9は、イベント待ちスキップ情報13のスキップ実行フラグに基づいて、イベント待ちをスキップするどうかの判断を行なう。その判断の結果、スキップを実行する場合、処理はステップS102に戻り、ステートマシン1は、ステップS105で次ステート決定部8が決定した次ステートに対応してイベントの発生を待たずに処理ルーチンの抽出を行う。その判断の結果、スキップを停止する場合は、処理はステップS101に戻り、ステートマシン1は、イベントの発生を待ってから、処理ルーチンの抽出を行なう。
これによって、通常はイベントの発生を引き起こす処理を行うルーチンが、何らかの要因によって、そのイベントを発生させるトリガを生成しない場合でも、本来の処理を停止させることなく動作するステートマシンを構成することができる。
本実施の形態の動作は、第1ルーチンF1が第2イベントEf1の発生を引き起こす処理を行う場合と、第1ルーチンF1が第2イベントEf1の発生を引き起こす処理を行わなかった場合とで異なる動作をすることになる。
以下に、第1ルーチンF1が第2イベントEf1の発生を引き起こす処理を行う場合について説明を行なう。ここで、初期状態は第1ステートS1とする。初期状態において、イベント解析部4はイベントの発生を待ち、イベントが発生したら解析する。ここで、仮に解析されたイベントが第1イベントE1であったとする。
このとき、処理ルーチン抽出部5はマトリクステーブル12を参照する。処理ルーチン抽出部5は、現在のステートとイベントから第1ルーチンF1を実行する必要があると判断する。イベント待ちスキップ停止部6は、実行予定の処理ルーチンの抽出完了に応答して、イベント待ちスキップ情報13のスキップ実行フラグをOFFにする。その後、処理ルーチン実行部7は、処理ルーチン抽出部5が選んだ第1ルーチンF1を実行する。
次ステート決定部8は、マトリクステーブル12を参照して、現在のステートとイベントから次のステートを決定する。次ステート決定部8は決定した第2ステートS2になるように状態遷移を実行する。イベント待ちスキップ判断部9は、このときイベント待ちスキップ情報13のスキップ実行フラグがOFFのまま更新されていないので、イベント待ちをスキップしないことを選択する。
イベント解析部4は、新たなイベントの発生を待ち、新たなイベントが発生したら解析する。ここで、解析された新たなイベントが第2イベントEf1であったとする。処理ルーチン抽出部5は、マトリクステーブル12を参照する。処理ルーチン抽出部5は、現在のステートとイベントから第2ルーチンF2を実行する必要があると判断する。
イベント待ちスキップ停止部6は、イベント待ちスキップ情報のスキップ実行フラグがONの場合はOFFにする。また、イベント待ちスキップ停止部6は、イベント待ちスキップ情報のスキップ実行フラグがOFFの場合は、その状態を維持する。処理ルーチン実行部7は、処理ルーチン抽出部5が選んだ第2ルーチンF2を実行する。
次ステート決定部8は、マトリクステーブル12を参照する。次ステート決定部8は、現在のステートとイベントからステートを第1ステートS1に遷移させる。イベント待ちスキップ判断部9は、イベント待ちスキップ情報13のスキップ実行フラグがOFFのままなので、イベント待ちをスキップしないことを選択する。
ここで、第1ルーチンF1が第2イベントEf1の発生を引き起こす処理を行わなかった場合に関する説明を行なう。ここで、初期状態は第1ステートS1であるものとする。
このときイベント解析部4は、イベントの発生を待ち、イベントが発生したら解析する。以下の説明では、このときに解析されたイベントが、第1イベントE1である場合を例に説明を行なう。
処理ルーチン抽出部5は、マトリクステーブル12を参照する。処理ルーチン抽出部5は、現在のステートとイベントから第1ルーチンF1を実行する必要があると判断する。その後、イベント待ちスキップ停止部6は、イベント待ちスキップ情報13のスキップ実行フラグをOFFにする。スキップ実行フラグがOFFになった後、処理ルーチン実行部7は、処理ルーチン抽出部5が選んだ第1ルーチンF1を実行する。ここで、第1ルーチンF1は第2イベントEf1の発生を引き起こす処理を行わないとする。このとき、イベント待ちスキップ開始部10は、イベント待ちスキップ情報13のスキップ実行フラグをONにするようにイベント待ちスキップ情報13を更新する。なおイベント待ちスキップ情報13の更新動作に関しては後述する。
次ステート決定部8は、処理ルーチンの実行に対応してマトリクステーブル12を参照する。次ステート決定部8は、現在のステートとイベントから第2ステートS2に遷移させる。イベント待ちスキップ判断部9は、イベント待ちスキップ情報13のスキップ実行フラグがONになっているので、イベント待ちをスキップすることを選択する。これにより、イベント解析部4ではなく処理ルーチン抽出部5が呼び出される。
呼び出された処理ルーチン抽出部5は、マトリクステーブル12を参照する。処理ルーチン抽出部5は、現在のステートから第2ルーチンF2を実行する必要があると判断する。その判断に応答して、イベント待ちスキップ停止部6は、イベント待ちスキップ情報13のスキップ実行フラグをOFFにする。処理ルーチン実行部7は、処理ルーチン抽出部5が選んだ第2ルーチンF2を実行する。次ステート決定部8は、第2ルーチンF2の実行に対応してマトリクステーブル12を参照する。次ステート決定部8は、現在のステートとイベントから第1ステートS1に遷移させる。イベント待ちスキップ判断部9は、イベント待ちスキップ情報13のスキップ実行フラグがOFFなので、イベント待ちをスキップしないことを選択する。
この流れにより、第1ルーチンF1が第2イベントEf1を引き起こす処理を行わない場合でも、第2イベントEf1待ちで停止することなく、ステートマシンは所定の動作を実行する。
図12は、本実施の形態のステートマシンの動作における、イベント待ちスキップ情報13のスキップ実行フラグの書き換え動作を例示するフローチャートである。以下の実施の形態において、図12に示されている動作が、イベント発生トリガ監視部によって実行される場合を例示して説明を行なう。図12を参照すると、イベント発生トリガ監視部は、現在実行中の処理ルーチンを監視することで、イベント待ちスキップ情報13を更新するかどうかを決定している。ステップS201において、イベント発生トリガ監視部は現在の処理ルーチンを認識する。ステップS202において、イベント発生トリガ監視部は、現在の処理ルーチンが、イベント発生用の処理を行ったかどうかの判断を実行する。その判断の結果、イベント発生用の処理が行われている場合には、イベント発生トリガ監視部は、現在実行中の処理ルーチンの監視を継続する。その判断の結果、イベント発生用の処理が行われていない場合、処理はステップS203に進む。ステップS203において、イベント発生トリガ監視部は、イベント待ちスキップ情報13のスキップ実行フラグをONにする。上述の動作は、図11のフローチャートで示される動作の、ステップS104とステップS105との間に実行されることが好ましい。
これによって、通常はイベントの発生を引き起こす処理を行うルーチンが、実際にイベントの発生を引き起こす処理を行っているかどうかを監視することが可能になる。ステートマシン1は、その何らかの要因によって、そのイベントを発生させるトリガを生成しない場合に対応する処理を行うことが可能になる。
[第2の実施の形態]
以下に、本発明の第2の実施の形態について説明を行なう。ステートマシン1は、ステートが特定しているときに複数のイベントを受け付ける場合がある。図13は、複数のイベントを受け付けるステートマシン1に備えられるマトリクステーブル15の構成を例示するテーブルである。図13を参照すると、第2の実施形態のステートマシン1は、第2ステートS2の時に第2イベントEf1もしくは第3イベントE2を受ける。ステートマシン1は、イベントが第2イベントEf1の時は第2処理ルーチンF2を実行して第1ステートS1に遷移する。イベントが第3イベントE2の時は、ステートマシン1はl第3処理ルーチンF3を実行して、ステートS2に遷移する。
このような場合に、第1の実施形態と同様に第1処理ルーチンF1が、次のイベントを引き起こさない場合、第2ステートS2に遷移後、第2処理ルーチンF2を実行すればよいのか、あるいは第3処理ルーチンF3を実行すればよいのかが判断できないことがある。
図14に示される状態遷移は、プログラムの実行時に決まるものではなく、プログラムの設計時に決まるものである。したがって、マトリックステーブル15にあらたな情報を追加することで対応することが可能になる。以下に、複数のイベントを受け付ける場合のマトリクステーブルの構成について説明を行なう。図14を参照すると、マトリクステーブル16は、図13に示されるマトリックステーブル15にスキップ時実行ルーチン特定フラグ(17〜19)を備えて構成されている。図14に示されているように、スキップ時実行ルーチン特定フラグは全てのステート、全てのイベントに対応して備えられている。また、マトリクステーブル16に示されているように、このスキップ時実行ルーチン特定フラグは、一つのステートあたり一つのイベントについてONとなり、他のイベントについてはOFFになる。ステートマシン1は、イベント待ちをスキップするときはマトリックステーブルを参照し、スキップ時実行ルーチン特定フラグがONに指定されている処理ルーチンを実行し、ステートを遷移させる。
図15は、第2の実施の形態におけるステートマシン1の構成を例示するブロック図である。図15を参照すると、第2の実施の形態のステートマシン1は、第1の実施の形態のステートマシン1にさらにスキップ時実行ルーチン判断部21を備えて構成されている。スキップ時実行ルーチン判断部21は上述のスキップ時実行ルーチン特定フラグに基づいて、実行する処理ルーチンを決定する情報処理機能ブロックである。
以下に、図面を参照して、第2の実施形態の動作について説明を行なう。図16は第2の実施の形態の動作を例示するフローチャートである。図16示されている各ステップにおいて、第1の実施の形態と同じ符号が付与されているステップに関しては、第1の実施の形態の動作と同様であるので、その詳細な説明は省略する。図16に示されているように、図16のステップS301において、スキップ時実行ルーチン判断部21はマトリクステーブル16を参照し、現在のステートで受け付けられるイベントのうち、スキップ時実行ルーチン特定フラグがONのものを検索する。スキップ時実行ルーチン判断部21は、例えば、図14のマトリクステーブル16を例に説明を行なうと、第2イベントEf1に対応するスキップ時実行ルーチン特定フラグ18がONになっていることを検索した場合、第2ルーチンF2を処理ルーチンとして決定し、処理ルーチン抽出部5にその情報を受け渡す。以後の動作は第1の実施の形態の動作と同様である。
第1の実施形態の説明では、本発明の理解を容易にするために、ステートとイベントが一対一の簡単なマトリックステーブルを例示して説明をおこなった。実際のステートマシンでは、一つのステートで複数のイベントを受け付ける場合も多い。第2の実施形態にのべるステートマシンは、そのような場合であっても、適切に動作することが可能となる。
上述してきたように、従来のステートマシンはイベントの発生が必須であったため、イベントが発生しないという状況に対応することができなかった。本実施の形態のステートマシンはイベント待ちスキップ情報とそれをON、またはOFFする機構と、それを判断する機構を設けることにより、イベントが発生しない状況に対応できるものである。
図1は、従来のステートマシンの構成を示すブロック図である。 図2は、従来のマトリクステーブルの構成を示すテーブルである。 図3は、順次処理を行う場合の従来のマトリクステーブルの構成を示すテーブルである。 図4は、従来のステートマシンの構成を示すブロック図である。 図5は、特許文献2に記載の技術を用いた半導体集積回路におけるステートマシンの初期接続を示すブロック図である。 図6は、特許文献2におけるステートマシンの状態遷移を示す状態遷移図である。 図7は、特許文献2に記載の技術に対応するマトリクステーブル構成を示すテーブルである。 図8は、特許文献2に記載の技術における、遷移条件予備入力がないときのマトリックステーブルである。 図9は、本発明の第1の実施の形態におけるステートマシンの構成を例示するブロック図である。 図10は、第1の実施の形態におけるマトリクステーブルの構成を例示するテーブルである。 図11は、第1の実施の形態における動作を例示するフローチャートである。 図12は、第1の実施の形態における動作を例示するフローチャートである。 図13は、第2の実施の形態におけるマトリクステーブルの構成を例示するテーブルである。 図14は、第2の実施の形態におけるステートマシンの構成を例示するブロック図である。 図15は、第2の実施の形態におけるマトリクステーブルの構成を例示するテーブルである。 図16は、第2の実施の形態における動作を例示するフローチャートである。
符号の説明
1…ステートマシン
2…処理部
3…記憶部
4…イベント解析部
5…処理ルーチン抽出部
6…イベント待ちスキップ停止部
7…処理ルーチン実行部
8…次ステート決定部
9…イベント待ちスキップ判断部
10…イベント待ちスキップ開始部
11…イベント発生トリガ監視部
12…マトリクステーブル
13…イベント待ちスキップ情報
15…マトリクステーブル
16…マトリクステーブル
17、18、19…スキップ時実行ルーチン特定フラグ
S1…第1ステート、S2…第2ステート
E1…第1イベント、Ef1…第2イベント
E2…第3イベント
F1…第1ルーチン、F2…第2ルーチン
F3…第3ルーチン
21…スキップ時実行ルーチン判断部
101…イベント解析手段
102…ルーチン抽出手段
103…ルーチン処理手段
104…ステータス決定手段
105…マトリクステーブル
121…第1行
122…第2行
111−121…要素
111−122…要素
112−121…要素
112−122…要素
113−121…要素
113−122…要素
106…ステートマシン
107…マトリクステーブル
S01…第1ステート、S02…第2ステート
E01…第1イベント、Ef01…第2イベント
F01…第1ルーチン、F02…第2ルーチン
108…ステートマシン
S00…基準ステート、S03…第3ステート
S04…第4ステート、S05…第5ステート
S06…第6ステート

Claims (14)

  1. 現在のステートと発生するイベントとに対応して実行される処理ルーチンに関する情報を保持するマトリクステーブルと、
    前記イベントに応答して前記マトリックステーブルを参照し、前記現在のステートと前記イベントとに基づいて、今回実行する処理ルーチンを実行ルーチンとして抽出する処理ルーチン抽出手段と、
    前記処理ルーチン抽出手段が抽出した前記実行ルーチンを実行する処理ルーチン実行手段と、
    前記実行ルーチンに基づいて次のステートを決定する次ステート決定手段と、
    新たなイベントを待機するイベント待機動作を停止させるイベント待機停止手段と、前記イベント待機停止手段は、前記実行ルーチンの抽出完了に応答して、イベント待機停止状態を示すイベント待機情報を生成し、
    前記新たなイベント待機動作が停止しているときに、前記次のステートに対応して新たな処理ルーチンの抽出を前記処理ルーチン抽出手段に要求するスキップ状況判断手段と
    を具備し、
    前記スキップ状況判断手段は、前記イベント待機情報に基づいて、前記次のステートに対応するイベント待機動作をスキップし、前記新たな処理ルーチンの抽出を前記処理ルーチン抽出手段に要求する
    ステートマシン。
  2. 請求項1に記載のステートマシンにおいて、
    さらに、イベント待機開始手段を具備し、
    前記イベント待機開始手段は、
    前記処理ルーチン実行手段が、前記実行ルーチンを実行しているときに、前記実行ルーチンがイベント発生用のトリガを生成するかどうかを監視し、前記トリガが生成されていないときに前記イベント待機情報を、イベント待機開始を示す情報に更新する
    ステートマシン。
  3. 請求項2に記載のステートマシンにおいて、
    さらに、スキップ時実行ルーチン判断手段を具備し、
    前記マトリクステーブルは、複数のイベントを一時期に受けたときに、その処理ルーチンを実行するかをしめすスキップ時実行ルーチン特定フラグを含み、前記スキップ時実行ルーチン特定フラグは前記処理ルーチンに対応して前記マトリクステーブルに保持され、
    前記スキップ時実行ルーチン判断手段は、
    前記マトリクステーブルを参照し、現在のステートで受け付けられる前記イベントに対応して、スキップ時実行ルーチン特定フラグがONに設定されている処理ルーチンを検索し、その検索結果としての処理ルーチンの情報を実行ルーチンとして、前記処理ルーチン抽出手段に受け渡す
    ステートマシン。
  4. 請求項3に記載のステートマシンにおいて、
    さらに、イベント解析手段を具備し、
    前記イベント解析手段は、
    前記イベント解析手段に供給されるイベントを解析し、その解析結果を前記処理ルーチン抽出手段の出力し、
    前記処理ルーチン抽出手段は、前記前記イベント解析手段から供給される解析結果と、現在のステートに対応して、前記実行ルーチンを抽出する
    ステートマシン。
  5. 現在のステートと発生するイベントとに対応して実行される処理ルーチンの情報を保持するマトリクステーブルに基づいて動作するステートマシンの動作方法であって、
    (a)前記イベントに応答して前記マトリックステーブルを参照し、前記現在のステートと前記イベントとに基づいて、今回実行する処理ルーチンを実行ルーチンとして抽出するステップと、
    (b)前記実行ルーチンを実行するステップと、
    (c)前記実行ルーチンに基づいて次のステートを決定するステップと、
    (d)新たなイベントの待機動作であるイベント待機を停止するステップと、
    (e)前記新たなイベントの待機動作が停止しているときに、前記次のステートに対応するイベント待機動作をスキップして前記新たな処理ルーチンの抽出を要求するステップ
    を具備するステートマシンの動作方法。
  6. 請求項5に記載のステートマシンの動作方法において、
    前記(d)ステップは、
    前記実行ルーチンの抽出完了に応答して、イベント待機停止状態を示すイベント待機情報を生成するステップを含み、
    前記(e)ステップは、
    前記イベント待機情報に基づいて
    前記新たな処理ルーチンの抽出を要求するステップ
    を具備するステートマシンの動作方法。
  7. 請求項6に記載のステートマシンの動作方法において、
    さらに、
    (f)前記実行ルーチンを実行しているときに、前記実行ルーチンがイベント発生用のトリガを生成するかどうかを監視し、前記トリガが生成されていないときに前記イベント待機情報を、イベント待機開始を示す情報に更新するステップ
    を具備するステートマシンの動作方法。
  8. 請求項7に記載のステートマシンの動作方法において、
    前記マトリクステーブルは、複数のイベントを一時期に受けたときに、その処理ルーチンを実行するかをしめすスキップ時実行ルーチン特定フラグを含み、前記スキップ時実行ルーチン特定フラグは前記処理ルーチンに対応して前記マトリクステーブルに保持され、
    前記ステートマシンの動作方法は、さらに、
    (g)マトリクステーブルを参照し、現在のステートで受け付けられる前記イベントに対応して、スキップ時実行ルーチン特定フラグがONに設定されている処理ルーチンを検索し、その検索結果としての処理ルーチンの情報を実行ルーチンとして、前記処理ルーチン抽出手段に受け渡すステップ
    を具備するステートマシンの動作方法。
  9. 請求項8に記載のステートマシンの動作方法において、
    さらに、
    (h)供給されるイベントを解析し、その解析結果を出力し、前記解析結果と、現在のステートに対応して、前記実行ルーチンを抽出するステップ
    を具備するステートマシンの動作方法。
  10. 現在のステートと発生するイベントとに対応して実行される処理ルーチンの情報を保持するマトリクステーブルに基づいて動作するステートマシンを動作させるプログラムであって、
    (a)前記イベントに応答して前記マトリックステーブルを参照し、前記現在のステートと前記イベントとに基づいて、今回実行する処理ルーチンを実行ルーチンとして抽出するステップと、
    (b)前記実行ルーチンを実行するステップと、
    (c)前記実行ルーチンに基づいて次のステートを決定するステップと、
    (d)新たなイベントの待機動作であるイベント待機を停止するステップと、
    (e)前記新たなイベントの待機動作が停止しているときに、前記次のステートに対応するイベント待機動作をスキップして前記新たな処理ルーチンの抽出を要求するステップ
    を具備する方法をコンピュータにより実行可能なプログラム。
  11. 請求項10に記載のプログラムにおいて、
    前記(d)ステップは、
    前記実行ルーチンの抽出完了に応答して、イベント待機停止状態を示すイベント待機情報を生成するステップを含み、
    前記(e)ステップは、
    前記イベント待機情報に基づいて
    前記新たな処理ルーチンの抽出を要求するステップ
    を具備する方法をコンピュータにより実行可能なプログラム。
  12. 請求項11に記載のプログラムにおいて、
    さらに、
    (f)前記実行ルーチンを実行しているときに、前記実行ルーチンがイベント発生用のトリガを生成するかどうかを監視し、前記トリガが生成されていないときに前記イベント待機情報を、イベント待機開始を示す情報に更新するステップ
    を具備する方法をコンピュータにより実行可能なプログラム。
  13. 請求項12に記載のプログラムにおいて、
    前記マトリクステーブルは、複数のイベントを一時期に受けたときに、その処理ルーチンを実行するかをしめすスキップ時実行ルーチン特定フラグを含み、前記スキップ時実行ルーチン特定フラグは前記処理ルーチンに対応して前記マトリクステーブルに保持され、
    前記ステートマシンの動作方法は、さらに、
    (g)マトリクステーブルを参照し、現在のステートで受け付けられる前記イベントに対応して、スキップ時実行ルーチン特定フラグがONに設定されている処理ルーチンを検索し、その検索結果としての処理ルーチンの情報を実行ルーチンとして、前記処理ルーチン抽出手段に受け渡すステップ
    を具備する方法をコンピュータにより実行可能なプログラム。
  14. 請求項13に記載のプログラムにおいて、
    さらに、
    (h)供給されるイベントを解析し、その解析結果を出力し、前記解析結果と、現在のステートに対応して、前記実行ルーチンを抽出するステップ
    を具備する方法をコンピュータにより実行可能なプログラム。
JP2005162994A 2005-06-02 2005-06-02 ステートマシンおよびステートマシンの動作方法 Withdrawn JP2006338391A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005162994A JP2006338391A (ja) 2005-06-02 2005-06-02 ステートマシンおよびステートマシンの動作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005162994A JP2006338391A (ja) 2005-06-02 2005-06-02 ステートマシンおよびステートマシンの動作方法

Publications (1)

Publication Number Publication Date
JP2006338391A true JP2006338391A (ja) 2006-12-14

Family

ID=37558891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005162994A Withdrawn JP2006338391A (ja) 2005-06-02 2005-06-02 ステートマシンおよびステートマシンの動作方法

Country Status (1)

Country Link
JP (1) JP2006338391A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010023804A1 (ja) * 2008-08-25 2010-03-04 日本電気株式会社 データ処理装置、データ処理方法並びにデータ処理プログラムが格納された記録媒体
CN113986814A (zh) * 2021-10-15 2022-01-28 浙江大学 一种基于微处理器的状态机通用表示及执行方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010023804A1 (ja) * 2008-08-25 2010-03-04 日本電気株式会社 データ処理装置、データ処理方法並びにデータ処理プログラムが格納された記録媒体
CN113986814A (zh) * 2021-10-15 2022-01-28 浙江大学 一种基于微处理器的状态机通用表示及执行方法
CN113986814B (zh) * 2021-10-15 2023-12-01 浙江大学 一种基于微处理器的状态机通用表示及执行方法

Similar Documents

Publication Publication Date Title
WO2010001555A1 (ja) 実行順序決定装置、実行順序決定プログラム、実行順序決定回路及び情報処理装置
US20230126437A1 (en) Service processing method and apparatus, electronic device, and storage medium
CN111324540B (zh) 一种接口测试方法及装置
US20140136570A1 (en) Controller and program
CN113656304B (zh) 一种前端应用程序的测试方法、设备和存储介质
US20120110383A1 (en) Method and apparatus for off-line analyzing crashed programs
JP2006338391A (ja) ステートマシンおよびステートマシンの動作方法
CN112988503A (zh) 分析方法、分析装置、电子装置和存储介质
JP4940757B2 (ja) 移動無線通信端末及び異常発生時の情報収集方法とプログラム
KR20070058941A (ko) 디바이스 드라이버 테스트를 위한 테스트 케이스 자동 생성방법 및 장치
US7447874B1 (en) Method and system for designing a flexible hardware state machine
JP2006252284A (ja) 携帯可能電子装置およびicカード
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
JP4784355B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法、プログラミング支援プログラム、プログラマブルコントローラのデバッグ制御プログラム
JP2004185345A (ja) デバッグ方法およびシステム
JP4483543B2 (ja) バッチ処理検証装置、バッチ処理検証プログラム、及びバッチ処理検証方法
JP2009301195A (ja) 端末装置、及び検査方法
JP2009217720A (ja) プログラム生成装置およびプログラム生成方法
JP2006234533A (ja) 車両品質分析システム並びにプログラムファイルの管理方法およびそのプログラム
JP4527419B2 (ja) プログラムトレース方法およびトレース処理システム
JP2006048528A (ja) ウェブアプリケーションの画面遷移装置、およびウェブアプリケーションの画面遷移方法
JP5212864B2 (ja) デバッグ装置
Mussbacher et al. Feature interactions in aspect-oriented scenario models
KR101572262B1 (ko) 모바일 응용프로그램 모델의 동작방법 및 장치
JP2007094526A (ja) 集積回路の論理検証手法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080805