JP4025260B2 - スケジューリング方法および情報処理システム - Google Patents
スケジューリング方法および情報処理システム Download PDFInfo
- Publication number
- JP4025260B2 JP4025260B2 JP2003207572A JP2003207572A JP4025260B2 JP 4025260 B2 JP4025260 B2 JP 4025260B2 JP 2003207572 A JP2003207572 A JP 2003207572A JP 2003207572 A JP2003207572 A JP 2003207572A JP 4025260 B2 JP4025260 B2 JP 4025260B2
- Authority
- JP
- Japan
- Prior art keywords
- processing element
- element group
- executed
- processing
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明はリアルタイム処理を特定の時間間隔で周期的に実行するためのスケジューリング方法および情報処理システムに関する。
【0002】
【従来の技術】
従来より、サーバコンピュータのような計算機システムにおいては、その演算処理能力の向上を図るために、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャが利用されている。マルチプロセッサおよび並列プロセッサのどちらも、複数のプロセッサユニットを利用することによって演算処理の並列化を実現している。
複数のプロセッサユニットを備えたシステムとしては、例えば、1台の高速CPU、複数台の低速CPU、および共有メモリを備えたシステムが知られている(例えば、特許文献1参照)。このシステムにおいては、高速CPUおよび複数台の低速CPUに対する処理プログラムのプロセス群の割付は、プロセス群の並列動作度の大小および処理時間の大小に応じて行われる。
【0003】
また、複数のプロセッサにスレッド群を割り当てるためのスケジューリング技術としては、同一のプロセス内に属するスレッドを同一のプロセッサに実行させる技術が知られている(例えば、特許文献2参照)。
【0004】
ところで、最近では、計算機システムのみならず、例えば、AV(オーディオ・ビデオ)データのような大容量のデータをリアルタイムに処理する組み込み機器においても、その演算処理能力の向上のためにマルチプロセッサ、並列プロセッサのようなシステムアーキテクチャの導入が要求されている。
【0005】
【特許文献1】
特開平10−143380号公報
【0006】
【特許文献2】
特開平8−180025号公報
【0007】
【発明が解決しようとする課題】
しかし、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャを前提としたリアルタイム処理システムの報告はほとんどなされていないのが現状である。
リアルタイム処理システムにおいては、ある許容時間の制限内に個々の処理を完了することが要求される。また連鎖された複数の処理要素の組み合わせから構成されるリアルタイム処理を、限られたある一定時間間隔で周期的に実行するためには、連鎖された複数の処理要素すべてを各周期の時間間隔内に完了することが必要となる。
【0008】
リアルタイム処理システムは組み込みシステムとして用いられることが多いので、その低消費電力化の実現も大きな課題である。システムに搭載されるプロセッサユニットの数が多くなるほど、消費電力は増大する。このため、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャをリアルタイム処理システムに適用するに際しては、リアルタイム性が要求される処理を時間内に完了するというリアルタイム性を保障しながら、プロセッサのパワーセーブを図るための新たな仕組みが要求される。
【0009】
非リアルタイム処理システムにおいては、計算機システムのパワーセーブは、通常、プロセッサの動作周波数を下げることによって実現されている。しかし、リアルタイム処理システムにおいては、もしプロセッサの動作周波数を単純に下げると、リアルタイム性が要求される処理が時間内に完了できなくなり、これによってリアルタイム性を損なうという問題が生じる。
【0010】
本発明は上述の事情を考慮してなされたものであり、リアルタイム性を損なうことなくプロセッサのパワーセーブを実現することが可能なスケジューリング方法および情報処理システムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて特定の時間間隔で周期的に実行するためのスケジューリング方法において、前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、互いに並列に実行可能な複数の処理要素グループにグループ分けするステップと、前記特定の時間間隔を単位とする周期毎に前記複数の処理要素グループが互いに異なる複数のプロセッサによって並列に実行され且つ前記処理要素間の実行順序の関係が満たされるように、各周期における前記複数の処理要素グループそれぞれの実行タイミングと各周期において前記複数の処理要素グループそれぞれが実行される複数のプロセッサを決定するステップと、前記各周期における前記複数の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記複数の処理要素グループそれぞれの実行に要する時間を示す情報とに基づいて、前記複数の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が最も長い処理要素グループを選択するステップと、前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出するステップと、前記算出された割合に基づいて、前記複数の処理要素グループがそれぞれ実行される前記複数のプロセッサの動作速度が同じ比率で低下されるように、前記複数の処理要素グループが実行される前記複数のプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を実行するステップとを具備することを特徴とする。
【0014】
このスケジューリング方法によれば、リアルタイム処理を構成する複数の処理要素が複数の処理要素グループに分けられ、それら複数の処理要素グループが互いに異なるプロセッサによって並列に実行されるようにスケジューリングされる。これにより、各周期の開始タイミングから当該周期におけるリアルタイム処理の実行期間が完了するまでの時間間隔を短くできるので、複数のプロセッサそれぞれの空き時間を増やすことが可能となる。この空き時間を有効利用した省電力制御を行うために、各周期内における実行期間の完了が最も遅い処理要素グループが選択され、そして第1の動作速度で動作するプロセッサによって実行された場合に対応する各周期の開始タイミングから当該周期における選択された処理要素グループの実行期間が完了するまでの時間間隔が特定の時間間隔に対して占める割合に基づいて、複数の処理要素グループが実行されるプロセッサそれぞれの動作速度を第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理が実行される。この場合、複数の処理要素グループの実行期間が完了するまでの時間間隔それぞれが同じ割合で延びるので、処理要素グループ間の実行順序の制約を満たした状態で、リアルタイム性を損なうことなく、複数のプロセッサそれぞれのパワーセーブを図ることが可能となる。
【0015】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図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はブリッジとも呼ばれる。
【0016】
接続装置15はデータ転送レートを保証するQoS機能を持つ。この機能は、接続装置15を介したデータ転送を予約されたバンド幅(転送速度)で実行することによって実現される。QoS機能は、たとえば、あるVPU12からメモリ14に5Mbpsでライトデータを送信する場合、あるいはあるVPU12と別のVPU12との間で100Mbpsでデータ転送する場合に利用される。VPU12は接続装置13に対してバンド幅(転送速度)を指定(予約)する。接続装置13は指定されたバンド幅を要求したVPU12に対して優先的に割り当てる。あるVPU12のデータ転送に対してバンド幅が予約されたならば、そのVPU12によるデータ転送中に他のVPU12、MPU11あるいは入出力制御装置15が大量のデータ転送を行っても、予約されたバンド幅は確保される。この機能は、特に、リアルタイム処理を行う計算機にとって重要な機能である。
【0017】
図1の構成では、MPU11が1つ、VPU12が4つ、メモリ14が1つ、入出力制御装置が1つであるが、VPU12の個数は制限されない。またMPU11を持たない構成も可能である。この場合、MPU11の行う処理は、ある一つのVPU12が担当する。つまり、仮想的なMPU11の役割をVPUが兼ねる。
【0018】
計算機システムには、さらに、省電力制御装置17が設けられている。省電力制御装置17は、計算機システム全体あるいは部分的にその消費電力を下げるために、たとえば次のような制御を行う。
1.計算機システム全体のクロックの周波数を下げる
2.計算機システム全体の電源電圧を下げる
3.計算機システム全体の電源を切る
4.ひとつあるいは複数のモジュール(MPU、VPU、メモリ、入出力制御装置など)のクロックの周波数を下げる
5.ひとつあるいは複数のモジュール(MPU、VPU、メモリ、入出力制御装置など)の電源電圧を下げる
6.ひとつあるいは複数のモジュール(MPU、VPU、メモリ、入出力制御装置など)の電源を切る
7.接続装置のクロック周波数を下げる
8.接続装置の転送速度を下げる
9.接続装置のバス幅を減らす
10.接続装置の電源を切る
11.メモリバンク単位で電源を切る
12.メモリバンク単位でリフレッシュを止める
13.MPUやVPU内で同時に動作する機能モジュールを減らす(たとえば演算装置を複数持っている場合に、同時に使う演算装置を制限することで、使わない演算装置の消費電力を下げる)
これらの省電力機能は、ソフトウェアの制御の下に行うことができる。また、上記1−13の省電力のための制御は、単独で実施することもできるし、組み合わせて実施することもできる。
【0019】
図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に書いたりする。
【0020】
MPU11のメモリ管理ユニット22およびVPU12のメモリコントローラ33それぞれによって実行される仮想記憶管理は、たとえば図3のように実施することができる。MPU11の処理ユニット21あるいはVPU12のメモリコントローラ33から見たアドレスは、図3の上の部分に示すような64ビットのアドレスである。この64ビットのアドレスは、上位の36ビットがセグメント番号、中央の16ビットがページ番号、下位の12ビットがページオフセットである。このアドレスから、実際に接続装置13を通してアクセスする実アドレス空間への変換は、セグメントテーブル50およびページテーブル60を用いて実行される。セグメントテーブル50およびページテーブル60は、メモリ管理ユニット22およびメモリコントローラ33に各々設けられている。
【0021】
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で説明したような構造を持っている。
【0022】
MPU11は制御レジスタ等のハードウェア機構によって、例えば、各VPU12のレジスタの読み書き、各VPU12のプログラムの実行開始/停止などの、各VPU12の管理を行うことができる。また、MPU11とVPU12の間、あるいはあるVPU12と他のVPU12の間の通信や同期は、メールボックスやイベントフラグなどのハードウェア機構によって行うことが出来る。
【0023】
この実施形態の計算機システムは、従来ハードウェアで実現されていたようなリアルタイム性の要求の厳しい機器の動作を、ソフトウェアを用いて実現することを可能にする。例えば、あるVPU12があるハードウェアを構成するある幾つかのハードウェアコンポーネントに対応する演算処理を実行し、それと並行して、他のVPU12が他の幾つかのハードウェアコンポーネントに対応する演算処理を実行する。
【0024】
図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コマ)に従って、繰り返し実行される。
【0025】
図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になる。
【0026】
構成記述117は、プログラムモジュール100内の各プログラム(スレッド)をどのように組み合わせて実行するべきかを示す情報であり、連鎖されたプログラム111〜116間の入出力関係(連鎖関係)および各プログラムの処理に必要なコスト(時間)などを示す。図8には構成記述117の例が示されている。
【0027】
図8の構成記述117の例では、スレッドとして動作する各モジュール(プログラムモジュール100内の各プログラム)に対して、その入力につながるモジュール、その出力がつながるモジュール、そのモジュールの実行に要するコスト、出力がつながるモジュールそれぞれへの出力に必要なバッファサイズが記述されている。たとえば、番号▲3▼のV−DECプログラムは、番号▲1▼のDEMUXプログラムの出力を入力とし、その出力は番号▲5▼のPROGプログラムに向かっており、その出力に必要なバッファは1MBで、番号▲3▼のV−DECプログラム自体の実行コストは50であることを示している。なお、実行に必要なコストは、実行に必要な時間(実行期間)やステップ数などを単位として記述することができる。また、何らかの仮想的な仕様のVPUで実行した場合の時間を単位とすることも可能である。計算機によってVPUの仕様や処理性能が異なる場合もあるので、このように仮想的な単位を設けてコストを表現するのは望ましい形態である。図8に示した構成記述117に従って実行する場合の、プログラム間のデータの流れは図9の通りである。
【0028】
さらに、構成記述117には、プログラム111〜116それぞれに対応するスレッド間の結合属性を示す結合属性情報がスレッドパラメータとして記述されている。なお、スレッドパラメータはプログラム111〜116中にコードとして直接記述することも可能である。
【0029】
次に、図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で行い、最終的な映像データを作成する。この処理の流れを、毎周期繰り返すように実行する。
【0030】
ここで説明したように、所望の動作を滞りなく行えるように、各VPU12上で、いつ、どのプログラムを実行するかを決める作業を、スケジューリングとよぶ。スケジューリングを行うモジュールをスケジューラとよぶ。本実施形態では、プログラムモジュール100中に含まれる上述の構成記述117に基づいてスケジューリングが行われる。すなわちスケジューリング処理では、構成記述117に基づいて複数のプログラム111〜116を実行する複数のスレッドそれぞれの実行開始タイミングおよび実行期間が決定され、複数のスレッドそれぞれが1以上のVPU12に割り当てられる。プログラムモジュール100の実行時には以下の処理が行われる。
1. オペレーティングシステムはプログラムモジュール100をそれが記憶されている外部記憶装置またはメモリ13から入力し、構成記述117を読み込む。
【0031】
2. オペレーティングシステム内のスケジューラは、構成記述117に基づいてプログラムモジュール100内の複数のプログラム111〜116を実行するための複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行開始タイミングおよび実行期間を決定することにより、複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)を1以上のVPUに割り当てて実行する。
【0032】
このように、本実施形態のリアルタイム処理システムでは、プログラムモジュール100に含まれる構成記述117に基づいて、連鎖された複数のプログラム111〜116を実行する複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行開始タイミングおよび実行期間が決定されるので、プログラムのコード中に個々の処理の時間的な制約条件を詳細に記述せずとも、リアルタイム処理を実行するためのスレッド群を効率よくスケジューリングすることが可能となる。
【0033】
図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を読み込む。
【0034】
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処理要素グループに分類される。
【0035】
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に周期的に割り当てる。
【0036】
なお、例えば、第2処理要素グループをVPU1とVPU2の2つのプロセッサによって並列に実行しても良い。例えば、VPU1ではA−DEC、TEXTを実行し、それと並行してVPU1でPROG、BLENDを実行する。
【0037】
図7のプログラムモジュール100の例では、複数の処理要素(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)がそれぞれ異なるスレッドによって実行されるので、上述の処理要素グループは、スレッドグループと称することもできる。
【0038】
図7に示したプログラムモジュール100は、本実施形態の計算機システムを組み込んだ機器内のフラッシュROMやハードディスクに予め記録しておいてもよいが、ネットワークを介して流通させるようにしてもよい。この場合、本実施形態の計算機システムによって実行される処理の内容は、ネットワークを介してダウンロードしたプログラムモジュールの種類に応じて決まる。よって、例えば本実施形態の計算機システムを組み込んだ機器に、様々な専用ハードウェアそれぞれに対応するリアルタイム処理を実行させることが出来る。例えば、新しいコンテンツの再生に必要な新しいプレーヤーソフトウェアやデコーダソフトウェアや暗号ソフトウェアなどを、本実施形態の計算機システムで実行可能なプログラムモジュールとして、コンテンツと一緒に配布することで、本実施形態の計算機システムを搭載した機器であれば、いずれの機器でも、その能力が許す範囲内で、そのコンテンツを再生することができる。
【0039】
(省電力制御)
本実施形態の計算機システムにおいては、上述のプログラムモジュール100のようなリアルタイム処理を制限された時間内に完了するというリアルタイム性を保障しながら、計算機システムの消費電力を低減するための省電力制御が実行される。例えば、特定の時間間隔で周期的に実行することが要求されるリアルタイム処理が与えられたときには、特定の時間間隔を単位とする各周期内におけるリアルタイム処理の実行が次の期間の開始タイミングまでに完了する範囲で、リアルタイム処理を実行するために使用される各VPUの動作速度をできるだけ低下させる制御が実行される。図12には、3つの処理要素A,B,Cから構成されるリアルタイム処理をVPU0によって周期的に実行する場合のスケジューリングの例が示されている。スケジューリング処理では、3つの処理要素A,B,Cを含むリアルタイム処理が予め決められた特定の時間間隔で周期的にVPU12によって実行されるように、各処理要素の実行に要するコスト(実行期間)と、処理要素間の実行順序の関係とに基づいて、特定の時間間隔を単位とする各周期における処理要素A,B,Cそれぞれの実行タイミングが決定される。スケジューリング処理で考慮される各処理要素の実行期間の長さは、VPU0の動作速度が100%である場合に対応している。
【0040】
周期1内における処理要素A,B,Cそれぞれの実行期間(A1,B1,C1)が完了してから、周期2の開始タイミングまでの間は、VPU0は何ら処理を実行しない。本実施形態においては、この空き時間を利用して、VPU0の動作速度を低下する。すなわち、各周期の開始タイミングから処理要素A,B,Cの実行が完了されるまでの期間T1が、図13に示されているように、各周期の時間間隔近辺にまで伸びるように、VPU0の動作速度が低下される。期間T1の長さが各周期の時間間隔の1/2であるならば、例えば、VPU0の動作速度を1/2に低下させる動作速度制御処理が実行される。VPU0は50%の動作速度で動作するので、VPU0の消費電力は低減される。よって、処理要素A,B,Cを特定の時間間隔で周期的に実行するというリアルタイム性を保障しつつ、VPU0の消費電力を低減することが可能となる。
【0041】
次に、図14のフローチャートを参照して、省電力制御処理の手順を説明する。
ステップS1: オペレーティングシステムは、複数の処理要素から構成されるリアルタイム処理が予め決められた特定の時間間隔で周期的にVPU0によって実行されるように、特定の時間間隔を単位とする各周期における複数の処理要素それぞれの実行タイミングを決定するスケジューリング処理を実行する。
ステップS2: オペレーティングシステムは、VPU0がその最高速度(100%)で動作した場合に対応するリアルタイム処理の実行に要するコストを示す情報に基づき、各周期の開始タイミングから当該周期におけるリアルタイム処理の実行期間が完了するまでの時間間隔Tを算出する。リアルタイム処理の実行開始タイミングが各周期の開始タイミングから始まる場合には、時間間隔Tは、リアルタイム処理の実行期間に一致する。コストを示す情報は、例えば、上述の構成記述117によって与えられる。もしリアルタイム処理が複数の処理要素から構成される場合には、リアルタイム処理の実行期間は複数の処理要素それぞれの実行期間の和となる。よって、構成記述117によって与えられる、複数の処理要素それぞれの実行に要するコストに基づいて、リアルタイム処理の実行期間を決定することが出来る。
【0042】
ステップS3: オペレーティングシステムは、1周期分の時間間隔に対する時間間隔Tの比率、つまり時間間隔Tが1周期を規定する特定の時間間隔に占める割合、を算出する。
ステップS4,S5: オペレーティングシステムは、算出された割合に基づいて、VPU0の動作速度をその最高動作速度(100%)よりも低速の動作速度に設定する動作速度制御処理を実行する。
【0043】
ステップS4においては、VPU0の動作速度が決定される。すなわち、オペレーティングシステムは、1周期分の時間間隔に占める時間間隔Tの割合に基づき、各周期におけるリアルタイム処理の実行期間が遅くとも次の周期が開始される前に完了し、且つ各周期の開始タイミングからリアルタイム処理の実行期間が完了するまでの時間間隔T1の長さが延びるように、VPU0の動作速度(クロック周波数)を決定する。VPU0の動作速度(クロック周波数)は、算出された割合をVPU0の最高速度(100%)に乗ずることによって求めることが出来る。たとえば、時間間隔Tの長さが1周期分の時間間隔の半分であるならば、設定可能な最も低速のVPU0の動作速度は、VPU0の最高速度(100%)の半分の速度(50%)となる。次いで、ステップS5において、オペレーティングシステムは、接続装置13を介して省電力制御装置17にVPU0のクロック周波数を示すコマンドを送信する。省電力制御装置17は各VPUに供給されるクロックの周波数を制御する回路を備えており、オペレーティングシステムからのコマンドで指定されるVPUのクロック周波数を、当該コマンドで指定されるクロック周波数に設定する。これにより、VPU0の動作速度はステップS4で決定された動作速度に設定される。結果的にリアルタイム処理がゆっくり実行されることになるので、時間間隔Tは1周期を規定する特定の時間間隔近辺にまで伸びることになる。
【0044】
この省電力制御は、VPUの空き時間をより多く確保できるようにスケジューリングすることにより、より省電力効果を高めることができるという特徴を有している。したがって、リアルタイム処理を構成する複数の処理要素の実行期間をできるだけ多くのVPUに均等に割り当てることによって、1周期内におけるリアルタイム処理の実行期間がなるべく短くなるようにスケジューリングすることが好ましい。図15には、連鎖された3つの処理要素A,B,CがVPU0,VPU1によって実行されるようにスケジューリングした例が示されている。今、処理要素A,B,C間に、処理要素B、Cの実行前に処理要素Aが実行されなければならないという制約が存在する場合を想定する。3つの処理要素A,B,Cは、各周期において並列に実行可能な2つの処理要素グループにグループ分けされる。ここでは、3つの処理要素A,B,Cは、処理要素A,Bを含む第1処理要素グループと、処理要素Cを含む第2処理要素グループとに分けられている。第1処理要素グループ(A,B)は特定の時間間隔で周期的に実行されるようにVPU0に割り当てられ、第2処理要素グループ(C)は第1処理要素グループ(A,B)と同じ特定の時間間隔で周期的に実行されるようにVPU1に割り当てられる。VPU1における処理要素Cの実行開始タイミングは、VPU0における処理要素Aの完了後にVPU1における処理要素Cの実行が開始されるように決定される。
【0045】
各周期の開始タイミングから第1処理要素グループ(A,B)の実行が完了されるまでの時間間隔T1は、各周期の開始タイミングから第2処理要素グループ(C)の実行が完了されるまでの時間間隔T2よりも長い。この場合、図16に示されているように、時間間隔T1が各周期の時間間隔にまで伸びるように、VPU0,VPU1の動作速度が同じ比率で低下される。時間間隔T1の長さが各周期の時間間隔の1/3であるならば、VPU0,VPU1それぞれの動作速度を1/3に低下させる制御が実行される。これにより、VPU0,VPU1は33%の動作速度で動作するので、VPU0,VPU1の消費電力を低減することができる。VPU0,VPU1の動作速度は同じ比率で低下されるので、VPU1における処理要素Cの実行がVPU0における処理要素Aの完了後に開始されるという制約条件が破綻することはない。
【0046】
次に、図17のフローチャートを参照して、リアルタイム処理を複数のVPUによって実行する場合における省電力制御処理の手順を説明する。なお、以下では、処理要素グループをスレッドグループと称することとする。
【0047】
ステップS11: オペレーティングシステムは、各周期内におけるリアルタイム処理の実行がなるべく短い時間で完了するように、リアルタイム処理を構成する連鎖された複数の処理要素を、処理要素間の実行順序の関係に基づいて、互いに並列に実行可能な複数のスレッドグループにグループ分けする。以下では、グループ分けの結果、第1スレッドグループ、第2スレッドグループ、第3スレッドグループの3つのスレッドグループにグループ分けされた場合を想定する。
【0048】
ステップS12: オペレーティングシステムは、特定の時間間隔を単位とする周期毎に第1スレッドグループ、第2スレッドグループ、第3スレッドグループが互いに異なるVPUによって並列に実行されるように、各周期における第1スレッドグループ、第2スレッドグループ、第3スレッドグループそれぞれの実行タイミングと各周期において第1スレッドグループ、第2スレッドグループ、第3スレッドグループそれぞれが実行されるVPUを決定するスケジューリング処理を実行する。これにより、例えば、第1スレッドグループはVPU0によって周期的に実行されるようにスケジューリングされ、同様に、第2スレッドグループはVPU1によって周期的に実行されるようにスケジューリングされ、第3スレッドグループはVPU2によって周期的に実行されるようにスケジューリングされる。
【0049】
ステップS13: オペレーティングシステムは、各周期における第1スレッドグループ、第2スレッドグループ、第3スレッドグループそれぞれの実行タイミングと、100%の動作速度で動作するVPUによって実行された場合に対応する第1スレッドグループ、第2スレッドグループ、第3スレッドグループそれぞれの実行に要するコストを示す情報とに基づいて、スレッドグループ毎に、各周期の開始タイミングから当該スレッドグループの処理が完了するまでの時間間隔Tを算出する。
【0050】
ステップS14: オペレーティングシステムは、第1スレッドグループ、第2スレッドグループ、第3スレッドグループの3つのスレッドグループの中から各周期内における実行期間の完了が最も遅いスレッドグループ、つまり時間間隔Tの長さがもっとも長いスレッドグループを選択する。
ステップS15: オペレーティングシステムは、1周期分の時間間隔に対する選択されたスレッドグループに対応する時間間隔Tの比率、つまり時間間隔Tが1周期分の時間間隔に占める割合を算出する。
ステップS16: オペレーティングシステムは、算出された割合に基づいて、選択されたスレッドグループの実行期間が遅くとも次の周期が開始される前に完了する範囲で、各周期の開始タイミングから第1スレッドグループ、第2スレッドグループの実行期間が完了するまでの時間間隔それぞれが同じ割合で延びるように、第1スレッドグループ、第2スレッドグループ、第3スレッドグループの実行に使用されるVPU0,VPU1,VPU2それぞれの動作速度(クロック周波数)を決定する。
ステップS17: オペレーティングシステムは、省電力制御装置17にVPU0,VPU1,VPU2のクロック周波数を示すコマンドを送信する。省電力制御装置17は各VPUに供給されるクロックの周波数を制御する回路を備えており、オペレーティングシステムからのコマンドで指定されるVPU0,VPU1,VPU2それぞれのクロック周波数を、当該コマンドで指定されるクロック周波数に設定する。これにより、VPU0,VPU1,VPU2それぞれの動作速度が100%よりも低速の動作速度に設定されるので、VPU0,VPU1,VPU2それぞれの消費電力を低減することができる。
【0051】
(オペレーティングシステム)
本計算機システムでは、システム内にOS(オペレーティングシステム)をひとつだけ実装する場合には、図18に示すように、そのOS201がすべての実資源(たとえば、MPU11、VPU12、メモリ14、入出力制御装置15、入出力装置16など)を管理する。
一方、仮想計算機方式を用いて、複数のOSを同時に動作させることも可能である。この場合には、図19に示すように、まず仮想計算機OS301を実装し、それがすべての実資源(たとえば、MPU11、VPU12、メモリ14、入出力制御装置15、入出力装置16など)を管理する。仮想計算機OS301はホストOSと称されることもある。さらに仮想計算機OS301の上に、ひとつ以上のOS(ゲストOSとも呼ぶ)を実装する。各ゲストOS302,303は、図20に示すように、仮想計算機OS301によって与えられる仮想的な計算機資源から構成される計算機上で動作し、ゲストOS302,303の管理するアプリケーションプログラムに各種のサービスを提供する。図20の例では、ゲストOS302は、1つのMPU11と、2つのVPU12と、メモリ14とから構成される計算機上で動いていると思っており、ゲストOS303は1つのMPU11と、4つのVPU12と、メモリ14とから構成される計算機上で動いていると思っている。ゲストOS302からみたVPU12や、ゲストOS303からみたVPU12が、実際には実資源のどのVPU12に対応しているかは、仮想計算機OS301が管理している。ゲストOS302,303は、その対応を意識する必要はない。
【0052】
仮想計算機OS301は、計算機システム全体の資源を時分割で各ゲストOS302,303に割り当てるように、ゲストOS302,303のスケジューリングを行う。例えば、ゲストOS302がリアルタイム処理を行うものであるとする。たとえば1秒間に30回、正しいペースで処理を行いたい場合には、各ゲストOS302はそのパラメタを仮想計算機OS301に設定する。仮想計算機OS301は、1/30秒に1回、確実にそのゲストOS301に必要なだけの処理時間が割り当てられるようにスケジューリングを行う。リアルタイム性を要求しない処理を行うゲストOSには、リアルタイム性を要求するゲストOSよりも低い優先度で、処理時間の割り当てを行うように、スケジューリングが行われる。図21は、時間軸を横にとって、ゲストOS302とゲストOS303が切り替わりながら動いている様子を示している。ゲストOS302が動いている間は、MPU11と全てのVPU12がゲストOS302の資源として使用され、ゲストOS303が動いている間は、MPU11と全てのVPU12がゲストOS303の資源として使用される。
【0053】
図22は別の動作モードを示している。ターゲットアプリケーションによってはVPU12をずっと占有して利用したい場合がある。たとえば、常にデータやイベントを監視し続けることが必要なアプリケーションがこれに相当する。このようなときには、特定のVPU12を特定のゲストOSによって占有するように、仮想計算機OS301のスケジューラがスケジュール管理する。図22では、VPU3をゲストOS302の専用資源に指定した場合の例である。仮想計算機OS301がゲストOS302(OS1)とゲストOS303(OS2)を切り替えても、VPU3は常にゲストOS302(OS1)の管理下で動作し続ける。
【0054】
さて、複数のVPU12を用いてプログラムを動作させるために、本実施形態では、複数のVPU12それぞれに割り当てるスレッドをスケジューリングするためのスケジューラを含む、VPU実行環境と呼ぶソフトウェアモジュールを用いる。本計算機システムにOSがひとつしか搭載されていない場合は、図23に示すようにそのOS201にVPU実行環境401を実装する。VPU実行環境401は、スケジューラによるスケジューリングの結果に基づいて、各VPUの動作速度をできるだけ低下させるための制御を実行するパワーセーブルーチンも含んでいる。VPU実行環境401は、OS201のカーネル内に実装することもできるし、ユーザプログラムレベルで実装することもできるし、両者に分割して協調して動作するように実装することも出来る。一方、仮想計算機OS上でひとつあるいは複数のOSを動作させる場合、VPU実行環境401を実装する方式には、次のような方式がある。
1.仮想計算機OS301の中にVPU実行環境401を実装する方式(図23)
2.VPU実行環境401を仮想計算機OS301が管理するひとつのOSとして実装する方式(図25)。図25では、仮想計算機OS301上で動作するゲストOS304自体がVPU実行環境401である。
3.仮想計算機OS301が管理する各ゲストOSに、それぞれ専用のVPU実行環境401を実装する方式(図26)。図26においては、ゲストOS302,303にそれぞれVPU実行環境401,402が実装されている。VPU実行環境401,402は、仮想計算機OS301の提供するゲストOS間の通信機能を用いて、必要に応じて、互いに連携して動作する。
4.仮想計算機OS301が管理するゲストOSのうちのひとつにVPU実行環境401を実装して、VPU実行環境を持たないゲストOSは、仮想計算機OS301の提供するゲストOS間の通信機能を用いて、VPU実行環境401を持つゲストOSのVPU実行環境401を利用する方式(図27)。
【0055】
これらの方式のメリットは以下のとおりである。
方式1のメリット
・仮想計算機OSの持つゲストOS(仮想計算機OSが管理する対象のOS)のスケジューリングと、VPU12のスケジューリングを一体化できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストOSを導入する場合に新しくVPU実行環境を作らなくてもよい。
方式2のメリット
・仮想計算機OSの上にあるゲストOS間でVPU12のスケジューラを共有できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストを導入する場合に新しくVPU実行環境を作らなくてもよい。
・VPU実行環境を仮想計算機OSや特定のゲストOSに依存せずに作れるので、標準化がしやすく、取り替えて使うことも出来る。特定の組み込み機器に適応したVPU実行環境を作って、その機器の特性を活かしたスケジューリング等を行うことで、効率良い実行ができる。
方式3のメリット
・各ゲストOSに対してVPU実行環境を最適に実装できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
【0056】
方式4のメリット
・すべてのゲストOSがVPU実行環境を実装する必要がないので、新しいゲストOSを追加しやすい。
このように、いずれの方式でもVPU実行環境を実装することができる。また、このほかにも適宜実施可能である。
【0057】
(サービスプロバイダ)
本実施形態の計算機システムにおいては、VPU実行環境401は、各VPU12に関連する各種資源(各VPUの処理時間、メモリ、接続装置のバンド幅、など)の管理とスケジューリング機能の他に、さまざまなサービス(ネットワークを使った通信機能、ファイルの入出力機能、コーデックなどのライブラリ機能の呼び出し、ユーザとのインタフェース処理、入出力デバイスを使った入出力処理、日付や時間の読み出し、など)を提供する。これらのサービスは、VPU12上で動作するアプリケーションプログラムから呼び出されて、簡単なサービスの場合にはそのVPU12上のサービスプログラムで処理される。しかし通信やファイルの処理などVPU12だけでは処理できないサービスに関しては、MPU11上のサービスプログラムによって処理する。このようなサービスを提供するプログラムを、サービスプロバイダ(SP)と呼ぶ。
【0058】
図28に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に処理を依頼する働きをする。
【0059】
図29に、VPU側VPU実行環境502がサービス要求を処理する手順を示す。VPU側VPU実行環境502はアプリケーションプログラムからのサービス呼び出しを受け取ると(ステップS101)、VPU実行環境502内で処理できるサービスであるかどうかを判別し(ステップS102)、それであれば、対応するサービスを実行して、結果を呼び出し元へ返す(ステップS103,S107)。一方、VPU実行環境502内で処理できるサービスではないならば、該当するサービスを実行可能なサービスプログラムがVPU12上で実行可能なプログラムとして登録されているかどうかを判断する(ステップS104)。登録されているならば、当該サービスプログラムを実行し、結果を呼び出し元へ返す(ステップS105,S107)。登録されていないならば、サービスブローカ512に処理を依頼し、そしてサービスブローカ512から返されるサービスの結果を呼び出し元へ返す(ステップS106,S107)。
【0060】
図30に、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)。
【0061】
なお、VPU12で実行するプログラムが発行するサービス要求には、サービスの実行結果のリプライを返すものもあれば、要求を出すだけでリプライの無いものもある。また、リプライ先は、通常は要求を出したスレッドであるが、リプライ先として他のスレッド、スレッドグループ、あるいはプロセスを指定することもできる。そのため、サービス要求のメッセージには、リプライ先の指定も含めることが好ましい。サービスブローカ512は、広く使われているオブジェクトリクエストブローカを用いて実現することができる。
【0062】
(リアルタイム処理)
本実施形態の計算機システムはリアルタイム処理システムとして機能する。この場合、そのリアルタイム処理システムの対象とする処理は、大きく、
1.ハードリアルタイム処理
2.ソフトリアルタイム処理
3.ベストエフォート処理(ノンリアルタイム処理)
の3種類に分類できる。1と2がいわゆるリアルタイム処理と呼ばれるものである。本実施形態のリアルタイム処理システムは、多くの既存のOSと同様、スレッドとプロセスの概念を持っている。ここではまず、本実施形態のリアルタイム処理システムにおけるスレッドとプロセスに関して説明する。
【0063】
スレッドには、次の3つのクラスがある。
1.ハードリアルタイムクラス
このスレッドクラスは、その時間要件(timing requirements)は非常に重要で、その要件が満たされなかった際に重大な状況になるような、重要なアプリケーションに用いる。
2.ソフトリアルタイムクラス
このスレッドクラスは、例えその時間要件が満たされなかった場合においても、その品質が低下するだけのアプリケーションに用いる。
3.ベストエフォートクラス
このスレッドクラスは、その要件の中に一切の時間要件を含まないアプリケーションに用いる。
【0064】
スレッドは本アルタイム処理システム内において処理を実行する実体である。スレッドには、そのスレッドが実行するプログラムが関連付けられている。各スレッドは、スレッドコンテクストと呼ぶ、それぞれのスレッドに固有の情報を保持している。スレッドコンテクストには、たとえば、プロセッサのレジスタの値や、スタックなどの情報が含まれている。
本リアルタイム処理システムにおいては、MPUスレッドとVPUスレッドの2種類のスレッドが存在する。これら2つのスレッドは、そのスレッドが実行されるプロセッサ(MPU11かVPU12)によって分類されており、スレッドとしてのモデルは全く同じである。VPUスレッドのスレッドコンテクストには、VPU12のローカルストレージ32の内容や、メモリコントローラ33の持つDMAコントローラの状態なども含む。
【0065】
複数のスレッドをその属性に応じてグループとしてまとめたものを、スレッドグループと呼ぶ。スレッドグループは、グループに含まれるスレッドすべてに対して同じ属性を与える、などの処理を効率よく簡単にできるメリットがある。ハードリアルタイムクラスまたはソフトリアルタイムクラスのスレッドグループは、密結合スレッドグループ(tightly coupled thread group)と疎結合スレッドグループ(loosely coupled thread group)の2種類に大別される。密結合スレッドグループ(tightly coupled thread group)と疎結合スレッドグループ(loosely coupled thread group)はスレッドグループに付加された属性情報(結合属性情報)によって識別される。アプリケーションプログラム内のコードまたは上述の構成記述によってスレッドグループの結合属性を明示的に指定することができる。
密結合スレッドグループは互いに協調して動作する複数のスレッドの集合から構成されるスレッドグループである。すなわち、密結合スレッドグループは、そのグループに属するスレッド群が、お互いに密接に連携して動作することを示す。密接な連携とは、例えば,頻繁にスレッド間で通信あるいは同期処理などの相互作用(interaction)を行ったり、あるいは、レイテンシ(latency)(遅延)の小さい相互作用を必要とする場合などである。一方、疎結合スレッドグループは、密結合スレッドグループに比べてそのグループに属するスレッド群間の密接な連携が不要であるスレッドグループであり、スレッド群はメモリ14上のバッファを介してデータ受け渡しのための通信を行う。
【0066】
(密結合スレッドグループ)
図31に示すように、密結合スレッドグループに属するスレッド群にはそれぞれ別のVPUが割り当てられ、各スレッドが同時に実行される。密結合スレッドグループに属するスレッドを、密結合スレッド(tightly coupled thread)と呼ぶ。この場合、密結合スレッドグループに属する密結合スレッドそれぞれの実行期間がそれら密結合スレッドの個数と同数のVPUそれぞれに対して予約され、それら密結合スレッドが同時に実行される。図31においては、ある密結合スレッドグループにスレッドA,Bの2つが密結合スレッドとして含まれており、それらスレッドA,BがそれぞれVPU0,VPU1によって同時に実行されている様子を示している。スレッドA,Bをそれぞれ別のVPUによって同時に実行することを保証することにより、各スレッドは相手のスレッドが実行されているVPUのローカルストレージや制御レジスタを通じて相手のスレッドとの通信を直接的に行うことが出来る。図32は、スレッド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がセグメントテーブルおよびページテーブルを用いて実行する。図33には、VPU0上で実行されるスレッドAが自身のEA空間にスレッドBが実行されるVPU1のローカルストレージ(LS1)32をマッピングし、VPU1上で実行されるスレッドBが自身のEA空間にスレッドAが実行されるVPU0のローカルストレージ(LS0)32をマッピングした様子が示されている。例えば、スレッドAはスレッドBに引き渡すべきデータがローカルストレージLS0上に準備できた時点で、そのことを示すフラグをローカルストレージLS0またはスレッドBが実行されるVPU1のローカルストレージLS1にセットする。スレッドBはそのフラグのセットに応答して、ローカルストレージLS0上のデータをリードする。
【0067】
このように、結合属性情報によって密結合関係にあるスレッドを特定できるようにすると共に、密結合関係にあるスレッドA,Bがそれぞれ別のVPUによって同時に実行されることを保証することにより、スレッドA,B間の通信、同期に関するインタラクションをより軽量で且つ遅延無く行うことが可能となる。
【0068】
(疎結合スレッドグループ)
疎結合スレッドグループに属するスレッド群それぞれの実行時間は、それらスレッド群間の入出力関係によって決定され、たとえ実行順序の制約がないスレッド同士であってもそれらが同時に実行されることは保証されない。疎結合スレッドグループ属するスレッドを、疎結合スレッド(loosely coupled thread)と呼ぶ。図34においては、ある疎結合スレッドグループにスレッドC,Dの2つが疎結合スレッドとして含まれており、それらスレッドC,DがそれぞれVPU0,VPU1によって実行されている様子を示している。図34に示すように、各スレッドの実行時間はばらばらになる。スレッドC,D間の通信は、図35に示すように、メインメモリ14上に用意したバッファを介して行われる。スレッドCはローカルストレージLS0に用意したデータをDMA転送によってメインメモリ14上に用意したバッファに書き込み、スレッドDはその開始時にDMA転送によってメインメモリ14上のバッファからローカルストレージLS1にデータを読み込む。
【0069】
(プロセスとスレッド)
プロセスは,図36に示すように、一つのアドレス空間と一つ以上のスレッドから構成される。一つのプロセスに含まれるスレッドの数と種類は,どのような組み合わせでも構わない。例えば,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のメリットは、ローカルストレージだけで動作するので、スレッドの生成やディスパッチや終了処理などのオーバーヘッドを小さくできることである。
【0070】
(スレッド群のスケジューリング)
次に、図37のフローチャートを参照して、VPU実行環境401によって実行されるスケジューリング処理について説明する。VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群にスレッドグループ単位で付加されている結合属性情報に基づいて、スレッド間の結合属性をチェックし(ステップS121)、各スレッドグループ毎にそのスレッドグループが密結合スレッドグループおよび疎結合スレッドグループのいずれであるかを判別する(ステップS122)。結合属性のチェックは、プログラムコード中のスレッドに関する記述あるいは上述の構成記述117中のスレッドパラメータを参照することによって行われる。このようにして、密結合スレッドグループおよび疎結合スレッドグループをそれぞれ特定することにより、スケジュール対象のスレッド群は密結合スレッドグループと疎結合スレッドグループとに分離される。
【0071】
密結合スレッドグループに属するスレッド群に対するスケジューリングは次のように行われる。すなわち、VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群から選択された密結合スレッドグループに属するスレッド群がそれぞれ別のVPUによって同時に実行されるように、その密結合スレッドグループに属するスレッド群と同数のVPUそれぞれの実行期間を予約し、スレッド群をそれら予約したVPUそれぞれに同時にディスパッチする(ステップS123)。そして、スケジューラは、各スレッドが実行されるVPU内のアドレス変換ユニット331を用いて、各スレッドのEA空間の一部に、協調して相互作用を行う相手となる他のスレッドが実行されるVPUのローカルストレージに対応するRA空間をマッピングする(ステップS124)。一方、スケジュール対象のスレッド群から選択された疎結合スレッドグループに属する疎結合スレッド群については、スケジューラは、それらスレッド群間の入出力関係に基づいてそれらスレッド群を1以上のVPUに順次ディスパッチする(ステップS125)。
【0072】
(スレッドの状態遷移)
一般にスレッドは、生成されてから消滅するまで、たとえば図38に示すような状態遷移を行う。図38の例では、以下の7種類の状態を遷移する。
1.NOT EXISTENT状態
論理的な状態であり,有効なスレッドでは,この状態はない。
2.DORMANT状態
スレッドは生成されているが,まだ実行は開始されていない。
3.READY状態
スレッドが,その実行を開始する準備ができている状態。
4.WAITING状態
スレッドが,実行を開始(再開)するための条件が満たされることを待っている状態。
5.RUNNING状態
スレッドが,実際にVPUまたはMPU上で実行されている状態。
6.SUSPENDED状態
VPU実行環境や他のスレッドにより,スレッドが強制的にその実行を中断させられている状態。
7.WAITING-SUSPENDED状態
WAITING状態とSUSPENDED状態が重なった状態。
【0073】
これらの7つの状態の間の遷移条件と、その遷移に伴うスレッドコンテクストの扱いは、以下のようになる。
<NOT EXISTENT状態からDORMANT状態への遷移>
・スレッドの作成によって遷移する。
・スレッドコンテクストが作成される。ただしコンテクストの中身は初期状態である。
<DORMANT状態からNOT EXISTENT状態への遷移>
・スレッドの削除によって遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によって,保存されていたコンテクストは破棄される。
<DORMANT状態からWAITING状態への遷移>
・スレッドが,実行環境に対してスレッドのスケジューリングをリクエストすると,スレッドの状態は,DORMANT状態からWAITING状態へ遷移する。
<WAITING状態からREADY状態への遷移>
・スレッドが,生起するのを待っていたイベント(例えば,同期や通信,タイマなど)が,生起した場合に,スレッドの状態はWAITING状態からREADY状態へ遷移する。
【0074】
<READY状態からRUNNING状態への遷移>
・スレッドが,実行環境によってMPUまたはVPUにディスパッチされると,スレッドの状態は,READY状態からRUNNING状態へ遷移する。
・スレッドコンテクストがロードされる。また,スレッドコンテクストが退避されていた場合には,復元される。
<RUNNING状態からREADY状態への遷移>
・スレッドが,スレッドの実行を横取りされると,スレッドの状態は,RUNNING状態からREADY状態へ遷移する。
【0075】
<RUNNING状態からWAITING状態への遷移>
・スレッドが,同期や通信などの機構を利用し,イベントを待つために自身の実行を中断した場合,スレッドの状態は,RUNNING状態からWAITING状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からWAITING状態へ遷移する際に,実行環境によって,そのスレッドのスレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り保持され,次にこのスレッドがRUNNING状態に遷移した時に復元される。
<RUNNING状態からSUSPENDED状態への遷移>
・スレッドが,実行環境や他のスレッドからの指示などによって,強制的にその実行を中断させられた場合,スレッドの状態は,RUNNING状態からSUSPENDED状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からSUSPEND状態へ遷移する際に,実行環境によって,スレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り,次にこのスレッドがRUNNING状態に遷移した時に復元される。
【0076】
<RUNNING状態からDORMANT状態への遷移>
・スレッドは,スレッド自身でその実行を終了した場合に,RUNNING状態からDORMANT状態へ遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によってコンテクストの内容が破棄される。
<WAITING状態からWAITING-SUSPENDED状態への遷移>
・スレッドがWAITING状態にてイベントなどの生起を待っている最中に,外部から強制的にスレッドの実行を中断された場合,スレッドの状態は,WAITING状態からWAITING-SUSPENDED状態へ遷移する。
<WAITING-SUSPENDED状態からWAITING状態への遷移>
・スレッドが,WAITING-SUSPENDED状態にいる最中に,外部からスレッドの実行を再開された場合,スレッドの状態はWAITING-SUSPENDED状態からWAITING状態へ遷移する。
【0077】
<WAITING-SUSPENDED状態からSUSPENDED状態への遷移>
・スレッドは,スレッドがWAITING状態にいた時に待っていたイベントが生起した場合に,スレッドの状態は,WAITING-SUSPENDED状態からSUSPENDED状態へ遷移する。
【0078】
<SUSPENDED状態からREADY状態への遷移>
・スレッドが,外部からスレッドの実行を再開させられた時に,スレッドの状態は,SUSPENDED状態からREADY状態へ遷移する。
【0079】
<READY状態からSUSPENDED状態への遷移>
・スレッドが,外部環境によってスレッドの実行が中断させられた場合に,スレッドの状態は,READY状態からSUSPENDED状態へ遷移する。
【0080】
(スレッドの実行期間)
スレッドに実際にVPUが割り当てられて処理を実行しているRUNNING状態の期間を、実行期間(execution term)と呼ぶ。一般にスレッドが生成されてから消滅するまでの間には、スレッドは複数の実行期間を持つ。図39はあるスレッドの生成から消滅までの時間軸に沿った状態の変化の例を示しているが、この例では、その生存期間中に、2回の実行期間があることを示している。実行期間と実行期間との間のコンテクストの保存(save)や復元(restore)は、さまざまな方法を用いて実現することができる。たとえば、多くの通常のスレッドは、実行期間が終了した時点のコンテクストを保存しておいて、次の実行期間の初めにそのコンテクストを復元するように動作させる。一方、ある種の周期的な(periodic)処理においては、全ての周期(period)において、実行期間の開始時には新しいコンテクストを作成してその実行期間中はそのコンテクストを使って実行を進め、実行期間の終了時にはそのコンテクストは廃棄するように動作させる。
【0081】
(密結合スレッドグループに属するスレッドの実行期間)
密結合スレッドグループに属するスレッドの場合の実行期間は、たとえば図40のようになる。すなわち、密結合スレッドグループに属するすべてのスレッドは、ある一つの実行期間において、全てのスレッドが同時に実行されるように、VPU実行環境401によってスケジューリングされる。このような密結合スレッドグループは、主としてハードリアルタイムスレッドに対して使用される。そのため、この動作を実現するために、VPU実行環境401は、ハードリアルタイムクラスにおける実行期間を予約するときに、同時に使用するプロセッサとその数を指定する。さらに、VPU実行環境401は、予約するそれぞれのプロセッサに対して、一対一に同時実行させるスレッドのコンテクストを対応させる。
【0082】
なお、ある期間において密結合スレッドグループに属していた複数のスレッドは、他の実行期間においては、密結合の関係を解消して、各スレッドが別々に動作することもできる。このような場合には、各スレッドは、今、密結合スレッドとして動作しているのか、あるいは、別々に動作しているのかを意識して、相手のスレッドとの通信や同期等の処理を行う必要がある。各スレッドには、横取り可能(preemptive)か横取り不可(non-preemptive)を示すプリエンプションに関連した属性が与えられる。Preemptiveとは、スレッドの実行期間中に、そのスレッドが横取りされることを許す、すなわち、実行を停止させることができるという属性である。Non-preemptiveとは、スレッドの実行期間中に、そのスレッドが横取りされないことを保障するという属性である。この横取り不可(non-preemptive)という属性の意味は、スレッドのクラス間で異なる。ハードリアルタイムクラスでは、スレッドが実行を開始すると、実行期間が終わるまで、そのスレッド自身以外、誰もその実行を止めることが出来ないことを意味する。ソフトリアルタイムクラスでは、そのクラスにとって、横取り可能性(preemptive-ness)は必要不可欠であるため、横取り不可の属性はサポートされない。ベストエフォートクラスでは、スレッドの実行は、他のベストエフォートクラスからの横取りからは保護されるものの、ハードリアルタイムやソフトリアルタイムクラスといったより高いレベルからは、横取りされる。
【0083】
(スレッドの実行モデル)
スレッドの実行モデルは、大きく、図41に示すような周期実行モデルと、図42に示すような非周期実行モデルの2つに分類できる。周期実行モデルでは、スレッドは周期的(periodically)に実行される。その一方、非周期実行モデルでは、イベントを起点としてその実行が行われる。周期実行モデルの実装方式には、ソフトウェア割込みを用いる方式と、同期機構(synchronization primitives)のようなイベントオブジェクトを用いる方式がある。ハードリアルタイムクラスでは、ソフトウェア割込みを用いて実装する。すなわち、VPU実行環境401は、周期的な処理を開始するタイミングで、所定の方法で決定されるスレッドのエントリポイントへジャンプしたり、あるいは、事前に所定の手順で登録されたコールバック関数を呼び出す。ソフトリアルタイムクラスでは、イベントオブジェクトを用いて実装する。すなわち、各周期において、あらかじめ登録されたイベントオブジェクトに対して、たとえばVPU実行環境401がイベントを通知するので、ソフトリアルタイムスレッドは、毎周期そのイベントオブジェクトを待ち、イベントが発生したら所定の処理を実行するようにプログラムを構成することで、周期実行モデルを実現する。ベストエフォートクラスの場合は、ソフトウェア割込みを用いる方式を用いても、イベントオブジェクトを用いる方式を用いても、周期実行モデルを実装できる。なお、実際の実行は、それぞれの周期の先頭で常に開始されるとは限らず、制約条件(constraints)の範囲内で、状態に応じて遅らされることもある。
【0084】
非周期実行モデルは、イベントモデルを用いると、周期実行モデルと同様に実現できる。すなわち、ソフトリアルタイムやベストエフォートクラスでは、非周期実行モデルは、イベントが通知されるタイミングが異なるだけで、実装手法上は周期実行モデルと同じになる。ハードリアルタイムクラスの場合は、時間要件を保障するために必要な、最小発生期間(minimum inter-arrival time)やデットラインは、システムの振る舞いを強く制約するため、非周期実行は制限される。
【0085】
(コンテクストの切り替え)
本実施形態のリアルタイム処理システムにおいては、VPUスレッドの実行期間の終了に伴うコンテクストの切り替え方式は、複数の方式から選択することができる。VPUのコンテクスト切り替えのコストは非常に大きいので、その方式を選択できるようにすることで、コンテクスト切り替えの効率を向上させることができる。指定したコンテクスト切り替え方式は、スレッドの予約された実行期間が終了した際に用いられるものである。実行期間中のコンテクスト切り替え、すなわち、いわゆるプリエンプションの際には、どの様な場合においても現在のスレッドの全てのコンテクストを保存して、次に実行再開するときに復元する必要がある。本実施形態のリアルタイム処理システムで提供するVPUコンテクスト切り替えの方式には、たとえば、以下のような方式がある。
【0086】
1.コンテクストの破棄
いかなるコンテクストも保存しない。
2.完全なコンテクストの保存
VPUのレジスタ、ローカルストレージ、およびメモリコントローラ内のDMAコントローラの状態を含む、VPUの完全なコンテクストを保存する。
3.Gracefulコンテキスト保存
VPUのメモリコントローラ内のDMAコントローラが実行中の全ての動作が完了するまでコンテクスト切り替えを遅延する。その後、VPUのレジスタとローカルストレージの内容を保存する。この方式では、完全なコンテクスト保存と同様、VPUのコンテクストの全てが保存される。
【0087】
スレッドのスケジューリングを行うスケジューラは、MPUスレッドとVPUスレッドの両方をスケジューリングするひとつのスケジューラとして実装することもできるし、MPUスレッド用のスケジューラとVPUスレッド用のスケジューラを別に実装することもできる。MPUとVPUではコンテクスト切り替えのコストが異なるため、別々にそれぞれに適したスケジューラを実装するほうが効率よくなる。
【0088】
(ハードリアルタイムクラスのスケジューリング)
ハードリアルタイムクラスのスレッド群のスケジューリングは、タスクグラフを拡張した予約グラフを用いて行われる。図43はタスクグラフの例である。タスクグラフは、タスク間の関係を表す。タスク間の矢印は、タスク間の依存関係(入出力関係)を示している。図43の例では、タスク1とタスク2は、自由に実行を開始することが出来ることを表している。それに対し、タスク3は、タスク1とタスク2両方の実行終了後に始めて実行を開始することが出来ることを表している。また、タスク4とタスク5は、タスク3の実行終了後に実行を開始することが出来ることを表している。タスクグラフにはコンテクストの概念がない。例えば、タスク1とタスク4とを同じコンテクストを用いて実行したい場合に、それを記述することができない。そこで、本実施形態のリアルタイム処理システムでは、以下のようにしてタスクグラフを拡張した予約グラフを用いる。
【0089】
まず、タスクグラフを、タスクではなく実行期間の間の関係を示すものととらえる。そして、それぞれの実行期間に、コンテクストを関係付けることで、そのコンテクストに対応するスレッドが、その実行期間に実行されることを示す。複数の実行期間に同じコンテクストが関係付けられると、それら全ての実行期間において、そのスレッドが実行されることを示す。例えば、図44では、スレッド1のコンテクストが実行期間1と2とに関係付けられており、スレッド1は、実行期間1と2の期間で実行されることを示す。さらに、グラフに用いられる実行期間の間の矢印に、実行環境にて保障されるハードリアルタイムの制約条件を表す属性を付加する。このようにして作成した予約グラフを用いて、リアルタイムシステムアプリケーションのモデルを一切修正することなく、処理モデルとその処理が持つ時間要件などの制約条件を記述することが可能になる。図45に、図44をベースに作成した予約グラフの例を示す。図45でコンテクスト1,2,3は、それぞれ図44のスレッド1,2,3のコンテクストを示している。
【0090】
(ソフトリアルタイムクラスのスケジューリング)
ソフトリアルタイムクラスのスケジューリングは、スレッドの実行形態を予測可能とするために、固定優先度スケジューリングを用いて実行される。そのスケジューリング方式としては、固定優先度FIFOスケジューリングと固定優先度ラウンドロビンスケジューリングの2種類のスケジューリングアルゴリズムを用意する。優先度の高いスレッドの実行を優先するため、低い優先度のスレッドが実行中であっても、より高い優先度のスレッドが実行可能になった場合には、低優先度のスレッドの実行をプリエンプトし、直ちに高優先度のスレッドの実行を開始する。クリティカルセクション(critical section)の実行時に発生する、優先度逆転問題を避けるため、優先度継承プロトコルや、優先度シーリングプロトコルなどの同期機構を併せて実施するのが望ましい。
【0091】
(ベストエフォートクラスのスケジューリング)
ベストエフォートクラスのスケジューリングは、たとえば、動的優先度スケジューリングなどを用いる。
【0092】
(階層型スケジューラ)
VPU実行環境401内のスケジューリング機能は、図46に示すような階層型のスケジューラとして実施することができる。すなわち、スレッドレベルのスケジューリングは、スレッドクラス間(inter−class)スケジューリングと、スレッドクラス内(intra−class)スケジューリングの、2つの階層により構成する。そのため、VPU実行環境401内のスケジューラは、スレッドクラス内(intra−class)スケジューリング部601と、スレッドクラス間(inter−class)スケジューリング部602とを持つ。スレッドクラス間スケジューリングでは、スレッドクラス間を跨るスケジューリングを行う。スレッドクラス内スケジューリングでは、それぞれのスケジューリングクラスごとに、そのスケジューリングクラスに属するスレッドのスケジューリングを行う。スレッドクラス内(intra−class)スケジューリング部601には、ハードリアルタイム(ハードRT)クラススケジューリング部611、ソフトリアルタイム(ソフトRT)クラスケジューリング部612、ベストエフォートクラスケジューリング部613が設けられている。
【0093】
スレッドクラス間スケジューリングとスレッドクラス内スケジューリングは、階層構造をなしており、まず、スレッドクラス間スケジューリングが動作して、どのスレッドクラスを実行するか決定した後、該当するスレッドクラス内スケジューリングによって、そのスレッドクラス内のどのスレッドを実行するかを決定する。スレッドクラス間スケジューリングは、プリエンプト可能な固定優先度スケジューリングを用いる。このとき、ハードリアルタイムクラスが最高優先度を持ち、ソフトリアルタイムクラス、ベストエフォートクラスの順に優先度が低くなるようにする。低優先度クラスのスレッドは、より優先度の高いクラスのスレッドが実行可能(ready)になると、その実行はプリエンプトされる。スレッドクラス間の同期は、VPU実行環境401によって提供される同期プリミティブによって実現する。このとき特に、ハードリアルタイムスレッドにはブロックすることのないプリミティブのみ使用できるようにして、ハードリアルタイムスレッドのブロックが発生しないようにする。また、ベストエフォートスレッドがソフトリアルタイムスレッドをブロックした場合には、そのベストエフォートスレッドは、ソフトリアルタイムスレッドとして扱うことで、スレッドクラス間の優先度逆転の発生を防止するようにする。さらに、そのベストエフォートスレッドが、他のソフトリアルタイムスレッドによってブロックされるような場合には、優先度継承プロトコルなどの方式を用いてブロックされないようにする。
【0094】
(スレッドパラメタ)
本実施形態のリアルタイム処理システムでは、さまざまなパラメタを用いてスケジューリングを行う。各クラスのスレッドに共通のパラメタには、たとえば以下のようなものがある。
・スレッドのクラス(ハードリアルタイム、ソフトリアルタイム、ベストエフォート)
・使用するリソース(MPUもしくはVPUの数、バンド幅、物理メモリサイズ、入出力デバイス)
・優先度
・横取り可能(preemptive)か横取り不可(non-preemptive)か
さらにハードリアルタイムクラスのスレッドに関しては、たとえば以下のようなパラメタがある。
【0095】
・実行期間
・デッドライン
・周期あるいは最小発生期間(minimum inter-arrival time)
・VPUのコンテクスト切り替え方式
図47にハードリアルタイムクラスの基本的なパラメタの例を示す。図47の一番上にある例1の実行期間の予約指定の例では、指定した実行期間の間、MPUを1つ、VPUを2つ同時に予約し、VPUのコンテクストを完全に保存することを指定している。この場合、3つのプロセッサ上で同時にスレッドが実行され、その実行期間終了後に、MPUスレッドに加え、VPUスレッドのコンテクストが完全に保存される。次に、右上にある例2では、VPU数とその実行期間によって表現される処理が、デッドラインより以前に実行されることを保障する際の、デッドラインの指定方法を示している。デッドラインは、予約リクエストを行った時刻(request time)からの相対時刻で指定される。もっとも下にある例3では、周期実行を指定している。この例では、2つのVPU12を指定した実行期間が、周期的に実行され、また、各周期の実行後にVPUスレッドのコンテクストが破棄され、全ての処理が新しいコンテクストで処理されること示している。さらに、その周期の先頭からの相対時刻を用いてデッドラインを指定している。
【0096】
ハードリアルタイムクラスで用いる別のパラメタとして、たとえば以下に示すような制約条件がある。
・タイミング制約(絶対タイミング制約、相対タイミング制約)
・先行制約
・相互排他制約
タイミング制約は、実行タイミングを遅らせる手段を提供する。絶対タイミング制約は、図48に示すように、例えば周期の開始時刻のような、ある静的なタイミングを基準として遅延時間を指定する制約条件である。相対タイミング制約は、図49に示すように、例えば他の実行期間の開始時刻や終了時刻のような、動的なタイミングやイベントを基準として許容可能な遅延時間を指定する制約条件である。先行制約は、相対タイミング制約を用いて、他の実行期間の終了時間を基準にし、その遅延時間を0以上と指定することで実現できるので、先行制約は相対タイミング制約の特殊な場合と考えることができる。
【0097】
相互排他制約(mutual exclusive)は、図50に示すように、それぞれの実行期間が、時間的に重ならないことを保障する制約である。相互排他制約を用いることによって、ロックによって発生するスレッド実行時間の予測不可能性を削減することが可能になる。すなわち、あるリソースを共有する全てのスレッドが同時に実行されないようにして、そのリソースに関するロックをなくすことができる。
【0098】
(スレッドの同期機構)
本実施形態のリアルタイム処理システムでは、スレッドの同期機構として、たとえば以下のような手段を用いる。
【0099】
・セマフォ
・メッセージキュー
・メッセージバッファ
・イベントフラグ
・バリア
・ミューテックス
その他の同期プリミティブも、これらと同様に用いることができる。このような同期機構を実現する手段として、本発明のリアルタイム処理システムでは、次の3通りの方式がある。
【0100】
・メモリ(主記憶)13あるいはVPUのローカルストレージ32上に、たとえばTEST&SETのような命令を使って実現する
・メールボックスやシグナルレジスタなどのハードウェア機構を使って実現する
・VPU実行環境がサービスとして提供する機構を利用する
これらの実現手段の異なる同期機構は、それぞれ得失を持っているため、それを利用するスレッドの属性等によって、たとえば図51のように使い分けるのが望ましい。すなわち、MPUやVPUが共有してアクセスできるメモリ13(主記憶MS)を使って実装した同期機構は、すべてのクラスのスレッドで使用できる。それに対して,VPU12のローカルストレージLS上に実装した同期機構は、密結合スレッドグループ(tightly coupled thread group)に属するスレッドのみが使うことができる。これは、密結合スレッドグループに属するスレッドのみが,同期相手のスレッドが同時に動作していることを保障されるからである。例えば,相手のスレッドが動作しているVPUのローカルストレージ上に実装した同期機構を用いる場合、密結合スレッドグループのスレッドであれば、同期機構を使う時点で、相手のスレッドが動作していることが保障されているので、その相手スレッドを実行しているVPUのローカルストレージに同期機構のための情報が必ず存在する。
【0101】
メモリ(主記憶MS)やローカルストレージLS以外の手段を用いて実装した同期機構としては、ハードウェア機構を使って実現する場合と、VPU実行環境401のサービスを使う場合がある。密結合スレッドグループに属するスレッド、あるいはハードリアルタイムクラスのスレッドは,速い同期機構が必要であるので、ハードウェア機構を用いて実装した同期機構を用いるのが望ましい。それに対して,疎結合スレッドグループに属するスレッド、あるいはソフトリアルタイムクラスと,ベストエフォートクラスのスレッドは,実行環境が提供する機構を利用するのが望ましい。
【0102】
(同期機構の自動選択)
本実施形態のリアルタイム処理システムでは、上記の同期機構を、スレッドの属性や状態に合わせて自動的に選択・切り替えを行うことができる。これは例えば図52に示すような手順により、同期処理を行いたいスレッドが密結合スレッドグループに属している状態の間は(ステップS201のYES)、メモリ14あるいはVPU12のローカルストレージ32あるいはハードウェア機構を用いて実装された高速な同期機構を用いるが(ステップS202,S203,S204,S205)、スレッドの状態が変化して密結合関係になくなった状態では(ステップS201のNO)、メモリ14上に実装された同期機構化あるいはVPU実行環境401のサービスとして提供されている同期機構を用いるように同期機構を切り替える(ステップS206,S207,S208)。
この切り替え手段は、VPU12上で動作するプログラムに対して、ライブラリの形式で提供するようにしても良いし、VPU12側のVPU実行環境502の提供するサービスとして提供することもできる。複数の同期機構を切り替える方式としては、あらかじめ複数の同期機構を確保しておいて、それを使い分けるようにすることもできるし、切り替えを行う時点で新しく同期機構を確保するようにすることもできる。
【0103】
VPU12のローカルストレージを用いた同期機構は、密結合スレッドグループに属するスレッド間のように、同期処理を行う時点で、同期機構を実装しているVPU12のローカルストレージが必ず有効になっている必要がある。この制限を緩和する方式としては、スレッドが実行中(RUNNING状態)で無い場合には、そのスレッドを最後に実行していたときのローカルストレージの内容をメモリに保存しておき、そのスレッドに対応付けられたローカルストレージを指すページテーブルあるいはセグメントテーブルのエントリからは、その保存したメモリ領域を指すようにマッピングを制御する。この方式により、相手のスレッドが実行中でなくても、相手のスレッドに対応付けられたローカルストレージがあたかもあるように、スレッドの実行を続けることができる。実行中で無かったスレッドが、VPU12を割り当てられて実行を始めるときには、メモリ14に保存していた内容を、再びローカルストレージに戻して、対応するページテーブルあるいはセグメントテーブルのマップを変更する。このように、VPU12のローカルストレージのバックアップコピーに対しても動作可能なように同期機構を実装しておくことで、密結合スレッドグループに属するスレッドでなくても、VPU12のローカルストレージを用いて実装した高速な同期機構を利用できるようになる。
【0104】
(予約グラフ)
図53は、図9に例として示した処理フローに対応する予約グラフを示したものである。図53において、6つの四角い箱は実行期間(execution term)を表している。各実行期間の四角の左上の番号は予約する実行期間のIDであり、実行期間の四角の中の記号は、その実行期間に対応付けられているスレッドコンテクストの識別子である。実行期間の四角の下の数値は、その実行期間の長さ(コスト)を表している。実行期間の四角の間を結ぶ矢印は、ここではすべて先行制約を表している。すなわち、矢印が入る実行期間は、必ず矢印が出ている実行期間が終わった後で実行を開始することを示している。これにより、実行期間間の連鎖が表現される。また、矢印に添えられている番号はその矢印で結ばれた実行期間の間でデータの受け渡しに使うバッファのIDを表しており、番号と共に添えられている数値はバッファのサイズを表している。図53に示した予約グラフに従って処理を実行するための手順は、以下のようになる。
【0105】
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とする 。
【0106】
7.図54に示すようなデータ構造の予約リクエストを作成し、VPU実行環境401に渡して予約を行う。
ここで手順1から6までのスレッドコンテクストの作成は、スレッドとして実行したいプログラムを指定してVPU実行環境401に依頼すると、VPU実行環境401が必要な資源を割り当ててスレッドコンテクストを作成し、そのハンドルを返してくるので、それを識別子と関連付けている。
【0107】
図54の予約リクエストは、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:などを指定でき、それぞれ制約の相手になる実行期間の番号のリストを持つ。
【0108】
図54の予約リクエストで予約したバッファ領域は、VPU実行環境401が、バッファにデータを書き込むスレッドの実行開始時に割り当て、データを読み出すスレッドの実行終了時に解放する。割り当てられたバッファのアドレスは、たとえばスレッドの起動時にあらかじめ決まっているアドレスあるいは変数あるいはレジスタなどを用いて、スレッドに通知することができる。本実施形態のリアルタイム処理システムでは、図7に示したようなプログラムモジュール100が与えられたときに、その中にある、図8に示すような構成記述117を読み込んで、それに基づいて、上記の手順でスレッドコンテクストの生成と図54の予約リクエストの作成・発行を行って、そのプログラムモジュール100の実行を行う機能を提供する。この機能により、図7のようなプログラムモジュール100によって記述された専用ハードウェアの処理を、複数のプロセッサによるソフトウェア処理によって実現することが可能となる。実現したいハードウェア毎に図7のような構造を持つプログラムモジュールを作成して、それを本実施形態のリアルタイム処理システムに準拠した機能が組み込まれた機器で実行することにより、当該機器を所望のハードウェアとして動作させることが可能となる。別の例としては、アプリケーションプログラム中に図54の予約リクエストを作成する処理を記述しておき、アプリケーションプログラムが自ら予約リクエストを作成してVPU実行環境401に渡して予約を行うように動作させることも可能である。
【0109】
図54に示す予約リクエストが与えられると、VPU実行環境401は、各実行期間を周期内のどのタイミングでどのVPU12で実行するかを決める。これがスケジューリングである。本実施形態のリアルタイム処理システムが組み込まれる電子機器の種類によっては、実際には、このような予約リクエストが同時に複数与えられることもあるので、それらが矛盾ないように(与えられた制約が満たされないことがないように)処理のタイミングが決定される。例えば、図55に示すように、VPU12が2つあるときに、図54の予約リクエストだけが入っていたとすると、DEMUX、V−DEC、PROG、BLENDの並行に実行できない処理をVPU0で順次実行し、DEMUXの実行後に並行して動作できるA−DECとTEXTをVPU1で実行するようにスケジューリングする。
【0110】
(ソフトウェアパイプライン)
ここでもし、ひとつの周期内で一連の処理要素DEMUX、V−DEC、PROG、BLENDを全て順次実行できるだけの時間がない場合には、複数の周期にまたがるようにソフトウェアパイプライン化を行う。例えば図56に示すように、最初の周期1ではDEMUXとV−DECをVPU0で行い、次の周期2でA−DEC、TEXT、PROG、BLENDの処理をVPU1で行うようにする。この周期2では、A−DEC、TEXT、PROG、BLENDの処理と並行して、次のフレームのDEMUXとV−DECがVPU0によって実行される。すなわち、図57に示すように、VPU0がDEMUXとV−DECを実行している間、VPU1では前の周期のDEMUXとV−DECの出力を受けたA−DEC、TEXT、PROG、BLENDが動くという具合に、パイプライン処理を行う。パイプライン処理を採用することにより、各周期におけるリアルタイム処理の実行をより短い時間で完了することが可能となる。
【0111】
図58のフローチャートには、ソフトウェアパイプラインを実現するためのスケジューリング処理の手順が示されている。
VPU実行環境401は、まず、逐次処理が必要な一連のスレッド群(DEMUX、V−DEC、PROG、BLEND)の全てをひとつの周期内で実行できるか否かを判別する(ステップS201)。1周期の値は、プログラムモジュール100の実行条件としてVPU実行環境401に対して予め設定されている。もちろん、構成記述117に周期の値を明示的に記述することもできる。ステップS201では、DEMUX、V−DEC、PROG、BLENDそれぞれのコストに基づいてそれらDEMUX、V−DEC、PROG、BLENDの総実行期間が予測される。そして、その予測値と周期の値とが比較される。
【0112】
もし一連のスレッド群(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スレッドグループに分類される。
【0113】
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秒の周期毎にフレームデータの処理結果を出力することが出来る。
【0114】
なお、上述の例では、第1スレッドグループ(DEMUX、V−DEC)を常にVPU0で実行し、第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)を常にVPU1で実行したが、図59に示すように、第1スレッドグループ(DEMUX、V−DEC)が割て当てられるプロセッサ、および第2スレッドグループ(A−DEC、TEXT、PROG、BLEND)が割て当てられるプロセッサが周期毎に入れ換えられるようにスケジューリングを行ってもよい。すなわち、スケジューリング処理では、第2スレッドグループが第1スレッドグループよりも1周期分遅れた状態で周期毎に第1スレッドグループおよび第2スレッドグループが互いに異なるプロセッサによって並列に実行されるように、各周期における第1スレッドグループおよび第2スレッドグループそれぞれの実行タイミングと、各周期において第1スレッドグループおよび第2スレッドグループそれぞれが実行されるプロセッサが決定される。
【0115】
(パイプライン処理を利用した省電力制御)
上述したように、パイプライン処理を利用することにより、各周期におけるリアルタイム処理の実行がなるべく短い時間で完了するようにリアルタイム処理を複数のVPUに効率よく割り当てることが可能となる。よって、パイプライン処理を用いることにより、リアルタイム処理を実行する複数のVPUそれぞれの動作速度をより遅く設定することが可能となる。
図60は、VPU0とVPU1の2つのVPUを用いて、図53の予約グラフで示されるデジタル放送の受信を行うプログラムを2本同時に実行する例を示している。D1-1,V1-1,P1-1,A1-1,T1-1,B1-1は1本目のプログラムにおける周期1のDEMUX、V−DEC、PROG、A−DEC、TEXT、BLENDの処理を示しており、またD2-1,V2-1,P2-1,A2-1,T2-1,B2-1は2本目のプログラムにおける周期1のDEMUX、V−DEC、PROG、A−DEC、TEXT、BLENDの処理を示している。
【0116】
VPU0,VPU1,VPU2,VPU3の4つのVPUが設けられている場合には、本実施形態においては、図61に示すように、ソフトウェアパイプラインを行って、4つのVPUをすべて使用し、且つ1周期内に割り当てられた実行期間の終了が全VPU間でできるだけ均等になるようにスケジューリングされる。図61では、1本目のプログラムにおけるDEMUX、V−DECの処理と1本目のプログラムにおける1周期前のPROG、A−DEC、TEXT、BLENDの処理はVPU0とVPU1の2つのVPUによって並行して実行される。また2本目のプログラムにおけるDEMUX、V−DECの処理と2本目のプログラムにおける1周期前のPROG、A−DEC、TEXT、BLENDの処理はVPU2とVPU3の2つのVPUによって並行して実行される。このようにスケジューリングすると、毎周期の後半はどのVPUも処理を行っていないので、その空き時間を利用して、図62に示すように全VPUの動作速度を下げることができる。
【0117】
VPU0,VPU1,VPU2,VPU3の4つのVPUそれぞれの動作速度の制御処理は、以下の手順で行われる。まず、スケジューリングによって決定された複数のスレッドグループそれぞれの各周期における実行開始タイミングと、100%の動作速度で動作するVPUによって実行された場合に対応する複数のスレッドグループそれぞれの実行に要するコストを示す情報とに基づいて、複数のスレッドグループの中から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が最も長いスレッドグループが選択される。次いで、100%の動作速度で動作するVPUによって実行された場合に対応する各周期の開始タイミングから当該周期における選択されたスレッドグループの実行期間が完了するまでの時間間隔Tが、1周期分の時間間隔に対して占める割合が算出される。そして、その算出された割合に基づいて、ソフトウェアパイプラインに使用されるVPUそれぞれの動作速度が、100%よりも遅い速度に設定される。
【0118】
(階層構造を持つ予約グラフ)
図53に示した予約グラフは階層構造を持っていないが、図63に示すように、階層構造を持つ予約グラフを扱うことも出来る。図63の例では、実行期間AはBに先行し、BはCに先行する。Bの中はDがEとFに先行している。それゆえ、階層を解くと、AはDに先行し、EとFはCに先行することになる。
【0119】
(密結合スレッドグループを考慮した予約リクエスト)
例えば図53に示した予約グラフにおいてV−DECを実行するスレッドとPROGを実行するスレッドが密結合スレッドグループに属する場合、その結合属性を示す予約リクエストが図64のように生成される。図64の例においては、TightlyCoupled :に相手先のスレッドに対応する実行期間のIDが記述されている。これにより、V−DECを実行するスレッドとPROGを実行するスレッドがそれぞれ別のVPUによって同時に実行されるように、例えば図65に示すようにスケジューリングされる。この場合、V−DECを実行するスレッドとPROGを実行するスレッドとの間の通信はローカルストレージを介して実行できるので、バッファをメモリ14上に用意する必要はない。図65の例では、DEMUX、V−DEC、BLENDを実行するスレッドグループが完了するタイミングが最も遅いので、各周期の実行開始タイミングからDEMUX、V−DEC、BLENDを実行するスレッドグループの実行が完了するまでの時間間隔が、1周期分の時間間隔にまで延びるように、VPU0,VPU1,VPU2それぞれの動作速度が同じ割合で低下される。VPU0,VPU1,VPU2それぞれの動作速度を同じ割合で低下することにより、密結合関係にあるV−DECとPROGの実行期間は一致する。
【0120】
(構成記述に基づくスケジューリングアルゴリズム)
以下、プログラムモジュールに組み込まれた構成記述に基づいて各スレッドの実行期間を予約するための処理手順について説明する。
【0121】
図7のプログラムモジュール100内の構成記述117は、図8の例のようになっている。この構成記述117が与えられると、VPU実行環境401は次の手順を実行する。
1.構成記述117のモジュール欄に書かれている各プログラムをロードして、それぞれを実行するスレッドを生成する。このとき、本実施形態では、構成記述117のエントリそれぞれに対して一つのスレッドを生成する。構成記述117の中に、同じモジュール名を持つ複数のエントリが存在する場合には、同じモジュールを実行する複数のスレッドをそれぞれのエントリと対応するように生成することになる。なお、図8の例では、すべてのスレッドはひとつのプロセスに属するように生成されるものとしているが、それぞれのスレッドが別のプロセスに属するように実施することもできるし、あるグループのスレッドはあるプロセスに属し、また他のグループのスレッドは別のプロセスに属するといったように実施することもできる。
2.構成記述117の情報から、図54で説明したような予約リクエストのデータ構造を作成する。
3.予約リクエストをVPU実行環境に渡して処理のスケジューリングを行い、実行を開始する。
【0122】
この2番目の予約リクエストを作成するステップは、次のように行う。
まず、構成記述117の出力欄に1対1に対応するように、BUFFERレコードを作成して予約リクエストに加える。例えば、図8の構造記述117の例では、DEMUXモジュールの2番目の出力は1MBのバッファを使ってデータをV−DECに渡しているので、それに対応するように、図54のIdが2のBUFFERレコードを作成している。Idが2のBUFFERレコードには、そのバッファサイズがSize欄に1MBと記録され、そのバッファにデータを書き込むDEMUXモジュールに対応するタスクであるIdが1のTASKレコードへの参照がSrcTask欄に記録され、そのバッファのデータを読み出すV−DECモジュールに対応するタスクであるIdが3のTASKレコードへの参照がDstTask欄に記録されている。
【0123】
次に、構成記述117のモジュール欄に1対1に対応するように、TASKレコードを作成して予約リクエストに加える。例えば、図8の構造記述117の例で、V−DECモジュールに対応するTASKレコードとして、図54のIdが3のTASKレコードを作成している。Idが3のTASKレコードには、以下のような情報が記録されている。
【0124】
Class欄: このTASKレコードに指定されるスレッドをどのような属性で実行させるかを示すフラグ。VPUはVPU上で実行するスレッドであることを、HRTはハードリアルタイムクラスのスレッドであることを示す。これらの情報は、図8の例では構成記述117のスレッドパラメタに記述されている情報をもとに設定する。
【0125】
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を必要な数指定する。
このようにして、構造記述が与えられるとそれに対する予約リクエストが作成される。
【0126】
次に、その予約リクエストをVPU実行環境401内のスケジューラに渡すと、スケジューラは、指定された予約リクエストを実行するのに必要なスケジュールを作成する。このスケジューリング処理の結果作成されたスケジュールは、例えば図55に示すような、各周期のどのタイミングで、どのVPUを、どれだけの時間、どのスレッドに割り当てるかを示すものである。実際には、例えば図66のような予約リストによって表現されるように実施することができる。
【0127】
図66の予約リストは、各VPUに対応付けられた予約エントリから構成される。予約エントリには、ひとつのスレッドに対して、それを各周期内のどのタイミングでVPUを割り当てて実行を始めるかを開始時間欄に、どれくらいの時間でVPUを取り上げるかを実行期間欄に、そのスレッドの識別子を実行スレッド欄に記録している。それらの予約エントリは、実行するVPU別に、開始時間順にソートされて予約リストにつながれている。
【0128】
図54または図64に示すような予約リクエストから、図66に示すような予約リストを作成する手順は、例えば図67のフローチャートで示す手順で実施できる。
基本は、予約リクエスト中の各TASKレコードを、BUFFERを使った入出力関係を考慮して順序付けして、データの流れる順に、VPUの実行時間を割り付けて行けばよい。このとき、密結合スレッドグループに指定されているTASK群には、それぞれのTASKのスレッドに同時にVPUを割り付けるようにする必要がある。
【0129】
図67にその手順を示す。予約リクエストが与えられると、その中のTASKレコードに指定されているすべてのタスクの集合に対して、以下の手順でスケジューリング(いいかえると、スケジュールの割り付け、あるいは予約リストの作成)を行う。
ステップS301: 全ての入力タスクが割付け済みのタスクで、密結合指定のないタスクを選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たない場合であって、かつ、そのタスクが密結合指定されていないものが存在すれば、それを選択してステップS302へ、そうでなければステップS304へ行く。
ステップS302: 選択したタスクを予約できるVPUが存在すれば(言い換えると、他のタスクとの間の制約を満たす開始時間と実行期間を予約できるVPUが存在すれば)、ステップS303へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS303: 選択したタスクの予約エントリを作成して、予約リストにつなぐ。
【0130】
ステップS404: 全ての入力タスクが割付け済みのタスクで、密結合関係にあるタスク群を選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たないものの集合であって、かつ、その集合に属するタスク間が密結合指定されているものが存在すれば、そのタスク集合(タスク群とも呼ぶ)を選択してステップS3055へ、そうでなければ既にすべてのタスクを割り付けているのでスケジューリング処理を終了する。
ステップS305: 選択したタスク集合に含まれるすべてのタスクを同時に(同じ開始時間で同じ実行期間を持つように)予約できる複数のVPUが存在すればステップS306へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS306: 選択したタスク集合のすべてのタスクの予約エントリを作成して、予約リストにつなぐ。
【0131】
ここでの説明はひとつの予約リクエストのスケジューリングの手順について述べたが、上述したように、実際は、ひとつのシステムにおいて複数の予約リクエストが同時に存在することが普通である。そのような場合には、複数の予約リクエストを順次上記の手順でスケジューリングするように実施することもできるし、より望ましくは、同時に複数の予約リクエストを上記の手順でスケジューリングするように実施する。
【0132】
以上、デジタルテレビ放送用受信機の動作を記述したプログラムモジュールを例に説明したが、他の様々なハードウェアの動作を記述したプログラムモジュールを用意することにより、デジタルテレビ放送用受信機以外の他の任意のハードウェアの動作をソフトウェアによって実現することが出来る。
【0133】
なお、図1の計算機システムに設けられたMPU11と複数のVPU12は、それらを1チップ上に混載した並列プロセッサとして実現することもできる。この場合も、MPU11によって実行されるVPU実行環境、あるいは特定の一つのVPUなどによって実行されるVPU実行環境が、複数のVPU12に対するスケジューリングとそれらVPUそれぞれの動作速度を制御することが出来る。
【0134】
またソフトウェアパイプライン処理は、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処理要素グループが周期的に実行されるようにスケジューリングされる。次いで、第1処理要素グループ、第2処理要素グループ、および第3処理要素グループの中から、各周期内における実行期間の完了が最も遅い処理要素グループが選択される。そして、各周期の開始タイミングから当該周期における選択された処理要素グループの実行期間が完了するまでの時間間隔が1周期分の時間間隔に対して占める割合に基づいて、VPU0,1,2の動作速度が低下される。
【0135】
また、ある処理要素グループの処理を複数のVPUによって並列に実行することもできる。例えば、同一処理要素グループ内に並列処理可能な複数の処理要素が含まれている時は、同一処理要素グループ内の複数の処理要素を複数のVPUによって並列に実行してもよい。
【0136】
またVPU実行環境として動作するプログラムまたはそのVPU実行環境を含むオペレーティングシステムなどのプログラムをコンピュータ読み取り可能な記憶媒体に記憶することにより、その記憶媒体を通じて当該プログラムを、ローカルプロセッサをそれぞれ有する複数のプロセッサを含むコンピュータに導入して実行するだけで、本実施形態と同様の効果を得ることが出来る。
【0137】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0138】
【発明の効果】
以上説明したように、本発明によれば、リアルタイム性を損なうことなくプロセッサのパワーセーブを実現することが可能となる。
【図面の簡単な説明】
【図1】 本発明の一実施形態に係るリアルタイム処理システムを構成する計算機システムの例を示すブロック図。
【図2】 同実施形態のリアルタイム処理システムに設けられたMPUおよびVPUそれぞれの構成を示すブロック図。
【図3】 同実施形態のリアルタイム処理システムで用いられる仮想アドレス変換機構の例を示す図。
【図4】 同実施形態のリアルタイム処理システムにおける実アドレス空間にマッピングされるデータの例を示す図。
【図5】 同実施形態のリアルタイム処理システムにおける実効アドレス空間、仮想アドレス空間、実アドレス空間を説明するための図。
【図6】 デジタルテレビ放送の受信機の構成を示すブロック図。
【図7】 同実施形態のリアルタイム処理システムによって実行されるプログラムモジュールの構成の例を示す図。
【図8】 図7のプログラムモジュール内に含まれる構成記述の例を示す図。
【図9】 図7のプログラムモジュールに対応するプログラム間のデータの流れを示す図。
【図10】 図7のプログラムモジュールが2つのVPUによって並列に実行される様子を示す図。
【図11】 図7のプログラムモジュールが2つのVPUによってパイプライン形式で実行される様子を示す図。
【図12】 リアルタイム処理を構成するスレッド群が周期的に実行されるようにスケジューリングした様子を示す図。
【図13】 図7のスケジューリング結果に基づいて、VPUの動作速度を低下させる例を示す図。
【図14】 同実施形態のリアルタイム処理システムによって実行される省電力制御処理の手順の例を示すフローチャート。
【図15】 リアルタイム処理を構成するスレッド群が2つのVPUによって周期的に実行されるようにスケジューリングした様子を示す図。
【図16】 図15のスケジューリング結果に基づいて、2つのVPUの動作速度を低下させる例を示す図。
【図17】 同実施形態のリアルタイム処理システムによって実行される省電力制御処理の手順の他の例を示すフローチャート。
【図18】 同実施形態のリアルタイム処理システムにおけるオペレーティングシステムの実装形態の例を示す図。
【図19】 同実施形態のリアルタイム処理システムにおけるオペレーティングシステムの実装形態の他の例を示す図。
【図20】 同実施形態のリアルタイム処理システムにおける仮想計算機OSとゲストOSとの関係を示す図。
【図21】 同実施形態のリアルタイム処理システムにおいて複数のゲストOSに時分割で資源が割り当てられる様子を示す図。
【図22】 同実施形態のリアルタイム処理システムにおいてある特定のゲストOSによって特定の資源が専有される様子を示す図。
【図23】 同実施形態のリアルタイム処理システムにおいてスケジューラとして用いられるVPU実行環境を示す図。
【図24】 同実施形態のリアルタイム処理システムで用いられる仮想計算機OSにVPU実行環境を実装した例を示す図。
【図25】 同実施形態のリアルタイム処理システムで用いられる一つのゲストOSとしてVPU実行環境を実装する例を示す図。
【図26】 同実施形態のリアルタイム処理システムで用いられる複数のゲストOSそれぞれにVPU実行環境を実装する例を示す図。
【図27】 同実施形態のリアルタイム処理システムで用いられる一つのゲストOSにVPU実行環境を実装する例を示す図。
【図28】 同実施形態のリアルタイム処理システムで用いられるMPU側VPU実行環境とVPU側VPU実行環境を説明するための図。
【図29】 同実施形態のリアルタイム処理システムで用いられるVPU側VPU実行環境によって実行される処理手順を示すフローチャート。
【図30】 同実施形態のリアルタイム処理システムで用いられるMPU側VPU実行環境によって実行される処理手順を示すフローチャート。
【図31】 同実施形態のリアルタイム処理システムにおいて密結合スレッドグループに属するスレッド群がそれぞれ別のプロセッサによって同時に実行される様子を示す図。
【図32】 同実施形態のリアルタイム処理システムにおける密結合スレッド間の相互作用を説明するための図。
【図33】 同実施形態のリアルタイム処理システムにおいて各密結合スレッドの実効アドレス空間に相手のスレッドが実行されるVPUのローカルストレージがマッピングされる様子を示す図。
【図34】 同実施形態のリアルタイム処理システムにおける疎結合スレッドグループに属するスレッド群に対するプロセッサの割り当てを説明するための図。
【図35】 同実施形態のリアルタイム処理システムにおける疎結合スレッド間の相互作用を説明するための図。
【図36】 同実施形態のリアルタイム処理システムにおけるプロセスとスレッドとの関係を説明するための図。
【図37】 同実施形態のリアルタイム処理システムにおけるスケジューリング処理の手順を示すフローチャート。
【図38】 同実施形態のリアルタイム処理システムにおけるスレッドの状態遷移を示す図。
【図39】 同実施形態のリアルタイム処理システムにおけるスレッドとその実行期間との関係を説明するための図。
【図40】 同実施形態のリアルタイム処理システムにおける密結合スレッド群がある実行期間において同時に実行される様子を示す図。
【図41】 同実施形態のリアルタイム処理システムにおける周期実行モデルを示す図。
【図42】 同実施形態のリアルタイム処理システムにおける非周期実行モデルを示す図。
【図43】 タスクグラフを説明するための図。
【図44】 同実施形態のリアルタイム処理システムで用いられる予約グラフの原理を説明するための図。
【図45】 同実施形態のリアルタイム処理システムで用いられる予約グラフの例を説明するための図。
【図46】 同実施形態のリアルタイム処理システムで用いられる階層型スケジューラを説明するための図。
【図47】 同実施形態のリアルタイム処理システムがハードリアルタイムクラスのスケジューリングのために使用するパラメータの例を説明する図。
【図48】 同実施形態のリアルタイム処理システムで用いられる絶対タイミング制約を説明する図。
【図49】 同実施形態のリアルタイム処理システムで用いられる相対タイミング制約を説明する図。
【図50】 同実施形態のリアルタイム処理システムで用いられる相互排他制約を説明する図。
【図51】 同実施形態のリアルタイム処理システムにおける同期機構を説明するための図。
【図52】 同実施形態のリアルタイム処理システムにおいて同期機構を使い分ける手順を示すフローチャート。
【図53】 同実施形態のリアルタイム処理システムにおいて用いられる予約グラフの例を示す図。
【図54】 同実施形態のリアルタイム処理システムにおいて生成される予約リクエストの例を示す図。
【図55】 同実施形態のリアルタイム処理システムが図54の予約リクエストに基づいて実行するスケジューリングの例を示す図。
【図56】 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングを説明するための第1の図。
【図57】 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングを説明するための第2の図。
【図58】 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプラインのためのスケジューリング処理の手順を示すフローチャート。
【図59】 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングの他の例を示す図。
【図60】 同実施形態のリアルタイム処理システムにおいて2つのプログラムが同時に2つのVPUによって実行されるようにスケジューリングした様子を示す図。
【図61】 同実施形態のリアルタイム処理システムにおいて2つのプログラムが4つのVPUによってパイプライン形式で実行されるようにスケジューリングした様子を示す図。
【図62】 図61のスケジューリング結果に基づき、4つのVPUの動作速度を低下した様子を示す図。
【図63】 同実施形態のリアルタイム処理システムにおいて用いられる階層構造を持つ予約グラフの例を示す図。
【図64】 同実施形態のリアルタイム処理システムによって生成される、密結合スレッドグループを考慮した予約リクエストの例を示す図。
【図65】 同実施形態のリアルタイム処理システムが図64の予約リクエストに基づいて行うスケジューリングの例を示す図。
【図66】 同実施形態のリアルタイム処理システムにおいて用いられる予約リストの例を示す図。
【図67】 同実施形態のリアルタイム処理システムにおける実行期間予約処理の手順を示すフローチャート。
【符号の説明】
11…MPU(Master Processing Unit)、12…VPU(Slave Processing Unit)、14…メインメモリ、17…省電力制御装置、21…処理ユニット、22…メモリ管理ユニット、31…処理ユニット、32…ローカルストレージ、33…メモリコントローラ、50…セグメントテーブル、60…ページテーブル、100…プログラムモジュール、111〜116…プログラム、117…構成記述、331…アドレス変換ユニット、401…VPU実行環境。
Claims (10)
- 連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて特定の時間間隔で周期的に実行するためのスケジューリング方法において、
前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、互いに並列に実行可能な複数の処理要素グループにグループ分けするステップと、
前記特定の時間間隔を単位とする周期毎に前記複数の処理要素グループが互いに異なる複数のプロセッサによって並列に実行され且つ前記処理要素間の実行順序の関係が満たされるように、各周期における前記複数の処理要素グループそれぞれの実行タイミングと各周期において前記複数の処理要素グループそれぞれが実行される複数のプロセッサを決定するステップと、
前記各周期における前記複数の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記複数の処理要素グループそれぞれの実行に要する時間を示す情報とに基づいて、前記複数の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が最も長い処理要素グループを選択するステップと、
前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出するステップと、
前記算出された割合に基づいて、前記複数の処理要素グループがそれぞれ実行される前記複数のプロセッサの動作速度が同じ比率で低下されるように、前記複数の処理要素グループが実行される前記複数のプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を実行するステップとを具備することを特徴とするスケジューリング方法。 - 前記動作速度制御処理を実行するステップは、前記各周期における前記選択された処理要素グループの実行期間が遅くとも次の周期が開始される前に完了し、且つ前記各周期の開始タイミングから前記複数の処理要素グループの実行期間が完了するまでの時間間隔それぞれが同じ割合で延びるように、前記算出された割合と前記第1の動作速度とに基づいて、前記第2の動作速度の値を決定するステップを含むことを特徴とする請求項1記載のスケジューリング方法。
- 前記動作速度制御処理を実行するステップは、前記複数の処理要素グループが実行されるプロセッサそれぞれの動作速度が前記第2の動作速度に設定されるように、前記プロセッサそれぞれに供給されるクロック周波数の値を制御するステップを含むことを特徴とする請求項1記載のスケジューリング方法。
- 連鎖された複数の処理要素から構成されるリアルタイム処理を複数のプロセッサを用いて特定の時間間隔で周期的に実行するためのスケジューリング方法において、
前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグループ分けするステップと、
前記第2の処理要素グループが前記第1の処理要素グループよりも1周期分遅れた状態で前記特定の時間間隔で前記第1の処理要素グループおよび前記第2の処理要素グループが互いに異なるプロセッサによって周期的に実行されるように、前記特定の時間間隔を単位とする各周期における前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行タイミングと各周期において前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれが実行されるプロセッサを決定するステップと、
前記各周期における前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの 実行に要する時間を示す情報とに基づいて、前記第1の処理要素グループおよび前記第2の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が長い処理要素グループを選択するステップと、
前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出するステップと、
前記算出された割合に基づいて、前記第1の処理要素グループおよび前記第2の処理要素グループが実行されるプロセッサそれぞれの動作速度が同じ比率で低下されるように、前記第1の処理要素グループおよび前記第2の処理要素グループが実行されるプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を実行するステップとを具備することを特徴とするスケジューリング方法。 - 連鎖された複数の処理要素から構成されるリアルタイム処理を特定の時間間隔で周期的に実行する情報処理システムにおいて、
複数のプロセッサと、
前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、互いに並列に実行可能な複数の処理要素グループにグループ分けする手段と、
前記特定の時間間隔を単位とする周期毎に前記複数の処理要素グループが互いに異なる複数のプロセッサによって並列に実行され且つ前記処理要素間の実行順序の関係が満たされるように、各周期における前記複数の処理要素グループそれぞれの実行タイミングと各周期において前記複数の処理要素グループそれぞれが実行される複数のプロセッサを決定する手段と、
前記各周期における前記複数の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記複数の処理要素グループそれぞれの実行に要する時間を示す情報とに基づいて、前記複数の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が最も長い処理要素グループを選択する手段と、
前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出する手段と、
前記算出された割合に基づいて、前記複数の処理要素グループがそれぞれ実行される前記複数のプロセッサの動作速度が同じ比率で低下されるように、前記複数の処理要素グループが実行される前記複数のプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を実行する手段とを具備することを特徴とする情報処理システム。 - 前記動作速度制御処理を実行する手段は、前記各周期における前記選択された処理要素グループの実行期間が遅くとも次の周期が開始される前に完了し、且つ前記各周期の開始タイミングから前記複数の処理要素グループの実行期間が完了するまでの時間間隔それぞれが同じ割合で延びるように、前記算出された割合と前記第1の動作速度とに基づいて、前記第2の動作速度の値を決定する手段を含むことを特徴とする請求項5記載の情報処理システム。
- 前記動作速度制御処理を実行する手段は、前記複数の処理要素グループが実行されるプロセッサそれぞれの動作速度が前記第2の動作速度に設定されるように、前記プロセッサそれぞれに供給されるクロック周波数の値を制御する手段を含むことを特徴とする請求項5記載の情報処理システム。
- 連鎖された複数の処理要素から構成されるリアルタイム処理を特定の時間間隔で周期的に実行する情報処理システムにおいて、
複数のプロセッサと、
前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグル ープ分けする手段と、
前記第2の処理要素グループが前記第1の処理要素グループよりも1周期分遅れた状態で前記特定の時間間隔で前記第1の処理要素グループおよび前記第2の処理要素グループが互いに異なるプロセッサによって周期的に実行されるように、前記特定の時間間隔を単位とする各周期における前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行タイミングと各周期において前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれが実行されるプロセッサを決定する手段と、
前記各周期における前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行に要する時間を示す情報とに基づいて、前記第1の処理要素グループおよび前記第2の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が長い処理要素グループを選択する手段と、
前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出する手段と、
前記算出された割合に基づいて、前記第1の処理要素グループおよび前記第2の処理要素グループが実行されるプロセッサそれぞれの動作速度が同じ比率で低下されるように、前記第1の処理要素グループおよび前記第2の処理要素グループが実行されるプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を実行する手段とを具備することを特徴とする情報処理システム。 - 複数のプロセッサを含むコンピュータに、連鎖された複数の処理要素から構成されるリアルタイム処理を特定の時間間隔で周期的に実行させるプログラムであって、
前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、互いに並列に実行可能な複数の処理要素グループにグループ分けする処理を、前記コンピュータに実行させる手順と、
前記特定の時間間隔を単位とする周期毎に前記複数の処理要素グループが互いに異なる複数のプロセッサによって並列に実行され且つ前記処理要素間の実行順序の関係が満たされるように、各周期における前記複数の処理要素グループそれぞれの実行タイミングと各周期において前記複数の処理要素グループそれぞれが実行される複数のプロセッサを決定する処理を、前記コンピュータに実行させる手順と、
前記各周期における前記複数の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記複数の処理要素グループそれぞれの実行に要する時間を示す情報とに基づいて、前記複数の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が最も長い処理要素グループを選択する処理を、前記コンピュータに実行させる手順と、
前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出する処理を、前記コンピュータに実行させる手順と、
前記算出された割合に基づいて、前記複数の処理要素グループがそれぞれ実行される前記複数のプロセッサの動作速度が同じ比率で低下されるように、前記複数の処理要素グループが実行される前記複数のプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を、前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。 - 複数のプロセッサを含むコンピュータに、連鎖された複数の処理要素から構成されるリアルタイム処理を特定の時間間隔で周期的に実行させるプログラムであって、
前記処理要素間の実行順序の関係に基づいて、前記複数の処理要素を、第1処理要素グループと当該第1処理要素グループに後続して実行される第2処理要素グループとにグループ分けする処理を、前記コンピュータに実行させる手順と、
前記第2の処理要素グループが前記第1の処理要素グループよりも1周期分遅れた状態で前記特定の時間間隔で前記第1の処理要素グループおよび前記第2の処理要素グループが互いに異なるプロセッサによって周期的に実行されるように、前記特定の時間間隔を単位とする各周期における前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行タイミングと各周期において前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれが実行されるプロセッサを決定する処理を、前記コンピュータに実行させる手順と、
前記各周期における前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行タイミングと、第1の動作速度で動作するプロセッサによって実行された場合に対応する前記第1の処理要素グループおよび前記第2の処理要素グループそれぞれの実行に要する時間を示す情報とに基づいて、前記第1の処理要素グループおよび前記第2の処理要素グループの内から、各周期の開始タイミングから当該周期における実行期間が完了するまでの時間間隔が長い処理要素グループを選択する処理を、前記コンピュータに実行させる手順と、
前記第1の動作速度で動作するプロセッサによって実行された場合に対応する前記各周期の開始タイミングから当該周期における前記選択された処理要素グループの実行期間が完了するまでの時間間隔が、前記特定の時間間隔に対して占める割合を算出する処理を、前記コンピュータに実行させる手順と、
前記算出された割合に基づいて、前記第1の処理要素グループおよび前記第2の処理要素グループが実行されるプロセッサそれぞれの動作速度が同じ比率で低下されるように、前記第1の処理要素グループおよび前記第2の処理要素グループが実行されるプロセッサそれぞれの動作速度を前記第1の動作速度よりも低速の第2の動作速度に設定する動作速度制御処理を、前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。
Priority Applications (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003207572A JP4025260B2 (ja) | 2003-08-14 | 2003-08-14 | スケジューリング方法および情報処理システム |
| EP04016114A EP1622015A3 (en) | 2003-08-14 | 2004-07-08 | Method and system for performing real-time operation |
| US10/902,938 US7464379B2 (en) | 2003-08-14 | 2004-08-02 | Method and system for performing real-time operation |
| KR1020040061752A KR20050016170A (ko) | 2003-08-14 | 2004-08-05 | 실시간 동작 수행방법 및 시스템 |
| CNB2004100574958A CN1295583C (zh) | 2003-08-14 | 2004-08-13 | 实现实时操作的方法和系统 |
| US12/247,509 US8087020B2 (en) | 2003-08-14 | 2008-10-08 | Method and system for performing real-time operation |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003207572A JP4025260B2 (ja) | 2003-08-14 | 2003-08-14 | スケジューリング方法および情報処理システム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2005062956A JP2005062956A (ja) | 2005-03-10 |
| JP4025260B2 true JP4025260B2 (ja) | 2007-12-19 |
Family
ID=34308329
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003207572A Expired - Fee Related JP4025260B2 (ja) | 2003-08-14 | 2003-08-14 | スケジューリング方法および情報処理システム |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US7464379B2 (ja) |
| EP (1) | EP1622015A3 (ja) |
| JP (1) | JP4025260B2 (ja) |
| KR (1) | KR20050016170A (ja) |
| CN (1) | CN1295583C (ja) |
Families Citing this family (74)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3889726B2 (ja) * | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP4057989B2 (ja) * | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP4197673B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
| JP4197672B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
| CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
| US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
| US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
| US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
| JP4074296B2 (ja) * | 2005-03-25 | 2008-04-09 | 株式会社東芝 | スケジューリング可能性判定方法、リアルタイムシステム及びプログラム |
| JP4082706B2 (ja) * | 2005-04-12 | 2008-04-30 | 学校法人早稲田大学 | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
| US8156500B2 (en) * | 2005-07-01 | 2012-04-10 | Microsoft Corporation | Real-time self tuning of planned actions in a distributed environment |
| US7483327B2 (en) * | 2006-03-02 | 2009-01-27 | Freescale Semiconductor, Inc. | Apparatus and method for adjusting an operating parameter of an integrated circuit |
| US8584122B2 (en) * | 2006-03-31 | 2013-11-12 | Ebay Inc. | Batch scheduling |
| JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
| US8116314B2 (en) * | 2007-03-29 | 2012-02-14 | Nec Corporation | Apparatus for processing packets and method of doing the same |
| JP2007305148A (ja) * | 2007-06-25 | 2007-11-22 | Univ Waseda | マルチプロセッサシステム |
| AU2008285379B2 (en) * | 2007-08-08 | 2012-10-11 | Redcom Laboratories, Inc. | A user co-routine interface for customizing SIP and SDP protocols |
| US8127300B2 (en) * | 2007-08-28 | 2012-02-28 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks |
| US8312464B2 (en) * | 2007-08-28 | 2012-11-13 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks by modifying tasks |
| US8234652B2 (en) * | 2007-08-28 | 2012-07-31 | International Business Machines Corporation | Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks |
| US8108876B2 (en) * | 2007-08-28 | 2012-01-31 | International Business Machines Corporation | Modifying an operation of one or more processors executing message passing interface tasks |
| EP2227727B1 (en) * | 2007-12-28 | 2016-08-24 | Freescale Semiconductor, Inc. | Data processor performance prediction |
| JP2009301500A (ja) * | 2008-06-17 | 2009-12-24 | Nec Electronics Corp | タスク処理システム及びタスク処理方法 |
| GB2476606B (en) | 2008-09-08 | 2012-08-08 | Virginia Tech Intell Prop | Systems, devices, and methods for managing energy usage |
| US8910169B2 (en) * | 2008-09-30 | 2014-12-09 | Intel Corporation | Methods and systems to perform a computer task in a reduced power consumption state |
| US8776066B2 (en) * | 2009-11-30 | 2014-07-08 | International Business Machines Corporation | Managing task execution on accelerators |
| US8479026B2 (en) * | 2009-12-09 | 2013-07-02 | Texas Instruments Incorporated | Processor power management |
| US8595721B2 (en) * | 2009-12-22 | 2013-11-26 | International Business Machines Corporation | Preserving a dedicated temporary allocation virtualization function in a power management environment |
| US8959217B2 (en) * | 2010-01-15 | 2015-02-17 | Joyent, Inc. | Managing workloads and hardware resources in a cloud resource |
| US8782653B2 (en) * | 2010-03-26 | 2014-07-15 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
| US9098612B2 (en) | 2010-12-30 | 2015-08-04 | Qwest Communications International Inc. | End-to-end application tracking framework |
| US8555276B2 (en) | 2011-03-11 | 2013-10-08 | Joyent, Inc. | Systems and methods for transparently optimizing workloads |
| US8650577B2 (en) * | 2011-05-30 | 2014-02-11 | Lg Electronics Inc. | Mobile terminal and controlling method thereof |
| US9411636B1 (en) * | 2011-07-07 | 2016-08-09 | Emc Corporation | Multi-tasking real-time kernel threads used in multi-threaded network processing |
| US8782224B2 (en) | 2011-12-29 | 2014-07-15 | Joyent, Inc. | Systems and methods for time-based dynamic allocation of resource management |
| US9207977B2 (en) * | 2012-02-06 | 2015-12-08 | Honeywell International Inc. | Systems and methods for task grouping on multi-processors |
| US20130208786A1 (en) * | 2012-02-15 | 2013-08-15 | Wei Xiong | Content Adaptive Video Processing |
| US9286115B2 (en) * | 2012-06-21 | 2016-03-15 | Microsoft Technology Licensing, Llc | Performant runtime pause with no CPU utilization |
| JP5646560B2 (ja) * | 2012-08-15 | 2014-12-24 | 株式会社東芝 | 仮想os制御装置、システム、方法およびプログラム |
| US9373074B2 (en) * | 2012-10-09 | 2016-06-21 | Qualcomm Incorporated | Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes |
| US9612868B2 (en) | 2012-10-31 | 2017-04-04 | Honeywell International Inc. | Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors |
| US8943284B2 (en) | 2013-03-14 | 2015-01-27 | Joyent, Inc. | Systems and methods for integrating compute resources in a storage area network |
| US8826279B1 (en) | 2013-03-14 | 2014-09-02 | Joyent, Inc. | Instruction set architecture for compute-based object stores |
| US8881279B2 (en) | 2013-03-14 | 2014-11-04 | Joyent, Inc. | Systems and methods for zone-based intrusion detection |
| US8677359B1 (en) | 2013-03-14 | 2014-03-18 | Joyent, Inc. | Compute-centric object stores and methods of use |
| US9104456B2 (en) * | 2013-03-14 | 2015-08-11 | Joyent, Inc. | Zone management of compute-centric object stores |
| US8775485B1 (en) | 2013-03-15 | 2014-07-08 | Joyent, Inc. | Object store management operations within compute-centric object stores |
| US9092238B2 (en) | 2013-03-15 | 2015-07-28 | Joyent, Inc. | Versioning schemes for compute-centric object stores |
| US8793688B1 (en) | 2013-03-15 | 2014-07-29 | Joyent, Inc. | Systems and methods for double hulled virtualization operations |
| JP6191301B2 (ja) * | 2013-07-22 | 2017-09-06 | 富士通株式会社 | 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム |
| DE102013224702A1 (de) * | 2013-12-03 | 2015-06-03 | Robert Bosch Gmbh | Steuergerät für ein Kraftfahrzeug |
| US20150234449A1 (en) * | 2014-02-14 | 2015-08-20 | Qualcomm Incorporated | Fast power gating of vector processors |
| JP6223224B2 (ja) * | 2014-02-21 | 2017-11-01 | ルネサスエレクトロニクス株式会社 | 画像処理装置、及びその制御方法 |
| JP6299429B2 (ja) * | 2014-05-26 | 2018-03-28 | 富士通株式会社 | 情報処理装置、クロック制御プログラムおよびクロック制御方法 |
| KR102285749B1 (ko) | 2014-11-10 | 2021-08-05 | 삼성전자주식회사 | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 |
| CN104598311A (zh) * | 2015-01-26 | 2015-05-06 | 上海卓悠网络科技有限公司 | 一种面向Hadoop的实时作业公平调度的方法和装置 |
| US9977762B2 (en) * | 2015-04-22 | 2018-05-22 | International Microsystems, Inc. | Disjoint array computer |
| US11093878B2 (en) * | 2015-07-01 | 2021-08-17 | Oracle International Corporation | System and method for providing temporal dependencies between tasks |
| US9778951B2 (en) * | 2015-10-16 | 2017-10-03 | Qualcomm Incorporated | Task signaling off a critical path of execution |
| CN105611409B (zh) * | 2016-01-04 | 2019-12-27 | 京东方科技集团股份有限公司 | 一种广告机控制系统及其控制方法和广告机 |
| US9965220B2 (en) * | 2016-02-05 | 2018-05-08 | Qualcomm Incorporated | Forced idling of memory subsystems |
| US10296380B1 (en) * | 2016-09-19 | 2019-05-21 | Amazon Technologies, Inc. | Distributed computing with adaptive parallelization |
| CN107153626A (zh) * | 2017-04-14 | 2017-09-12 | 河南思维轨道交通技术研究院有限公司 | 一种低速总线器件的访问方法 |
| US10558392B2 (en) * | 2017-06-30 | 2020-02-11 | Seagate Technology Llc | Enhancing quality of service of a storage device |
| US20190072987A1 (en) * | 2017-11-02 | 2019-03-07 | Nri R&D Patent Licensing, Llc | Valve configurations facilitating clearing, cleaning, drying, and burst formation for microfluidic devices, fluidic arrangements, and other systems |
| US11194800B2 (en) * | 2018-04-26 | 2021-12-07 | Microsoft Technology Licensing, Llc | Parallel search in program synthesis |
| KR102184136B1 (ko) * | 2019-05-08 | 2020-11-27 | 국방과학연구소 | 계층적 스케줄링 시스템에서 자원 공급 모델의 주기를 결정하는 방법 및 장치 |
| US11263114B2 (en) * | 2019-09-24 | 2022-03-01 | International Business Machines Corporation | Method and technique to find timing window problems |
| CN112799793B (zh) * | 2019-11-13 | 2022-03-15 | 上海商汤智能科技有限公司 | 调度方法及装置、电子设备和存储介质 |
| KR102334473B1 (ko) * | 2019-11-20 | 2021-12-03 | 한국전자기술연구원 | 적응형 딥러닝 가속 장치 및 방법 |
| US11714564B2 (en) * | 2020-01-06 | 2023-08-01 | Arm Limited | Systems and methods of power management |
| US11726823B2 (en) * | 2020-02-06 | 2023-08-15 | Samsung Electronics Co., Ltd. | Electronic device having heterogeneous processors and method of processing task using the heterogeneous processors |
| CN112506152B (zh) * | 2020-12-02 | 2022-03-22 | 三一重型装备有限公司 | 一种采煤机及其控制器、控制方法 |
Family Cites Families (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08180025A (ja) | 1994-12-21 | 1996-07-12 | Toshiba Corp | スケジューリング装置 |
| JPH10143380A (ja) | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
| US5974439A (en) * | 1997-11-21 | 1999-10-26 | International Business Machines Corporation | Resource sharing between real-time and general purpose programs |
| JP3573957B2 (ja) * | 1998-05-20 | 2004-10-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ内のプロセッサの動作速度制御方法及びコンピュータ |
| JP2000122747A (ja) | 1998-10-12 | 2000-04-28 | Nec Corp | ディジタル信号演算処理部の制御装置および方法 |
| US6430694B1 (en) | 1998-12-31 | 2002-08-06 | At&T Corp. | Method and apparatus for synchronizing the provision of data among geographically distributed databases |
| JP4123640B2 (ja) * | 1999-06-16 | 2008-07-23 | ソニー株式会社 | 情報処理システム及びその制御方法、タスク割当て制御方法及び制御装置、並びにプログラム提供媒体 |
| KR100487543B1 (ko) | 2000-09-01 | 2005-05-03 | 엘지전자 주식회사 | 시피유 스케쥴링 방법 |
| JP2002099432A (ja) * | 2000-09-22 | 2002-04-05 | Sony Corp | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 |
| JP2002215599A (ja) | 2001-01-18 | 2002-08-02 | Mitsubishi Electric Corp | マルチプロセッサシステムおよびその制御方法 |
| US6622253B2 (en) * | 2001-08-02 | 2003-09-16 | Scientific-Atlanta, Inc. | Controlling processor clock rate based on thread priority |
| JP2003099148A (ja) | 2001-09-19 | 2003-04-04 | Sanyo Electric Co Ltd | データ処理装置とこれに利用可能なシステム制御装置およびデータ変換方法 |
| CN100485605C (zh) * | 2001-09-24 | 2009-05-06 | 中兴通讯股份有限公司 | 一种多任务实时操作系统的实现方法 |
| JP4028444B2 (ja) | 2003-06-27 | 2007-12-26 | 株式会社東芝 | スケジューリング方法およびリアルタイム処理システム |
| JP3889726B2 (ja) | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP3892829B2 (ja) | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
| JP3920818B2 (ja) | 2003-07-22 | 2007-05-30 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP4057989B2 (ja) | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| JP4197673B2 (ja) | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
| JP4197672B2 (ja) | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
-
2003
- 2003-08-14 JP JP2003207572A patent/JP4025260B2/ja not_active Expired - Fee Related
-
2004
- 2004-07-08 EP EP04016114A patent/EP1622015A3/en not_active Withdrawn
- 2004-08-02 US US10/902,938 patent/US7464379B2/en active Active
- 2004-08-05 KR KR1020040061752A patent/KR20050016170A/ko not_active Ceased
- 2004-08-13 CN CNB2004100574958A patent/CN1295583C/zh not_active Expired - Lifetime
-
2008
- 2008-10-08 US US12/247,509 patent/US8087020B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2005062956A (ja) | 2005-03-10 |
| EP1622015A3 (en) | 2007-10-17 |
| CN1581023A (zh) | 2005-02-16 |
| US20050066330A1 (en) | 2005-03-24 |
| US8087020B2 (en) | 2011-12-27 |
| US7464379B2 (en) | 2008-12-09 |
| CN1295583C (zh) | 2007-01-17 |
| EP1622015A2 (en) | 2006-02-01 |
| US20090044188A1 (en) | 2009-02-12 |
| KR20050016170A (ko) | 2005-02-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4025260B2 (ja) | スケジューリング方法および情報処理システム | |
| JP3920818B2 (ja) | スケジューリング方法および情報処理システム | |
| JP4057989B2 (ja) | スケジューリング方法および情報処理システム | |
| JP4028444B2 (ja) | スケジューリング方法およびリアルタイム処理システム | |
| JP3889726B2 (ja) | スケジューリング方法および情報処理システム | |
| JP3892829B2 (ja) | 情報処理システムおよびメモリ管理方法 | |
| JP5367816B2 (ja) | オペレーションの保護モードスケジューリング |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070201 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070213 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070413 |
|
| 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: 20071002 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071004 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101012 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111012 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111012 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121012 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131012 Year of fee payment: 6 |
|
| LAPS | Cancellation because of no payment of annual fees |