JP5653431B2 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP5653431B2
JP5653431B2 JP2012522419A JP2012522419A JP5653431B2 JP 5653431 B2 JP5653431 B2 JP 5653431B2 JP 2012522419 A JP2012522419 A JP 2012522419A JP 2012522419 A JP2012522419 A JP 2012522419A JP 5653431 B2 JP5653431 B2 JP 5653431B2
Authority
JP
Japan
Prior art keywords
task
processor
unit
tasks
execution order
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.)
Active
Application number
JP2012522419A
Other languages
English (en)
Other versions
JPWO2012001835A1 (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.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
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 Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2012522419A priority Critical patent/JP5653431B2/ja
Publication of JPWO2012001835A1 publication Critical patent/JPWO2012001835A1/ja
Application granted granted Critical
Publication of JP5653431B2 publication Critical patent/JP5653431B2/ja
Active 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Description

マルチプロセッサシステムに関し、特に、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムに関する。
従来、複数のタスクの実行を、事前に定められた制限時間内に完了させられるよう、タスクのスケジューリングを行うための技術が知られてきた。
例えば、特許文献1では、プロセッサによるタスクの実行が、過去所定の制限時間を超えた(デッドラインミス)回数をタスク毎に記憶しておき、その回数が多いタスクほど、スケジューリング時に実行順序を繰り上げる処理を行うことで、デッドラインミスの回数を減らすことが試みられている。
特開2002−73354号公報
しかしながら、従来技術では、プロセッサが複数協調して動作するマルチプロセッサシステムにおいて、複数のプロセッサ間で共有資源に対するアクセスが競合することにより生ずるタスクの破綻には対応できず、その結果リアルタイムシステムの性能保証ができないという課題を有していた。
図20は、マルチプロセッサシステムにおいて、複数プロセッサによる共有資源(例えば共有メモリなど)へのアクセス競合が要因となるタスク処理の破綻の一例を時間軸上で表した図である。
図20に示されるように、プロセッサの各々で実行されるタスク処理(図20ではプロセッサ0のタスク処理320及びプロセッサ1のタスク処理330と記載)の途中で共有資源へのアクセスが同時に発生するアクセス競合が起こった結果、事前に見積もられた時間内でタスクが完了せず、処理の破綻に陥る。
より詳細には、プロセッサ1で実行中のタスクA331とプロセッサ0上で実行中のタスクC321との間にバスアクセスの競合が生じている。
その結果、プロセッサ1はタスクA331の実行を、タスクC321のバスアクセスが終了するまで待たねばならず、その待ち時間の影響でプロセッサ1はタスクA331の実行に当初の見積もりより多くの時間を消費する。
その結果、プロセッサ1が次のタスクコンテキストの切替までに完了させることが期待されているタスクB332の処理が、タスク周期222以内に完了せず、タスクB332の実行が破綻している。
また、図21は、マルチプロセッサシステムにおいて、複数プロセッサのアクセス競合により生じるタスク処理の遅延の一例を示す図である。
図21に示すように、タスクA1及びタスクB1が頻繁に共有資源(図21では、共有メモリ102)への書き込み処理を行う場合には、タスク間で競合が頻発し、その結果タスクA1及びタスクB1の処理時間が延び、プロセッサ0及びプロセッサ1によるタスクの処理効率が低下することになる。
すなわち、事前に机上で見積もられた理想的なタスク処理時間に対して、マルチプロセッサシステムにおける共有メモリ等の共有資源へのアクセス競合は従来技術では想定外であり、その影響によりリアルタイム処理を必要とされる場合の性能保証が困難になるという課題を有していた。
本発明は上記従来の課題を解決するものであり、特に、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムにおいて、タスク周期内で完了するようにスケジューリングされた複数のタスクの実行がアクセス競合によりタスク周期内で完了できなくなるスケジューリングを事前に検出し、タスク処理の破綻を回避することで、リアルタイム処理の性能保証が容易なマルチプロセッサシステムの提供を目的とする。
上記目的を達成するために、本発明のある局面に係るマルチプロセッサシステムは、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムであって、前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の1周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各タスクを実行するプロセッサとを決定するタスクスケジューラを備え、前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも1つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更する。
本構成によると、スケジューラ管理装置からの指示により、複数のプロセッサの各々が実行するタスクの実行順序が入れ替えられる。その結果、同一の共有リソースへ書き込み等のアクセスをするタスクの実行時間に差が生じ、アクセス競合及びタスク処理の破綻が回避できる。
より好ましくは、前記スケジューラ管理装置は、さらに、タスク比較部と、破綻パターン記憶部とを備えており、前記破綻パターン記憶部は、前記タスクセットの繰り返し実行の1回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因して前記タスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む情報を破綻パターンとして少なくとも1以上記憶し、前記複数のタスクスケジューラのうちの第1のタスクスケジューラは、前記タスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも1つに前記周期スケジューリング情報に含まれるタスク実行順序の変更を指示する。
この構成によると、スケジューラ管理装置は破綻パターン記憶部にタスク処理が破綻するタスクの実行順序である破綻パターンを記憶している。よって、スケジューラが決定したタスクの実行順序と、破綻パターンをタスク情報分析部が比較することにより、スケジューラ管理装置はタスクの実行前に破綻するスケジューリングを検出できる。さらに、破綻する場合にはタスクの実行順序を入れ替えることによる再スケジューリングをスケジューラ管理装置はスケジューラに指示できる。その結果、タスク処理の破綻を事前に回避できる。
具体的には、前記スケジューラ管理装置は、前記タスク周期内に前記タスクセットの繰り返し実行の1回分の処理であるタスクセット処理が完了したか否かを判定し、前記指示部は、前記タスク周期内に前記タスクセット処理が完了していないと判定された場合に、前記タスク実行順序の変更を指示する。
より具体的には、前記スケジューラ管理装置は、さらに、タスク周期カウンタと、完了タスク記憶部と、破綻判定部とを備えており、前記複数のプロセッサの各々は、前記繰り返し実行の1回分の処理であるタスクセット処理が完了したタスクのタスク識別情報を前記スケジューラ管理装置へ通知し、前記完了タスク記憶部は、通知された前記タスクセット処理が完了したタスクのタスク識別情報を記憶し、前記タスク周期カウンタは、前記複数のプロセッサにより前記タスクセットの実行を開始してからのサイクル数をカウントし、前記破綻判定部は、前記タスクセットに含まれているタスクのうち、前記サイクル数が前記タスク周期を超えた時点で前記完了タスク記憶部に記憶されていないタスクである破綻タスクがあるか否かを判定し、判定の結果、前記破綻タスクが1以上あった場合には、前記指示部は前記複数のタスクスケジューラのうち少なくとも1つに前記タスク実行順序の変更を指示する。
さらには、前記スケジューラ管理装置は、さらに、破綻パターン記憶部とタスク比較部とを備えており、実行されたタスクセットに破綻タスクが含まれると前記破綻判定部によって判定された場合に、前記スケジューラ管理装置は、当該タスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む情報を破綻パターンとして前記破綻パターン記憶部に記憶させ、前記複数のタスクスケジューラのうちの第1のタスクスケジューラは、これから実行されるタスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも1つに前記周期スケジューリング情報に含まれる前記タスク実行順序の変更を指示する。
これにより、スケジューラ管理装置は破綻するタスクの実行順序をタスク処理の破綻事例から学習する。その結果、自動的に破綻パターン記憶部に記憶される破綻パターンを更新していくことができる。
また、前記タスク実行順序の変更の指示には、前記1以上の破綻タスクのタスク識別情報が含まれており、前記指示を受けたタスクスケジューラは、当該タスクを実行するプロセッサが実行する他のタスクよりも前記指示に含まれるタスク識別情報に対応するタスクの実行順位が後になるように、前記タスク実行順序を変更するとしてもよい。
これにより、特にタスク処理が破綻したタスクを指定し、そのタスクの実行順位を同じプロセッサが実行する他のタスクよりも後にすることができる。その結果、タスク処理破綻後の再スケジューリングの際に、アクセス競合が生じるタスクの実行時間を後にずらすことで競合を回避し、次のタスク実行時に破綻を回避することができる。
また、前記マルチプロセッサシステムは、さらに、バスコントローラを有する共有バスと、前記共有バスを介して前記複数のプロセッサが情報を書き込む共有資源とを備え、前記バスコントローラは、前記複数のプロセッサの各々で実行され、前記共有資源に書き込みを行う時間が重なっている2以上の競合タスクのタスク識別情報を保持する保持部を有しており、前記指示部は、前記タスク実行順序の変更の指示に、前記破綻タスクであり、かつ、前記保持部に保持されている前記競合タスクのタスク識別情報を含めるとしてもよい。
また、前記共有資源は共有メモリ及び入出力インタフェースのいずれかであるとしてもよい。
これにより、タスク処理が破綻した場合、共有バス側からの情報により、タスク処理の破綻原因がアクセス競合による場合を特定できる。また、タスクの実行順序の変更は、主に共有資源へのアクセス競合を回避するために有効である。よって、アクセス競合が原因で破綻したタスクを特定し、その実行順序を変更することで、次のタスク実行により確実に破綻を回避することができる。
なお、本発明は、このようなマルチプロセッサシステムとして実現できるだけでなく、マルチプロセッサシステムに含まれる特徴的な手段をステップとする情報処理方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
さらに、本発明は、このようなマルチプロセッサシステムを含むシステムLSIとして実現したりできる。
複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムにおいて、アクセス競合によりタスク周期内で完了できなくなるスケジューリングを事前に検出し、タスク処理の破綻を回避することで、リアルタイム処理の性能保証が容易なマルチプロセッサシステムを提供できる。
図1は、本発明の実施の形態1におけるマルチプロセッサシステムの構成図である。 図2は、本発明の実施の形態1におけるプロセッサの構成図である。 図3は、本発明の実施の形態1におけるスケジューラ管理装置の構成図である。 図4は、本発明の実施の形態1〜3における周期スケジューリング情報の一例を示す図である。 図5は、本発明の実施の形態1〜3における再スケジューリング指示の一例を示す図である。 図6は、アクセス競合が要因となるタスク処理の破綻を、本実施の形態1〜3にかかるマルチプロセッサシステムにより回避できる例を示す図である。 図7は、本発明の実施の形態1〜3におけるタスク処理の破綻回避の他の例を示す参考図である。 図8は、本発明の実施の形態1〜3におけるタスク処理の破綻回避のさらに他の例を示す参考図である。 図9は、本発明の実施の形態1におけるタスクスケジューリング処理の流れを示すフローチャートである。 図10は、本発明の実施の形態1における詳細なタスクスケジューリング処理の流れを示すフローチャートである。 図11は、本発明の実施の形態1におけるタスクセットの繰り返し実行の1回分の処理の流れを示すフローチャートである。 図12は、本発明の実施の形態1におけるタスク破綻判定処理の流れを示すフローチャートである。 図13は、本発明の実施の形態1におけるタスク破綻処理の流れを示すフローチャートである。 図14は、本発明の実施の形態1におけるタスク処理の流れを示すフローチャートである。 図15は、本発明の実施の形態2におけるマルチプロセッサシステムの構成図である。 図16は、本発明の実施の形態2におけるバスコントローラの構成図である。 図17は、本発明の実施の形態2におけるバスロックアクセス調停処理の流れを示すフローチャートである。 図18は、本発明の実施の形態3における、マルチプロセッサシステムを備えたシステムLSIの構成図である。 図19は、本発明の実施の形態3における、マルチプロセッサシステムを備えたシステムLSIを用いたデジタルテレビの構成図である。 図20は、従来技術におけるタスク処理の破綻の一例を示す図である。 図21は、従来技術におけるタスク処理の遅延の一例を示す図である。
以下、本発明の実施の形態におけるマルチプロセッサシステム100について、図面を参照しながら説明する。
(実施の形態1)
図1は本発明の実施の形態1における、マルチプロセッサシステム100の構成図である。マルチプロセッサシステム100は、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムである。
図1に示されるように、マルチプロセッサシステム100は、仮想マルチタスク処理機構を持つ2つのプロセッサ200、共有バス101、共有資源102及びスケジューラ管理装置300を備えるプロセッサシステムである。
より詳しく述べると、プロセッサ200は、それぞれ共有バス101に対してバスアクセス103で接続されており、また、共有バス101を介して共有資源102にアクセスすることができる。
なお、共有資源102としては、例えば共有メモリや、入出力用のI/Oインタフェース等が考えられる。
プロセッサ200はそれぞれ、分析結果バス106及びタスク情報バス105を介してスケジューラ管理装置300と接続されている。なお、マルチプロセッサシステム100が備える2つのプロセッサの総称として、「プロセッサ200」を用いる。
共有バス101上で検出されたアクセス競合情報は、アクセス競合バス104を介してスケジューラ管理装置300へ伝達される。
スケジューラ管理装置300は、プロセッサ200の各々からタスク情報バス105を介して受信したタスク情報を分析し、分析結果バス106を介してプロセッサ200の各々へアクセス競合の分析結果を伝達する。
スケジューラ管理装置300からアクセス競合の分析結果を受け取ったプロセッサ200は、プロセッサ200の各々(すなわち、プロセッサ200に含まれる複数のプロセッサの各々)に必要なタスクスケジューリングを行うことでアクセス競合を回避し、次スケジューリングでの処理破綻の回避を行う。
図2は、実施の形態1における仮想マルチタスク処理機構を持つプロセッサ200の構成図である。
図2に示されるように、プロセッサ200は、タスクスケジューラ201、タイムカウンタ202、タスク切替器203、タスクコンテキスト204及び演算ユニット205を備える。
タスクスケジューラ201は、タスク切替器203を用いて演算ユニット205に割り当てられるタスクコンテキスト204を切り替えることにより、事前に定められた時間内で複数のタスク処理を完了させる。
タスクコンテキスト204の切替が行われると、タイムカウンタ202は初期化される。
タスクスケジューラ201は、タイムカウンタ202、及び、タスク切替器203と接続されている。
タスクスケジューラ201は、タイムカウンタ202からタスク実行時間残量206を受信し、その値が0になるとタスクID、プロセスID、プロセッサID、タスクプライオリティなどを含む、タスク情報を生成し、タスク切替器203に伝達する。
同時に、タスクスケジューラ201は、タスク情報バス105を介してスケジューラ管理装置300へタスク情報を伝達する。
タスク切替器203は、タスクスケジューラ201からタスク情報を受信し、タスクコンテキスト接続バス208を介して、必要となるタスクコンテキスト204を選択、取得し、演算ユニット接続バス209を介して接続された演算ユニット205に対してタスクコンテキストを供給する。
演算ユニット205は、タスク切替器203から供給されたタスクコンテキストに従って演算を行い、その結果、バスアクセス103を介して共有バス101とのアクセスを開始する。
図3は実施の形態1における、スケジューラ管理装置300の構成図である。
図3に示されるように、スケジューラ管理装置300は、タスク情報分析部301、タスク周期カウンタ302、完了タスク記憶部303、破綻パターン記憶部304、競合カウンタ305及び記憶許可情報保持部306を備える。
タスク情報分析部301は、タスク情報バス105を介してプロセッサ200と接続されており、プロセッサ200の各々から得られるタスク情報(例えばタスク完了通知、タスクID、スケジューリング完了通知、タスク周期以内に実行されるべきタスクセットに含まれる複数タスクのタスク属性・タスクの実行順序・各タスクを実行するプロセッサのプロセッサID・タスクプライオリティ・タスク周期等からなる周期スケジューリング情報)を受け取る。
ここで、タスクセットとは、複数のタスクを含み、プロセッサ200により繰り返し実行させられる単位となるタスクの組である。
また、タスク周期とは、タスクセットの繰り返し実行の1周期として事前に定められた時間である。
また、タスク情報分析部301はタスク周期カウンタ302、完了タスク記憶部303、破綻パターン記憶部304及び記憶許可情報保持部306と接続されている。
タスク情報分析部301は、指示部310、タスク比較部312及び破綻判定部314を有している。
タスク比較部312は、タスク情報バス105を介して取得した周期スケジューリング情報と、破綻パターン記憶部304から取得した破綻パターンとを比較する。
ここで、破綻パターンとは、タスク周期以内にタスクセットに含まれる全てのタスクの実行が完了せずに破綻した、過去の周期スケジューリング情報220の履歴である。
タスク比較部312による比較の結果、破綻パターンに、取得した周期スケジューリング情報220が含まれている場合、指示部310は、分析結果バス106を介してプロセッサ200の各々にスケジューリングの変更を指示する。
スケジューリングの変更指示を受け取ったプロセッサ200の各々は、タスク実行順序の変更の他、特定タスクのスケジュールキャンセル・ペンディング・タイムカウンタ増減などのタスクの再スケジューリングを行い、タスク情報バス105を介して新たな周期スケジューリング情報220とスケジューリング完了通知をタスク情報分析部301へ伝達する。
タスク比較部312及び指示部310は、周期スケジューリング情報220に含まれるタスク実行順序と、破綻パターン記憶部304に記憶された破綻パターンが一致しなくなるまでこの動作を繰り返す。
破綻判定部314は、1タスク周期で処理されるべき全てのタスクが完了しているか否かを判定する。
具体的には、破綻判定部314は、タスク周期カウンタ302がオーバーフロー(ダウンカウンタを用いる場合はアンダーフロー)した際に、タスクセットに含まれる各タスクについて、プロセッサ200から通知されるタスク完了通知が完了タスク記憶部303に記憶されているか否かを判定する。
タスクセットに含まれる全てのタスクについてタスク完了通知が記憶されていれば、破綻判定部314は、このタスク周期内のタスク処理が全て完了したと判定する。その後、指示部310は、次のタスクセットを実行するため、必要であれば再度プロセッサ200に対してスケジューリング要求を行う。
一方、タスク完了通知が記録されていないタスクが1つ以上ある場合、破綻判定部314はタスク処理が破綻したとみなす。
その場合、タスク情報分析部301は、周期スケジューリング情報と、競合カウンタ305から取り出したタスクセットに含まれるタスクごとの競合回数とを、破綻パターン記憶部304に記憶させる。また、指示部310はプロセッサ200に対して、再スケジューリングを要求する指示であるスケジューリング変更指示を通知する。
スケジューリング変更指示により、再スケジューリングの要求を受けたプロセッサ200が備えるタスクスケジューラ201は、例えば、破綻した周期スケジューリング情報に含まれるタスクの実行順序を変更したものを再スケジューリング後の新たな周期スケジューリング情報としてタスク情報分析部301へ通知する。
また、再スケジューリングを行ったタスクスケジューラ201は、新たな周期スケジューリング情報を他のプロセッサ200へ通知する。
タスク周期カウンタ302は、タスクセットに含まれるタスクのプロセッサ200による実行サイクルを計測するカウンタである。
タスク情報分析部301は、プロセッサ200にタスクセットの実行を開始させる場合、タスク周期カウンタ302を初期化した後、カウントを開始させると同時に、分析結果バス106を介してプロセッサ200に伝達しているスケジューリング変更要求を取り下げる。
ここで、タスク周期カウンタ302の初期化とは、タスク周期の経過後にタスク周期カウンタ302がオーバーフローする値を、カウンタの初期値に設定することである。
例えば、タスク周期カウンタ302の最大値が255であり、タスク周期が50であれば、タスク周期カウンタ302の初期値を205に設定することになる。
その後、プロセッサ200がスケジューリング済みのタスク処理を開始する。
また、プロセッサ200がタスク処理を行っている間、タスク周期カウンタ302は同サイクルでカウンタがオーバーフローするまでカウントアップ(ダウンカウンタを用いる場合はアンダーフローするまでカウントダウン)を続ける。
オーバーフロー後、タスク周期カウンタ302は、タスク周期が経過したことを破綻判定部314に通知する。
完了タスク記憶部303は、前述のとおり、タスクセットに含まれるタスク毎に、タスク各々が完了したか否かを記憶している。
より具体的には、完了タスク記憶部303はレジスタの1ビットずつにそれぞれのタスクを割り当てた後に0で初期化し、プロセッサ200から出力されたタスク完了通知を受け取るごとに割り当てられたビットを1に設定することで、タスク完了通知を記憶できる。
なお、このタスク完了通知は、例えばカウンタに設定されるオーバーフローまでの値など、ユーザーによる任意の設定条件をハードウェアが満たした際に出力させることが可能である。また、任意の設定条件に加え、例えばユーザーにより、プログラム内に記述されたタスク完了を通知させるための命令コードを実行することによりタスク完了通知を出力させることも可能であり、ユーザーによるプログラマブルなタスク処理完了制御が実現できる。
破綻パターン記憶部304は、前述の破綻パターンを記憶している。
競合カウンタ305は、アクセス競合バス104を介して、共有バス101と接続されており、プロセッサ200の各々で実行される複数のタスクが共有バス101へ同時にアクセスを行う際に発生する競合回数をタスク毎にカウントし、保持する。
記憶許可情報保持部306は、破綻パターン記憶部304へ破綻パターンを記憶する場合の条件である記憶許可情報を保持する。
記憶許可情報としては、例えば有効期限の指定が考えられる。この場合、破綻パターン記憶部304は、有効期限以前の破綻パターンを破棄する。
また、記憶許可情報として除外タスクを指定してもよい。この場合、破綻パターン記憶部304は、除外タスクとして指定されたタスク識別情報をもつタスクの破綻は記憶しない。
また、記憶許可情報として破綻パターンの最大記憶数を指定してもよい。この場合、破綻パターン記憶部304は、FIFO(First In First Out)等のルールに従い、記憶する破綻パターンの数を管理する。
なお、破綻パターン記憶部304に記憶された破綻パターンは、必要に応じて圧縮形式での保存も可能である。さらに、破綻要因としてのタスク競合の組合せだけではなく、例えば競合要因となったバスアクセス情報などをそのまま破綻パターンとして記録してもよい。
これにより、タスク組合せに加えて、共有バス101へのアクセスの監視状況に応じたタスク破綻可能性の判定を行うことができる。また、ユーザーが任意にこれらの破綻タスク記憶情報を参照し、利用することも可能である。
すなわち、本実施の形態に係るマルチプロセッサシステム100は、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステム100であって、マルチプロセッサシステム100が備える複数のプロセッサの各々(すなわち、プロセッサ200の各々)は、タスクセットの繰り返し実行の1周期として定められたタスク周期以内に複数のプロセッサで実行されるべきタスクセットに含まれるタスクのタスク実行順序と各タスクを実行するプロセッサとを決定するタスクスケジューラ201を備えている。
また、マルチプロセッサシステム100は、複数のタスクスケジューラ201の少なくとも1つにタスク実行順序の変更を指示する指示部310を有するスケジューラ管理装置300を備えている。
また、複数のタスクスケジューラ201の各々は、指示部310から指示を受けると、複数のプロセッサのタスク実行順序を変更する。
具体的には、スケジューラ管理装置300は、さらに、タスク比較部312と、破綻パターン記憶部304とを備えている。
破綻パターン記憶部304は、タスクセットの繰り返し実行の1回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因してタスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサID及びタスク周期を含む情報を破綻パターンとして少なくとも1以上記憶している。
複数のタスクスケジューラ201のうちの第1のタスクスケジューラは、タスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサID及びタスク周期を含む周期スケジューリング情報をタスク比較部312に通知する。
タスク比較部312は、破綻パターンと通知されたタスク実行順序とを比較することにより一致するか否かを判定する。
タスク比較部312による判定の結果、一致する破綻パターンがある場合には、指示部310は複数のタスクスケジューラ201の少なくとも1つに周期スケジューリング情報に含まれるタスク実行順序の変更を指示する。
一方、一致する破綻パターンがない場合には、スケジューラ管理装置300は、プロセッサ200にタスクセットの実行を開始させる。
その後、スケジューラ管理装置300はタスク周期222内にタスクセット処理が完了したか否かを判定する。その結果、タスク周期222内にタスクセット処理が完了していないと判定された場合には、指示部310は、タスクスケジューラ201へ実行順序の変更を指示する。
より具体的には、スケジューラ管理装置300は、さらに、タスク周期カウンタ302と、完了タスク記憶部303と、破綻判定部314とを備えている。
プロセッサ200の各々は、繰り返し実行の1回分の処理が完了したタスクのタスク識別情報をスケジューラ管理装置300へ通知する。
完了タスク記憶部303は、通知された繰り返し実行の1回分の処理が完了したタスクのタスク識別情報を記憶する。
タスク周期カウンタ302は、プロセッサ200によりタスクセットの実行が開始されてからのサイクル数をカウントする。
破綻判定部314は、タスクセットに含まれる複数のタスクのうちサイクル数がタスク周期222を超えた時点で完了タスク記憶部303に記憶されていないタスクである破綻タスクがあるか否かを判定する。
この判定の結果、破綻タスクが1以上あった場合には、指示部310は複数のタスクスケジューラ201のうち少なくとも1つにタスク実行順序の変更を指示する。
また、破綻判定部314によって破綻タスクがあると判定された場合に、スケジューラ管理装置300は、破綻した周期スケジューリング情報220を新たな破綻パターンとして破綻パターン記憶部304に記憶させる。
なお、タスク実行順序の変更の指示であるスケジューリング変更指示230には、1以上の破綻タスクのタスク識別情報が含まれており、指示を受けたタスクスケジューラは、指示に含まれるタスク識別情報に対応するタスクの実行順位が同じプロセッサが実行する他のタスクよりも後になるように、タスク実行順序を変更する。
なお、タスク周期カウンタ302は、例えばレジスタを用いて実現できる。その場合、プロセッサ200の実行サイクルがタスク周期を超えたことは、カウンタのオーバーフローに伴う割り込みとして実現される。
以下、より詳細に説明する。
図4は、タスクスケジューラ201からタスク情報バス105を介してタスク情報分析部301へ伝達される周期スケジューリング情報220の一例を示す図である。
図4に示されるように、周期スケジューリング情報220は、タスク周期222と、プロセッサ0の実行順序224と、プロセッサ1の実行順序226とを含む。
タスク周期222は、タスクセット(この例では、タスクA、タスクB及びタスクCの3つのタスクからなる組)に含まれる全てのタスクが繰り返し実行の1回分の処理を完了させるべき時間である。
例えば、タスク周期222が20サイクルに指定されている場合、タスクセットの実行サイクルが20サイクルを超えると、タスクの実行が破綻することになる。
プロセッサ0の実行順序224及びプロセッサ1の実行順序226は、それぞれのプロセッサにおいて実行されるべきタスクの実行順序を示す。
例えば、プロセッサ1の実行順序226として、第1順位にタスクAが、第2順位にタスクBが指定されている場合、プロセッサ1はまずタスクAの実行を開始し、その完了後に、タスクBを実行する。
なお、プロセッサ0の実行順序224のように、タスクCのみが指定されている場合、プロセッサ0はタスクCのみを実行する。
図5は、指示部310からタスクスケジューラ201へタスク実行順序の変更を要求するために伝達されるスケジューリング変更指示230の一例を示す図である。
図5に示されるように、スケジューリング変更指示230は、破綻タスク識別情報232を含む。ここでは、破綻タスク識別情報232として、タスクBが指定されている。
例えば、図4に示された周期スケジューリング情報220に従ったタスクセットの実行の後、タスクが破綻したとする。
その後、指示部310からタスクスケジューラ201へ通知されるスケジューリング変更指示230において、タスクBが破綻タスク識別情報232として指定されると、タスクスケジューラ201は、プロセッサ1の実行順序226のうちでタスクBの実行順序を後ろに下げる。
その結果、タスクAとタスクBの実行順位が逆になった周期スケジューリング情報がタスクスケジューラ201からタスク情報分析部301へ通知される。
なお、スケジューリング変更指示230は、破綻タスク識別情報232を含まなくともよい。その場合、スケジューリング変更指示230を受け取ったタスクスケジューラ201は、プロセッサ200の各々で実行されるべきタスクのうち、例えばランダムに選択した2つのタスクの実行順序を変更してもよい。
又は、タスクスケジューラ201は、プロセッサ200の各々で実行されるべき複数のタスクのうち最後に実行されるタスクを1つ前のタスクと入れ替えてもよい。
なお、指示部310によるスケジューリング変更指示230は、具体的には割り込みによって実現することができる。
また、指示部310は、スケジューリング変更指示230を、プロセッサ200の全てに対して通知してもよく、または、識別子を指定することにより特定のプロセッサに対してのみ通知してもよい。
図6は、共有資源102へのアクセス競合が要因となるタスク処理の破綻を、本実施の形態にかかるマルチプロセッサシステム100により回避できる例を示す図である。
図6では、図20と同様に、スケジューリングされたタスクA331、タスクB332及びタスクC321よりなるタスクセットが実行される様子を示す。
ただし、図6では、タスクAとタスクBとの実行順序が逆になるように、タスクスケジューラ201によりタスク実行順序が変更されている。その結果、プロセッサ0とプロセッサ1の間のアクセス競合が解消され、タスクセット内の全てのタスクが、繰り返し実行1回分の処理をタスク周期222以内に完了することができる。
すなわち、上記の構成による本実施の形態によれば、図4に示される周期スケジューリング情報220に従うとプロセッサ1で実行中のタスクA331がプロセッサ0上で実行中のタスクC321とがアクセス競合を起こし、その結果プロセッサ1にスケジューリングされているタスクB332の処理破綻につながることを未然に検出することができる。
具体的には、タスク比較部312が、破綻パターン記憶部304に記憶された破綻パターンと周期スケジューリング情報220とを比較し、破綻パターンにタスクスケジューラ201によって決定された周期スケジューリング情報220が含まれているか否かを判定することによる。
その結果、破綻パターンにタスクスケジューラ201によって決定された周期スケジューリング情報220が含まれている場合には、タスクスケジューラ201は再スケジューリングを行い、タスクA331とタスクB332の順序を入れ替える。これにより、プロセッサ0とプロセッサ1のバスアクセス競合を解消し、プロセッサ1で実行されるタスクBの処理破綻を回避できるという効果を奏する。
なお、破綻パターンとして、必ずしも周期スケジューリング情報220に含まれる全ての情報を破綻パターン記憶部304に記憶しておく必要はない。
例えば、少なくともタスク実行順序を記憶しておけばよい。
また、タスクセットが複数存在し、かつ、タスクセット毎にタスク周期222が異なる場合には、タスク実行順序に加えて各タスク周期222も破綻パターン記憶部304に記憶しておくことが好ましい。
図9は、実施の形態1における1タスクセット分のタスクスケジューリング処理の概要を示すフローチャートである。
まず、プロセッサ200のうち、いずれかのプロセッサが備えるタスクスケジューラ201がタスクスケジューリングを行う(S210)。その結果、周期スケジューリング情報220が生成される。
生成された周期スケジューリング情報220は、タスク情報分析部301へ送られる。
タスク情報分析部301では、タスク比較部312が、周期スケジューリング情報220と、破綻パターン記憶部304に記憶されている破綻パターンとを比較する。
タスク比較部312による比較の結果、送られてきた周期スケジューリング情報220と一致する破綻パターンが見つかると、タスク情報分析部301が有する指示部310はタスクスケジューラ201へスケジューリング変更指示230を通知する(S214でYes)。
スケジューリング変更指示230を受けたタスクスケジューラ201は、再度タスクスケジューリングを行う(S210)。
一方、周期スケジューリング情報220と破綻パターンとが一致しなかった場合(S214でNo)、タスク情報分析部301は、タスク周期カウンタ302にカウントを開始させると同時に、プロセッサ200に対して通知された周期スケジューリング情報220に従ったスケジューリングによるタスクセットの実行を指示する(S216)。
その後、タスク情報分析部301が有する指示部310は、タスクセットの実行が破綻した場合には、タスクスケジューラ201に対してスケジューリング変更指示230を通知する。
スケジューリングの変更を指示された(S212でYes)タスクスケジューラ201は、破綻したタスクセットについて再度スケジューリングを行う(S210)。
図10は、タスクスケジューラ201によるタスクスケジューリング処理の流れを示すフローチャートである。
タスクスケジューラ201は、タスク情報分析部301が有する指示部310から、スケジューリング変更指示230を受けた場合(S220でYes)、スケジューリング変更指示230に含まれる破綻タスク識別情報232に対応するタスクの実行順位を変更する。より具体的には、対応するタスクの実行順位を1つ下げる(S222)。
一方、例えば、タスクが破綻することなく実行が終了した後に別のタスクセットを実行する場合であって、そのタスクセットを初めて実行する場合などでは、タスクスケジューラ201は、指示部310からスケジューリング変更の指示を受けることなく(S220でNo)、従来技術を用いてスケジューリングを行う(S224)。
この場合には、タスクスケジューラ201は、例えばLST(Least Slack Time)等の従来から知られるスケジューリングアルゴリズムを用いて、タスクセットに含まれる全てのタスクの1周期分の処理がタスク周期222以内に完了するようにスケジューリングを行う(S224)。
図11は、実施の形態1におけるタスクセットの繰り返し実行の1回分の処理の流れを示すフローチャートである。
タスク情報分析部301から起動されたタスク周期カウンタ302は、まず、自らのカウンタを前述のように初期化する(S230)。
なお、タスク情報分析部301は、タスク周期カウンタ302を起動させるのと同時に、プロセッサ200にタスク処理を開始させる(S232)が、タスク情報分析部301に代わってタスク周期カウンタ302がプロセッサ200に処理の開始を指示してもよい。
次に、タスク周期カウンタ302は、プロセッサ200に処理の開始を指示してからのサイクル数をカウントする(S235)。
タスク周期カウンタ302は、カウンタがオーバーフローするまでカウントを続ける(S234でNo)。
その後、カウント数がカウンタの最大値を超えた(すなわち、オーバーフローした)時に(S234でYes)、破綻判定部314へカウンタがオーバーフローしたことを通知する(S236)。
その後、通知を受けた破綻判定部314は、タスクの破綻判定処理を開始する(S238)。
図12は、実施の形態1におけるタスク破綻判定処理の流れを示すフローチャートである。
破綻判定部314は、繰り返し実行の1回分の処理(すなわち、現在の1タスク周期222以内に実行されるべきタスク)としてプロセッサ200の各々にスケジューリングされている全てのタスク(すなわち、現在実行しているタスクセットに含まれている全てのタスク)の完了が完了タスク記憶部303に記憶されているか否かを判定する(S240)。
全てのタスクが完了している場合には(S240でYes)、破綻判定部314は、現在の1タスク周期222での処理は破綻せずに完了したと判定する。また、必要であれば、分析結果バス106を介してプロセッサ200の各々に対して次のタスクスケジューリングを要求する(S210、図10のS220でNo)。
一方、完了タスク記憶部303に全てのタスクの完了通知が記録されていない場合には(S240でNo)、破綻判定部314は、現在の1タスク周期222における処理が破綻したと判定し、タスク破綻処理を開始する(S248)。
図13は、実施の形態1におけるタスク破綻処理の流れを示すフローチャートである。
破綻判定部314により、現在の1タスク周期222における処理が破綻したとみなされた場合に、タスク情報分析部301は、その周期スケジューリング情報220を破綻パターン記憶部304に記憶させる。
同時に、タスク情報分析部301は、破綻パターン記憶部304を介して接続されている競合カウンタ305から現在の1タスク周期222に発生したタスクごとの競合回数のカウント値を取り出して、破綻パターン記憶部304に記憶させる(S250)。
次に、タスク情報分析部301は、破綻したタスクを含むタスクセットを再度実行するため、分析結果バス106を介してプロセッサ200の各々が備えるタスクスケジューラ201に、再度のタスクスケジューリングを要求する(S210、図10のS220でYes)。
図14は、実施の形態1における、プロセッサ200によるタスク処理の流れを示すフローチャートである。
前述の通り、タスク周期カウンタ302が起動されると同時に、タスク情報分析部301からプロセッサ200へタスク処理の開始が指示される(または、タスクスケジューリング要求が取り下げられる)ことで、プロセッサ200の各々はタスク処理を開始する(S260)。
プロセッサ200の各々は、スケジューリングの結果自らに割り当てられたタスク処理が完了していない間はタスクの実行を継続する(S262でNo)。
また、プロセッサ200の各々は、スケジューリングの結果自らに割り当てられたタスクの実行が完了する度に(S262でYes)、タスク情報バス105を介してタスク情報分析部301にタスクの完了を通知する(S264)。
その後、タスク情報分析部301の備える完了タスク記憶部303が、タスクごとにタスク完了の有無を記憶するのは、前述の通りである。
以上述べたように、本実施の形態によれば、タスクスケジューラ201から通知されたタスクの周期スケジューリング情報220と破綻パターン記憶部304に記憶された破綻パターンとをタスク情報分析部301が比較することにより、プロセッサ間のアクセス競合による破綻を未然に検出することができる。
その結果、タスクスケジューラ201が、破綻するタスクの処理の順序を入れ替える再スケジューリングをすることにより、プロセッサ間のアクセス競合を回避し、タスク処理の破綻を回避することができる。
(実施の形態2)
以下、本発明の実施の形態2におけるマルチプロセッサシステム100について、図面を参照しながら説明する。
図15は本実施の形態におけるマルチプロセッサシステム100の構成図である。
本実施の形態において、実施の形態1と同様の部分については同一符号を付し、その詳細な説明は省略する。
図15に示される本実施の形態と、前述した実施の形態1との相違点は、本実施の形態におけるバスコントローラ150が調停部108を備えている点と、マルチプロセッサシステム100が調停信号バス107を備えている点である。
図16は、本実施の形態における調停部108を備えるバスコントローラ150の構成図である。
バスコントローラ150は、共有バス101を介したアクセスを制御するコントローラである。
バスコントローラ150は、調停部108を有する。調停部108は、共有バスへのアクセス競合を調停する。
図16に示されるように、調停部108は、リソースアクセス調停部112と保持部120とを備える。
リソースアクセス調停部112は、アクセス情報であるロック情報、共有領域情報、プロセッサの優先度情報を、保持部120に格納する。
より具体的には、保持部120は、ロック情報保持部109、共有領域情報保持部110、優先度保持部111を有しており、それぞれにロック情報、共有領域情報、プロセッサの優先度情報を格納する。
リソースアクセス調停部112は、格納されたそれぞれの情報を用いて、時間ごとの共有資源102へのアクセス調停を行う。
リソースアクセス調停部112は、例えばラウンドロビン方式を用いてアクセス調停を行うことによりプロセッサごとの共有資源ウェイト回数を平均化することが考えられる。
また、さらに優先度を加えた調停により、リソースアクセス調停部112によって、プロセッサ200の各々の共有資源102へのアクセス優先度を制御することが考えられる。
競合を調停した結果は調停信号バス107を通じて、スケジューラ管理装置300へと伝達される。また、その時の競合回数及びタスク情報が、競合カウンタ305及び破綻パターン記憶部304にそれぞれ記憶される。
すなわち、本実施の形態に係るマルチプロセッサシステム100は、さらに、バスコントローラ150を有する共有バス101と、共有バス101を介して複数のプロセッサが情報を書き込む共有資源102とを備えている。
また、バスコントローラ150は、複数のプロセッサの各々で実行され、かつ、共有資源102に書き込みを行う時間が重なっている2以上の競合タスクのタスク識別情報を保持する保持部120を有している。
この構成により、指示部310は、タスク実行順序の変更の指示に、破綻タスクであり、かつ、保持部120に保持されている競合タスクのタスク識別情報を含めることができる。
その結果、再スケジューリングにより競合が解消し、破綻を回避できる可能性が高まる。競合により破綻した場合には、タスクの実行順序を入れ替えることで、共有資源102へのアクセスのタイミングをずらすことができるためである。
なお、共有資源102は、例えば、共有メモリ及び入出力インタフェース等の少なくとも1つであると考えられる。
なお、リソースアクセス調停部112は調停信号バス107を介して、アクセス競合が発生していないことを示すアイドル情報をスケジューラ管理装置300へ伝達することができる。これにより、スケジューラ管理装置300では、タスクセットの実行時におけるリソース競合およびアイドル状況を把握することができる。
その結果、スケジューラ管理装置300は、優先度およびアクセスタイミングの調整によるアクセス競合緩和、アイドル時におけるペンディングしていたタスクの積極的なスケジューリングなどを実施することができる。
以下、より詳細に説明する。
図17は、本実施の形態におけるバスロック発生時のバスロックアクセス調停処理の流れを示すフローチャートである。
調停部108は、共有資源102へのアクセス(例えば、共有メモリへの書き込み)を開始したいプロセッサ200からバスロックの要求を受けると(S310)、保持部120が備えるロック情報保持部109を確認し(S312)、共有バス101が既にロックされているか否かを判定する(S314)。
判定の結果、まだロックされていなければ(S314でNo)、調停部108は他のプロセッサから共有バス101へのアクセスを排除するためのロック情報をロック情報保持部109へ格納し、バスロックを要求したプロセッサ200に処理を継続させる(S316)。
一方、既にロックされていた場合には(S314でYes)、調停部108はタスク情報分析部301へバスロック競合の発生を通知する(S318)。
通知を受けたタスク情報分析部301は、共有バス101へのアクセスの競合により実行が中断するタスクのタスク情報を破綻パターン記憶部304へ記憶させる。さらに、通知を受ける度に、競合カウンタ305をカウントアップし、競合回数をカウントする(S320)。
その後、調停部108は、ロック情報保持部109から共有バス101に対するロック情報が削除されるまで、プロセッサ200に含まれるプロセッサのうち、共有バス101に対するアクセス権を最初に獲得した(最初にバスロック要求を出した)プロセッサ以外のプロセッサの処理を中断させる(S322)。
以上述べた実施の形態により、タスク情報分析部301は、タスクの実行の破綻した原因が共有資源102へのアクセス競合によるものか否かを知ることができる。また、その結果を再スケジューリングに利用することができる。
例えば、前述のように、タスク情報分析部301が、破綻タスクであり、かつ、破綻の原因がアクセス競合によるタスクを特定し、指示部310は特定されたタスクの実行順序を変更するようにタスクスケジューラ201へ指示することが考えられる。
タスク処理の破綻する理由がアクセス競合によるものであれば、そのタスクの実行順序を変更することにより、競合が解消し、破綻を回避できる可能性が高いからである。
すなわち、実施の形態1においては、タスク情報分析部301は、破綻したか否かというプロセッサ側の情報をもちいてスケジューリングを行うが、本実施の形態においては、バス側の競合情報も併せて用いたスケジューリングを行うことで、より競合を解消できる可能性の高いスケジューリングが可能となる。
(実施の形態3)
以下、本発明の実施の形態3における、マルチプロセッサシステム100を備えるシステムLSI、及び、テジタルテレビについて、図面を参照しながら説明する。
図18は、本実施の形態における、マルチプロセッサシステム100を備えるシステムLSI400の構成図である。
システムLSI400は、例えば、デジタルテレビ等に用いられ、複数の構成部を1個のチップの上に集積して製造された超多機能LSIである。具体的には、ROM(Read Only Memory)、RAM(Random Access Memory)、マイクロプロセッサ等を含んで構成されている。RAMに記憶されているコンピュータプログラムをマイクロプロセッサが実行することにより、システムLSI400は、その機能を達成する。
なお、図18におけるマルチプロセッサシステム100は、例えば、実施の形態1または実施の形態2で述べたマルチプロセッサシステム100と同一の構成を有してもよい。
図18に示されるように、マルチプロセッサシステム100は、システムバス401と接続されている。また、システムバス401には、外部データ入出力部402、外部記憶装置接続部403及び外部制御機器接続部404が接続されている。
図19は、本実施の形態におけるシステムLSI400を用いたデジタルテレビ500の構成図である。
図19に示されるように、本実施の形態におけるマルチプロセッサシステム100を用いたシステムLSI400に、リモートコントローラーなどの外部制御機器501、ディスクドライブなどの外部記憶装置502、放送データの受信装置503、テレビ用プラズマパネル又は液晶パネルなどの映像出力装置504及びスピーカーなどの音声出力装置505を接続することにより、デジタルテレビ500を構成している。
その結果、図19に示されるデジタルテレビ500へマルチプロセッサシステム100を適用することが可能となる。
すなわち、本実施の形態に係るシステムLSI400は、複数のタスクからなるタスクセットを繰り返し実行するシステムLSI400であって、マルチプロセッサシステム100と、マルチプロセッサシステム100とシステムバスを介してそれぞれ接続されている外部データ入出力部402、外部記憶装置接続部403、及び、外部制御機器接続部404とを備えている。
マルチプロセッサシステム100が備えるプロセッサ200の各々は、タスクスケジューラ201を備えている。
マルチプロセッサシステム100は、複数のタスクスケジューラ201の少なくとも1つにタスク実行順序の変更を指示する指示部310を有するスケジューラ管理装置300を備えている。
複数のタスクスケジューラ201の各々は、指示部310から指示を受けると、対応するプロセッサ200の各々のタスク実行順序を変更する。
なお、上記実施の形態1〜2において、タスク情報分析部301が備える指示部310からの再スケジューリングの指示に対し、タスクスケジューラ201はタスクの実行順序を変更することによる再スケジューリングを行うことを述べたが、他の方法で再スケジューリングを行ってもよい。
例えば、図7に示されるように、タスクA331が出来高保証の場合、このタスクセットからタスクA331の処理を省き、タスクB332及びタスクC321をタスク周期222以内に実行する新たなタスクセットとするスケジューリングも考えられる。
または、図8に示されるように、タスクセットの1タスク周期に十分な時間が確保できる場合には、タスクA331及びタスクB332の実行開始時間を遅らせ、それに伴ってタスク周期を延ばすことによって、タスクA331とタスクC321との競合を回避するスケジューリングも考えられる。
なお、上記実施の形態1〜3に係るマルチプロセッサシステム100に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又はすべてを含むように1チップ化されてもよい。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。
また、本発明の実施の形態1〜3に係る、マルチプロセッサシステム100の機能の一部又は全てを、CPU等のプロセッサがプログラムを実行することにより実現してもよい。
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記実施の形態1〜3に係る、マルチプロセッサシステム100、及びその変形例の機能のうち少なくとも一部を組み合わせてもよい。
また、上記で用いた数字は、すべて本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。例えば、マルチプロセッサシステム100が備えるプロセッサの数は3個以上の任意の数であってもよい。
また、構成要素間の接続関係は、本発明を具体的に説明するために例示するものであり、本発明の機能を実現する接続関係はこれに限定されない。
さらに、本発明の主旨を逸脱しない限り、実施の形態1〜3に対して当業者が思いつく範囲内の変更を施した各種変形例も本発明に含まれる。
本発明は、コンピュータ組み込みシステムなどに用いられるマルチプロセッサシステムのリアルタイム処理性能保証において有用である。
100 マルチプロセッサシステム
101 共有バス
102 共有資源(メモリ)
103 バスアクセス
104 アクセス競合バス
105 タスク情報バス
106 分析結果バス
107 調停信号バス
108 調停部
109 ロック情報保持部
110 共有領域情報保持部
111 優先度保持部
112 リソースアクセス調停部
120 保持部
150 バスコントローラ
200 プロセッサ
201 タスクスケジューラ
202 タイムカウンタ
203 タスク切替器
204 タスクコンテキスト
205 演算ユニット
206 タスク実行時間残量
208 タスクコンテキスト接続バス
209 演算ユニット接続バス
220 周期スケジューリング情報
222 タスク周期
224 プロセッサ0の実行順序
226 プロセッサ1の実行順序
230 スケジューリング変更指示
232 破綻タスク識別情報
300 スケジューラ管理装置
301 タスク情報分析部
302 タスク周期カウンタ
303 完了タスク記憶部
304 破綻パターン記憶部
305 競合カウンタ
306 記憶許可情報保持部
310 指示部
312 タスク比較部
314 破綻判定部
320 プロセッサ0のタスク処理
321 タスクC
330 プロセッサ1のタスク処理
331 タスクA
332 タスクB
400 システムLSI
401 システムバス
402 外部データ入出力部
403 外部記憶装置接続部
404 外部制御機器接続部
500 デジタルテレビ
501 外部制御機器
502 外部記憶装置
503 放送データの受信装置
504 映像出力装置
505 音声出力装置

Claims (7)

  1. 複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムであって、
    前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の1周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各前記タスクを実行するプロセッサとを決定するタスクスケジューラを備え、
    前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも1つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、
    前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更し、
    前記スケジューラ管理装置は、さらに、タスク比較部と、破綻パターン記憶部とを備えており、
    前記破綻パターン記憶部は、前記タスクセットの繰り返し実行の1回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因して前記タスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む情報を破綻パターンとして1以上記憶し、
    前記複数のタスクスケジューラのうちの第1のタスクスケジューラは、前記タスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、
    前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、
    一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも1つに前記周期スケジューリング情報に含まれるタスク実行順序の変更を指示する
    マルチプロセッサシステム。
  2. 複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムであって、
    前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の1周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各前記タスクを実行するプロセッサとを決定するタスクスケジューラを備え、
    前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも1つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、
    前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更し、
    前記スケジューラ管理装置は、さらに、タスク周期カウンタと、完了タスク記憶部と、破綻判定部とを備えており、
    前記複数のプロセッサの各々は、前記繰り返し実行の1回分の処理であるタスクセット処理が完了したタスクのタスク識別情報を前記スケジューラ管理装置へ通知し、
    前記完了タスク記憶部は、通知された前記タスクセット処理が完了したタスクのタスク識別情報を記憶し、
    前記タスク周期カウンタは、前記複数のプロセッサにより前記タスクセットの実行を開始してからのサイクル数をカウントし、
    前記破綻判定部は、前記タスクセットに含まれているタスクのうち、前記サイクル数が前記タスク周期を超えた時点で前記完了タスク記憶部に記憶されていないタスクである破綻タスクがあるか否かを判定し、
    判定の結果、前記破綻タスクが1以上あった場合には、前記指示部は前記複数のタスクスケジューラのうち少なくとも1つに前記タスク実行順序の変更を指示する
    ルチプロセッサシステム。
  3. 前記タスク実行順序の変更の指示には、前記1以上の破綻タスクのタスク識別情報が含まれており、
    前記指示を受けたタスクスケジューラは、当該タスク識別情報に対応するタスクを実行するプロセッサが実行する他のタスクよりも、前記タスク識別情報に対応するタスクの実行順位が後になるように、前記タスク実行順序を変更する
    請求項に記載のマルチプロセッサシステム。
  4. 前記マルチプロセッサシステムは、さらに、バスコントローラを有する共有バスと、前記共有バスを介して前記複数のプロセッサが情報を書き込む共有資源とを備え、
    前記バスコントローラは、前記複数のプロセッサの各々で実行され、前記共有資源に書き込みを行う時間が重なっている2以上の競合タスクのタスク識別情報を保持する保持部を有しており、
    前記指示部は、前記タスク実行順序の変更の指示に、前記破綻タスクであり、かつ、前記保持部に保持されている前記競合タスクのタスク識別情報を含める
    請求項に記載のマルチプロセッサシステム。
  5. 前記共有資源は共有メモリ及び入出力インタフェースのいずれかである
    請求項に記載のマルチプロセッサシステム。
  6. 前記スケジューラ管理装置は、さらに、破綻パターン記憶部とタスク比較部とを備えており、
    実行されたタスクセットに破綻タスクが含まれると前記破綻判定部によって判定された場合に、前記スケジューラ管理装置は、当該タスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む情報を破綻パターンとして前記破綻パターン記憶部に記憶させ、
    前記複数のタスクスケジューラのうちの第1のタスクスケジューラは、これから実行されるタスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサID及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、
    前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、
    一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも1つに前記周期スケジューリング情報に含まれる前記タスク実行順序の変更を指示する
    請求項に記載のマルチプロセッサシステム。
  7. 前記タスク周期カウンタはレジスタである
    請求項に記載のマルチプロセッサシステム。
JP2012522419A 2010-07-02 2011-01-21 マルチプロセッサシステム Active JP5653431B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012522419A JP5653431B2 (ja) 2010-07-02 2011-01-21 マルチプロセッサシステム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010151533 2010-07-02
JP2010151533 2010-07-02
JP2012522419A JP5653431B2 (ja) 2010-07-02 2011-01-21 マルチプロセッサシステム
PCT/JP2011/000325 WO2012001835A1 (ja) 2010-07-02 2011-01-21 マルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JPWO2012001835A1 JPWO2012001835A1 (ja) 2013-08-22
JP5653431B2 true JP5653431B2 (ja) 2015-01-14

Family

ID=45401587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012522419A Active JP5653431B2 (ja) 2010-07-02 2011-01-21 マルチプロセッサシステム

Country Status (3)

Country Link
US (1) US9170841B2 (ja)
JP (1) JP5653431B2 (ja)
WO (1) WO2012001835A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838765B2 (en) 2017-04-28 2020-11-17 Samsung Electronics Co., Ltd. Task execution method for voice input and electronic device supporting the same

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015210688A (ja) * 2014-04-28 2015-11-24 株式会社日立製作所 サーバ仮想化システム
US9909406B2 (en) * 2014-05-16 2018-03-06 Baker Hughes, A Ge Company, Llc Automated delivery of wellbore construction services
US9582268B2 (en) * 2015-05-27 2017-02-28 Runnable Inc. Automatic communications graphing for a source application
US20160350081A1 (en) 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
JP6802480B2 (ja) 2017-01-27 2020-12-16 富士通株式会社 プロセッサ、情報処理装置及びプロセッサの動作方法
JP2018163528A (ja) * 2017-03-27 2018-10-18 日立オートモティブシステムズ株式会社 車両制御装置
US11334391B2 (en) * 2017-04-17 2022-05-17 Red Hat, Inc. Self-programmable and self-tunable resource scheduler for jobs in cloud computing
DE102018205390A1 (de) * 2018-04-10 2019-10-10 Robert Bosch Gmbh Verfahren und Vorrichtung zur Fehlerbehandlung in einer Kommunikation zwischen verteilten Software Komponenten
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
JP2020149526A (ja) * 2019-03-15 2020-09-17 株式会社東芝 処理装置、処理方法及びプログラム
US11435947B2 (en) 2019-07-02 2022-09-06 Samsung Electronics Co., Ltd. Storage device with reduced communication overhead using hardware logic
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
JP7427474B2 (ja) * 2020-02-27 2024-02-05 三菱重工業株式会社 観測制御装置、観測システム、及び宇宙機、並びに観測制御方法、並びに観測制御プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09231181A (ja) * 1996-02-28 1997-09-05 Mitsubishi Electric Corp 並列計算機における動的負荷分散方法
JP2000112773A (ja) * 1998-10-01 2000-04-21 Okinawa Nippon Denki Software Kk 動的にジョブスケジュールする処理装置
JP2005043959A (ja) * 2003-07-22 2005-02-17 Toshiba Corp スケジューリング方法および情報処理システム
JP2007226587A (ja) * 2006-02-24 2007-09-06 Mitsubishi Electric Corp 計算機リソース動的制御装置、計算機リソース動的制御システム及び計算機リソース動的制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0403229A1 (en) * 1989-06-13 1990-12-19 Digital Equipment Corporation Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors
JP2520544B2 (ja) * 1991-09-26 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション タスクのオ―バ―ラン状態を監視する方法及びタスク実行サイクルのオ―バ―ランを検出する装置
JP3057934B2 (ja) * 1992-10-30 2000-07-04 日本電気株式会社 共有バス調停機構
US6564274B1 (en) * 1999-12-17 2003-05-13 Omnicluster Technologies, Inc. Modular architecture for small computer networks
JP2002073354A (ja) 2000-08-29 2002-03-12 Ricoh Co Ltd タスク制御装置とタスク制御方法
EP1390848B1 (en) * 2001-05-14 2005-11-02 Telefonaktiebolaget LM Ericsson (publ) Task supervision
US8195922B2 (en) * 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
JP4580845B2 (ja) * 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09231181A (ja) * 1996-02-28 1997-09-05 Mitsubishi Electric Corp 並列計算機における動的負荷分散方法
JP2000112773A (ja) * 1998-10-01 2000-04-21 Okinawa Nippon Denki Software Kk 動的にジョブスケジュールする処理装置
JP2005043959A (ja) * 2003-07-22 2005-02-17 Toshiba Corp スケジューリング方法および情報処理システム
JP2007226587A (ja) * 2006-02-24 2007-09-06 Mitsubishi Electric Corp 計算機リソース動的制御装置、計算機リソース動的制御システム及び計算機リソース動的制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838765B2 (en) 2017-04-28 2020-11-17 Samsung Electronics Co., Ltd. Task execution method for voice input and electronic device supporting the same

Also Published As

Publication number Publication date
US20130104137A1 (en) 2013-04-25
WO2012001835A1 (ja) 2012-01-05
JPWO2012001835A1 (ja) 2013-08-22
US9170841B2 (en) 2015-10-27

Similar Documents

Publication Publication Date Title
JP5653431B2 (ja) マルチプロセッサシステム
TWI298458B (en) Multithreaded processor, computing system with thread livelock units and method for arbitrating livelock priority requests
KR102553932B1 (ko) 컴퓨터 이미징 파이프라인
US20220156084A1 (en) Processor architecture with micro-threading control by hardware-accelerated kernel thread
JP5169731B2 (ja) マルチプロセッサシステムlsi
CN102414672A (zh) 可编程异常处理等待时间
WO2010067492A1 (ja) マルチプロセッサシステム及びその排他制御の調停方法
US20230127112A1 (en) Sub-idle thread priority class
JP4829038B2 (ja) マルチプロセッサシステム
US11061724B2 (en) Programmable hardware scheduler for digital processing systems
US11113101B2 (en) Method and apparatus for scheduling arbitration among a plurality of service requestors
WO2004046926A1 (ja) イベント通知方法、デバイス及びプロセッサシステム
JP4825257B2 (ja) プロセッサ
Thebe et al. Scheduling restartable jobs with short test runs
JP4196982B2 (ja) プロセッサ及びプログラム実行方法
JP4295792B2 (ja) プロセッサ及びプログラム実行方法
JP2010113414A (ja) マルチコアシステム、スレッドスケジューリング方法、プログラム、記憶媒体
CN116795490A (zh) 一种vCPU调度方法、装置、设备及存储介质
JP5772040B2 (ja) データ転送システム,データ転送スケジューリングプログラム
JP5494925B2 (ja) 半導体集積回路、情報処理装置およびプロセッサ性能保証方法
JP2006099782A (ja) プロセッサ
JP2010191522A (ja) プログラム検査方法
JP2001290664A (ja) マルチタスク制御プロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141007

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141017

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: 20141111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141118

R150 Certificate of patent or registration of utility model

Ref document number: 5653431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150