JP2005043959A - スケジューリング方法および情報処理システム - Google Patents
スケジューリング方法および情報処理システム Download PDFInfo
- Publication number
- JP2005043959A JP2005043959A JP2003199943A JP2003199943A JP2005043959A JP 2005043959 A JP2005043959 A JP 2005043959A JP 2003199943 A JP2003199943 A JP 2003199943A JP 2003199943 A JP2003199943 A JP 2003199943A JP 2005043959 A JP2005043959 A JP 2005043959A
- Authority
- JP
- Japan
- Prior art keywords
- processing element
- element group
- processing
- thread
- executed
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 169
- 230000010365 information processing Effects 0.000 title claims description 10
- 238000012545 processing Methods 0.000 claims abstract description 374
- 230000008569 process Effects 0.000 claims abstract description 95
- 230000003111 delayed effect Effects 0.000 claims abstract description 19
- 239000000203 mixture Substances 0.000 abstract description 37
- 238000003860 storage Methods 0.000 description 53
- 230000007246 mechanism Effects 0.000 description 41
- 230000007704 transition Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 16
- 230000000737 periodic effect Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】連鎖された複数の処理要素(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)は第1処理要素グループと第2処理要素グループとにグループ分けされる。第1処理要素グループ(DEMUX、V−DEC)は例えば第1のプロセッサVPU0によって周期的に実行され、第2処理要素グループ(A−DEC、TEXT、PROG、BLEND)は第1処理要素グループ(DEMUX、V−DEC)よりも1周期遅れたタイミングで例えば第2のプロセッサVPU1によって周期的に実行される。周期毎に第1処理要素グループと第2処理要素グループとが並行して実行されるので、各周期毎に所望の処理結果を得ることが可能となる。
【選択図】 図11
Description
【発明の属する技術分野】
本発明は連鎖された複数の処理要素から構成されるリアルタイム処理を周期的に実行するためのスケジューリング方法および情報処理システムに関する。
【0002】
【従来の技術】
従来より、サーバコンピュータのような計算機システムにおいては、その演算処理能力の向上を図るために、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャが利用されている。マルチプロセッサおよび並列プロセッサのどちらも、複数のプロセッサユニットを利用することによって演算処理の並列化を実現している。
複数のプロセッサユニットを備えたシステムとしては、例えば、1台の高速CPU、複数台の低速CPU、および共有メモリを備えたシステムが知られている(例えば、特許文献1参照)。このシステムにおいては、高速CPUおよび複数台の低速CPUに対する処理プログラムのプロセス群の割付は、プロセス群の並列動作度の大小および処理時間の大小に応じて行われる。
【0003】
また、複数のプロセッサにスレッド群を割り当てるためのスケジューリング技術としては、同一のプロセス内に属するスレッドを同一のプロセッサに実行させる技術が知られている(例えば、特許文献2参照)。
【0004】
ところで、最近では、計算機システムのみならず、例えば、AV(オーディオ・ビデオ)データのような大容量のデータをリアルタイムに処理する組み込み機器においても、その演算処理能力の向上のためにマルチプロセッサ、並列プロセッサのようなシステムアーキテクチャの導入が要求されている。
【0005】
【特許文献1】
特開平10−143380号公報
【0006】
【特許文献2】
特開平8−180025号公報
【0007】
【発明が解決しようとする課題】
しかし、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャを前提としたリアルタイム処理システムの報告はほとんどなされていないのが現状である。
リアルタイム処理システムにおいては、ある許容時間の制限内に個々の処理を完了することが要求される。また連鎖された複数の処理要素の組み合わせから構成されるリアルタイム処理を、限られたある一定時間間隔で周期的に実行するためには、連鎖された複数の処理要素すべてを各周期の時間間隔内に完了することが必要となる。しかし、リアルタイム処理を構成する複数の処理要素の連鎖が長い場合には、各周期の時間間隔内に全ての処理要素を完了することができなくなる。
【0008】
本発明は上述の事情を考慮してなされたものであり、連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて効率よく実行することが可能なスケジューリング方法および情報処理システムを提供することを目的とする。
【0009】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて周期的に実行するためのスケジューリング方法において、前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグループ分けするステップと、前記第1処理要素グループが特定の時間間隔で周期的に実行され、且つ前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループおよび前記第2の処理要素グループの各々を1以上のプロセッサに周期的に割り当てるスケジューリング処理を実行するステップとを具備することを特徴とする。
【0010】
このスケジューリング方法によれば、連鎖された複数の処理要素から構成されるリアルタイム処理の実行期間は2周期に跨るが、第2処理要素グループが第1処理要素グループよりも1周期分遅れた状態で第1処理要素グループおよび第2の処理要素グループが周期毎に並列に実行されるので、周期毎に所望の処理結果を得ることが可能となる。
【0011】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るリアルタイム処理システムを実現するための計算機システムの構成例が示されている。この計算機システムは、リアルタイム性が要求される各種処理をその時間的な制約条件の範囲内で実行する情報処理システムであり、汎用計算機として利用できるほか、リアルタイム性が要求される処理を実行するための様々な電子機器用の埋め込みシステムとして利用することができる。図1に示されているように、この計算機システムにおいては、マスタープロセッサユニット(MPU11:Master Processing Unit)11と、複数のバーサタイルプロセッサユニット(VPU:Versatile Processing Unit)12と、メインメモリ14と、入出力制御装置15とが、接続装置13によって相互に接続されている。接続装置13は、例えば、クロスバスイッチのような相互結合網、あるいはバスによって構成されている。リング状のバス構造を用いることも出来る。MPU11は計算機システムの動作を制御するメインプロセッサである。オペレーティングシステム(OS:Operating System)は、主にMPU11によって実行される。OSの一部の機能はVPU12や入出力制御装置15で分担して実行することもできる。各VPU12は、MPU11の管理の下で各種の処理を実行するプロセッサである。MPU11は、複数のVPU12に処理を振り分けて並列に実行させるための制御を行う。これにより高速で効率よい処理の実行を行うことが出来る。メインメモリ14は、MPU11、複数のVPU12および入出力制御装置15によって共有される記憶装置(共有メモリ)である。OSおよびアプリケーションプログラムはメインメモリ14に格納される。入出力制御装置15には、ひとつあるいは複数の入出力デバイス(入出力装置)16が接続される。入出力制御装置15はブリッジとも呼ばれる。
【0012】
接続装置15はデータ転送レートを保証するQoS機能を持つ。この機能は、接続装置15を介したデータ転送を予約されたバンド幅(転送速度)で実行することによって実現される。QoS機能は、たとえば、あるVPU12からメモリ14に5Mbpsでライトデータを送信する場合、あるいはあるVPU12と別のVPU12との間で100Mbpsでデータ転送する場合に利用される。VPU12は接続装置13に対してバンド幅(転送速度)を指定(予約)する。接続装置13は指定されたバンド幅を要求したVPU12に対して優先的に割り当てる。あるVPU12のデータ転送に対してバンド幅が予約されたならば、そのVPU12によるデータ転送中に他のVPU12、MPU11あるいは入出力制御装置15が大量のデータ転送を行っても、予約されたバンド幅は確保される。この機能は、特に、リアルタイム処理を行う計算機にとって重要な機能である。
【0013】
図1の構成では、MPU11が1つ、VPU12が4つ、メモリ14が1つ、入出力制御装置が1つであるが、VPU12の個数は制限されない。またMPU11を持たない構成も可能である。この場合、MPU11の行う処理は、ある一つのVPU12が担当する。つまり、仮想的なMPU11の役割をVPUが兼ねる。
【0014】
図2には、MPU11と各VPU12の構成が示されている。MPU11は処理ユニット21およびメモリ管理ユニット22を備えている。処理ユニット21は、メモリ管理ユニット22を通してメモリ14をアクセスする。メモリ管理ユニット22は、仮想記憶管理と、メモリ管理ユニット22内のキャッシュメモリの管理を行うユニットである。各VPU12は、処理ユニット31、ローカルストレージ(ローカルメモリ)32、およびメモリコントローラ33を備えている。各VPU12の処理ユニット31は、そのVPU内部のローカルストレージ32を直接アクセスすることができる。メモリコントローラ33は、ローカルストレージ32とメモリ14の間のデータ転送を行うDMAコントローラの役割を持つ。このメモリコントローラ33は、接続装置14のQoS機能を利用できるように構成されており、バンド幅を予約する機能および予約したバンド幅でデータ入出力を行う機能を有している。またメモリコントローラ33は、MPU11のメモリ管理ユニット22と同様の仮想記憶管理機能を持つ。VPU12の処理ユニット31はローカルストレージ32を主記憶として使用する。処理ユニット31はメモリ14に対して直接的にアクセスするのではなく、メモリコントローラ33に指示して、メモリ14の内容をローカルストレージ32に転送して読んだり、ローカルストレージ32の内容をメモリ14に書いたりする。
【0015】
MPU11のメモリ管理ユニット22およびVPU12のメモリコントローラ33それぞれによって実行される仮想記憶管理は、たとえば図3のように実施することができる。MPU11の処理ユニット21あるいはVPU12のメモリコントローラ33から見たアドレスは、図3の上の部分に示すような64ビットのアドレスである。この64ビットのアドレスは、上位の36ビットがセグメント番号、中央の16ビットがページ番号、下位の12ビットがページオフセットである。このアドレスから、実際に接続装置13を通してアクセスする実アドレス空間への変換は、セグメントテーブル50およびページテーブル60を用いて実行される。セグメントテーブル50およびページテーブル60は、メモリ管理ユニット22およびメモリコントローラ33に各々設けられている。
【0016】
MPU11および各VPU12から見た実アドレス(RA)空間には、図4に示すように、たとえば以下のようなデータがマッピングされている。
1.メモリ(主記憶装置)
2.MPU11の各種制御レジスタ
3.各VPU12の各種制御レジスタ
4.各VPU12のローカルストレージ
5.各種入出力デバイス(入出力装置)の制御レジスタ(入出力制御装置の制御レジスタも含む)
MPU11および各VPU12は、実アドレス空間の該当するアドレスにアクセスすることで、1〜5の各データを読み書きすることができる。特に、実アドレス空間にアクセスすることで、どのMPU11からでも、あるいはどのVPU12からでも、さらに入出力制御装置15からでも、任意のVPU12のローカルストレージ32にアクセスすることができることは重要である。またセグメントテーブルあるいはページテーブルを用いて、VPU12のローカルストレージ32の内容が自由に読み書きされないように保護することもできる。
MPU11あるいはVPU12からみたアドレス空間は、図3の仮想記憶メカニズムを用いて、たとえば図5に示すようにマッピングされる。MPU11あるいはVPU12上で実行しているプログラムから直接見えるのは、実効アドレス(EA;Effective Address)空間である。EAは、セグメントテーブル50によって、仮想アドレス(VA;Virtual Address)空間にマッピングされる。さらにVAは、ページテーブル60によって、実アドレス(RA;Real Address)空間にマップされる。このRAが、図4で説明したような構造を持っている。
【0017】
MPU11は制御レジスタ等のハードウェア機構によって、例えば、各VPU12のレジスタの読み書き、各VPU12のプログラムの実行開始/停止などの、各VPU12の管理を行うことができる。また、MPU11とVPU12の間、あるいはあるVPU12と他のVPU12の間の通信や同期は、メールボックスやイベントフラグなどのハードウェア機構によって行うことが出来る。
【0018】
この実施形態の計算機システムは、従来ハードウェアで実現されていたようなリアルタイム性の要求の厳しい機器の動作を、ソフトウェアを用いて実現することを可能にする。例えば、あるVPU12があるハードウェアを構成するある幾つかのハードウェアコンポーネントに対応する演算処理を実行し、それと並行して、他のVPU12が他の幾つかのハードウェアコンポーネントに対応する演算処理を実行する。
【0019】
図6はデジタルテレビ放送の受信機の簡略化したハードウェア構成を示している。図6においては、受信した放送信号はDEMUX(デマルチプレクサ)回路101によって音声データと映像データと字幕データそれぞれに対応する圧縮符号化されたデータストリームに分解される。圧縮符号化された音声データストリームはA−DEC(音声デコーダ)回路102によってデコードされる。圧縮符号化された映像データストリームはV−DEC(映像デコーダ)回路103によってデコードされる。デコードされた映像データストリームはPROG(プログレッシブ変換)回路105に送られ、そこでプログレッシブ映像信号に変換するためのプログレッシブ変換処理が施される。プログレッシブ変換された映像データストリームはBLEND(画像合成)回路106に送られる。字幕データストリームはTEXT(字幕処理)回路104によって字幕の映像に変換された後、BLEND回路106に送られる。BLEND回路106は、PROG回路105から送られてくる映像と、TEXT回路104から送られてくる字幕映像とを合成して、映像ストリームとして出力する。この一連の処理が、映像のフレームレート(たとえば、1秒間に30コマ、32コマ、または60コマ)に従って、繰り返し実行される。
【0020】
図6のようなハードウェアの動作をソフトウェアによって実行するために、本実施形態では、たとえば図7に示すように、各ハードウェアの動作をソフトウェアとして実現したプログラムモジュール100を用意する。このプログラムモジュール100は、図6のDEMUX回路101、A−DEC回路102、V−DEC回路103、TEXT回路104、PROG回路105、およびBLEND回路106に対応する処理を計算機システムに実行させるアプリケーションプログラムであり、マルチスレッドプログラミングを用いて記述されている。このプログラムモジュール100は、それぞれスレッドとして実行される複数のプログラム(複数のルーチン群)から構成されている。すなわち、プログラムモジュール100には、DEMUXプログラム111、A−DECプログラム112、V−DECプログラム113、TEXTプログラム114、PROGプログラム115、およびBLENDプログラム116が含まれている。DEMUXプログラム111、A−DECプログラム112、V−DECプログラム113、TEXTプログラム114、PROGプログラム115、およびBLENDプログラム116は、それぞれ図6のDEMUX回路101、A−DEC回路102、V−DEC回路103、TEXT回路104、PROG回路105、およびBLEND回路106に対応する処理要素それぞれに対応する手順を記述したプログラムであり、それぞれスレッドとして実行される。つまり、プログラムモジュール100の実行時には、DEMUXプログラム111、A−DECプログラム112、V−DECプログラム113、TEXTプログラム114、PROGプログラム115、およびBLENDプログラム116それぞれに対応するスレッドが生成され、生成されたスレッドそれぞれが1以上のVPU12にディスパッチされて実行される。VPU12のローカルストレージ32にはそのVPU12にディスパッチされたスレッドに対応するプログラムがロードされ、スレッドはローカルストレージ32上のプログラムを実行する。デジタルテレビ放送の受信機を構成するハードウェアモジュール群それぞれに対応するプログラム111〜116と、構成記述117と呼ぶデータとをパッケージ化したものが、デジタルテレビ放送の受信機を実現するプログラムモジュール100になる。
【0021】
構成記述117は、プログラムモジュール100内の各プログラム(スレッド)をどのように組み合わせて実行するべきかを示す情報であり、連鎖されたプログラム111〜116間の入出力関係(連鎖関係)および各プログラムの処理に必要なコスト(時間)などを示す。図8には構成記述117の例が示されている。
【0022】
図8の構成記述117の例では、スレッドとして動作する各モジュール(プログラムモジュール100内の各プログラム)に対して、その入力につながるモジュール、その出力がつながるモジュール、そのモジュールの実行に要するコスト、出力がつながるモジュールそれぞれへの出力に必要なバッファサイズが記述されている。たとえば、番号▲3▼のV−DECプログラムは、番号▲1▼のDEMUXプログラムの出力を入力とし、その出力は番号▲5▼のPROGプログラムに向かっており、その出力に必要なバッファは1MBで、番号▲3▼のV−DECプログラム自体の実行コストは50であることを示している。なお、実行に必要なコストは、実行に必要な時間(実行期間)やステップ数などを単位として記述することができる。また、何らかの仮想的な仕様のVPUで実行した場合の時間を単位とすることも可能である。計算機によってVPUの仕様や処理性能が異なる場合もあるので、このように仮想的な単位を設けてコストを表現するのは望ましい形態である。図8に示した構成記述117に従って実行する場合の、プログラム間のデータの流れは図9の通りである。
【0023】
さらに、構成記述117には、プログラム111〜116それぞれに対応するスレッド間の結合属性を示す結合属性情報がスレッドパラメータとして記述されている。なお、スレッドパラメータはプログラム111〜116中にコードとして直接記述することも可能である。
【0024】
次に、図10、図11を参照して、プログラム111〜116が本実施形態の計算機システムによってどのように実行されるかを説明する。ここでは、VPU0とVPU1の2つのVPU12が計算機システムに設けられている構成を想定する。毎秒30フレームで映像を表示する場合の、各VPU12に対するプログラムの割り当てを時間を追って記入したのが図10である。ここでは1周期分の時間間隔内で1フレーム分の音声と映像を出力している。まず、VPU0でDEMUXプログラムが処理を行い、その結果の音声と映像と字幕のデータをバッファに書き込む。その後VPU1でA−DECプログラムとTEXTプログラムを順次実行し、それぞれの処理結果をバッファに書き込む。VPU0では、次にV−DECプログラムが映像データの処理を行い、結果をバッファに書き込む。VPU0では、続いてPROGプログラムが処理を行い、結果をバッファに書き込む。この時点で、VPU1でのTEXTの処理は終わっているので、最後のBLENDプログラムの実行をVPU0で行い、最終的な映像データを作成する。この処理の流れを、毎周期繰り返すように実行する。
【0025】
ここで説明したように、所望の動作を滞りなく行えるように、各VPU12上で、いつ、どのプログラムを実行するかを決める作業を、スケジューリングとよぶ。スケジューリングを行うモジュールをスケジューラとよぶ。本実施形態では、プログラムモジュール100中に含まれる上述の構成記述117に基づいてスケジューリングが行われる。すなわちスケジューリング処理では、構成記述117に基づいて複数のプログラム111〜116を実行する複数のスレッドそれぞれの実行開始タイミングおよび実行期間が決定され、複数のスレッドそれぞれが1以上のVPU12に割り当てられる。プログラムモジュール100の実行時には以下の処理が行われる。
1. オペレーティングシステムはプログラムモジュール100をそれが記憶されている外部記憶装置またはメモリ13から入力し、構成記述117を読み込む。
【0026】
2. オペレーティングシステム内のスケジューラは、構成記述117に基づいてプログラムモジュール100内の複数のプログラム111〜116を実行するための複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行開始タイミングおよび実行期間を決定することにより、複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)を1以上のVPUに割り当てて実行する。
【0027】
このように、本実施形態のリアルタイム処理システムでは、プログラムモジュール100に含まれる構成記述117に基づいて、連鎖された複数のプログラム111〜116を実行する複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行開始タイミングおよび実行期間が決定されるので、プログラムのコード中に個々の処理の時間的な制約条件を詳細に記述せずとも、リアルタイム処理を実行するためのスレッド群を効率よくスケジューリングすることが可能となる。
【0028】
図11は、毎秒60フレームで表示する場合の実行の様子を示している。図10と異なるのは、図10では毎秒30フレームだったので、1周期(1/30秒)で1フレーム分の処理を完了できたのに対し、図11では毎秒60フレーム処理する必要がある点である。すなわち、1周期(1/60秒)では1フレーム分の処理を完了できないので、図11では、複数(ここでは2)周期にまたがったソフトウェアパイプライン処理を行っている。たとえば周期1のはじめに入力された信号に対して、VPU0でDEMUX処理とV−DEC処理を行う。その後、周期2においてVPU1でA−DEC、TEXT、PROG、BLENDの各処理を行って最終的な映像データを出力する。周期2ではVPU0は次のフレームのDEMUXとV−DECの処理を行っている。このように、VPU0によるDEMUX,V−DECの処理と、VPU1によるA−DEC、TEXT、PROG、BLENDの処理を、2周期にまたがってパイプライン的に実行する。このようなパイプライン処理を実行するために、プログラムモジュール100の実行時には以下の処理が行われる。
1. オペレーティングシステムはプログラムモジュール100をそれが記憶されている外部記憶装置またはメモリ13から入力し、構成記述117を読み込む。
【0029】
2. オペレーティングシステム内のスケジューラは、構成記述117に基づいてプログラムモジュール100内の複数のプログラム111〜116によって実行される複数の処理要素(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行順序の関係を判断し、複数の処理要素(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)を、先行して実行される処理要素の集合である第1処理要素グループと、それに後続して実行される処理要素の集合である第2処理要素グループとにグループ分けする。これにより、例えば、DEMUX、V−DECが第1処理要素グループに、A−DEC、TEXT、PROG、BLENDが第2処理要素グループに分類される。
【0030】
3. スケジューラは、第1処理要素グループ(DEMUX、V−DEC)および第2処理要素グループ(A−DEC、TEXT、PROG、BLEND)がパイプライン形式で周期的に実行されるように、VPU0,VPU1の少なくとも2つのプロセッサを用いて、第1処理要素グループおよび第2処理要素グループの各々に1以上のVPUを周期的に割り当てる。例えばVPU0,VPU1の2つのプロセッサによるパイプラインを実行する時には、スケジューラは、第1処理要素グループ(DEMUX、V−DEC)がVPU0によって1/60秒の時間間隔で周期的に実行されるように第1処理要素グループをVPU0に周期的に割り当てる。さらに、スケジューラは、第2処理要素グループ(A−DEC、TEXT、PROG、BLEND)が第1処理要素グループよりも1周期遅れたタイミングでVPU1によって1/60秒の時間間隔で周期的に実行されるように第2処理要素グループをVPU1に周期的に割り当てる。
【0031】
なお、例えば、第2処理要素グループをVPU1とVPU2の2つのプロセッサによって並列に実行しても良い。例えば、VPU1ではA−DEC、TEXTを実行し、それと並行してVPU1でPROG、BLENDを実行する。
【0032】
図7のプログラムモジュール100の例では、複数の処理要素(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)がそれぞれ異なるスレッドによって実行されるので、上述の処理要素グループは、スレッドグループと称することもできる。
【0033】
図7に示したプログラムモジュール100は、本実施形態の計算機システムを組み込んだ機器内のフラッシュROMやハードディスクに予め記録しておいてもよいが、ネットワークを介して流通させるようにしてもよい。この場合、本実施形態の計算機システムによって実行される処理の内容は、ネットワークを介してダウンロードしたプログラムモジュールの種類に応じて決まる。よって、例えば本実施形態の計算機システムを組み込んだ機器に、様々な専用ハードウェアそれぞれに対応するリアルタイム処理を実行させることが出来る。例えば、新しいコンテンツの再生に必要な新しいプレーヤーソフトウェアやデコーダソフトウェアや暗号ソフトウェアなどを、本実施形態の計算機システムで実行可能なプログラムモジュールとして、コンテンツと一緒に配布することで、本実施形態の計算機システムを搭載した機器であれば、いずれの機器でも、その能力が許す範囲内で、そのコンテンツを再生することができる。
【0034】
(オペレーティングシステム)
本計算機システムでは、システム内にOS(オペレーティングシステム)をひとつだけ実装する場合には、図12に示すように、そのOS201がすべての実資源(たとえば、MPU11、VPU12、メモリ14、入出力制御装置15、入出力装置16など)を管理する。
一方、仮想計算機方式を用いて、複数のOSを同時に動作させることも可能である。この場合には、図13に示すように、まず仮想計算機OS301を実装し、それがすべての実資源(たとえば、MPU11、VPU12、メモリ14、入出力制御装置15、入出力装置16など)を管理する。仮想計算機OS301はホストOSと称されることもある。さらに仮想計算機OS301の上に、ひとつ以上のOS(ゲストOSとも呼ぶ)を実装する。各ゲストOS302,303は、図14に示すように、仮想計算機OS301によって与えられる仮想的な計算機資源から構成される計算機上で動作し、ゲストOS302,303の管理するアプリケーションプログラムに各種のサービスを提供する。図14の例では、ゲストOS302は、1つのMPU11と、2つのVPU12と、メモリ14とから構成される計算機上で動いていると思っており、ゲストOS303は1つのMPU11と、4つのVPU12と、メモリ14とから構成される計算機上で動いていると思っている。ゲストOS302からみたVPU12や、ゲストOS303からみたVPU12が、実際には実資源のどのVPU12に対応しているかは、仮想計算機OS301が管理している。ゲストOS302,303は、その対応を意識する必要はない。
【0035】
仮想計算機OS301は、計算機システム全体の資源を時分割で各ゲストOS302,303に割り当てるように、ゲストOS302,303のスケジューリングを行う。例えば、ゲストOS302がリアルタイム処理を行うものであるとする。たとえば1秒間に30回、正しいペースで処理を行いたい場合には、各ゲストOS302はそのパラメタを仮想計算機OS301に設定する。仮想計算機OS301は、1/30秒に1回、確実にそのゲストOS301に必要なだけの処理時間が割り当てられるようにスケジューリングを行う。リアルタイム性を要求しない処理を行うゲストOSには、リアルタイム性を要求するゲストOSよりも低い優先度で、処理時間の割り当てを行うように、スケジューリングが行われる。図15は、時間軸を横にとって、ゲストOS302とゲストOS303が切り替わりながら動いている様子を示している。ゲストOS302が動いている間は、MPU11と全てのVPU12がゲストOS302の資源として使用され、ゲストOS303が動いている間は、MPU11と全てのVPU12がゲストOS303の資源として使用される。
【0036】
図16は別の動作モードを示している。ターゲットアプリケーションによってはVPU12をずっと占有して利用したい場合がある。たとえば、常にデータやイベントを監視し続けることが必要なアプリケーションがこれに相当する。このようなときには、特定のVPU12を特定のゲストOSによって占有するように、仮想計算機OS301のスケジューラがスケジュール管理する。図16では、VPU4をゲストOS302の専用資源に指定した場合の例である。仮想計算機OS301がゲストOS302(OS1)とゲストOS303(OS2)を切り替えても、VPU4は常にゲストOS302(OS1)の管理下で動作し続ける。
【0037】
さて、複数のVPU12を用いてプログラムを動作させるために、本実施形態では、複数のVPU12それぞれに割り当てるスレッドをスケジューリングするためのスケジューラを含む、VPU実行環境と呼ぶソフトウェアモジュールを用いる。本計算機システムにOSがひとつしか搭載されていない場合は、図17に示すようにそのOS201にVPU実行環境401を実装する。この時、VPU実行環境401は、OS201のカーネル内に実装することもできるし、ユーザプログラムレベルで実装することもできるし、両者に分割して協調して動作するように実装することも出来る。一方、仮想計算機OS上でひとつあるいは複数のOSを動作させる場合、VPU実行環境401を実装する方式には、次のような方式がある。
1.仮想計算機OS301の中にVPU実行環境401を実装する方式(図18)
2.VPU実行環境401を仮想計算機OS301が管理するひとつのOSとして実装する方式(図19)。図19では、仮想計算機OS301上で動作するゲストOS304自体がVPU実行環境401である。
3.仮想計算機OS301が管理する各ゲストOSに、それぞれ専用のVPU実行環境401を実装する方式(図20)。図20においては、ゲストOS302,303にそれぞれVPU実行環境401,402が実装されている。VPU実行環境401,402は、仮想計算機OS301の提供するゲストOS間の通信機能を用いて、必要に応じて、互いに連携して動作する。
4.仮想計算機OS301が管理するゲストOSのうちのひとつにVPU実行環境401を実装して、VPU実行環境を持たないゲストOSは、仮想計算機OS301の提供するゲストOS間の通信機能を用いて、VPU実行環境401を持つゲストOSのVPU実行環境401を利用する方式(図21)。
【0038】
これらの方式のメリットは以下のとおりである。
方式1のメリット
・仮想計算機OSの持つゲストOS(仮想計算機OSが管理する対象のOS)のスケジューリングと、VPU12のスケジューリングを一体化できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストOSを導入する場合に新しくVPU実行環境を作らなくてもよい。
方式2のメリット
・仮想計算機OSの上にあるゲストOS間でVPU12のスケジューラを共有できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストを導入する場合に新しくVPU実行環境を作らなくてもよい。
・VPU実行環境を仮想計算機OSや特定のゲストOSに依存せずに作れるので、標準化がしやすく、取り替えて使うことも出来る。特定の組み込み機器に適応したVPU実行環境を作って、その機器の特性を活かしたスケジューリング等を行うことで、効率良い実行ができる。
方式3のメリット
・各ゲストOSに対してVPU実行環境を最適に実装できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
【0039】
方式4のメリット
・すべてのゲストOSがVPU実行環境を実装する必要がないので、新しいゲストOSを追加しやすい。
このように、いずれの方式でもVPU実行環境を実装することができる。また、このほかにも適宜実施可能である。
【0040】
(サービスプロバイダ)
本実施形態の計算機システムにおいては、VPU実行環境401は、各VPU12に関連する各種資源(各VPUの処理時間、メモリ、接続装置のバンド幅、など)の管理とスケジューリング機能の他に、さまざまなサービス(ネットワークを使った通信機能、ファイルの入出力機能、コーデックなどのライブラリ機能の呼び出し、ユーザとのインタフェース処理、入出力デバイスを使った入出力処理、日付や時間の読み出し、など)を提供する。これらのサービスは、VPU12上で動作するアプリケーションプログラムから呼び出されて、簡単なサービスの場合にはそのVPU12上のサービスプログラムで処理される。しかし通信やファイルの処理などVPU12だけでは処理できないサービスに関しては、MPU11上のサービスプログラムによって処理する。このようなサービスを提供するプログラムを、サービスプロバイダ(SP)と呼ぶ。
【0041】
図22にVPU実行環境のひとつの実施例を示す。VPU実行環境の主要部分はMPU11上に存在する。これが、MPU側VPU実行環境501である。各VPU12上には、そのVPU12内で処理可能なサービスを実行する最小限の機能のみを持つVPU側VPU実行環境502が存在する。MPU側VPU実行環境501の機能は、大きく、VPUコントロール511と、サービスブローカ512の2つに分けられる。VPUコントロール512は、主に、各VPU12に関連する各種資源(VPUの処理時間、メモリ、仮想空間、接続装置のバンド幅、など)の管理機構や、同期機構や、セキュリティの管理機構や、スケジューリング機能を提供する。スケジューリング結果に基づいてVPU12上のプログラムのディスパッチを行うのは、このVPUコントロール511である。サービスブローカ512は、VPU12上のアプリケーションが呼び出したサービス要求を受けて、適当なサービスプログラム(サービスプロバイダ)を呼び出してそのサービスを提供する。
VPU側VPU実行環境502は、主に、VPU12上のアプリケーションプログラムが呼び出したサービス要求を受けて、VPU12内で処理できるものは処理し、そうでないものはMPU側VPU実行環境501のサービスブローカ512に処理を依頼する働きをする。
【0042】
図23に、VPU側VPU実行環境502がサービス要求を処理する手順を示す。VPU側VPU実行環境502はアプリケーションプログラムからのサービス呼び出しを受け取ると(ステップS101)、VPU実行環境502内で処理できるサービスであるかどうかを判別し(ステップS102)、それであれば、対応するサービスを実行して、結果を呼び出し元へ返す(ステップS103,S107)。一方、VPU実行環境502内で処理できるサービスではないならば、該当するサービスを実行可能なサービスプログラムがVPU12上で実行可能なプログラムとして登録されているかどうかを判断する(ステップS104)。登録されているならば、当該サービスプログラムを実行し、結果を呼び出し元へ返す(ステップS105,S107)。登録されていないならば、サービスブローカ512に処理を依頼し、そしてサービスブローカ512から返されるサービスの結果を呼び出し元へ返す(ステップS106,S107)。
【0043】
図24に、MPU側VPU実行環境501のサービスブローカ512が、VPU側VPU実行環境502から要求されたサービスを処理する手順を示す。サービスブローカ512はVPU側VPU実行環境502からのサービス呼び出しを受け取ると(ステップS111)、MPU側VPU実行環境501内で処理できるサービスであるかどうかを判別し(ステップS112)、それであれば、対応するサービスを実行して、結果を呼び出し元のVPU側VPU実行環境502へ返す(ステップS113,S114)。一方、MPU側VPU実行環境501内で処理できるサービスではないならば、該当するサービスを実行可能なサービスプログラムがMPU11上で実行可能なプログラムとして登録されているかどうかを判断する(ステップS114)。登録されているならば、当該サービスプログラムを実行し、結果を呼び出し元のVPU側VPU実行環境502へ返す(ステップS116,S114)。登録されていないならば、エラーを呼び出し元のVPU側VPU実行環境502へ返す(ステップS117)。
【0044】
なお、VPU12で実行するプログラムが発行するサービス要求には、サービスの実行結果のリプライを返すものもあれば、要求を出すだけでリプライの無いものもある。また、リプライ先は、通常は要求を出したスレッドであるが、リプライ先として他のスレッド、スレッドグループ、あるいはプロセスを指定することもできる。そのため、サービス要求のメッセージには、リプライ先の指定も含めることが好ましい。サービスブローカ512は、広く使われているオブジェクトリクエストブローカを用いて実現することができる。
【0045】
(リアルタイム処理)
本実施形態の計算機システムはリアルタイム処理システムとして機能する。この場合、そのリアルタイム処理システムの対象とする処理は、大きく、
1.ハードリアルタイム処理
2.ソフトリアルタイム処理
3.ベストエフォート処理(ノンリアルタイム処理)
の3種類に分類できる。1と2がいわゆるリアルタイム処理と呼ばれるものである。本実施形態のリアルタイム処理システムは、多くの既存のOSと同様、スレッドとプロセスの概念を持っている。ここではまず、本実施形態のリアルタイム処理システムにおけるスレッドとプロセスに関して説明する。
【0046】
スレッドには、次の3つのクラスがある。
1.ハードリアルタイムクラス
このスレッドクラスは、その時間要件(timing requirements)は非常に重要で、その要件が満たされなかった際に重大な状況になるような、重要なアプリケーションに用いる。
2.ソフトリアルタイムクラス
このスレッドクラスは、例えその時間要件が満たされなかった場合においても、その品質が低下するだけのアプリケーションに用いる。
3.ベストエフォートクラス
このスレッドクラスは、その要件の中に一切の時間要件を含まないアプリケーションに用いる。
【0047】
スレッドは本アルタイム処理システム内において処理を実行する実体である。スレッドには、そのスレッドが実行するプログラムが関連付けられている。各スレッドは、スレッドコンテクストと呼ぶ、それぞれのスレッドに固有の情報を保持している。スレッドコンテクストには、たとえば、プロセッサのレジスタの値や、スタックなどの情報が含まれている。
本リアルタイム処理システムにおいては、MPUスレッドとVPUスレッドの2種類のスレッドが存在する。これら2つのスレッドは、そのスレッドが実行されるプロセッサ(MPU11かVPU12)によって分類されており、スレッドとしてのモデルは全く同じである。VPUスレッドのスレッドコンテクストには、VPU12のローカルストレージ32の内容や、メモリコントローラ33の持つDMAコントローラの状態なども含む。
【0048】
複数のスレッドをその属性に応じてグループとしてまとめたものを、スレッドグループと呼ぶ。スレッドグループは、グループに含まれるスレッドすべてに対して同じ属性を与える、などの処理を効率よく簡単にできるメリットがある。ハードリアルタイムクラスまたはソフトリアルタイムクラスのスレッドグループは、密結合スレッドグループ(tightly coupled thread group)と疎結合スレッドグループ(loosely coupled thread group)の2種類に大別される。密結合スレッドグループ(tightly coupled thread group)と疎結合スレッドグループ(loosely coupled thread group)はスレッドグループに付加された属性情報(結合属性情報)によって識別される。アプリケーションプログラム内のコードまたは上述の構成記述によってスレッドグループの結合属性を明示的に指定することができる。
密結合スレッドグループは互いに協調して動作する複数のスレッドの集合から構成されるスレッドグループである。すなわち、密結合スレッドグループは、そのグループに属するスレッド群が、お互いに密接に連携して動作することを示す。密接な連携とは、例えば,頻繁にスレッド間で通信あるいは同期処理などの相互作用(interaction)を行ったり、あるいは、レイテンシ(latency)(遅延)の小さい相互作用を必要とする場合などである。一方、疎結合スレッドグループは、密結合スレッドグループに比べてそのグループに属するスレッド群間の密接な連携が不要であるスレッドグループであり、スレッド群はメモリ14上のバッファを介してデータ受け渡しのための通信を行う。
【0049】
(密結合スレッドグループ)
図25に示すように、密結合スレッドグループに属するスレッド群にはそれぞれ別のVPUが割り当てられ、各スレッドが同時に実行される。密結合スレッドグループに属するスレッドを、密結合スレッド(tightly coupled thread)と呼ぶ。この場合、密結合スレッドグループに属する密結合スレッドそれぞれの実行期間がそれら密結合スレッドの個数と同数のVPUそれぞれに対して予約され、それら密結合スレッドが同時に実行される。図25においては、ある密結合スレッドグループにスレッドA,Bの2つが密結合スレッドとして含まれており、それらスレッドA,BがそれぞれVPU0,VPU1によって同時に実行されている様子を示している。スレッドA,Bをそれぞれ別のVPUによって同時に実行することを保証することにより、各スレッドは相手のスレッドが実行されているVPUのローカルストレージや制御レジスタを通じて相手のスレッドとの通信を直接的に行うことが出来る。図26は、スレッドA,Bがそれぞれ実行されるVPU0,VPU1のローカルストレージを介してスレッドA,B間の通信が実行される様子を示している。この場合、スレッドAが実行されるVPU0においては、そのスレッドAのEA空間の一部に、通信相手のスレッドBが実行されるVPU1のローカルストレージ32に対応するRA空間がマッピングされる。このマッピングのためのアドレス変換は、VPU0のメモリコントローラ33内に設けられたアドレス変換ユニット331がセグメントテーブルおよびページテーブルを用いて実行する。スレッドBが実行されるVPU1においては、そのスレッドBのEA空間の一部に、通信相手のスレッドAが実行されるVPU0のローカルストレージ32に対応するRA空間がマッピングされる。このマッピングのためのアドレス変換は、VPU1のメモリコントローラ33内に設けられたアドレス変換ユニット331がセグメントテーブルおよびページテーブルを用いて実行する。図27には、VPU0上で実行されるスレッドAが自身のEA空間にスレッドBが実行されるVPU1のローカルストレージ(LS1)32をマッピングし、VPU1上で実行されるスレッドBが自身のEA空間にスレッドAが実行されるVPU0のローカルストレージ(LS0)32をマッピングした様子が示されている。例えば、スレッドAはスレッドBに引き渡すべきデータがローカルストレージLS0上に準備できた時点で、そのことを示すフラグをローカルストレージLS0またはスレッドBが実行されるVPU1のローカルストレージLS1にセットする。スレッドBはそのフラグのセットに応答して、ローカルストレージLS0上のデータをリードする。
【0050】
このように、結合属性情報によって密結合関係にあるスレッドを特定できるようにすると共に、密結合関係にあるスレッドA,Bがそれぞれ別のVPUによって同時に実行されることを保証することにより、スレッドA,B間の通信、同期に関するインタラクションをより軽量で且つ遅延無く行うことが可能となる。
【0051】
(疎結合スレッドグループ)
疎結合スレッドグループに属するスレッド群それぞれの実行時間は、それらスレッド群間の入出力関係によって決定され、たとえ実行順序の制約がないスレッド同士であってもそれらが同時に実行されることは保証されない。疎結合スレッドグループ属するスレッドを、疎結合スレッド(loosely coupled thread)と呼ぶ。図28においては、ある疎結合スレッドグループにスレッドC,Dの2つが疎結合スレッドとして含まれており、それらスレッドC,DがそれぞれVPU0,VPU1によって実行されている様子を示している。図28に示すように、各スレッドの実行時間はばらばらになる。スレッドC,D間の通信は、図29に示すように、メインメモリ14上に用意したバッファを介して行われる。スレッドCはローカルストレージLS0に用意したデータをDMA転送によってメインメモリ14上に用意したバッファに書き込み、スレッドDはその開始時にDMA転送によってメインメモリ14上のバッファからローカルストレージLS1にデータを読み込む。
【0052】
(プロセスとスレッド)
プロセスは,図30に示すように、一つのアドレス空間と一つ以上のスレッドから構成される。一つのプロセスに含まれるスレッドの数と種類は,どのような組み合わせでも構わない。例えば,VPUスレッドのみから構成されるプロセスも構築可能であるし,VPUスレッドとMPUスレッドが混在するプロセスも構築可能である。スレッドがスレッド固有の情報としてスレッドコンテクストを保持しているのと同様に,プロセスもプロセス固有の情報としてプロセスコンテクストを保持する。このプロセスコンテクストには,プロセスに固有であるアドレス空間と,プロセスが含んでいる全スレッドのスレッドコンテクストが含まれる。プロセスのアドレス空間は,プロセスに属するすべてのスレッド間で共有することができる。一つのプロセスは,複数のスレッドグループを含むことができる。しかし,一つのスレッドグループが複数のプロセスに属することはできない。このため,あるプロセスに属するスレッドグループは,そのプロセスに固有であるということになる。本実施形態のリアルタイム処理システムにおいて、スレッドを新しく生成する方式には、Thread first modelとAddress space first modelの2種類がある。Address space first modelは既存のOSで採用されているのと同様の方式で、MPUスレッドにもVPUスレッドにも適用できる。一方、Thread first modelはVPUスレッドにしか適用できない方式で、本発明のリアルタイム処理システムに特有の方式である。Thread first modelでは,既存のスレッド(新しくスレッドを作りたいと思っている側のスレッド。新しく作るスレッドの親になるスレッドのこと。)は,まず新規スレッドが実行するプログラムを指定して,新規スレッドにプログラムの実行を開始させる。この時、プログラムはVPU12のローカルストレージに格納され、所定の実行開始番地から処理が開始される。この時点では、この新規スレッドにはアドレス空間が関連付けられていないので、自身のローカルストレージはアクセスできるが、メモリ14はアクセスできない。その後,新規スレッドは,必要に応じて自身でVPU実行環境のサービスを呼び出してアドレス空間を生成して関連付けたり、MPU11側の処理によってアドレス空間を関連付けられたりして、メモリ14にアクセスできるようになる。Address space first modelでは,既存のスレッドは,新しくアドレス空間を生成するか、あるいは既存のアドレス空間を指定して、そのアドレス空間に新規スレッドが実行するプログラムを配置する。そして新規スレッドにそのプログラムの実行を開始させる。Thread first modelのメリットは、ローカルストレージだけで動作するので、スレッドの生成やディスパッチや終了処理などのオーバーヘッドを小さくできることである。
【0053】
(スレッド群のスケジューリング)
次に、図31のフローチャートを参照して、VPU実行環境401によって実行されるスケジューリング処理について説明する。VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群にスレッドグループ単位で付加されている結合属性情報に基づいて、スレッド間の結合属性をチェックし(ステップS121)、各スレッドグループ毎にそのスレッドグループが密結合スレッドグループおよび疎結合スレッドグループのいずれであるかを判別する(ステップS122)。結合属性のチェックは、プログラムコード中のスレッドに関する記述あるいは上述の構成記述117中のスレッドパラメータを参照することによって行われる。このようにして、密結合スレッドグループおよび疎結合スレッドグループをそれぞれ特定することにより、スケジュール対象のスレッド群は密結合スレッドグループと疎結合スレッドグループとに分離される。
【0054】
密結合スレッドグループに属するスレッド群に対するスケジューリングは次のように行われる。すなわち、VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群から選択された密結合スレッドグループに属するスレッド群がそれぞれ別のVPUによって同時に実行されるように、その密結合スレッドグループに属するスレッド群と同数のVPUそれぞれの実行期間を予約し、スレッド群をそれら予約したVPUそれぞれに同時にディスパッチする(ステップS123)。そして、スケジューラは、各スレッドが実行されるVPU内のアドレス変換ユニット331を用いて、各スレッドのEA空間の一部に、協調して相互作用を行う相手となる他のスレッドが実行されるVPUのローカルストレージに対応するRA空間をマッピングする(ステップS124)。一方、スケジュール対象のスレッド群から選択された疎結合スレッドグループに属する疎結合スレッド群については、スケジューラは、それらスレッド群間の入出力関係に基づいてそれらスレッド群を1以上のVPUに順次ディスパッチする(ステップS125)。
【0055】
(スレッドの状態遷移)
一般にスレッドは、生成されてから消滅するまで、たとえば図32に示すような状態遷移を行う。図32の例では、以下の7種類の状態を遷移する。
1.NOT EXISTENT状態
論理的な状態であり,有効なスレッドでは,この状態はない。
2.DORMANT状態
スレッドは生成されているが,まだ実行は開始されていない。
3.READY状態
スレッドが,その実行を開始する準備ができている状態。
4.WAITING状態
スレッドが,実行を開始(再開)するための条件が満たされることを待っている状態。
5.RUNNING状態
スレッドが,実際にVPUまたはMPU上で実行されている状態。
6.SUSPENDED状態
VPU実行環境や他のスレッドにより,スレッドが強制的にその実行を中断させられている状態。
7.WAITING−SUSPENDED状態
WAITING状態とSUSPENDED状態が重なった状態。
【0056】
これらの7つの状態の間の遷移条件と、その遷移に伴うスレッドコンテクストの扱いは、以下のようになる。
<NOT EXISTENT状態からDORMANT状態への遷移>
・スレッドの作成によって遷移する。
・スレッドコンテクストが作成される。ただしコンテクストの中身は初期状態である。
<DORMANT状態からNOT EXISTENT状態への遷移>
・スレッドの削除によって遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によって,保存されていたコンテクストは破棄される。
<DORMANT状態からWAITING状態への遷移>
・スレッドが,実行環境に対してスレッドのスケジューリングをリクエストすると,スレッドの状態は,DORMANT状態からWAITING状態へ遷移する。
<WAITING状態からREADY状態への遷移>
・スレッドが,生起するのを待っていたイベント(例えば,同期や通信,タイマなど)が,生起した場合に,スレッドの状態はWAITING状態からREADY状態へ遷移する。
【0057】
<READY状態からRUNNING状態への遷移>
・スレッドが,実行環境によってMPUまたはVPUにディスパッチされると,スレッドの状態は,READY状態からRUNNING状態へ遷移する。
・スレッドコンテクストがロードされる。また,スレッドコンテクストが退避されていた場合には,復元される。
<RUNNING状態からREADY状態への遷移>
・スレッドが,スレッドの実行を横取りされると,スレッドの状態は,RUNNING状態からREADY状態へ遷移する。
【0058】
<RUNNING状態からWAITING状態への遷移>
・スレッドが,同期や通信などの機構を利用し,イベントを待つために自身の実行を中断した場合,スレッドの状態は,RUNNING状態からWAITING状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からWAITING状態へ遷移する際に,実行環境によって,そのスレッドのスレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り保持され,次にこのスレッドがRUNNING状態に遷移した時に復元される。
<RUNNING状態からSUSPENDED状態への遷移>
・スレッドが,実行環境や他のスレッドからの指示などによって,強制的にその実行を中断させられた場合,スレッドの状態は,RUNNING状態からSUSPENDED状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からSUSPEND状態へ遷移する際に,実行環境によって,スレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り,次にこのスレッドがRUNNING状態に遷移した時に復元される。
【0059】
<RUNNING状態からDORMANT状態への遷移>
・スレッドは,スレッド自身でその実行を終了した場合に,RUNNING状態からDORMANT状態へ遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によってコンテクストの内容が破棄される。
<WAITING状態からWAITING−SUSPENDED状態への遷移>
・スレッドがWAITING状態にてイベントなどの生起を待っている最中に,外部から強制的にスレッドの実行を中断された場合,スレッドの状態は,WAITING状態からWAITING−SUSPENDED状態へ遷移する。
<WAITING−SUSPENDED状態からWAITING状態への遷移>
・スレッドが,WAITING−SUSPENDED状態にいる最中に,外部からスレッドの実行を再開された場合,スレッドの状態はWAITING−SUSPENDED状態からWAITING状態へ遷移する。
【0060】
<WAITING−SUSPENDED状態からSUSPENDED状態への遷移>
・スレッドは,スレッドがWAITING状態にいた時に待っていたイベントが生起した場合に,スレッドの状態は,WAITING−SUSPENDED状態からSUSPENDED状態へ遷移する。
【0061】
<SUSPENDED状態からREADY状態への遷移>
・スレッドが,外部からスレッドの実行を再開させられた時に,スレッドの状態は,SUSPENDED状態からREADY状態へ遷移する。
【0062】
<READY状態からSUSPENDED状態への遷移>
・スレッドが,外部環境によってスレッドの実行が中断させられた場合に,スレッドの状態は,READY状態からSUSPENDED状態へ遷移する。
【0063】
(スレッドの実行期間)
スレッドに実際にVPUが割り当てられて処理を実行しているRUNNING状態の期間を、実行期間(execution term)と呼ぶ。一般にスレッドが生成されてから消滅するまでの間には、スレッドは複数の実行期間を持つ。図33はあるスレッドの生成から消滅までの時間軸に沿った状態の変化の例を示しているが、この例では、その生存期間中に、2回の実行期間があることを示している。実行期間と実行期間との間のコンテクストの保存(save)や復元(restore)は、さまざまな方法を用いて実現することができる。たとえば、多くの通常のスレッドは、実行期間が終了した時点のコンテクストを保存しておいて、次の実行期間の初めにそのコンテクストを復元するように動作させる。一方、ある種の周期的な(periodic)処理においては、全ての周期(period)において、実行期間の開始時には新しいコンテクストを作成してその実行期間中はそのコンテクストを使って実行を進め、実行期間の終了時にはそのコンテクストは廃棄するように動作させる。
【0064】
(密結合スレッドグループに属するスレッドの実行期間)
密結合スレッドグループに属するスレッドの場合の実行期間は、たとえば図34のようになる。すなわち、密結合スレッドグループに属するすべてのスレッドは、ある一つの実行期間において、全てのスレッドが同時に実行されるように、VPU実行環境401によってスケジューリングされる。このような密結合スレッドグループは、主としてハードリアルタイムスレッドに対して使用される。そのため、この動作を実現するために、VPU実行環境401は、ハードリアルタイムクラスにおける実行期間を予約するときに、同時に使用するプロセッサとその数を指定する。さらに、VPU実行環境401は、予約するそれぞれのプロセッサに対して、一対一に同時実行させるスレッドのコンテクストを対応させる。
【0065】
なお、ある期間において密結合スレッドグループに属していた複数のスレッドは、他の実行期間においては、密結合の関係を解消して、各スレッドが別々に動作することもできる。このような場合には、各スレッドは、今、密結合スレッドとして動作しているのか、あるいは、別々に動作しているのかを意識して、相手のスレッドとの通信や同期等の処理を行う必要がある。各スレッドには、横取り可能(preemptive)か横取り不可(non−preemptive)を示すプリエンプションに関連した属性が与えられる。Preemptiveとは、スレッドの実行期間中に、そのスレッドが横取りされることを許す、すなわち、実行を停止させることができるという属性である。Non−preemptiveとは、スレッドの実行期間中に、そのスレッドが横取りされないことを保障するという属性である。この横取り不可(non−preemptive)という属性の意味は、スレッドのクラス間で異なる。ハードリアルタイムクラスでは、スレッドが実行を開始すると、実行期間が終わるまで、そのスレッド自身以外、誰もその実行を止めることが出来ないことを意味する。ソフトリアルタイムクラスでは、そのクラスにとって、横取り可能性(preemptive−ness)は必要不可欠であるため、横取り不可の属性はサポートされない。ベストエフォートクラスでは、スレッドの実行は、他のベストエフォートクラスからの横取りからは保護されるものの、ハードリアルタイムやソフトリアルタイムクラスといったより高いレベルからは、横取りされる。
【0066】
(スレッドの実行モデル)
スレッドの実行モデルは、大きく、図35に示すような周期実行モデルと、図36に示すような非周期実行モデルの2つに分類できる。周期実行モデルでは、スレッドは周期的(periodically)に実行される。その一方、非周期実行モデルでは、イベントを起点としてその実行が行われる。周期実行モデルの実装方式には、ソフトウェア割込みを用いる方式と、同期機構(synchronization primitives)のようなイベントオブジェクトを用いる方式がある。ハードリアルタイムクラスでは、ソフトウェア割込みを用いて実装する。すなわち、VPU実行環境401は、周期的な処理を開始するタイミングで、所定の方法で決定されるスレッドのエントリポイントへジャンプしたり、あるいは、事前に所定の手順で登録されたコールバック関数を呼び出す。ソフトリアルタイムクラスでは、イベントオブジェクトを用いて実装する。すなわち、各周期において、あらかじめ登録されたイベントオブジェクトに対して、たとえばVPU実行環境401がイベントを通知するので、ソフトリアルタイムスレッドは、毎周期そのイベントオブジェクトを待ち、イベントが発生したら所定の処理を実行するようにプログラムを構成することで、周期実行モデルを実現する。ベストエフォートクラスの場合は、ソフトウェア割込みを用いる方式を用いても、イベントオブジェクトを用いる方式を用いても、周期実行モデルを実装できる。なお、実際の実行は、それぞれの周期の先頭で常に開始されるとは限らず、制約条件(constraints)の範囲内で、状態に応じて遅らされることもある。
【0067】
非周期実行モデルは、イベントモデルを用いると、周期実行モデルと同様に実現できる。すなわち、ソフトリアルタイムやベストエフォートクラスでは、非周期実行モデルは、イベントが通知されるタイミングが異なるだけで、実装手法上は周期実行モデルと同じになる。ハードリアルタイムクラスの場合は、時間要件を保障するために必要な、最小発生期間(minimum inter−arrival time)やデットラインは、システムの振る舞いを強く制約するため、非周期実行は制限される。
【0068】
(コンテクストの切り替え)
本実施形態のリアルタイム処理システムにおいては、VPUスレッドの実行期間の終了に伴うコンテクストの切り替え方式は、複数の方式から選択することができる。VPUのコンテクスト切り替えのコストは非常に大きいので、その方式を選択できるようにすることで、コンテクスト切り替えの効率を向上させることができる。指定したコンテクスト切り替え方式は、スレッドの予約された実行期間が終了した際に用いられるものである。実行期間中のコンテクスト切り替え、すなわち、いわゆるプリエンプションの際には、どの様な場合においても現在のスレッドの全てのコンテクストを保存して、次に実行再開するときに復元する必要がある。本実施形態のリアルタイム処理システムで提供するVPUコンテクスト切り替えの方式には、たとえば、以下のような方式がある。
【0069】
1.コンテクストの破棄
いかなるコンテクストも保存しない。
2.完全なコンテクストの保存
VPUのレジスタ、ローカルストレージ、およびメモリコントローラ内のDMAコントローラの状態を含む、VPUの完全なコンテクストを保存する。
3.Gracefulコンテキスト保存
VPUのメモリコントローラ内のDMAコントローラが実行中の全ての動作が完了するまでコンテクスト切り替えを遅延する。その後、VPUのレジスタとローカルストレージの内容を保存する。この方式では、完全なコンテクスト保存と同様、VPUのコンテクストの全てが保存される。
【0070】
スレッドのスケジューリングを行うスケジューラは、MPUスレッドとVPUスレッドの両方をスケジューリングするひとつのスケジューラとして実装することもできるし、MPUスレッド用のスケジューラとVPUスレッド用のスケジューラを別に実装することもできる。MPUとVPUではコンテクスト切り替えのコストが異なるため、別々にそれぞれに適したスケジューラを実装するほうが効率よくなる。
【0071】
(ハードリアルタイムクラスのスケジューリング)
ハードリアルタイムクラスのスレッド群のスケジューリングは、タスクグラフを拡張した予約グラフを用いて行われる。図37はタスクグラフの例である。タスクグラフは、タスク間の関係を表す。タスク間の矢印は、タスク間の依存関係(入出力関係)を示している。図37の例では、タスク1とタスク2は、自由に実行を開始することが出来ることを表している。それに対し、タスク3は、タスク1とタスク2両方の実行終了後に始めて実行を開始することが出来ることを表している。また、タスク4とタスク5は、タスク3の実行終了後に実行を開始することが出来ることを表している。タスクグラフにはコンテクストの概念がない。例えば、タスク1とタスク4とを同じコンテクストを用いて実行したい場合に、それを記述することができない。そこで、本実施形態のリアルタイム処理システムでは、以下のようにしてタスクグラフを拡張した予約グラフを用いる。
【0072】
まず、タスクグラフを、タスクではなく実行期間の間の関係を示すものととらえる。そして、それぞれの実行期間に、コンテクストを関係付けることで、そのコンテクストに対応するスレッドが、その実行期間に実行されることを示す。複数の実行期間に同じコンテクストが関係付けられると、それら全ての実行期間において、そのスレッドが実行されることを示す。例えば、図38では、スレッド1のコンテクストが実行期間1と2とに関係付けられており、スレッド1は、実行期間1と2の期間で実行されることを示す。さらに、グラフに用いられる実行期間の間の矢印に、実行環境にて保障されるハードリアルタイムの制約条件を表す属性を付加する。このようにして作成した予約グラフを用いて、リアルタイムシステムアプリケーションのモデルを一切修正することなく、処理モデルとその処理が持つ時間要件などの制約条件を記述することが可能になる。図39に、図38をベースに作成した予約グラフの例を示す。図39でコンテクスト1,2,3は、それぞれ図38のスレッド1,2,3のコンテクストを示している。
【0073】
(ソフトリアルタイムクラスのスケジューリング)
ソフトリアルタイムクラスのスケジューリングは、スレッドの実行形態を予測可能とするために、固定優先度スケジューリングを用いて実行される。そのスケジューリング方式としては、固定優先度FIFOスケジューリングと固定優先度ラウンドロビンスケジューリングの2種類のスケジューリングアルゴリズムを用意する。優先度の高いスレッドの実行を優先するため、低い優先度のスレッドが実行中であっても、より高い優先度のスレッドが実行可能になった場合には、低優先度のスレッドの実行をプリエンプトし、直ちに高優先度のスレッドの実行を開始する。クリティカルセクション(critical section)の実行時に発生する、優先度逆転問題を避けるため、優先度継承プロトコルや、優先度シーリングプロトコルなどの同期機構を併せて実施するのが望ましい。
【0074】
(ベストエフォートクラスのスケジューリング)
ベストエフォートクラスのスケジューリングは、たとえば、動的優先度スケジューリングなどを用いる。
【0075】
(階層型スケジューラ)
VPU実行環境401内のスケジューリング機能は、図40に示すような階層型のスケジューラとして実施することができる。すなわち、スレッドレベルのスケジューリングは、スレッドクラス間(inter−class)スケジューリングと、スレッドクラス内(intra−class)スケジューリングの、2つの階層により構成する。そのため、VPU実行環境401内のスケジューラは、スレッドクラス内(intra−class)スケジューリング部601と、スレッドクラス間(inter−class)スケジューリング部602とを持つ。スレッドクラス間スケジューリングでは、スレッドクラス間を跨るスケジューリングを行う。スレッドクラス内スケジューリングでは、それぞれのスケジューリングクラスごとに、そのスケジューリングクラスに属するスレッドのスケジューリングを行う。スレッドクラス内(intra−class)スケジューリング部601には、ハードリアルタイム(ハードRT)クラススケジューリング部611、ソフトリアルタイム(ソフトRT)クラスケジューリング部612、ベストエフォートクラスケジューリング部613が設けられている。
【0076】
スレッドクラス間スケジューリングとスレッドクラス内スケジューリングは、階層構造をなしており、まず、スレッドクラス間スケジューリングが動作して、どのスレッドクラスを実行するか決定した後、該当するスレッドクラス内スケジューリングによって、そのスレッドクラス内のどのスレッドを実行するかを決定する。スレッドクラス間スケジューリングは、プリエンプト可能な固定優先度スケジューリングを用いる。このとき、ハードリアルタイムクラスが最高優先度を持ち、ソフトリアルタイムクラス、ベストエフォートクラスの順に優先度が低くなるようにする。低優先度クラスのスレッドは、より優先度の高いクラスのスレッドが実行可能(ready)になると、その実行はプリエンプトされる。スレッドクラス間の同期は、VPU実行環境401によって提供される同期プリミティブによって実現する。このとき特に、ハードリアルタイムスレッドにはブロックすることのないプリミティブのみ使用できるようにして、ハードリアルタイムスレッドのブロックが発生しないようにする。また、ベストエフォートスレッドがソフトリアルタイムスレッドをブロックした場合には、そのベストエフォートスレッドは、ソフトリアルタイムスレッドとして扱うことで、スレッドクラス間の優先度逆転の発生を防止するようにする。さらに、そのベストエフォートスレッドが、他のソフトリアルタイムスレッドによってブロックされるような場合には、優先度継承プロトコルなどの方式を用いてブロックされないようにする。
【0077】
(スレッドパラメタ)
本実施形態のリアルタイム処理システムでは、さまざまなパラメタを用いてスケジューリングを行う。各クラスのスレッドに共通のパラメタには、たとえば以下のようなものがある。
・スレッドのクラス(ハードリアルタイム、ソフトリアルタイム、ベストエフォート)
・使用するリソース(MPUもしくはVPUの数、バンド幅、物理メモリサイズ、入出力デバイス)
・優先度
・横取り可能(preemptive)か横取り不可(non−preemptive)か
さらにハードリアルタイムクラスのスレッドに関しては、たとえば以下のようなパラメタがある。
【0078】
・実行期間
・デッドライン
・周期あるいは最小発生期間(minimum inter−arrival time)
・VPUのコンテクスト切り替え方式
図41にハードリアルタイムクラスの基本的なパラメタの例を示す。図41の一番上にある例1の実行期間の予約指定の例では、指定した実行期間の間、MPUを1つ、VPUを2つ同時に予約し、VPUのコンテクストを完全に保存することを指定している。この場合、3つのプロセッサ上で同時にスレッドが実行され、その実行期間終了後に、MPUスレッドに加え、VPUスレッドのコンテクストが完全に保存される。次に、右上にある例2では、VPU数とその実行期間によって表現される処理が、デッドラインより以前に実行されることを保障する際の、デッドラインの指定方法を示している。デッドラインは、予約リクエストを行った時刻(request time)からの相対時刻で指定される。もっとも下にある例3では、周期実行を指定している。この例では、2つのVPU12を指定した実行期間が、周期的に実行され、また、各周期の実行後にVPUスレッドのコンテクストが破棄され、全ての処理が新しいコンテクストで処理されること示している。さらに、その周期の先頭からの相対時刻を用いてデッドラインを指定している。
【0079】
ハードリアルタイムクラスで用いる別のパラメタとして、たとえば以下に示すような制約条件がある。
・タイミング制約(絶対タイミング制約、相対タイミング制約)
・先行制約
・相互排他制約
タイミング制約は、実行タイミングを遅らせる手段を提供する。絶対タイミング制約は、図42に示すように、例えば周期の開始時刻のような、ある静的なタイミングを基準として遅延時間を指定する制約条件である。相対タイミング制約は、図43に示すように、例えば他の実行期間の開始時刻や終了時刻のような、動的なタイミングやイベントを基準として許容可能な遅延時間を指定する制約条件である。先行制約は、相対タイミング制約を用いて、他の実行期間の終了時間を基準にし、その遅延時間を0以上と指定することで実現できるので、先行制約は相対タイミング制約の特殊な場合と考えることができる。
【0080】
相互排他制約(mutual exclusive)は、図44に示すように、それぞれの実行期間が、時間的に重ならないことを保障する制約である。相互排他制約を用いることによって、ロックによって発生するスレッド実行時間の予測不可能性を削減することが可能になる。すなわち、あるリソースを共有する全てのスレッドが同時に実行されないようにして、そのリソースに関するロックをなくすことができる。
【0081】
(スレッドの同期機構)
本実施形態のリアルタイム処理システムでは、スレッドの同期機構として、たとえば以下のような手段を用いる。
【0082】
・セマフォ
・メッセージキュー
・メッセージバッファ
・イベントフラグ
・バリア
・ミューテックス
その他の同期プリミティブも、これらと同様に用いることができる。このような同期機構を実現する手段として、本発明のリアルタイム処理システムでは、次の3通りの方式がある。
【0083】
・メモリ(主記憶)13あるいはVPUのローカルストレージ32上に、たとえばTEST&SETのような命令を使って実現する
・メールボックスやシグナルレジスタなどのハードウェア機構を使って実現する
・VPU実行環境がサービスとして提供する機構を利用する
これらの実現手段の異なる同期機構は、それぞれ得失を持っているため、それを利用するスレッドの属性等によって、たとえば図45のように使い分けるのが望ましい。すなわち、MPUやVPUが共有してアクセスできるメモリ13(主記憶MS)を使って実装した同期機構は、すべてのクラスのスレッドで使用できる。それに対して,VPU12のローカルストレージLS上に実装した同期機構は、密結合スレッドグループ(tightly coupled thread group)に属するスレッドのみが使うことができる。これは、密結合スレッドグループに属するスレッドのみが,同期相手のスレッドが同時に動作していることを保障されるからである。例えば,相手のスレッドが動作しているVPUのローカルストレージ上に実装した同期機構を用いる場合、密結合スレッドグループのスレッドであれば、同期機構を使う時点で、相手のスレッドが動作していることが保障されているので、その相手スレッドを実行しているVPUのローカルストレージに同期機構のための情報が必ず存在する。
【0084】
メモリ(主記憶MS)やローカルストレージLS以外の手段を用いて実装した同期機構としては、ハードウェア機構を使って実現する場合と、VPU実行環境401のサービスを使う場合がある。密結合スレッドグループに属するスレッド、あるいはハードリアルタイムクラスのスレッドは,速い同期機構が必要であるので、ハードウェア機構を用いて実装した同期機構を用いるのが望ましい。それに対して,疎結合スレッドグループに属するスレッド、あるいはソフトリアルタイムクラスと,ベストエフォートクラスのスレッドは,実行環境が提供する機構を利用するのが望ましい。
【0085】
(同期機構の自動選択)
本実施形態のリアルタイム処理システムでは、上記の同期機構を、スレッドの属性や状態に合わせて自動的に選択・切り替えを行うことができる。これは例えば図46に示すような手順により、同期処理を行いたいスレッドが密結合スレッドグループに属している状態の間は(ステップS201のYES)、メモリ14あるいはVPU12のローカルストレージ32あるいはハードウェア機構を用いて実装された高速な同期機構を用いるが(ステップS202,S203,S204,S205)、スレッドの状態が変化して密結合関係になくなった状態では(ステップS201のNO)、メモリ14上に実装された同期機構化あるいはVPU実行環境401のサービスとして提供されている同期機構を用いるように同期機構を切り替える(ステップS206,S207,S208)。
この切り替え手段は、VPU12上で動作するプログラムに対して、ライブラリの形式で提供するようにしても良いし、VPU12側のVPU実行環境502の提供するサービスとして提供することもできる。複数の同期機構を切り替える方式としては、あらかじめ複数の同期機構を確保しておいて、それを使い分けるようにすることもできるし、切り替えを行う時点で新しく同期機構を確保するようにすることもできる。
【0086】
VPU12のローカルストレージを用いた同期機構は、密結合スレッドグループに属するスレッド間のように、同期処理を行う時点で、同期機構を実装しているVPU12のローカルストレージが必ず有効になっている必要がある。この制限を緩和する方式としては、スレッドが実行中(RUNNING状態)で無い場合には、そのスレッドを最後に実行していたときのローカルストレージの内容をメモリに保存しておき、そのスレッドに対応付けられたローカルストレージを指すページテーブルあるいはセグメントテーブルのエントリからは、その保存したメモリ領域を指すようにマッピングを制御する。この方式により、相手のスレッドが実行中でなくても、相手のスレッドに対応付けられたローカルストレージがあたかもあるように、スレッドの実行を続けることができる。実行中で無かったスレッドが、VPU12を割り当てられて実行を始めるときには、メモリ14に保存していた内容を、再びローカルストレージに戻して、対応するページテーブルあるいはセグメントテーブルのマップを変更する。このように、VPU12のローカルストレージのバックアップコピーに対しても動作可能なように同期機構を実装しておくことで、密結合スレッドグループに属するスレッドでなくても、VPU12のローカルストレージを用いて実装した高速な同期機構を利用できるようになる。
【0087】
(予約グラフ)
図47は、図9に例として示した処理フローに対応する予約グラフを示したものである。図47において、6つの四角い箱は実行期間(execution term)を表している。各実行期間の四角の左上の番号は予約する実行期間のIDであり、実行期間の四角の中の記号は、その実行期間に対応付けられているスレッドコンテクストの識別子である。実行期間の四角の下の数値は、その実行期間の長さ(コスト)を表している。実行期間の四角の間を結ぶ矢印は、ここではすべて先行制約を表している。すなわち、矢印が入る実行期間は、必ず矢印が出ている実行期間が終わった後で実行を開始することを示している。これにより、実行期間間の連鎖が表現される。また、矢印に添えられている番号はその矢印で結ばれた実行期間の間でデータの受け渡しに使うバッファのIDを表しており、番号と共に添えられている数値はバッファのサイズを表している。図47に示した予約グラフに従って処理を実行するための手順は、以下のようになる。
【0088】
1.DEMUXプログラム111を実行するスレッドコンテクストを作成して、その識別子をDEMUXとする。
2.A−DECプログラム112を実行するスレッドコンテクストを作成して、その識別子をA−DECとする。
3.V−DECプログラム113を実行するスレッドコンテクストを作成して、その識別子をV−DECとする。
4.TEXTプログラム114を実行するスレッドコンテクストを作成して、その識別子をTEXTとする。
5.PROGプログラム115を実行するスレッドコンテクストを作成して、その識別子をPROGとする。
6.BLENDプログラム116を実行するスレッドコンテクストを作成して、その識別子をBLENDとする 。
【0089】
7.図48に示すようなデータ構造の予約リクエストを作成し、VPU実行環境401に渡して予約を行う。
ここで手順1から6までのスレッドコンテクストの作成は、スレッドとして実行したいプログラムを指定してVPU実行環境401に依頼すると、VPU実行環境401が必要な資源を割り当ててスレッドコンテクストを作成し、そのハンドルを返してくるので、それを識別子と関連付けている。
【0090】
図48の予約リクエストは、BUFFERと書かれたバッファデータと、TASKと書かれた実行期間データから構成される。バッファデータは、実行期間の間でデータを受け渡すために用いるメモリ14上のバッファを宣言するもので、Id:にバッファ番号を、Size:にバッファサイズを、SrcTask:にデータを書き込む実行期間の番号を、DstTask:にデータを読み出す実行期間の番号を持つ。実行期間データは、Id:に実行期間番号を、Class:にスレッドクラス(VPUはVPUスレッドであることを示し、HRTはハードリアルタイムクラスであることを示す。他に、MPUスレッドを示すMPUや、ソフトリアルタイムクラスを示すSRTや、ベストエフォートクラスを示すBSTなどがある)を、ThreadContext:にこの実行期間に対応付けるスレッドコンテクストを、Cost:にこの実行期間の長さあるいはコストを、Constraint:にこの実行期間を基準とする各種の制約を、InputBuffer:にこの実行期間で読み出すバッファの識別子のリストを、OutputBuffer:にこの実行期間で書き込むバッファの識別子のリストを持つ。Constraint:には、先行制約を示すPrecedence:や、絶対タイミング制約を示すAbsoluteTiming:や、相対タイミング制約を示すRelativeTiming:や、排他制約を示すExclusive:などを指定でき、それぞれ制約の相手になる実行期間の番号のリストを持つ。
【0091】
図48の予約リクエストで予約したバッファ領域は、VPU実行環境401が、バッファにデータを書き込むスレッドの実行開始時に割り当て、データを読み出すスレッドの実行終了時に解放する。割り当てられたバッファのアドレスは、たとえばスレッドの起動時にあらかじめ決まっているアドレスあるいは変数あるいはレジスタなどを用いて、スレッドに通知することができる。本実施形態のリアルタイム処理システムでは、図7に示したようなプログラムモジュール100が与えられたときに、その中にある、図8に示すような構成記述117を読み込んで、それに基づいて、上記の手順でスレッドコンテクストの生成と図48の予約リクエストの作成・発行を行って、そのプログラムモジュール100の実行を行う機能を提供する。この機能により、図7のようなプログラムモジュール100によって記述された専用ハードウェアの処理を、複数のプロセッサによるソフトウェア処理によって実現することが可能となる。実現したいハードウェア毎に図7のような構造を持つプログラムモジュールを作成して、それを本実施形態のリアルタイム処理システムに準拠した機能が組み込まれた機器で実行することにより、当該機器を所望のハードウェアとして動作させることが可能となる。
【0092】
図48に示す予約リクエストが与えられると、VPU実行環境401は、各実行期間を周期内のどのタイミングでどのVPU12で実行するかを決める。これがスケジューリングである。本実施形態のリアルタイム処理システムが組み込まれる電子機器の種類によっては、実際には、このような予約リクエストが同時に複数与えられることもあるので、それらが矛盾ないように(与えられた制約が満たされないことがないように)処理のタイミングが決定される。例えば、図49に示すように、VPU12が2つあるときに、図48の予約リクエストだけが入っていたとすると、DEMUX、V−DEC、PROG、BLENDの並行に実行できない処理をVPU0で順次実行し、DEMUXの実行後に並行して動作できるA−DECとTEXTをVPU1で実行するようにスケジューリングする。
【0093】
(ソフトウェアパイプライン)
ここでもし、ひとつの周期内で一連の処理要素DEMUX、V−DEC、PROG、BLENDを全て順次実行できるだけの時間がない場合には、複数の周期にまたがるようにソフトウェアパイプライン化を行う。例えば図50に示すように、最初の周期1ではDEMUXとV−DECをVPU0で行い、次の周期2でA−DEC、TEXT、PROG、BLENDの処理をVPU1で行うようにする。この周期2では、A−DEC、TEXT、PROG、BLENDの処理と並行して、次のフレームのDEMUXとV−DECがVPU0によって実行される。すなわち、図51に示すように、VPU0がDEMUXとV−DECを実行している間、VPU1では前の周期のDEMUXとV−DECの出力を受けたA−DEC、TEXT、PROG、BLENDが動くという具合に、パイプライン処理を行う。
【0094】
図52のフローチャートには、ソフトウェアパイプラインを実現するためのスケジューリング処理の手順が示されている。
VPU実行環境401は、まず、逐次処理が必要な一連のスレッド群(DEMUX、V−DEC、PROG、BLEND)の全てをひとつの周期内で実行できるか否かを判別する(ステップS201)。1周期の値は、プログラムモジュール100の実行条件としてVPU実行環境401に対して予め設定されている。もちろん、構成記述117に周期の値を明示的に記述することもできる。ステップS201では、DEMUX、V−DEC、PROG、BLENDそれぞれのコストに基づいてそれらDEMUX、V−DEC、PROG、BLENDの総実行期間が予測される。そして、その予測値と周期の値とが比較される。
【0095】
もし一連のスレッド群(DEMUX、V−DEC、PROG、BLEND)がひとつの周期内で実行できないと判別されたならば(ステップS201のNO)、VPU実行環境401は、プログラムモジュール100を実行するための全てのスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)を、それらスレッド間の実行順序の関係に基づいて、逐次処理可能な連続する2つのグループ(以下、第1スレッドグループ、第2スレッドグループと称する)にグループ分けする(ステップS202)。第1スレッドグループは先行して実行される1以上のスレッドの集合であり、第2スレッドグループは第1スレッドグループに後続して実行される1以上のスレッドの集合である。本例では、スレッド間の先行制約の条件が満たされ、且つ第1スレッドグループおよび第2スレッドグループの各々の総実行期間が一つの周期に対応する時間間隔以下になるように、DEMUX、V−DECが第1スレッドグループに、A−DEC、TEXT、PROG、BLENDが第2スレッドグループに分類される。
【0096】
VPU実行環境401は、第1スレッドグループ(DEMUX、V−DEC)がVPU0によって1/60秒の時間間隔で周期的に実行されるように、第1スレッドグループに属する各スレッドの実行期間をVPU0に周期的に割り当てる(ステップS203)。ステップS203では、DEMUX、V−DECの各々の周期実行がVPU0に対して予約される。次いで、VPU実行環境401は、第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)が第1スレッドグループよりも1周期分遅れたタイミングでVPU1によって1/60秒の時間間隔で周期的に実行されるように、第2スレッドグループに属する各スレッドをVPU1に周期的に割り当てる(ステップS204)。ステップS203では、A−DEC、TEXT、PROG、BLENDの各々の周期実行がVPU1に対して予約される。
これにより、第1スレッドグループ(DEMUX、V−DEC)と第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)とがVPU0,VPU1の2つのプロセッサによってパイプライン形式で実行される。この結果、ある周期における第1スレッドグループ(DEMUX、V−DEC)の処理とその1周期遅れの第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)の処理とが並行して実行され、1/60秒の周期毎にフレームデータの処理結果を出力することが出来る。
【0097】
なお、上述の例では、第1スレッドグループ(DEMUX、V−DEC)を常にVPU0で実行し、第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)を常にVPU1で実行したが、図53に示すように、第1スレッドグループ(DEMUX、V−DEC)が割て当てられるプロセッサ、および第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)が割て当てられるプロセッサが周期毎に入れ換えられるようにスケジューリングを行ってもよい。
【0098】
(バッファ量を考慮したスケジューリング)
ある実行期間に実行するスレッドと、別の実行期間に実行するスレッドの間で、バッファを使ってデータを送る場合、そのバッファはデータを書き込む側の実行期間の初めから、データを読み出す側の実行期間の最後までの間、専有されることになる。例えば、図54に示すように、実行期間Aと実行期間Bの間でバッファを使ってデータを送る場合、図54に示すように、実行期間Aの初めから、実行期間Bの最後までの期間、メモリ14(主記憶)上のバッファは占有して使用されることになる。そのため、実行期間Aから実行期間Bにバッファを使ってデータを送るときで、ソフトウェアパイプライン化した際に実行期間AとBが隣り合う別の周期で実行するような場合、実行期間AとBの実行タイミングによって必要なバッファの量が変わってくる。例えば、図55に示すように、各周期内で実行期間AがBよりも早く実行されるようにスケジューリングした場合、実行期間An(Anは周期nにおけるAをあらわす)からのデータは次の周期の実行期間Bnに渡され、実行期間An+1からのデータは次の周期の実行期間Bn+1に渡される。このとき、実行期間An+1はAnとBnに挟まれているため、AnがBnにデータを渡すために使っているバッファは利用できず、新しいバッファを用いる。つまり、ダブルバッファリングが必要になる。一方、図56に示すように、連続する2つの実行期間AnとAn+1との間にBnを配置することによって各周期内で実行期間AがBの終了後に開始するようにすると、実行期間Anがデータを書いたバッファをBnが読んだ後、同じバッファを使いまわして、An+1がデータを書いてBn+1が読むというように、シングルバッファですむ。
【0099】
本実施形態のリアルタイム処理システムでは、VPU実行環境401のスケジューラが、このように、バッファメモリ領域の使用量ができるだけ少なくなるように、予約される実行期間をスケジューリングする。すなわち、ソフトウェアパイプラインを行う場合には、図57のフローチャートに示されているように、VPU実行環境401のスケジューラは、VPU0,1の2つのVPUによるソフトウェアパイプラインを実行するために、リアルタイム処理を2つの部分処理(VPU0によって先行して実行される部分処理である第1のスレッドグループと、その部分処理に後続してVPU1によって実行される部分処理である第2のスレッドグループ)に分割する(ステップS211)。そして、VPU実行環境401のスケジューラは、2つの部分処理間(第1および第2のスレッドグループ間)でバッファを介して入出力を行うスレッド同士(例えば、先行して実行される部分処理内のスレッドAと、後続して実行される部分処理内のスレッドB)を抽出し(ステップS212)、各周期において、先行して実行される部分処理内のスレッドAが、後続する部分処理内のスレッドBの実行期間終了後に開始されるように、スレッドA,Bをスケジューリングする(ステップS213)。これにより、連続する2周期に対応するスレッドAの2つの実行期間の間に、スレッドBの実行期間を配置することができる。
【0100】
図58には、バッファ量を考慮したスケジューリングの具体例が示されている。上述したように、第1のスレッドグループ内のDEMUXは、第2のスレッドグループ内のA−DECに渡すべきデータをバッファに書き込むスレッドである。DEMUXとA−DEC間のデータの受け渡しを行うためのバッファがシングルバッファで済むように、図58では、各周期内においてA−DECの実行期間終了後にDEMUXの実行が開始されるように、各周期内におけるA−DECおよびDEMUXそれぞれの実行開始タイミングが制御されている。VPU実行環境401は、周期1でDEMUXが実行開始される時にメモリ14上にバッファ1を確保し、次の周期2でA−DECの実行期間が終了した時にメモリ14上のバッファ1を解放する。そして、周期2でDEMUXが実行開始される時にメモリ14上にバッファ1を確保し、次の周期3でA−DECの実行期間が終了した時にメモリ14上のバッファ1を解放する。
【0101】
(階層構造を持つ予約グラフ)
図47に示した予約グラフは階層構造を持っていないが、図59に示すように、階層構造を持つ予約グラフを扱うことも出来る。図59の例では、実行期間AはBに先行し、BはCに先行する。Bの中はDがEとFに先行している。それゆえ、階層を解くと、AはDに先行し、EとFはCに先行することになる。
【0102】
(密結合スレッドグループを考慮した予約リクエスト)
例えば図47に示した予約グラフにおいてV−DECを実行するスレッドとPROGを実行するスレッドが密結合スレッドグループに属する場合、その結合属性を示す予約リクエストが図60のように生成される。図60の例においては、TightlyCoupled :に相手先のスレッドに対応する実行期間のIDが記述されている。これにより、V−DECを実行するスレッドとPROGを実行するスレッドがそれぞれ別のVPUによって同時に実行されるように、例えば図61に示すようにスケジューリングされる。この場合、V−DECを実行するスレッドとPROGを実行するスレッドとの間の通信はローカルストレージを介して実行できるので、バッファをメモリ14上に用意する必要はない。
【0103】
(構成記述に基づくスケジューリングアルゴリズム)
以下、プログラムモジュールに組み込まれた構成記述に基づいて各スレッドの実行期間を予約するための処理手順について説明する。
【0104】
図7のプログラムモジュール100内の構成記述117は、図8の例のようになっている。この構成記述117が与えられると、VPU実行環境401は次の手順を実行する。
1.構成記述117のモジュール欄に書かれている各プログラムをロードして、それぞれを実行するスレッドを生成する。このとき、本実施形態では、構成記述117のエントリそれぞれに対して一つのスレッドを生成する。構成記述117の中に、同じモジュール名を持つ複数のエントリが存在する場合には、同じモジュールを実行する複数のスレッドをそれぞれのエントリと対応するように生成することになる。なお、図8の例では、すべてのスレッドはひとつのプロセスに属するように生成されるものとしているが、それぞれのスレッドが別のプロセスに属するように実施することもできるし、あるグループのスレッドはあるプロセスに属し、また他のグループのスレッドは別のプロセスに属するといったように実施することもできる。
2.構成記述117の情報から、図48で説明したような予約リクエストのデータ構造を作成する。
3.予約リクエストをVPU実行環境に渡して処理のスケジューリングを行い、実行を開始する。
【0105】
この2番目の予約リクエストを作成するステップは、次のように行う。
まず、構成記述117の出力欄に1対1に対応するように、BUFFERレコードを作成して予約リクエストに加える。例えば、図8の構造記述117の例では、DEMUXモジュールの2番目の出力は1MBのバッファを使ってデータをV−DECに渡しているので、それに対応するように、図48のIdが2のBUFFERレコードを作成している。Idが2のBUFFERレコードには、そのバッファサイズがSize欄に1MBと記録され、そのバッファにデータを書き込むDEMUXモジュールに対応するタスクであるIdが1のTASKレコードへの参照がSrcTask欄に記録され、そのバッファのデータを読み出すV−DECモジュールに対応するタスクであるIdが3のTASKレコードへの参照がDstTask欄に記録されている。
【0106】
次に、構成記述117のモジュール欄に1対1に対応するように、TASKレコードを作成して予約リクエストに加える。例えば、図8の構造記述117の例で、V−DECモジュールに対応するTASKレコードとして、図48のIdが3のTASKレコードを作成している。Idが3のTASKレコードには、以下のような情報が記録されている。
【0107】
Class欄: このTASKレコードに指定されるスレッドをどのような属性で実行させるかを示すフラグ。VPUはVPU上で実行するスレッドであることを、HRTはハードリアルタイムクラスのスレッドであることを示す。これらの情報は、図8の例では構成記述117のスレッドパラメタに記述されている情報をもとに設定する。
【0108】
ThreadContext欄: このTASKレコードで実行の予約を行いたいスレッドのスレッドコンテクストを指定する。具体的には、図8の構成記述117のモジュール欄に指定されたプログラムモジュールをロードして、それを実行するスレッドをVPU実行環境401によって生成し、そのスレッドのスレッドコンテクストの識別子(あるいはポインタなど)を、ThreadContext欄に記録する。
Constraint欄: このTASKレコードに関する制約条件を記録する。先行制約の場合は、Precede:の後にそのTASKが先行する他のTASKのIdを必要な数指定する。Idが3のTASKレコードの場合、Idが5のPROGモジュールに対応するTASKに先行することを示している。
InputBuffer欄: このTASKレコードで指定されるスレッドがデータを読み出すバッファのBufferレコードのIdを必要な数指定する。
OutputBuffer欄: このTASKレコードで指定されるスレッドがデータを書き込むバッファのBufferレコードのIdを必要な数指定する。
このようにして、構造記述が与えられるとそれに対する予約リクエストが作成される。
【0109】
次に、その予約リクエストをVPU実行環境401内のスケジューラに渡すと、スケジューラは、指定された予約リクエストを実行するのに必要なスケジュールを作成する。このスケジューリング処理の結果作成されたスケジュールは、例えば図49に示すような、各周期のどのタイミングで、どのVPUを、どれだけの時間、どのスレッドに割り当てるかを示すものである。実際には、例えば図62のような予約リストによって表現されるように実施することができる。
【0110】
図62の予約リストは、各VPUに対応付けられた予約エントリから構成される。予約エントリには、ひとつのスレッドに対して、それを各周期内のどのタイミングでVPUを割り当てて実行を始めるかを開始時間欄に、どれくらいの時間でVPUを取り上げるかを実行期間欄に、そのスレッドの識別子を実行スレッド欄に記録している。それらの予約エントリは、実行するVPU別に、開始時間順にソートされて予約リストにつながれている。
【0111】
図48または図60に示すような予約リクエストから、図62に示すような予約リストを作成する手順は、例えば図63のフローチャートで示す手順で実施できる。
基本は、予約リクエスト中の各TASKレコードを、BUFFERを使った入出力関係を考慮して順序付けして、データの流れる順に、VPUの実行時間を割り付けて行けばよい。このとき、密結合スレッドグループに指定されているTASK群には、それぞれのTASKのスレッドに同時にVPUを割り付けるようにする必要がある。
【0112】
図63にその手順を示す。予約リクエストが与えられると、その中のTASKレコードに指定されているすべてのタスクの集合に対して、以下の手順でスケジューリング(いいかえると、スケジュールの割り付け、あるいは予約リストの作成)を行う。
ステップS301: 全ての入力タスクが割付け済みのタスクで、密結合指定のないタスクを選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たない場合であって、かつ、そのタスクが密結合指定されていないものが存在すれば、それを選択してステップS302へ、そうでなければステップS304へ行く。
ステップS302: 選択したタスクを予約できるVPUが存在すれば(言い換えると、他のタスクとの間の制約を満たす開始時間と実行期間を予約できるVPUが存在すれば)、ステップS303へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS303: 選択したタスクの予約エントリを作成して、予約リストにつなぐ。
【0113】
ステップS404: 全ての入力タスクが割付け済みのタスクで、密結合関係にあるタスク群を選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たないものの集合であって、かつ、その集合に属するタスク間が密結合指定されているものが存在すれば、そのタスク集合(タスク群とも呼ぶ)を選択してステップS3055へ、そうでなければ既にすべてのタスクを割り付けているのでスケジューリング処理を終了する。
ステップS305: 選択したタスク集合に含まれるすべてのタスクを同時に(同じ開始時間で同じ実行期間を持つように)予約できる複数のVPUが存在すればステップS306へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS306: 選択したタスク集合のすべてのタスクの予約エントリを作成して、予約リストにつなぐ。
【0114】
ここでの説明はひとつの予約リクエストのスケジューリングの手順について述べたが、上述したように、実際は、ひとつのシステムにおいて複数の予約リクエストが同時に存在することが普通である。そのような場合には、複数の予約リクエストを順次上記の手順でスケジューリングするように実施することもできるし、より望ましくは、同時に複数の予約リクエストを上記の手順でスケジューリングするように実施する。
【0115】
以上、デジタルテレビ放送用受信機の動作を記述したプログラムモジュールを例に説明したが、他の様々なハードウェアの動作を記述したプログラムモジュールを用意することにより、デジタルテレビ放送用受信機以外の他の任意のハードウェアの動作をソフトウェアによって実現することが出来る。
【0116】
なお、図1の計算機システムに設けられたMPU11と複数のVPU12は、それらを1チップ上に混載した並列プロセッサとして実現することもできる。この場合も、MPU11によって実行されるVPU実行環境、あるいは特定の一つのVPUなどによって実行されるVPU実行環境が、複数のVPU12に対するスケジューリングを制御することが出来る。
【0117】
またソフトウェアパイプライン処理は、3つのVPUによって実行することも出来る。この場合、リアルタイム処理を実行するための連鎖された複数の処理要素は逐次処理可能な第1乃至第3の3つの処理要素グループにグループ分けされ、第1乃至第3の3つの処理要素グループが3つのVPUによってパイプライン形式で周期的に実行されるように第1乃至第3の3つの処理要素グループの各々が1以上のVPUに周期的に割り当てられる。例えば、VPU0,1,2の3つのVPUを使用する場合には、第1処理要素グループがVPU0によって周期的に実行され、第1処理要素グループよりも1周期分遅れたタイミングで第2処理要素グループがVPU1によって周期的に実行され、さらに第2処理要素グループよりも1周期分遅れたタイミングで第3処理要素グループが周期的に実行される。
【0118】
また、ある処理要素グループの処理を複数のVPUによって並列に実行することもできる。例えば、同一処理要素グループ内に並列処理可能な複数の処理要素が含まれている時は、同一処理要素グループ内の複数の処理要素を複数のVPUによって並列に実行してもよい。
【0119】
またVPU実行環境として動作するプログラムまたはそのVPU実行環境を含むオペレーティングシステムなどのプログラムをコンピュータ読み取り可能な記憶媒体に記憶することにより、その記憶媒体を通じて当該プログラムを、ローカルプロセッサをそれぞれ有する複数のプロセッサを含むコンピュータに導入して実行するだけで、本実施形態と同様の効果を得ることが出来る。
【0120】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0121】
【発明の効果】
以上説明したように、本発明によれば、連鎖された複数の処理要素を含むリアルタイム処理を複数のプロセッサを用いて効率よく実行することが可能となる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るリアルタイム処理システムを構成する計算機システムの例を示すブロック図。
【図2】同実施形態のリアルタイム処理システムに設けられたMPUおよびVPUそれぞれの構成を示すブロック図。
【図3】同実施形態のリアルタイム処理システムで用いられる仮想アドレス変換機構の例を示す図。
【図4】同実施形態のリアルタイム処理システムにおける実アドレス空間にマッピングされるデータの例を示す図。
【図5】同実施形態のリアルタイム処理システムにおける実効アドレス空間、仮想アドレス空間、実アドレス空間を説明するための図。
【図6】デジタルテレビ放送の受信機の構成を示すブロック図。
【図7】同実施形態のリアルタイム処理システムによって実行されるプログラムモジュールの構成の例を示す図。
【図8】図7のプログラムモジュール内に含まれる構成記述の例を示す図。
【図9】図7のプログラムモジュールに対応するプログラム間のデータの流れを示す図。
【図10】図7のプログラムモジュールが2つのVPUによって並列に実行される様子を示す図。
【図11】図7のプログラムモジュールが2つのVPUによってパイプライン形式で実行される様子を示す図。
【図12】同実施形態のリアルタイム処理システムにおけるオペレーティングシステムの実装形態の例を示す図。
【図13】同実施形態のリアルタイム処理システムにおけるオペレーティングシステムの実装形態の他の例を示す図。
【図14】同実施形態のリアルタイム処理システムにおける仮想計算機OSとゲストOSとの関係を示す図。
【図15】同実施形態のリアルタイム処理システムにおいて複数のゲストOSに時分割で資源が割り当てられる様子を示す図。
【図16】同実施形態のリアルタイム処理システムにおいてある特定のゲストOSによって特定の資源が専有される様子を示す図。
【図17】同実施形態のリアルタイム処理システムにおいてスケジューラとして用いられるVPU実行環境を示す図。
【図18】同実施形態のリアルタイム処理システムで用いられる仮想計算機OSにVPU実行環境を実装した例を示す図。
【図19】同実施形態のリアルタイム処理システムで用いられる一つのゲストOSとしてVPU実行環境を実装する例を示す図。
【図20】同実施形態のリアルタイム処理システムで用いられる複数のゲストOSそれぞれにVPU実行環境を実装する例を示す図。
【図21】同実施形態のリアルタイム処理システムで用いられる一つのゲストOSにVPU実行環境を実装する例を示す図。
【図22】同実施形態のリアルタイム処理システムで用いられるMPU側VPU実行環境とVPU側VPU実行環境を説明するための図。
【図23】同実施形態のリアルタイム処理システムで用いられるVPU側VPU実行環境によって実行される処理手順を示すフローチャート。
【図24】同実施形態のリアルタイム処理システムで用いられるMPU側VPU実行環境によって実行される処理手順を示すフローチャート。
【図25】同実施形態のリアルタイム処理システムにおいて密結合スレッドグループに属するスレッド群がそれぞれ別のプロセッサによって同時に実行される様子を示す図。
【図26】同実施形態のリアルタイム処理システムにおける密結合スレッド間の相互作用を説明するための図。
【図27】同実施形態のリアルタイム処理システムにおいて各密結合スレッドの実効アドレス空間に相手のスレッドが実行されるVPUのローカルストレージがマッピングされる様子を示す図。
【図28】同実施形態のリアルタイム処理システムにおける疎結合スレッドグループに属するスレッド群に対するプロセッサの割り当てを説明するための図。
【図29】同実施形態のリアルタイム処理システムにおける疎結合スレッド間の相互作用を説明するための図。
【図30】同実施形態のリアルタイム処理システムにおけるプロセスとスレッドとの関係を説明するための図。
【図31】同実施形態のリアルタイム処理システムにおけるスケジューリング処理の手順を示すフローチャート。
【図32】同実施形態のリアルタイム処理システムにおけるスレッドの状態遷移を示す図。
【図33】同実施形態のリアルタイム処理システムにおけるスレッドと実効期間との関係を説明するための図。
【図34】同実施形態のリアルタイム処理システムにおける密結合スレッド群がある実効期間において同時に実行される様子を示す図。
【図35】同実施形態のリアルタイム処理システムにおける周期実行モデルを示す図。
【図36】同実施形態のリアルタイム処理システムにおける非周期実行モデルを示す図。
【図37】タスクグラフを説明するための図。
【図38】同実施形態のリアルタイム処理システムで用いられる予約グラフの原理を説明するための図。
【図39】同実施形態のリアルタイム処理システムで用いられる予約グラフの例を説明するための図。
【図40】同実施形態のリアルタイム処理システムで用いられる階層型スケジューラを説明するための図。
【図41】同実施形態のリアルタイム処理システムがハードリアルタイムクラスのスケジューリングのために使用するパラメータの例を説明する図。
【図42】同実施形態のリアルタイム処理システムで用いられる絶対タイミング制約を説明する図。
【図43】同実施形態のリアルタイム処理システムで用いられる相対タイミング制約を説明する図。
【図44】同実施形態のリアルタイム処理システムで用いられる相互排他制約を説明する図。
【図45】同実施形態のリアルタイム処理システムにおける同期機構を説明するための図。
【図46】同実施形態のリアルタイム処理システムにおいて同期機構を使い分ける手順を示すフローチャート。
【図47】同実施形態のリアルタイム処理システムにおいて用いられる予約グラフの例を示す図。
【図48】同実施形態のリアルタイム処理システムにおいて生成される予約リクエストの例を示す図。
【図49】同実施形態のリアルタイム処理システムが図48の予約リクエストに基づいて実行するスケジューリングの例を示す図。
【図50】同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングを説明するための第1の図。
【図51】同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングを説明するための第2の図。
【図52】同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプラインのためのスケジューリング処理の手順を示すフローチャート。
【図53】同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングの他の例を示す図。
【図54】同実施形態のリアルタイム処理システムにおいて実行されるバッファ量を考慮したスケジューリングを説明するための第1の図。
【図55】同実施形態のリアルタイム処理システムにおいて実行されるバッファ量を考慮したスケジューリングを説明するための第2の図。
【図56】同実施形態のリアルタイム処理システムにおいて実行されるバッファ量を考慮したスケジューリングを説明するための第3の図。
【図57】同実施形態のリアルタイム処理システムにおいて実行されるバッファ量を考慮したスケジューリング処理の手順を示すフローチャート。
【図58】同実施形態のリアルタイム処理システムによって実行されるバッファ量を考慮したスケジューリングの例を説明するための図。
【図59】同実施形態のリアルタイム処理システムにおいて用いられる階層構造を持つ予約グラフの例を示す図。
【図60】同実施形態のリアルタイム処理システムによって生成される、密結合スレッドグループを考慮した予約リクエストの例を示す図。
【図61】同実施形態のリアルタイム処理システムが図60の予約リクエストに基づいて行うスケジューリングの例を示す図。
【図62】同実施形態のリアルタイム処理システムにおいて用いられる予約リストの例を示す図。
【図63】同実施形態のリアルタイム処理システムにおける実行期間予約処理の手順を示すフローチャート。
【符号の説明】
11…MPU(Master Processing Unit)、12…VPU(Slave Processing Unit)、14…メインメモリ、21…処理ユニット、22…メモリ管理ユニット、31…処理ユニット、32…ローカルストレージ、33…メモリコントローラ、50…セグメントテーブル、60…ページテーブル、100…プログラムモジュール、111〜116…プログラム、117…構成記述、331…アドレス変換ユニット、401…VPU実行環境。
Claims (12)
- 連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて周期的に実行するためのスケジューリング方法において、
前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグループ分けするステップと、
前記第1処理要素グループが特定の時間間隔で周期的に実行され、且つ前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループおよび前記第2処理要素グループの各々を1以上のプロセッサに周期的に割り当てるスケジューリング処理を実行するステップとを具備することを特徴とするスケジューリング方法。 - 前記第1処理要素グループは、前記第2処理要素グループに属する第2処理要素に渡すべきデータをバッファに書き込む第1処理要素を含み、
前記第1処理要素の実行が開始される度に、前記バッファを前記複数のプロセッサ間で共有されるメモリ上に確保するステップと、
前記第2処理要素の実行期間が終了する度に、前記バッファを解放するステップとをさらに具備することを特徴とする請求項1記載のスケジューリング方法。 - 前記第1処理要素グループは、前記第2処理要素グループに属する第2処理要素に渡すべきデータをバッファに書き込む第1処理要素を含み、
前記特定時間間隔を単位とする各周期内において前記第2処理要素の実行期間の終了後に前記第1処理要素の実行が開始されるように、前記第1処理要素および前記第2処理要素それぞれの実行開始タイミングを制御するステップをさらに具備することを特徴とする請求項1記載のスケジューリング方法。 - 連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて周期的に実行するためのスケジューリング方法において、
前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループ、当該第1処理要素グループに後続して実行される第2処理要素グループ、および当該第2処理要素グループに後続して実行される第3処理要素グループにグループ分けするステップと、
前記第1処理要素グループが特定の時間間隔で周期的に実行され、前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行され、且つ前記第2処理要素グループよりも1周期分遅れたタイミングで前記第3処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループ、前記第2処理要素グループ、および前記第3処理要素グループの各々を1以上のプロセッサに周期的に割り当てるスケジューリング処理を実行するステップとを具備することを特徴とするスケジューリング方法。 - 連鎖された複数の処理要素から構成されるリアルタイム処理を周期的に実行する情報処理システムにおいて、
複数のプロセッサと、
前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグループ分けする手段と、
前記第1処理要素グループが特定の時間間隔で周期的に実行され、且つ前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループおよび前記第2処理要素グループの各々を1以上のプロセッサに周期的に割り当てるスケジューリング処理を実行する手段とを具備することを特徴とする情報処理システム。 - 前記第1処理要素グループは、前記第2処理要素グループに属する第2処理要素に渡すべきデータをバッファに書き込む第1処理要素を含み、
前記第1処理要素の実行が開始される度に、前記バッファを前記複数のプロセッサ間で共有されるメモリ上に確保する手段と、
前記第2処理要素の実行期間が終了する度に、前記バッファを解放する手段とをさらに具備することを特徴とする請求項5記載の情報処理システム。 - 前記第1処理要素グループは、前記第2処理要素グループに属する第2処理要素に渡すべきデータをバッファに書き込む第1処理要素を含み、
前記特定時間間隔を単位とする各周期内において前記第2処理要素の実行期間の終了後に前記第1処理要素の実行が開始されるように、前記第1処理要素および前記第2処理要素それぞれの実行開始タイミングを制御する手段をさらに具備することを特徴とする請求項5記載の情報処理システム。 - 連鎖された複数の処理要素を周期的に実行する情報処理システムにおいて、
複数のプロセッサと、
前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループ、当該第1処理要素グループに後続して実行される第2処理要素グループ、および当該第2処理要素グループに後続して実行される第3処理要素グループにグループ分けする手段と、
前記第1処理要素グループが特定の時間間隔で周期的に実行され、前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行され、且つ前記第2処理要素グループよりも1周期分遅れたタイミングで前記第3処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループ、前記第2処理要素グループ、および前記第3処理要素グループの各々を1以上のプロセッサに周期的に割り当てるスケジューリング処理を実行する手段とを具備することを特徴とする情報処理システム。 - 複数のプロセッサを含むコンピュータに、連鎖された複数の処理要素から構成されるリアルタイム処理を周期的に実行させるプログラムであって、
前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグループ分けする処理を、前記コンピュータに実行させる手順と、
前記第1処理要素グループが特定の時間間隔で周期的に実行され、且つ前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループおよび前記第2の処理要素グループの各々を1以上のプロセッサを周期的に割り当てるスケジューリング処理を、前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。 - 前記第1処理要素グループは、前記第2処理要素グループに属する第2処理要素に渡すべきデータをバッファに書き込む第1処理要素を含み、
前記第1処理要素の実行が開始される度に前記バッファを前記複数のプロセッサ間で共有されるメモリ上に確保する処理を、前記コンピュータに実行させる手順と、
前記第2処理要素の実行期間が終了する度に前記バッファを解放する処理を、前記コンピュータに実行させる手順とをさらに具備することを特徴とする請求項9記載のプログラム。 - 前記第1処理要素グループは、前記第2処理要素グループに属する第2処理要素に渡すべきデータをバッファに書き込む第1処理要素を含み、
前記特定時間間隔を単位とする各周期内において前記第2処理要素の実行期間の終了後に前記第1処理要素の実行が開始されるように、前記第1処理要素および前記第2処理要素それぞれの実行開始タイミングを制御する処理を、前記コンピュータに実行させる手順をさらに具備することを特徴とする請求項9記載のプログラム。 - 複数のプロセッサを含むコンピュータに、連鎖された複数の処理要素から構成されるリアルタイム処理を周期的に実行させるプログラムであって、
前記連鎖された複数の処理要素を、前記処理要素間の実行順序の関係に基づいて、第1処理要素グループ、当該第1処理要素グループに後続して実行される第2処理要素グループ、および当該第2処理要素グループに後続して実行される第3処理要素グループにグループ分けする処理を、前記コンピュータに実行させる手順と、
前記第1処理要素グループが特定の時間間隔で周期的に実行され、前記第1処理要素グループよりも1周期分遅れたタイミングで前記第2処理要素グループが前記特定の時間間隔で周期的に実行され、且つ前記第2処理要素グループよりも1周期分遅れたタイミングで前記第3処理要素グループが前記特定の時間間隔で周期的に実行されるように、前記第1処理要素グループ、前記第2処理要素グループ、および前記第3処理要素グループの各々を1以上のプロセッサに周期的に割り当てるスケジューリング処理を、前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003199943A JP3920818B2 (ja) | 2003-07-22 | 2003-07-22 | スケジューリング方法および情報処理システム |
EP04015759A EP1501013A3 (en) | 2003-07-22 | 2004-07-05 | Method and system for scheduling real-time periodic tasks |
KR1020040054505A KR100649107B1 (ko) | 2003-07-22 | 2004-07-13 | 실시간 동작 수행방법 및 시스템 |
US10/895,040 US8495651B2 (en) | 2003-07-22 | 2004-07-21 | Method and system for performing real-time operation including plural chained tasks using plural processors |
CNB2004100544558A CN1287282C (zh) | 2003-07-22 | 2004-07-22 | 执行实时操作的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003199943A JP3920818B2 (ja) | 2003-07-22 | 2003-07-22 | スケジューリング方法および情報処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005043959A true JP2005043959A (ja) | 2005-02-17 |
JP3920818B2 JP3920818B2 (ja) | 2007-05-30 |
Family
ID=33487627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003199943A Expired - Fee Related JP3920818B2 (ja) | 2003-07-22 | 2003-07-22 | スケジューリング方法および情報処理システム |
Country Status (5)
Country | Link |
---|---|
US (1) | US8495651B2 (ja) |
EP (1) | EP1501013A3 (ja) |
JP (1) | JP3920818B2 (ja) |
KR (1) | KR100649107B1 (ja) |
CN (1) | CN1287282C (ja) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008542902A (ja) * | 2005-06-03 | 2008-11-27 | エヌエックスピー ビー ヴィ | データ処理システム及び少なくとも1つの排他的資源の利用をスケジューリングする方法 |
JP2009510817A (ja) * | 2005-09-26 | 2009-03-12 | 深▲せん▼市朗科科技有限公司 | メディアプレイヤにおけるマルチタスキング方法 |
WO2012001776A1 (ja) * | 2010-06-29 | 2012-01-05 | 富士通株式会社 | マルチコアシステム、スケジューリング方法およびスケジューリングプログラム |
WO2012001835A1 (ja) * | 2010-07-02 | 2012-01-05 | パナソニック株式会社 | マルチプロセッサシステム |
JP2012252413A (ja) * | 2011-05-31 | 2012-12-20 | Toshiba Corp | 情報処理装置、情報処理方法及び制御プログラム |
WO2013145199A1 (ja) * | 2012-03-29 | 2013-10-03 | 株式会社日立製作所 | 仮想計算機のスケジュール方法 |
WO2014003128A1 (ja) * | 2012-06-28 | 2014-01-03 | 株式会社エヌ・ティ・ティ・ドコモ | タスク制御装置 |
US9977759B2 (en) | 2015-06-04 | 2018-05-22 | Fujitsu Limited | Parallel computing apparatus, compiling apparatus, and parallel processing method for enabling access to data in stack area of thread by another thread |
JP2019506641A (ja) * | 2016-12-30 | 2019-03-07 | グーグル エルエルシー | 音声起動されたコンピュータネットワーク環境におけるシーケンス依存データメッセージ統合 |
US10445406B1 (en) | 2013-09-30 | 2019-10-15 | Google Llc | Automatically determining a size for a content item for a web page |
US10614153B2 (en) | 2013-09-30 | 2020-04-07 | Google Llc | Resource size-based content item selection |
US10643608B2 (en) | 2016-12-30 | 2020-05-05 | Google Llc | Feedback controller for data transmissions |
US10956485B2 (en) | 2011-08-31 | 2021-03-23 | Google Llc | Retargeting in a search environment |
JP2021086512A (ja) * | 2019-11-29 | 2021-06-03 | 日立Astemo株式会社 | 情報処理装置 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3889726B2 (ja) * | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4197672B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
JP4197673B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
US20060136916A1 (en) * | 2004-12-17 | 2006-06-22 | Rowland John R | Method and apparatus for transaction performance and availability management based on program component monitor plugins and transaction performance monitors |
US8082289B2 (en) | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
CN100442239C (zh) * | 2007-01-09 | 2008-12-10 | 上海新时达电气有限公司 | 中断程序的分时运行方法 |
WO2009029549A2 (en) * | 2007-08-24 | 2009-03-05 | Virtualmetrix, Inc. | Method and apparatus for fine grain performance management of computer systems |
JPWO2009150815A1 (ja) * | 2008-06-11 | 2011-11-10 | パナソニック株式会社 | マルチプロセッサシステム |
JP2009301500A (ja) * | 2008-06-17 | 2009-12-24 | Nec Electronics Corp | タスク処理システム及びタスク処理方法 |
KR101513505B1 (ko) | 2008-11-04 | 2015-04-20 | 삼성전자주식회사 | 프로세서 및 인터럽트 처리 방법 |
KR101622168B1 (ko) * | 2008-12-18 | 2016-05-18 | 삼성전자주식회사 | 실시간 스케쥴링 방법 및 이를 이용한 중앙처리장치 |
KR101085229B1 (ko) * | 2009-08-20 | 2011-11-21 | 한양대학교 산학협력단 | 멀티 코어 시스템 및 멀티 코어 시스템의 태스크 할당 방법 |
US8677071B2 (en) | 2010-03-26 | 2014-03-18 | Virtualmetrix, Inc. | Control of processor cache memory occupancy |
US8782653B2 (en) | 2010-03-26 | 2014-07-15 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
FI123008B (fi) * | 2010-06-22 | 2012-09-28 | Janne Pitkaenen | Laitteisto ja menetelmä käytettävyystestausta varten |
US8832700B2 (en) * | 2010-09-29 | 2014-09-09 | Microsoft Corporation | Subscriber-based ticking model for platforms |
CN102467415B (zh) * | 2010-11-03 | 2013-11-20 | 大唐移动通信设备有限公司 | 一种业务面任务处理方法及设备 |
CN103597416A (zh) * | 2011-06-09 | 2014-02-19 | 三菱电机株式会社 | 可编程控制器*** |
US9355009B2 (en) | 2011-10-31 | 2016-05-31 | International Business Machines Corporation | Performance of scheduled tasks via behavior analysis and dynamic optimization |
US8904397B2 (en) | 2011-10-31 | 2014-12-02 | International Business Machines Corporation | Staggering execution of scheduled tasks based on behavioral information |
US9047396B2 (en) | 2011-10-31 | 2015-06-02 | International Business Machines Corporation | Method, system and computer product for rescheduling processing of set of work items based on historical trend of execution time |
CN102393822B (zh) * | 2011-11-30 | 2014-03-12 | 中国工商银行股份有限公司 | 批量调度***及方法 |
CN107273199B (zh) * | 2012-03-29 | 2021-01-15 | 英特尔公司 | 用于管理虚拟化环境中的中断的体系结构和方法 |
WO2013166001A2 (en) * | 2012-04-30 | 2013-11-07 | Massachusetts Institute Of Technology | Uniprocessor schedulability testing for non-preemptive task sets |
WO2014022968A1 (zh) * | 2012-08-07 | 2014-02-13 | 华为技术有限公司 | 媒体业务处理方法及媒体业务*** |
US10802876B2 (en) * | 2013-05-22 | 2020-10-13 | Massachusetts Institute Of Technology | Multiprocessor scheduling policy with deadline constraint for determining multi-agent schedule for a plurality of agents |
CN104699533B (zh) * | 2013-12-09 | 2017-11-28 | 中国航空工业集团公司第六三一研究所 | 一种多个周期任务的调度方法 |
CN104980330B (zh) * | 2014-04-08 | 2018-06-19 | 中国科学院软件研究所 | 一种实时多智能体***的消息准入方法 |
US9424102B2 (en) | 2014-05-14 | 2016-08-23 | International Business Machines Corporation | Task grouping by context |
US9652305B2 (en) * | 2014-08-06 | 2017-05-16 | Advanced Micro Devices, Inc. | Tracking source availability for instructions in a scheduler instruction queue |
KR102235166B1 (ko) | 2015-09-21 | 2021-04-02 | 주식회사 레인보우로보틱스 | 실시간 로봇 시스템, 로봇 시스템 제어 장치 및 로봇 시스템 제어 방법 |
CN105320561B (zh) | 2015-11-09 | 2019-03-08 | 深圳市万普拉斯科技有限公司 | 任务管理方法和*** |
CN105320570B (zh) | 2015-11-09 | 2019-01-29 | 深圳市万普拉斯科技有限公司 | 资源管理方法和*** |
CN105700943A (zh) * | 2015-12-31 | 2016-06-22 | 上海百事通信息技术股份有限公司 | 分布式任务调度方法及*** |
CN107544817B (zh) * | 2016-06-28 | 2021-11-02 | 中兴通讯股份有限公司 | 一种控制应用程序的方法及装置 |
FR3054902B1 (fr) * | 2016-08-04 | 2019-06-21 | Thales | Procede et dispositif de distribution de partitions sur un processeur multi-coeurs |
CN107885585A (zh) * | 2016-09-30 | 2018-04-06 | 罗伯特·博世有限公司 | 一种在多核电子控制单元中的动态任务调度器 |
KR102309429B1 (ko) * | 2017-03-20 | 2021-10-07 | 현대자동차주식회사 | 차량 및 그 제어 방법 |
CN110413419A (zh) * | 2018-04-28 | 2019-11-05 | 北京京东尚科信息技术有限公司 | 一种规则执行的方法和装置 |
KR102184136B1 (ko) * | 2019-05-08 | 2020-11-27 | 국방과학연구소 | 계층적 스케줄링 시스템에서 자원 공급 모델의 주기를 결정하는 방법 및 장치 |
CN110162392B (zh) * | 2019-05-29 | 2022-10-25 | 北京达佳互联信息技术有限公司 | 周期性任务的执行方法、装置、电子设备及存储介质 |
KR102287318B1 (ko) * | 2019-11-15 | 2021-08-09 | 현대자동차주식회사 | 오토사 기반 러너블 동기화 장치 및 그 방법 |
KR102349107B1 (ko) * | 2020-07-20 | 2022-01-07 | 현대오토에버 주식회사 | 오토사 플랫폼에서 러너블 실행을 관리하는 방법 |
CN112256409B (zh) * | 2020-09-15 | 2022-03-04 | 中科驭数(北京)科技有限公司 | 基于多个数据库加速器的任务执行方法及装置 |
CN114138433B (zh) * | 2021-11-18 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 一种任务定时策略的方法、装置及介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06242967A (ja) | 1993-02-16 | 1994-09-02 | Mitsubishi Electric Corp | バッファ操作方法及びバッファ管理装置 |
JP3193525B2 (ja) | 1993-05-31 | 2001-07-30 | キヤノン株式会社 | 情報処理装置 |
CA2131406C (en) * | 1993-09-21 | 2002-11-12 | David D'souza | Preemptive multi-tasking with cooperative groups of tasks |
WO1996003690A1 (en) * | 1994-07-22 | 1996-02-08 | Debenedictis Erik P | Method and apparatus for controlling connected computers without programming |
JPH08180025A (ja) | 1994-12-21 | 1996-07-12 | Toshiba Corp | スケジューリング装置 |
US6012080A (en) * | 1996-03-27 | 2000-01-04 | Lucent Technologies Inc. | Method and apparatus for providing enhanced pay per view in a video server |
US7116635B2 (en) * | 1996-03-28 | 2006-10-03 | Hitachi, Ltd. | Process execution method and apparatus |
JPH10143380A (ja) | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
US6035333A (en) * | 1997-11-24 | 2000-03-07 | International Business Machines Corporation | Method and system for providing congestion control in a data communications network |
CA2245976A1 (en) * | 1998-08-26 | 2000-02-26 | Qnx Software Systems Ltd. | Symmetric multi-processor system and method |
US6430694B1 (en) | 1998-12-31 | 2002-08-06 | At&T Corp. | Method and apparatus for synchronizing the provision of data among geographically distributed databases |
CA2365729A1 (en) * | 2001-12-20 | 2003-06-20 | Platform Computing (Barbados) Inc. | Topology aware scheduling for a multiprocessor system |
US7653906B2 (en) * | 2002-10-23 | 2010-01-26 | Intel Corporation | Apparatus and method for reducing power consumption on simultaneous multi-threading systems |
-
2003
- 2003-07-22 JP JP2003199943A patent/JP3920818B2/ja not_active Expired - Fee Related
-
2004
- 2004-07-05 EP EP04015759A patent/EP1501013A3/en not_active Withdrawn
- 2004-07-13 KR KR1020040054505A patent/KR100649107B1/ko not_active IP Right Cessation
- 2004-07-21 US US10/895,040 patent/US8495651B2/en not_active Expired - Fee Related
- 2004-07-22 CN CNB2004100544558A patent/CN1287282C/zh not_active Expired - Fee Related
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008542902A (ja) * | 2005-06-03 | 2008-11-27 | エヌエックスピー ビー ヴィ | データ処理システム及び少なくとも1つの排他的資源の利用をスケジューリングする方法 |
JP2009510817A (ja) * | 2005-09-26 | 2009-03-12 | 深▲せん▼市朗科科技有限公司 | メディアプレイヤにおけるマルチタスキング方法 |
WO2012001776A1 (ja) * | 2010-06-29 | 2012-01-05 | 富士通株式会社 | マルチコアシステム、スケジューリング方法およびスケジューリングプログラム |
JP5585651B2 (ja) * | 2010-06-29 | 2014-09-10 | 富士通株式会社 | マルチコアシステム、スケジューリング方法およびスケジューリングプログラム |
WO2012001835A1 (ja) * | 2010-07-02 | 2012-01-05 | パナソニック株式会社 | マルチプロセッサシステム |
JP5653431B2 (ja) * | 2010-07-02 | 2015-01-14 | パナソニックIpマネジメント株式会社 | マルチプロセッサシステム |
US9170841B2 (en) | 2010-07-02 | 2015-10-27 | Panasonic Intellectual Property Management Co., Ltd. | Multiprocessor system for comparing execution order of tasks to a failure pattern |
JP2012252413A (ja) * | 2011-05-31 | 2012-12-20 | Toshiba Corp | 情報処理装置、情報処理方法及び制御プログラム |
US10956485B2 (en) | 2011-08-31 | 2021-03-23 | Google Llc | Retargeting in a search environment |
WO2013145199A1 (ja) * | 2012-03-29 | 2013-10-03 | 株式会社日立製作所 | 仮想計算機のスケジュール方法 |
WO2014003128A1 (ja) * | 2012-06-28 | 2014-01-03 | 株式会社エヌ・ティ・ティ・ドコモ | タスク制御装置 |
US10614153B2 (en) | 2013-09-30 | 2020-04-07 | Google Llc | Resource size-based content item selection |
US11610045B2 (en) | 2013-09-30 | 2023-03-21 | Google Llc | Resource size-based content item selection |
US11586801B2 (en) | 2013-09-30 | 2023-02-21 | Google Llc | Automatically determining a size for a content item for a web page |
US11120195B2 (en) | 2013-09-30 | 2021-09-14 | Google Llc | Resource size-based content item selection |
US11120194B2 (en) | 2013-09-30 | 2021-09-14 | Google Llc | Automatically determining a size for a content item for a web page |
US11093686B2 (en) | 2013-09-30 | 2021-08-17 | Google Llc | Resource size-based content item selection |
US10445406B1 (en) | 2013-09-30 | 2019-10-15 | Google Llc | Automatically determining a size for a content item for a web page |
US9977759B2 (en) | 2015-06-04 | 2018-05-22 | Fujitsu Limited | Parallel computing apparatus, compiling apparatus, and parallel processing method for enabling access to data in stack area of thread by another thread |
US11475886B2 (en) | 2016-12-30 | 2022-10-18 | Google Llc | Feedback controller for data transmissions |
US10893088B2 (en) | 2016-12-30 | 2021-01-12 | Google Llc | Sequence dependent data message consolidation in a voice activated computer network environment |
US10643608B2 (en) | 2016-12-30 | 2020-05-05 | Google Llc | Feedback controller for data transmissions |
US10630751B2 (en) | 2016-12-30 | 2020-04-21 | Google Llc | Sequence dependent data message consolidation in a voice activated computer network environment |
JP2019506641A (ja) * | 2016-12-30 | 2019-03-07 | グーグル エルエルシー | 音声起動されたコンピュータネットワーク環境におけるシーケンス依存データメッセージ統合 |
JP2019204515A (ja) * | 2016-12-30 | 2019-11-28 | グーグル エルエルシー | 音声起動されたコンピュータネットワーク環境におけるシーケンス依存データメッセージ統合 |
WO2021106608A1 (ja) * | 2019-11-29 | 2021-06-03 | 日立Astemo株式会社 | 情報処理装置 |
DE112020005072T5 (de) | 2019-11-29 | 2022-08-04 | Hitachi Astemo, Ltd. | Datenverarbeitungseinrichtung |
JP2021086512A (ja) * | 2019-11-29 | 2021-06-03 | 日立Astemo株式会社 | 情報処理装置 |
JP7428508B2 (ja) | 2019-11-29 | 2024-02-06 | 日立Astemo株式会社 | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
KR100649107B1 (ko) | 2006-11-24 |
EP1501013A2 (en) | 2005-01-26 |
CN1287282C (zh) | 2006-11-29 |
US20050060709A1 (en) | 2005-03-17 |
CN1577278A (zh) | 2005-02-09 |
US8495651B2 (en) | 2013-07-23 |
JP3920818B2 (ja) | 2007-05-30 |
EP1501013A3 (en) | 2006-07-26 |
KR20050011689A (ko) | 2005-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3920818B2 (ja) | スケジューリング方法および情報処理システム | |
JP4028444B2 (ja) | スケジューリング方法およびリアルタイム処理システム | |
JP3889726B2 (ja) | スケジューリング方法および情報処理システム | |
JP4025260B2 (ja) | スケジューリング方法および情報処理システム | |
JP4057989B2 (ja) | スケジューリング方法および情報処理システム | |
JP3892829B2 (ja) | 情報処理システムおよびメモリ管理方法 | |
WO2010097847A1 (ja) | プロセッサ装置、マルチスレッドプロセッサ装置 | |
JPH11272480A (ja) | オンチップリアルタイムos |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060914 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060926 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061124 |
|
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: 20070213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070215 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100223 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110223 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120223 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120223 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130223 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140223 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |