JP5621747B2 - マルチタスクシステム - Google Patents

マルチタスクシステム Download PDF

Info

Publication number
JP5621747B2
JP5621747B2 JP2011231678A JP2011231678A JP5621747B2 JP 5621747 B2 JP5621747 B2 JP 5621747B2 JP 2011231678 A JP2011231678 A JP 2011231678A JP 2011231678 A JP2011231678 A JP 2011231678A JP 5621747 B2 JP5621747 B2 JP 5621747B2
Authority
JP
Japan
Prior art keywords
polling
tasks
task
control unit
time
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.)
Expired - Fee Related
Application number
JP2011231678A
Other languages
English (en)
Other versions
JP2013089165A (ja
Inventor
啓史 山本
啓史 山本
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2011231678A priority Critical patent/JP5621747B2/ja
Publication of JP2013089165A publication Critical patent/JP2013089165A/ja
Application granted granted Critical
Publication of JP5621747B2 publication Critical patent/JP5621747B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Bus Control (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Description

本発明は、並行して動作する複数のタスクと、これらのタスクによって出力される処理要求を調停し、処理要求を許可したタスクに対して許可信号を出力する調停制御部とを備えるマルチタスクシステムに関する。
例えば、通信ネットワークに接続されているノードを構成するマイクロコンピュータが
マルチタスクで動作する場合、各タスクがポーリングを行うことで、通信バスを介して他のノードにある例えばメモリなどのリソースにアクセスし(すなわち、通信を行い)、必要なデータを取得するように構成されることがある。このようなマルチタスクシステムでは、各タスクのポーリング周期の設定によってはリソースにアクセスする処理期間が重なることがあり、その場合、処理を実行中のタスク以外は待機状態となるため、ポーリング周期内に必要なデータを取得できなくなるおそれがある。
例えば特許文献1には、ライト制御部100が、各PHYレイヤ機器を指定するためのPHYアドレスを順次出力すると共に、そのPHYアドレスポーリング周期とを組み合わせることでポーリングを効率的に行う技術が開示されている。
特開2004−56412号公報
しかしながら、特許文献1の技術は、ライト制御部100が介在することで、各タスクが予め定められたポーリング周期で繰り返し処理を実行するという単純な制御形態とは異なっており、より複雑な制御を前提としたものである。
本発明は上記事情に鑑みてなされたものであり、その目的は、複数のタスク間におけるポーリング処理の競合を、より簡単な構成で極力排除できるマルチタスクシステムを提供することにある。
請求項1記載のマルチタスクシステムによれば、調停制御部は、複数のタスクによって出力される処理要求を調停し、処理要求を許可したタスクに対して許可信号を出力する。そして、複数のタスクは、夫々に設定されているポーリング周期毎に処理要求を出力すると共に、それぞれのポーリング周期が基準周期の整数倍に設定されている。尚「整数倍」であるから「1」でも良く、各ポーリング周期が同じである場合も含む。また、それぞれが、調停制御部に対して処理要求を出力した時点から許可信号が与えられるまでの待機時間を計測する待機時間タイマを備えており、待機時間タイマにより待機時間が計測されると、次回に自身のポーリング周期を開始させるタイミングを前記待機時間の分だけ遅延させる。このように構成すれば、次回以降のポーリングにおいて各タスクによるリソースへのアクセスが競合することを回避できる。
請求項2記載のマルチタスクシステムによれば、請求項1と同様に調停制御部を備え、複数のタスクは、夫々に設定されているポーリング周期毎に処理要求を出力し、請求項1と同様の待機時間タイマを備える。また、複数のタスクは、自身以外のタスクの実行状態がモニタ可能であり、待機時間タイマにより待機時間が計測されている間に実行中である他のタスクのポーリング周期が自身のポーリング周期以下であれば、次回に自身のポーリング周期を開始させるタイミングを待機時間タイマにより計測された待機時間の分だけ遅延させる。したがって、複数のタスクのポーリング周期が請求項1のように互いに整数倍となる関係にない場合でも、次回以降のポーリングにおいて各タスクによるリソースへのアクセスが競合することを回避できる。
請求項3記載のマルチタスクシステムによれば、請求項1と同様に調停制御部を備え、複数のタスクは、夫々に設定されているポーリング周期毎に処理要求を出力し、請求項1と同様の待機時間タイマを備える。また、複数のタスクは、自身以外のタスクの実行状態がモニタ可能であり、処理要求を出力した時点で自身よりも長いポーリング周期が設定されている他のタスクが処理を実行中であれば、前記時点における前記他のタスクの実行経過時間を取得して、次回に自身のポーリング周期を開始させるタイミングを、前記実行経過時間の分だけ早める。したがって、複数のタスクのポーリング周期が請求項1のように互いに整数倍となる関係にない場合でも、次回以降のポーリングにおいて各タスクによるリソースへのアクセスが競合することを回避できる。
請求項4記載のマルチタスクシステムによれば、複数のタスクは、通信モジュールを備え、通信ネットワークに接続されている他の通信ノードと通信を行うマイクロコンピュータによって実行される。すなわち、通信ノードを構成するマイクロコンピュータ(マイコン)においては、マイコンのソフトウェアによる複数のタスクがそれぞれポーリングを行うことで、通信ネットワークに接続されている他の通信ノード上のリソースにアクセス(通信)して必要な情報を取得することが行われる。したがって、上記のようなマイコンに適用することで、複数のタスクによるアクセスの競合を回避して通信効率を向上させることができる。
請求項5記載のマルチタスクシステムによれば、調停制御部は、2つ以上のタスクが実行待機状態にあると、それらの内ポーリング周期が短いものを優先して次に許可信号を与える。これにより、次回以降のポーリングにおけるアクセスの競合を回避する確率を向上させることができる。
請求項6記載のマルチタスクシステムによれば、複数のタスクは、初期化処理において、自身のポーリング周期のN倍に相当する位相調整時間を経た後、リソースへのアクセスを開始する。これにより、それぞれのタスクが最初のポーリングによりアクセスを行うタイミングが異なるように調整されるので、アクセスの競合を回避することができる。
請求項7記載のマルチタスクシステムによれば、複数のタスクは、初期化処理における自身のポーリング周期を、それぞれ通常処理時よりも一律に短縮して位相調整時間を設定する。したがって、位相調整時間が徒に長引くことを防止して処理効率を向上させることができる。
請求項8記載のマルチタスクシステムによれば、複数のタスクは、ポーリング周期を管理するための周期タイマとポーリング周期の開始位相を制御するための開始位相調整レジスタとを備える。そして、開始位相調整レジスタに、調停制御部より許可信号が与えられるタイミングで周期タイマのタイマ値をロードし、ポーリング周期毎に開始位相調整レジスタをリセットするように構成する。このように構成すれば、周期タイマのタイマ値が開始位相調整レジスタにロードされた値に等しくなったタイミングで処理要求を出力することで、待機時間タイマと周期タイマとを共通に構成できる。
第1実施例であり、(a)は処理要求が競合した場合にポーリング周期の位相が調整される一例、(b)は従来例を示す図 ポーリングタスクブロック及び調停制御部による処理内容を示すフローチャート マイクロコンピュータの構成を示す機能ブロック図 ポーリングタスクブロック及び調停制御部を示す図 調停制御部の処理要求調停ロジックの一部を示す図 ポーリング周期を設定するタイマ部の構成を示す図 タイマ部の動作例を示すタイミングチャート 第2実施例を示す図1相当図 図2相当図 図6相当図 第3実施例を示す図5相当図 第4実施例であり、初期化処理において位相調整処理を示すフローチャート 同タイミングチャート 第5実施例を示す図12相当図 図13相当図
(第1実施例)
以下、本発明のマルチタスクシステムを、通信ネットワークに接続される通信ノードに搭載されるマイクロコンピュータに適用した場合の第1実施例について図1ないし図7を参照して説明する。図3は、マイクロコンピュータの構成を示す機能ブロック図である。マイクロコンピュータ1は、CPU(ホスト)2を備え、通信モジュール3を介して通信バス4(通信ネットワーク)に接続されている。CPU2と通信モジュール4との間には、ホストインターフェイス5,バッファアクセス制御部6,バイパスアクセス制御部7,書き込みバッファ8,読み出しバッファ9,アクセス順序制御部10等が配置されている。
CPU2は、通信モジュール3によりデータの送信を行う際には、バッファアクセス制御部6を介して書き込みバッファ8にアクセスし、送信データを書き込む。CPU2のバスサイズは例えば32ビットであり、動作クロック周波数は、例えば数10MHz〜100MHz程度である。したがって、CPU2〜書き込みバッファ8間のデータ転送速度は〜数Gbps程度となっている。バッファアクセス制御部6は、書き込みバッファ8に対して書き込みアドレスWrite Addrと、書き込みデータWrite Dataとを出力する。また、書き込みバッファ8の容量は、32ビットを1ワードとすると、例えば4〜8ワード程度となっている。そして、書き込みバッファ8は、CPU2によって全ての領域にデータが書き込まれた状態になると、信号Write Buffer Fullをアクティブにする。当該信号の状態は、CPU2及びアクセス順序制御部10によってモニタされる。
書き込みバッファ8は、CPU2側からの書き込みが終了すると、内蔵されている書き込み制御部8aが、アクセス順序制御部10に対して、通信モジュール3内の送信バッファを指定する書き込みアドレスWrite Buffer Addrと、書き込みデータWrite Buffer Dataとを出力する。アクセス順序制御部10は、書き込みバッファ8が出力したアドレス並びにデータを、アドレスReq Addrと、書き込みデータWrite Dataとして通信モジュール3に出力して転送する。通信モジュール3は、書き込みバッファ8より転送されたデータを、通信バス4に接続されている他の通信ノードである周辺回路12(A),周辺回路13(B)等に送信する。尚、送信先は、CPU2が出力するアドレスにより決定される。また、通信バス4上での伝送速度(チップ間通信速度)は、例えば〜数Mbps程度である。
読み出しバッファ9は、読み出し制御部11によって制御される。読み出し制御部11は、アクセス順序制御部10を介して通信モジュール3に周期的にアクセスし、通信バス4に接続されている他の通信ノードである周辺回路12(A),周辺回路13(B)等にデータ送信要求を行う。そして、通信モジュール3が周辺回路12(A),周辺回路13(B)等より受信したデータを、読み出しバッファ9に転送させる。CPU2は、バッファアクセス制御部6を介して読み出しバッファ9にアクセスすることで、通信モジュール3が受信したデータを読み出す。尚、周辺回路12,13については、マイクロコンピュータ1から見た場合の「周辺」であるから、これらがマイクロコンピュータ1と同様のマイクロコンピュータであっても良い。
読み出し制御部11は、コンフィギュレーションインターフェイス(I/F)14,タグメモリ15,ポーリングタスクブロック16,調停制御部17等で構成されている。コンフィギュレーションI/F14は、マイクロコンピュータ1に電源が投入された際に行われる初期設定時に、CPU2が読み出し制御部11に設定を行うためのインターフェイスである。CPU2は、コンフィギュレーションI/F14を介して、タグメモリ15並びにポーリングタスクブロック16に設定を行う。
読み出しバッファ9のデータ格納領域は、32バイト単位のブロック領域であるエントリが定義されており、タグメモリ15には、各エントリのベースアドレスを示すBuffer Addrがエントリの数だけ書き込まれる。尚、読み出しバッファ9の容量は、例えば1kバイト程度である。
ポーリングタスクブロック16は、それぞれ異なる周期でポーリングを行う複数のタスクが動作する機能部分である。ポーリングタスクブロック16には、読み出しバッファ9にデータを転送するポーリング周期のデータが設定され、その周期データは、同ブロック16内のタイマにロードされる。ポーリングタスクブロック16からは、各タスクのポーリング周期毎に調停制御部17に対して処理要求が出力され、調停制御部17は、それらの処理要求を調停して、アクセスを許可するタスクに処理開始(許可信号)を出力する。処理開始が与えられたタスクは、調停制御部17を介してアクセス順序制御部10に読み出しアドレスRead Buffer Addrを出力する。この読み出しアドレスRead Buffer Addrは、データの読み出し先を指定するアドレスであり(通信先を指定する通信要求)、予め通信バス4を介してデータを取得する対象が設定されている。
アクセス順序制御部10は、調停制御部17を介して出力されたアドレスを、アドレスReq Addrとして通信モジュール3に出力して転送する。すると、通信モジュール3は、与えられたアドレスに応じて通信バス4に接続されている周辺回路12(A),周辺回路13(B)等の何れかのノードにデータ送信要求を行い、その要求に応じて返信された受信データをRead Dataとしてアクセス順序制御部10に上げる。すると、アクセス順序制御部10は、上記受信データをRead Buffer Dataとして読み出しバッファ9に出力し、転送する。尚、この転送の際に、調停制御部17は、受信データRead Buffer Dataの4バイト毎の書き込み先アドレスを読み出しバッファ9に出力し、また、ポーリングタスクブロック16には、処理完了を出力する。
CPU2が読み出しバッファ9に書き込まれたデータを読み出す際には、バッファアクセス制御部6を介して、読み出しアドレスRead Addrをタグメモリ15及び読み出しバッファ9のデータ出力側にあるマルチプレクサ19に与える。タグメモリ15には、読み出しアドレスRead AddrのLSB側より第9ビット以上が与えられ、タグメモリ15は、そのアドレスに応じたベースアドレスを読み出しバッファ9に出力する。すると、読み出しバッファ9は、ベースアドレスに対応する32バイトのデータをマルチプレクサ19に出力する。マルチプレクサ19には、読み出しアドレスRead Addrの第8〜第6ビットが与えられており、マルチプレクサ19は、その3ビットのアドレスに応じて、入力側に与えられている32バイトのデータから4バイトを選択し、読み出しデータRead Dataとしてバッファアクセス制御部6に出力する。
また、CPU2は、上述したアクセス経路とは別に、バイパスアクセス制御部7及びアクセス順序制御部10を介して、通信モジュール3に直接アクセスする(バイパス経路)ことも可能となっている。この場合、CPU2は、送信データを直接通信モジュール3に書き込み、また、受信データを通信モジュール3から直接読み出す。バイパスアクセス制御部7は、アクセス順序制御部10に対してアドレスBypass Request Addressと、書き込みデータBypass Write Dataを出力する。また、データを読み出す際には、アクセス順序制御部10よりデータBypass Read Dataを取得する。
ホストインターフェイス5は、CPU2が出力するアドレスが、書き込みバッファ8又は読み出しバッファ9へのアクセスを示すか、通信モジュール3への直接アクセス(バイパスアクセス)を示すかに応じて、バッファアクセス制御部6,バイパスアクセス制御部7の何れか一方にアクセス経路を切り替える。
以上の構成において、CPU2は、書き込みバッファ8並びに読み出しバッファ9に対しては、高速にアクセスしてデータの読み書きを行うことができる。そして、書き込みバッファ8に書き込まれたデータの送信,通信バス3上での通信は、CPU2が介在することなくハードウェアによって実行される。また、読み出しバッファ9に対するデータの格納も、読み出し制御部11が通信バス3上での通信を行うことで実行される。
CPU2が読み出しバッファ9を介して読み出すデータは、ポーリング周期の1周期前のデータである可能性がある。また、CPU2が書き込みバッファ8を介して送信しようとするデータは、当該バッファ8を経由する分だけ遅れを生じる。したがって、CPU2は、制御プログラムの処理に同期して特定のデータの値を取得する必要がある場合,若しくは送信する必要がある場合には、バイパスアクセス制御部7を介すことで、書き込みバッファ8並びに読み出しバッファ9をバイパスして通信モジュール3に直接アクセスする。これにより、通信データの送受信をダイレクトに行うことも可能となっている。
尚、CPU2によって実行される制御プログラムが記憶されているメモリや、制御プログラムの実行中にワークエリア等として使用するメモリは、図示はしないがCPUバス20に直接接続されている。
図4は、ポーリングタスクブロック16及び調停制御部17を示している。ポーリングタスクブロック16は、複数のポーリングタスク21(1),21(2),…より構成されており、各ポーリングタスク21は、タイマ部22及び要求発生部23を備えている。タイマ部22には、各ポーリングタスク21のポーリング周期が設定されると共に、ポーリング周期の開始位相(開始タイミング)を調整する機能部を有している。要求発生部23は、タイマ部22によりポーリング周期毎にスタート信号が与えられると、設定されているアクセスアドレス(図示せず)と共に処理要求を調停制御部17に出力する。
前記アクセスアドレスは、例えば複数のアドレスがリスト形式で設定されており、ポーリング周期毎に異なるアドレスが循環的に出力される(勿論、毎回同じアドレスでも良い)。また、前記アクセスアドレスは、調停制御部17より処理開始が与えられると、調停制御部17に内蔵されているマルチプレクサ24を介して上述したRead Buffer Addrとして出力される。また、本実施例では、各ポーリングタスク21のポーリング周期は、互いに整数倍となる関係に設定されるものとする。尚、整数倍であるから同じ周期に設定される場合も含む。
図5は、調停制御部17が、各ポーリングタスク21が出力する処理要求を調停するロジックについて図示の都合上一部のみ示している。調停制御部17は、複数のANDゲート25(a,b,…e,…)と、複数のRSフリップフロップ26(a,b,c,…)と、ORゲート27とで構成されている。ポーリングタスク21(1)が出力する処理要求Task1 Requestは、ANDゲート25aの正論理入力端子,ANDゲート25d,25e,…の負論理入力端子に与えられている。また、ポーリングタスク21(2)が出力する処理要求Task2 Requestは、ANDゲート25dの正論理入力端子,ANDゲート25e,…の負論理入力端子に与えられている。また、ポーリングタスク21(3)が出力する処理要求Task3 Requestは、ANDゲート25eの正論理入力端子と、図示しないANDゲートの負論理入力端子に与えられている。
ANDゲート25a,25b,25cの出力端子は、RSフリップフロップ26a,26b,26cのセット端子Sに接続されており、RSフリップフロップ26のリセット端子Rには、調停制御部17からの処理完了信号Request Completedが与えられている。尚、上記の処理完了信号は、各タスクに対する処理完了信号を対応するRSフリップフロップ26に個別に与えても良いし、それらのOR信号を共通に与えても良い。RSフリップフロップ26a,26b,26cの出力端子Qは、ポーリングタスク21(1),21(2),21(3)に対する処理開始信号Task1,2,3 Grantedとなり、また、これらはORゲート27の各入力端子に与えられている。ORゲート27の出力信号は、ANDゲート25a,25b,25cの負論理入力端子に与えられている。
調停制御部17のロジックが以上のように構成されることで、各タスクの処理要求は、ポーリングタスク21(1)側の優先順位が高く、ポーリングタスク21(3)側の優先順位が低くなるように設定されている。
図6は、ポーリング周期を設定するタイマ部22の構成を示す。タイマ部22は、ポーリング周期タイマ(ダウンカウンタ,待機時間タイマ)28と、開始位相調整レジスタ29と、比較器30とで構成されている。ポーリング周期タイマ28には、初期処理において図示しないレジスタに設定されるポーリング周期時間のデータがタイマ値としてロードされ、ポーリング周期タイマ28には、ロードされたデータをダウンカウントする。そのカウント値は、開始位相調整レジスタ29及び比較器30に入力される。
開始位相調整レジスタ29には、調停制御部17より出力される処理開始信号がイネーブル信号として与えられており、当該イネーブル信号がアクティブとなるタイミングでポーリング周期タイマ28のカウント値がセットされる。開始位相調整レジスタ29に格納されるデータは処理開始時間となり、比較器30に入力される。比較器30は、ポーリング周期タイマ28のカウント値と開始位相調整レジスタ29に格納されている処理開始時間データとが一致すると、処理要求Task Requestを調停制御部17に出力する。
尚、以上の図3ないし図6では、ポーリングタスクブロック16や調停制御部17のロジックを専らハードウェア的なイメージで示したが、これらは必ずしもハードウェアにより構成されるとは限らず、CPU2によって実行されるソフトウェアで実現される機能であっても良い。また、一部の機能をハードウェアで実現しても良い。
次に、本実施例の作用について図1及び図2,図7を参照して説明する。図2は、ポーリングタスクブロック16及び調停制御部17による処理の内容を示すフローチャートである。先ず「初期化」として、ポーリング周期タイマ28及び開始位相調整レジスタ29に、各ポーリングタスク21のポーリング周期データをセットする(S1)。尚、開始位相調整レジスタ29に対しては、例えばCPU2が所定のI/Oアドレスにより書き込みを行うことでイネーブル信号がアクティブとなるようにロジックを構成しておく。
そして、比較器30において、ポーリング周期タイマ28のカウント値と開始位相調整レジスタ29の処理開始時間データとが一致すると(S2:YES)、タイマ部22より処理要求が出力される。ここで、調停制御部17において他のポーリングタスク21との競合が発生していなければ(S3:NO)、調停制御部17は処理要求を発生させたポーリングタスク21に処理開始信号を出力する(S4)。この時、開始位相調整レジスタ29には処理開始時間データがセットされるが、当該データは、競合が発生していない状態ではS1と同様にポーリング周期データに等しくなる。
一方、ステップS3において他のポーリングタスク21との競合が発生すると(YES)、競合が解消されるまで待機状態となり(S5)、競合が解消された時点で調停制御部17が処理開始信号を出力する(S6)。この時、ポーリング周期タイマ28のカウント値は、S5において待機していた時間分だけ経過している。したがって、開始位相調整レジスタ29には、上記の待機時間に相当するデータがセットされる。
図7は、タイマ部22の動作例を示すタイミングチャートであり、ケース(1)では、何れかのポーリングタスク21が処理要求を発生させた段階で競合が発生し、所定の待機時間が経過してから調停制御部17が処理開始信号を出力させている。この時、開始位相調整レジスタ29には上記待機時間に相当するデータがセットされる。したがって、次のケース(2)では、ポーリング周期タイマ28のカウント値が最大値(ポーリング周期データ)となっても処理要求が発生せず、その時点から上記待機時間が経過した時点で比較器30より処理要求が出力される。
すると、ポーリング周期タイマ28及び開始位相調整レジスタ29がリセットされるので、開始位相調整レジスタ29には再びポーリング周期データがセットされる。尚、開始位相調整レジスタ29について、処理要求によりリセットされるタイミングと、処理開始でデータがセットされるタイミングとが問題となるのであれば、後者のタイミングを若干遅延させれば良い。そして、次のケース(3)において競合が発生しなければ、処理要求が発生すると直ちに処理開始信号が出力される。
図1(a)は、2つのポーリングタスク21間で処理要求が競合した場合に、ポーリング周期の位相が図2又は図7に示すように調整される一例を示す。ここで、2つのタスクA,Bは、それぞれのポーリング周期Ta,Tbが等しく設定されており(互いに1倍の関係)、何れも周期の冒頭から処理を開始するものとする。図1(b)は従来例を示すが、2つのタスクA,Bはポーリング周期毎にそれぞれの処理要求が競合することになり、タスクA側が優先されると、タスクBの処理が開始されるタイミングは毎回遅延することになる。
一方、図1(a)に示す本実施例の場合、最初に競合が発生した期間においてタスクBの処理開始が待機された時間Tdbが計測されると、次回のタスクBのポーリング周期は待機時間Tdbだけ遅延させたタイミング(位相)で開始されることになる。これにより、以降のタスクBのポーリング周期はタスクA側の処理期間が終了した時点で開始されるので、競合の発生が回避される。
以上のように本実施例によれば、調停制御部17は、複数のポーリングタスク21によって出力される処理要求を調停し、処理要求を許可したポーリングタスク21に対して処理開始;許可信号を出力する。そして、複数のポーリングタスク21は、夫々に設定されているポーリング周期毎に処理要求を出力すると共に、それぞれのポーリング周期が基準周期の整数倍に設定され、それぞれが、調停制御部17に対して処理要求を出力した時点から許可信号が与えられるまでの待機時間を計測し、次回に自身のポーリング周期を開始させるタイミングを前記待機時間の分だけ遅延させるようにした。したがって、次回以降のポーリングにおいて各タスク21によるリソースへのアクセスが競合することを回避できる。
また、複数のポーリングタスク21は、通信モジュール3を備え、通信ネットワークに接続されている他の通信ノード12,13等と通信を行うマイクロコンピュータ1によって実行される。すなわち、上記のようなマイクロコンピュータ1にマルチタスクシステムを適用することで、複数のポーリングタスク21によるアクセスの競合を回避して通信効率を向上させることができる。
更に、複数のポーリングタスク21は、ポーリング周期を管理するための周期タイマ28とポーリング周期の開始位相を制御するための開始位相調整レジスタ29とを備え、開始位相調整レジスタ29に、調停制御部17より許可信号が与えられるタイミングで周期タイマ28のタイマ値をロードし、ポーリング周期毎に開始位相調整レジスタ29をリセットするように構成した。このように構成すれば、周期タイマ28のタイマ値が開始位相調整レジスタにロードされた値に等しくなったタイミングで処理要求を出力することで、待機時間タイマとしての機能を周期タイマ28に持たせて両者を共通化できる。
(第2実施例)
図8ないし図10は第2実施例であり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。尚、第2実施例では、第1実施例とは異なり、各タスク21のポーリング周期が互いに整数倍になっているという条件はないものとする。図8,図9,図10はそれぞれ図1,図2,図6相当図であり、図9ではステップS7〜S10が追加されており、ステップS3において「YES」と判断するとステップS7に移行する。ステップS7では、現在処理要求を発生させているタスク21(図8(a)のタスクB)のポーリング周期(Tb)が、競合を生じている、すなわち処理を実行中であるタスク(A)のポーリング周期(Ta)よりも長いか否かを判断する。
ここでの判断は、図4に示すポーリングタスクブロック16において、各タスク21は、自身以外のタスク21の各種設定情報を相互に参照可能となっており、他のタスク21のポーリング周期が把握できることを前提として行う。
ステップS7において、図8(a)に対応させると、Tb≦Taであれば(NO)第1実施例と同様にステップS5,S6を実行する。一方、Tb>Taであれば(YES)、やはり競合状態が解消されるまで待機し(S8)、その間の競合タスクAによる処理経過時間;図8(a)に示す時間Tdaを取得し、その経過時間Tdbを開始位相調整レジスタ29にセットする(S9)。
図10において、ポーリング周期タイマ28と開始位相調整レジスタ29との間にはマルチプレクサ31が挿入されており、開始位相調整レジスタ29には、ポーリング周期タイマ28のタイマ値と、競合タスク経過時間との何れか一方が選択されてセットされる。マルチプレクサ31の選択制御はステップS7の判断結果に基づく。すなわち、マルチプレクサ31は、S7:YES(1)の場合は競合タスク経過時間側を選択し、S7:NO(0)の場合はポーリング周期タイマ28側を選択する。
競合タスク経過時間の計測は、図8(a)では、タスクAのポーリング周期の開始位相と、タスクBのポーリング周期の開始位相との差Tdaである。したがって、タスクBは、タスクAが処理要求を出力した時点から自身が処理要求を出力するまでの時間Tdaを、別途待機時間タイマを用意して計測すれば良い。
そして、タスクBに処理開始信号が与えられると、開始位相調整レジスタ29に競合タスク経過時間Tdaがセットされるので、タスクBの次回のポーリング周期の開始位相は、時間Tdaだけ早まるように位相が進む。また、上記開始位相で開始位相調整レジスタ29はリセットされると共にポーリング周期Tbが再びセットされるので、以降はタスクA,B間のポーリング周期の開始位相の関係が維持される。
図8(b)は、従来技術では(a)と同様のケースでどのような処理パターンになるかを示している。最初はタスクA側の処理が先に実行され、タスクB側の処理が遅延されるが、途中で両者の関係が逆転し、タスクB側の処理が先に実行されてタスクA側の処理が遅延されるように変化する。このような処理パターンでは、タスクA,Bそれぞれの処理の等時性が全く保証されないことが明らかである。
以上のように第2実施例によれば、各タスクは、自身以外のタスクの実行状態を互いにモニタ可能として、待機時間タイマにより待機時間が計測されている間に実行中である他のタスクのポーリング周期が自身のポーリング周期以下であれば、次回に自身のポーリング周期を開始させるタイミングを待機時間タイマにより計測された待機時間の分だけ遅延させる。また、自身が処理要求を出力した時点で自身よりも長いポーリング周期が設定されている他のタスクが処理を実行中であれば、前記時点における前記他のタスクの実行経過時間を取得して、次回に自身の開始させるタイミングを、前記実行経過時間の分だけ早めるようにした。したがって、複数のタスクのポーリング周期が第1実施例のように互いに整数倍となる関係にない場合でも、次回以降のポーリングにおいて各タスクによるリソースへのアクセスが競合することを回避できる。
(第3実施例)
図11は第3実施例であり、第1実施例と異なる部分について説明する。図11は、調停制御部32における調停制御ロジックを示しており、ANDゲート25d,25eに替えて優先ロジック部(Minimum)33が配置されている。優先ロジック部33には、各ポーリングタスク21(1,2,3,…)が発生させる処理要求;Task(1,2,3,…) Requestが入力されていると共に、各ポーリングタスク21(1,2,3,…)のポーリング周期データ;Task(1,2,3,…)Cycleが入力されている。
そして、優先ロジック部33は、複数のポーリングタスク21の処理要求が競合した場合に、それらの内ポーリング周期がより短いものを優先して、イネーブル信号EN1,EN2,EN3,…をRSフリップフロップ26a,26b,26c,…に出力する。これにより、次回以降のポーリングにおけるアクセスの競合を回避する確率を向上させることができる。
(第4実施例)
図12及び図13は第4実施例である。第4実施例では、各タスクが初期化処理において位相調整処理行う。図12に示すように、何れのタスクも初期化処理においてN周期分のポーリング処理を実行する。図13は対応するタイミングチャートを示すが、初期化フェーズにおいて、第1実施例における図1と同様の処理が実行されることになる。この、初期化フェーズでは、実際にリソースにアクセスしてデータを取得しても良いし、位相調整のみを目的として上記アクセスを実行せずとも良い(若しくは、この期間に取得したデータを無視しても良い)。
以上のように第4実施例によれば、複数のタスクは、初期化フェーズにおいて、自身のポーリング周期のN倍に相当する位相調整時間を経た後、通常動作フェーズに移行して実際にリソースへのアクセスを開始する。これにより、それぞれのタスクが最初のポーリングによりアクセスを行うタイミングが異なるように調整されるので、アクセスの競合を回避することができる。
(第5実施例)
図14及び図15は第5実施例であり、第4実施例と異なる部分について説明する。第4実施例では、第3実施例と同様に各タスクが初期化フェーズにおいて位相調整処理を行うが、図14に示すように、ステップS11及びS12で位相調整処理を行う前にそれぞれのポーリング周期を1/M倍に設定する(S10)。そして、ステップS12の実行を終了すると(YES)、それぞれのポーリング周期を通常の値に戻し(S13)、初期化を完了する。図14は、M=2の場合の図13相当図である。このように処理することで、初期化フェーズにおいて位相調整処理に要する時間が、第4実施例の1/2に短縮される。
以上のように第5実施例によれば、複数のタスクは、初期化フェーズにおける自身のポーリング周期を、それぞれ通常処理時よりも一律に短縮して位相調整時間を設定する。したがって、位相調整時間が徒に長引くことを防止して処理効率を向上させることができる。
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
読み出しバッファ9に対するデータ転送中に発生した書き込みバッファ8への書き込みや、バイパス経路へのアクセスを優先して実行する処理については、必要に応じて行えば良い。
ホストは、CPU2やDMAコントローラ62に限らず、例えばDSP等であっても良い。
データバスサイズや記憶容量,データ転送速度等については、個別の設計に応じて適宜変更すれば良い。
ポーリング周期タイマを、アップカウンタで構成しても良い。
また、ポーリング周期タイマと待機時間タイマとを個別に構成しても良い。
通信ノードに搭載されるマイクロコンピュータに限ることなく、マルチタスクで動作するものであれば適用が可能である。
図面中、1はマイクロコンピュータ(通信ノード)、2はCPU(ホスト)、3は通信モジュール、4は通信バス(通信ネットワーク)、12,13は周辺回路(通信ノード)、16はポーリングタスクブロック、17は調停制御部、21はポーリングタスク、28はポーリング周期タイマ(待機時間タイマ)、29は開始位相調整レジスタ、32は調停制御部を示す。

Claims (8)

  1. 並行して動作する複数のタスクと、これらのタスクによって出力される処理要求を調停し、処理要求を許可したタスクに対して許可信号を出力する調停制御部とを備え、前記許可信号が与えられたタスクがリソースにアクセスを行うマルチタスクシステムにおいて、
    前記複数のタスクは、夫々に設定されているポーリング周期毎に処理要求を出力すると共に、それぞれのポーリング周期が基準周期の整数倍に設定されており、
    前記調停制御部に対して処理要求を出力した時点から、前記許可信号が与えられるまでの待機時間を計測する待機時間タイマを備え、
    前記待機時間タイマにより前記待機時間が計測されると、次回に自身のポーリング周期を開始させるタイミングを、前記待機時間の分だけ遅延させることを特徴とするマルチタスクシステム。
  2. 並行して動作する複数のタスクと、これらのタスクによって出力される処理要求を調停し、処理要求を許可したタスクに対して許可信号を出力する調停制御部とを備え、前記許可信号が与えられたタスクがリソースにアクセスを行うマルチタスクシステムにおいて、
    前記複数のタスクは、夫々に設定されているポーリング周期毎に処理要求を出力し、
    前記調停制御部に対して処理要求を出力した時点から、前記許可信号が与えられるまでの待機時間を計測する待機時間タイマを備え、
    自身以外のタスクの実行状態がモニタ可能であり、
    前記待機時間タイマにより前記待機時間が計測されている間に実行中である他のタスクのポーリング周期が、自身のポーリング周期以下であれば、次回に自身のポーリング周期を開始させるタイミングを、前記待機時間タイマにより計測された待機時間の分だけ遅延させることを特徴とするマルチタスクシステム。
  3. 並行して動作する複数のタスクと、これらのタスクによって出力される処理要求を調停し、処理要求を許可したタスクに対して許可信号を出力する調停制御部とを備え、前記許可信号が与えられたタスクがリソースにアクセスを行うマルチタスクシステムにおいて、
    前記複数のタスクは、夫々に設定されているポーリング周期毎に処理要求を出力し、
    自身以外のタスクの実行状態がモニタ可能であり、
    前記処理要求を出力した時点で、自身よりも長いポーリング周期が設定されている他のタスクが処理を実行中であれば、前記時点における前記他のタスクの実行経過時間を取得して、次回に自身の開始させるタイミングを、前記実行経過時間の分だけ早めることを特徴とするマルチタスクシステム。
  4. 前記複数のタスクは、通信モジュールを備え、通信ネットワークに接続されている他の通信ノードと通信を行うマイクロコンピュータによって実行されることを特徴とする請求項1ないし3の何れかにマルチタスクシステム。
  5. 前記調停制御部は、2つ以上のタスクが実行待機状態にあると、それらの内ポーリング周期が短いものを優先して、次に前記許可信号を与えることを特徴とする請求項1ないし4の何れかに記載のマルチタスクシステム。
  6. 前記複数のタスクは、初期化処理において、自身のポーリング周期のN(Nは自然数)倍に相当する位相調整時間を経た後、前記リソースへのアクセスを開始することを特徴とする請求項1ないし5の何れかに記載のマルチタスクシステム。
  7. 前記複数のタスクは、初期化処理における自身のポーリング周期を、それぞれ通常処理時よりも一律に短縮して前記位相調整時間を設定することを特徴とする請求項6記載のマルチタスクシステム。
  8. 前記複数のタスクは、前記ポーリング周期を管理するための周期タイマと、前記ポーリング周期の開始位相を制御するための開始位相調整レジスタとを備え、
    前記開始位相調整レジスタに、前記許可信号が与えられるタイミングで前記周期タイマのタイマ値をロードし、
    前記ポーリング周期毎に、前記開始位相調整レジスタをリセットするように構成したことを特徴とする請求項1又は2記載のマルチタスクシステム。
JP2011231678A 2011-10-21 2011-10-21 マルチタスクシステム Expired - Fee Related JP5621747B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011231678A JP5621747B2 (ja) 2011-10-21 2011-10-21 マルチタスクシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011231678A JP5621747B2 (ja) 2011-10-21 2011-10-21 マルチタスクシステム

Publications (2)

Publication Number Publication Date
JP2013089165A JP2013089165A (ja) 2013-05-13
JP5621747B2 true JP5621747B2 (ja) 2014-11-12

Family

ID=48532980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011231678A Expired - Fee Related JP5621747B2 (ja) 2011-10-21 2011-10-21 マルチタスクシステム

Country Status (1)

Country Link
JP (1) JP5621747B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1084365A (ja) * 1996-09-09 1998-03-31 Toshiba Corp データ伝送方法及び装置
JP2001256064A (ja) * 2000-03-10 2001-09-21 Mitsubishi Electric Corp 複数周期実行タスクの最適化スケジューリング方式

Also Published As

Publication number Publication date
JP2013089165A (ja) 2013-05-13

Similar Documents

Publication Publication Date Title
JP4737438B2 (ja) 複数の処理ユニットでリソースを共有する情報処理装置
AU2010319715B2 (en) Command queue for peripheral component
US20160191420A1 (en) Mitigating traffic steering inefficiencies in distributed uncore fabric
US7467245B2 (en) PCI arbiter
US9798686B2 (en) Slave side bus arbitration
JP5102789B2 (ja) 半導体装置及びデータプロセッサ
JP2012064021A (ja) 通信システム、マスター装置、及びスレーブ装置、並びに通信方法
WO2005119465A1 (en) Data processing unit and bus arbitration unit
JP2013097659A (ja) 半導体データ処理装置、タイムトリガ通信システム及び通信システム
US9971711B2 (en) Tightly-coupled distributed uncore coherent fabric
JP4198376B2 (ja) バスシステム及びバスシステムを含む情報処理システム
US20070156937A1 (en) Data transfer in multiprocessor system
US9015272B2 (en) Microcomputer
JP2004318340A (ja) データ転送制御装置
JP4902640B2 (ja) 集積回路、及び集積回路システム
JP5621747B2 (ja) マルチタスクシステム
TWI312113B (en) Systems and methods capable of controlling multiple data access
JP2005165508A (ja) ダイレクトメモリアクセスコントローラ
JP7226084B2 (ja) 情報処理装置
CN115017093B (zh) 一种片上外部总线通信的方法以及装置
JP4898527B2 (ja) リソース使用管理装置、リソース使用管理システム及びリソース使用管理装置の制御方法
JP2004227484A (ja) 情報処理装置およびメモリアクセス調停方法
JP2012150656A (ja) 半導体装置
JP2000250852A (ja) バス調停装置、バスシステムおよびバス調停方法
JP2004213142A (ja) 半導体集積回路装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140624

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140826

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140908

R151 Written notification of patent or utility model registration

Ref document number: 5621747

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees