JP2005100264A - スケジューリング方法および情報処理システム - Google Patents

スケジューリング方法および情報処理システム Download PDF

Info

Publication number
JP2005100264A
JP2005100264A JP2003335498A JP2003335498A JP2005100264A JP 2005100264 A JP2005100264 A JP 2005100264A JP 2003335498 A JP2003335498 A JP 2003335498A JP 2003335498 A JP2003335498 A JP 2003335498A JP 2005100264 A JP2005100264 A JP 2005100264A
Authority
JP
Japan
Prior art keywords
thread
data transfer
vpu
execution
processes
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
Application number
JP2003335498A
Other languages
English (en)
Other versions
JP4057989B2 (ja
Inventor
Tatsunori Kanai
達徳 金井
Seiji Maeda
誠司 前田
Hirokuni Yano
浩邦 矢野
Kenichiro Yoshii
謙一郎 吉井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2003335498A priority Critical patent/JP4057989B2/ja
Priority to US10/935,188 priority patent/US7685599B2/en
Priority to EP04021572A priority patent/EP1519269A3/en
Priority to CNB2004100117191A priority patent/CN1318968C/zh
Priority to KR1020040077323A priority patent/KR100628492B1/ko
Publication of JP2005100264A publication Critical patent/JP2005100264A/ja
Application granted granted Critical
Publication of JP4057989B2 publication Critical patent/JP4057989B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

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)
  • Power Sources (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Bus Control (AREA)

Abstract

【課題】リアルタイム性を損なうことなく、必要なデータ転送バンド幅の低減を図る。
【解決手段】スケジューリング処理では、処理要素A,B,Cそれぞれのバスバンド幅(A=100,B=90,C=20)を考慮したスケジューリングが行われる。すなわち、処理要素A,B,Cを1周期分の時間間隔内に実行でき、且つ処理要素A,B,Cの中で必要なバスバンド幅の大きい上位少なくとも2つの処理要素(A,B)の実行期間が互いに重ならないように、処理要素A,B,Cそれぞれの実行に要するコスト(時間)とバスバンド幅とに基づいて、処理要素A,B,Cそれぞれの実行開始タイミングと処理要素A,B,Cそれぞれが実行されるプロセッサ(VPU)が決定される。これにより、必要なデータ転送バンド幅が周期内でできるだけ均一に分散することができ、各周期内における必要なバスバンド幅のピーク値を低く抑えることが可能となる。
【選択図】 図13

Description

本発明はリアルタイム処理を実行するためのスケジューリング方法および情報処理システムに関する。
従来より、サーバコンピュータのような計算機システムにおいては、その演算処理能力の向上を図るために、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャが利用されている。マルチプロセッサおよび並列プロセッサのどちらも、複数のプロセッサユニットを利用することによって演算処理の並列化を実現している。
複数のプロセッサユニットを備えたシステムとしては、例えば、1台の高速CPU、複数台の低速CPU、および共有メモリを備えたシステムが知られている(例えば、特許文献1参照)。このシステムにおいては、高速CPUおよび複数台の低速CPUに対する処理プログラムのプロセス群の割付は、プロセス群の並列動作度の大小および処理時間の大小に応じて行われる。
また、複数のプロセッサにスレッド群を割り当てるためのスケジューリング技術としては、同一のプロセス内に属するスレッドを同一のプロセッサに実行させる技術が知られている(例えば、特許文献2参照)。
ところで、最近では、計算機システムのみならず、例えば、AV(オーディオ・ビデオ)データのような大容量のデータをリアルタイムに処理する組み込み機器においても、その演算処理能力の向上のためにマルチプロセッサ、並列プロセッサのようなシステムアーキテクチャの導入が要求されている。
特開平10−143380号公報 特開平8−180025号公報
しかし、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャを前提としたリアルタイム処理システムの報告はほとんどなされていないのが現状である。
リアルタイム処理システムにおいては、ある許容時間の制限内に個々の処理を完了することが要求される。また連鎖された複数の処理の組み合わせから構成されるリアルタイム処理を、限られたある一定時間間隔で周期的に実行するためには、連鎖された複数の処理すべてを各周期の時間間隔内に完了することが必要となる。
リアルタイム処理システムは組み込みシステムとして用いられることが多いので、その低消費電力化の実現も大きな課題である。システムに搭載されるプロセッサユニットの数が多くなるほど、バスのデータ転送速度(データ転送バンド幅)を高速化することが必要とされる。データ転送バンド幅が高くなるほど、消費電力は増大する。このため、マルチプロセッサ、並列プロセッサのようなシステムアーキテクチャをリアルタイム処理システムに適用するに際しては、リアルタイム性が要求される処理を時間内に完了するというリアルタイム性を保障しながら、必要なデータ転送バンド幅を下げるための新たな仕組みが要求される。
本発明は上述の事情を考慮してなされたものであり、リアルタイム性を損なうことなく必要なデータ転送バンド幅を下げることが可能なスケジューリング方法および情報処理システムを提供することを目的とする。
上述の課題を解決するため、本発明は、バスを介してデータ転送を実行する複数のプロセッサを用いることによって複数の処理を特定の時間間隔内に実行するためのスケジューリング方法において、前記複数の処理それぞれの実行に要する時間を示すコスト情報、および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報を入力するステップと、前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記入力されたコスト情報およびバンド幅情報に基づいて、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を実行するステップとを具備することを特徴とする。
本発明によれば、複数の処理それぞれが必要とするデータ転送バンド幅を考慮したスケジューリングが行われ、これによりリアルタイム性を損なうことなく必要なデータ転送バンド幅を下げることが可能となる。
以下、図面を参照して本発明の実施形態を説明する。
図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はブリッジとも呼ばれる。
接続装置15はデータ転送レートを保証するQoS機能を持つ。この機能は、接続装置15を介したデータ転送を予約されたバンド幅(転送速度)で実行することによって実現される。QoS機能は、たとえば、あるVPU12からメモリ14に5Mbpsでライトデータを送信する場合、あるいはあるVPU12と別のVPU12との間で100Mbpsでデータ転送する場合に利用される。VPU12は接続装置13に対してバンド幅(転送速度)を指定(予約)する。接続装置13は指定されたバンド幅を要求したVPU12に対して優先的に割り当てる。あるVPU12のデータ転送に対してバンド幅が予約されたならば、そのVPU12によるデータ転送中に他のVPU12、MPU11あるいは入出力制御装置15が大量のデータ転送を行っても、予約されたバンド幅は確保される。この機能は、特に、リアルタイム処理を行う計算機にとって重要な機能である。
図1の構成では、MPU11が1つ、VPU12が4つ、メモリ14が1つ、入出力制御装置が1つであるが、VPU12の個数は制限されない。またMPU11を持たない構成も可能である。この場合、MPU11の行う処理は、ある一つのVPU12が担当する。つまり、仮想的なMPU11の役割をVPUが兼ねる。
計算機システムには、さらに、省電力制御装置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の省電力のための制御は、単独で実施することもできるし、組み合わせて実施することもできる。
図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に書いたりする。
MPU11のメモリ管理ユニット22およびVPU12のメモリコントローラ33それぞれによって実行される仮想記憶管理は、たとえば図3のように実施することができる。MPU11の処理ユニット21あるいはVPU12のメモリコントローラ33から見たアドレスは、図3の上の部分に示すような64ビットのアドレスである。この64ビットのアドレスは、上位の36ビットがセグメント番号、中央の16ビットがページ番号、下位の12ビットがページオフセットである。このアドレスから、実際に接続装置13を通してアクセスする実アドレス空間への変換は、セグメントテーブル50およびページテーブル60を用いて実行される。セグメントテーブル50およびページテーブル60は、メモリ管理ユニット22およびメモリコントローラ33に各々設けられている。
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で説明したような構造を持っている。
MPU11は制御レジスタ等のハードウェア機構によって、例えば、各VPU12のレジスタの読み書き、各VPU12のプログラムの実行開始/停止などの、各VPU12の管理を行うことができる。また、MPU11とVPU12の間、あるいはあるVPU12と他のVPU12の間の通信や同期は、メールボックスやイベントフラグなどのハードウェア機構によって行うことが出来る。
この実施形態の計算機システムは、従来ハードウェアで実現されていたようなリアルタイム性の要求の厳しい機器の動作を、ソフトウェアを用いて実現することを可能にする。例えば、あるVPU12があるハードウェアを構成するある幾つかのハードウェアコンポーネントに対応する演算処理を実行し、それと並行して、他のVPU12が他の幾つかのハードウェアコンポーネントに対応する演算処理を実行する。
図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コマ)に従って、繰り返し実行される。
図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になる。
構成記述117は、プログラムモジュール100内の各プログラム(スレッド)をどのように組み合わせて実行するべきかを示す情報であり、連鎖されたプログラム111〜116間の入出力関係(連鎖関係)および各プログラムの処理に必要なコスト(時間)などを示す。図8には構成記述117の例が示されている。
図8の構成記述117の例では、スレッドとして動作する各モジュール(プログラムモジュール100内の各プログラム)に対して、その入力につながるモジュール、その出力がつながるモジュール、そのモジュールの実行に要するコスト、出力がつながるモジュールそれぞれへの出力に必要なバッファサイズ、そのモジュールが必要とするバスバンド幅が記述されている。たとえば、番号3のV−DECプログラムは、番号1のDEMUXプログラムの出力を入力とし、その出力は番号5のPROGプログラムに向かっており、その出力に必要なバッファは1MBで、番号3のV−DECプログラム自体の実行コストは50であることを示している。なお、実行に必要なコストは、実行に必要な時間(実行期間)やステップ数などを単位として記述することができる。また、何らかの仮想的な仕様のVPUで実行した場合の時間を単位とすることも可能である。計算機によってVPUの仕様や処理性能が異なる場合もあるので、このように仮想的な単位を設けてコストを表現するのは望ましい形態である。バスバンド幅は、各モジュールがデータ入出力のために接続装置13を介して実行するデータ転送に必要とするデータ転送バンド幅(データ転送速度)を示す情報である。データ転送は、接続装置(バス)13を介してVPU間で、あるいはあるVPUとメモリ14との間で、あるいはあるVPUと入出力装置16との間で、実行される。上述のQOS機能により、各モジュールがそれに対応する処理の実行のために必要とするバンド幅が確保される。図8に示した構成記述117に従って実行する場合の、プログラム間のデータの流れは図9の通りである。
さらに、構成記述117には、プログラム111〜116それぞれに対応するスレッド間の結合属性を示す結合属性情報がスレッドパラメータとして記述されている。なお、スレッドパラメータはプログラム111〜116中にコードとして直接記述することも可能である。
次に、図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で行い、最終的な映像データを作成する。この処理の流れを、毎周期繰り返すように実行する。
ここで説明したように、所望の動作を滞りなく行えるように、各VPU12上で、いつ、どのプログラムを実行するかを決める作業を、スケジューリングとよぶ。スケジューリングを行うモジュールをスケジューラとよぶ。本実施形態では、プログラムモジュール100中に含まれる上述の構成記述117に基づいてスケジューリングが行われる。すなわちスケジューリング処理では、構成記述117に基づいて複数のプログラム111〜116を実行する複数のスレッドそれぞれの実行開始タイミングおよび実行期間が決定され、複数のスレッドそれぞれが1以上のVPU12に割り当てられる。プログラムモジュール100の実行時には以下の処理が行われる。
1. オペレーティングシステムはプログラムモジュール100をそれが記憶されている外部記憶装置またはメモリ13から入力し、構成記述117を読み込む。
2. オペレーティングシステム内のスケジューラは、構成記述117に基づいてプログラムモジュール100内の複数のプログラム111〜116を実行するための複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行開始タイミングおよび実行期間を決定することにより、複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)を1以上のVPUに割り当てて実行する。
このように、本実施形態のリアルタイム処理システムでは、プログラムモジュール100に含まれる構成記述117に基づいて、連鎖された複数のプログラム111〜116を実行する複数のスレッド(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)それぞれの実行開始タイミングおよび実行期間が決定されるので、プログラムのコード中に個々の処理の時間的な制約条件を詳細に記述せずとも、リアルタイム処理を実行するためのスレッド群を効率よくスケジューリングすることが可能となる。
図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を読み込む。
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処理要素グループに分類される。
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に周期的に割り当てる。
なお、例えば、第2処理要素グループをVPU1とVPU2の2つのプロセッサによって並列に実行しても良い。例えば、VPU1ではA−DEC、TEXTを実行し、それと並行してVPU2でPROG、BLENDを実行する。
図7のプログラムモジュール100の例では、複数の処理要素(DEMUX、V−DEC、A−DEC、TEXT、PROG、BLEND)がそれぞれ異なるスレッドによって実行されるので、上述の処理要素グループは、スレッドグループと称することもできる。
図7に示したプログラムモジュール100は、本実施形態の計算機システムを組み込んだ機器内のフラッシュROMやハードディスクに予め記録しておいてもよいが、ネットワークを介して流通させるようにしてもよい。この場合、本実施形態の計算機システムによって実行される処理の内容は、ネットワークを介してダウンロードしたプログラムモジュールの種類に応じて決まる。よって、例えば本実施形態の計算機システムを組み込んだ機器に、様々な専用ハードウェアそれぞれに対応するリアルタイム処理を実行させることが出来る。例えば、新しいコンテンツの再生に必要な新しいプレーヤーソフトウェアやデコーダソフトウェアや暗号ソフトウェアなどを、本実施形態の計算機システムで実行可能なプログラムモジュールとして、コンテンツと一緒に配布することで、本実施形態の計算機システムを搭載した機器であれば、いずれの機器でも、その能力が許す範囲内で、そのコンテンツを再生することができる。
(省電力制御)
本実施形態の計算機システムにおいては、上述のプログラムモジュール100のようなリアルタイム処理を制限された時間内に完了するというリアルタイム性を保障しながら、計算機システムの消費電力を低減するための省電力制御が実行される。例えば、特定の時間間隔で周期的に実行することが要求されるリアルタイム処理を複数のVPUを用いて実行する場合には、そのリアルタイム処理を構成する複数の処理要素が特定の時間間隔内に実行完了でき、且つ必要なデータ転送バンド幅が周期内でできるだけ均一に分散されるように、スケジューリング処理が実行される。この場合、複数の処理要素それぞれが必要とするバスバンド幅に基づいて、複数の処理要素の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理要素の実行期間が互いに重複しないように、複数の処理それぞれが実行されるVPUと複数の処理要素それぞれの実行開始タイミングとが決定される。
図12には、3つの処理要素A,B,Cから構成されるリアルタイム処理を2つのVPU0,VPU1を用いることによって周期的に実行する場合のスケジューリングの例が示されている。いま、3つの処理要素A,B,Cそれぞれの実行に要するコスト(時間)の合計値が1周期分の時間間隔よりも長いとする。この場合、1つのVPUによって3つの処理要素A,B,Cを1周期分の時間間隔内に実行することはできないので、3つの処理要素A,B,Cは2つのVPU0,VPU1に分散されて実行される。VPU0によって実行されるある処理要素の実行期間とVPU1によって実行される他の処理の実行期間が重なっていると、図12に示すように、重なっている期間はデータ転送量(接続装置に要求されるバスバンド幅)が大きくなる。図12においては、処理要素A,B,Cが必要とするバスバンド幅がそれぞれ100Mbps,90Mbps,20Mbpsである場合を示している。処理要素Aの実行期間と処理Bの実行期間が重なっている期間においては、190Mbpsのバスバンド幅が必要とされる。接続装置(バス)13のデータ転送速度は、各周期内において必要なバスバンド幅のピーク値を少なくとも満足するように設定することが必要とされる。このため、各周期内における必要なバスバンド幅のピーク値が大きくなるほど、接続装置(バス)13のデータ転送速度を高速化しなければならず、その分だけ接続装置(バス)13の消費電力が増大される。
本実施形態では、各周期内における必要なバスバンド幅のピーク値がなるべく小さくなるように、構成記述117で与えられる処理要素A,B,Cそれぞれのバスバンド幅を考慮したスケジューリングが行われる。すなわち、オペレーティングシステムは、処理要素A,B,Cを1周期分の時間間隔内に実行でき、且つ処理要素A,B,Cの中で必要なバスバンド幅の大きい上位少なくとも2つの処理要素(ここでは、A,B)の実行期間が互いに重ならないようにスケジューリング処理を実行する。図13は、処理要素AとBの実行期間が重ならないようにスケジューリングした例である。これにより、必要なデータ転送バンド幅が周期内でほぼ均一に分散され、各周期内における必要なバスバンド幅のピーク値を低く抑えることが可能となる。よって、接続装置(バス)13のデータ転送速度を低く設定できるので、処理要素A,B,Cを特定の時間間隔で周期的に実行するというリアルタイム性を保障しつつ、消費電力を低減することが可能となる。
次に、図14のフローチャートを参照して、省電力制御処理の手順を説明する。
ステップS1: オペレーティングシステムは、構成記述117を外部記憶装置またはメモリ13から入力し、リアルタイム処理を構成する処理要素間の実行順序、処理要素それぞれの実行に要するコスト、処理要素それぞれが必要とするデータ転送バンド幅を調べる。
ステップS2: オペレーティングシステムは、リアルタイム処理を構成する処理要素間の実行順序、処理要素それぞれの実行に要するコスト、処理要素それぞれが必要とするデータ転送バンド幅に基づき、3つの条件、(1)処理要素間の実行順序に関する制約を満たし、(2)リアルタイム処理を構成する全ての処理要素が1周期分の時間間隔内に実行され、(3)必要なバスバンド幅の大きい上位少なくとも2つの処理要素の実行期間が互いに重複しない、が満足するように、リアルタイム処理を構成する処理要素それぞれが実行されるVPUと処理要素それぞれの実行開始タイミングとを決定する。
ステップS3: オペレーティングシステムは、ステップS2のスケジューリング結果に基づいて、周期内における必要なバスバンド幅のピーク値を決定する。
ステップS4: オペレーティングシステムは、接続装置(バス)13のデータ転送能力と決定されたバスバンド幅のピーク値とに基づいて、接続装置(バス)13の最大データ転送バンド幅(最大バスバンド幅)に対して、決定されたバスバンド幅のピーク値が占める割合を算出する。
ステップS5: オペレーティングシステムは、必要なバスバンド幅のピーク値を満足する範囲でなるべく接続装置(バス)13のデータ転送速度が低く設定されるように、ステップS4で算出された割合に基づいて、接続装置(バス)13のデータ転送速度をその最大データ転送バンド幅よりも低い値に設定する。接続装置(バス)13のデータ転送速度は、算出された割合を接続装置(バス)13の最大データ転送バンド幅に乗ずることによって求めることが出来る。オペレーティングシステムは、省電力制御装置17に接続装置(バス)13の動作周波数あるいはバス幅を指定するコマンドを送信する。省電力制御装置17は接続装置(バス)13の動作周波数あるいはバス幅を制御する回路を備えており、接続装置(バス)13の動作周波数あるいはバス幅を、オペレーティングシステムからのコマンドで指定される動作周波数あるいはバス幅に設定する。
次に、図7のプログラムモジュール100によって実行されるディジタルTV放送受信処理に対応する省電力制御について説明する。
図15は、ディジタルTV放送受信処理を一つのVPUによって実行した場合に対応する必要なバスバンド幅を示している。この場合、ディジタルTV放送受信処理を構成する複数の処理要素(D:DEMUX、V:V−DEC、A:A−DEC、T:TEXT、P:PROG、B:BLEND)の中で最もバスバンド幅の大きい処理要素(BLEND)は単独で実行されるので、各周期における必要なバスバンド幅のピーク値は、処理要素(BLEND)が必要とするバスバンド幅に一致する。
図16は、2チャンネル分のディジタルTV放送受信処理を同時に実行した場合に対応する必要なバスバンド幅を示している。一方のチャンネルのディジタルTV放送受信処理はVPU0によって実行され、他方のチャンネルのディジタルTV放送受信処理はVPU1によって実行される。この場合、図16に示されているように、最もバスバンド幅の大きい処理要素(BLEND)同士が重複するので、各周期における必要なバスバンド幅のピーク値は大幅に増加される。
図17は、2チャンネル分のディジタルTV放送受信処理を本実施形態のスケジューリング処理を用いてスケジューリングした例を示している。図17では、何等処理が実行されない周期内の空き時間を利用して、VPU1で実行される処理要素(BLEND)の実行期間をずらすことにより、最もバスバンド幅の大きい処理要素(BLEND)同士が重複するのを防止している。これにより、各周期における必要なバスバンド幅のピーク値を、図16の場合の半分に低下することが出来る。
このように、各処理が必要とするバスバンド幅を考慮した本実施形態のスケジューリング処理は、一つのリアルタイム処理を構成する処理要素のスケジューリングのみならず、特定の時間間隔内にそれぞれ実行することが必要な2以上のリアルタイム処理のスケジューリングに適用することが出来る。各リアルタイム処理は1以上の処理(処理要素)から構成され、またリアルタイム処理間における実行順序の制約はない。よって、例えば、2つのリアルタイム処理がそれぞれ1つの処理から構成されている場合には、それら処理それぞれの実行に要するコストとバスバンド幅のみに基づいて、それら処理の実行期間が互いに重複しないようにスケジューリングを行うことが出来る。
(オペレーティングシステム)
本計算機システムでは、システム内に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は、その対応を意識する必要はない。
仮想計算機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の資源として使用される。
図22は別の動作モードを示している。ターゲットアプリケーションによってはVPU12をずっと占有して利用したい場合がある。たとえば、常にデータやイベントを監視し続けることが必要なアプリケーションがこれに相当する。このようなときには、特定のVPU12を特定のゲストOSによって占有するように、仮想計算機OS301のスケジューラがスケジュール管理する。図22では、VPU3をゲストOS302の専用資源に指定した場合の例である。仮想計算機OS301がゲストOS302(OS1)とゲストOS303(OS2)を切り替えても、VPU3は常にゲストOS302(OS1)の管理下で動作し続ける。
さて、複数のVPU12を用いてプログラムを動作させるために、本実施形態では、複数のVPU12それぞれに割り当てるスレッドをスケジューリングするためのスケジューラを含む、VPU実行環境と呼ぶソフトウェアモジュールを用いる。本計算機システムにOSがひとつしか搭載されていない場合は、図23に示すようにそのOS201にVPU実行環境401を実装する。VPU実行環境401は、スケジューラによるスケジューリングの結果に基づいて、接続装置(バス)13の動作速度をできるだけ低下させるための制御を実行するパワーセーブルーチンも含んでいる。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)。
これらの方式のメリットは以下のとおりである。
方式1のメリット
・仮想計算機OSの持つゲストOS(仮想計算機OSが管理する対象のOS)のスケジューリングと、VPU12のスケジューリングを一体化できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストOSを導入する場合に新しくVPU実行環境を作らなくてもよい。
方式2のメリット
・仮想計算機OSの上にあるゲストOS間でVPU12のスケジューラを共有できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
・複数のゲストOS間でVPU実行環境を共有できるので、新しいゲストを導入する場合に新しくVPU実行環境を作らなくてもよい。
・VPU実行環境を仮想計算機OSや特定のゲストOSに依存せずに作れるので、標準化がしやすく、取り替えて使うことも出来る。特定の組み込み機器に適応したVPU実行環境を作って、その機器の特性を活かしたスケジューリング等を行うことで、効率良い実行ができる。
方式3のメリット
・各ゲストOSに対してVPU実行環境を最適に実装できるので、効率良く、きめ細かなスケジューリングができ、資源を有効利用できる。
方式4のメリット
・すべてのゲストOSがVPU実行環境を実装する必要がないので、新しいゲストOSを追加しやすい。
このように、いずれの方式でもVPU実行環境を実装することができる。また、このほかにも適宜実施可能である。
(サービスプロバイダ)
本実施形態の計算機システムにおいては、VPU実行環境401は、各VPU12に関連する各種資源(各VPUの処理時間、メモリ、接続装置のバンド幅、など)の管理とスケジューリング機能の他に、さまざまなサービス(ネットワークを使った通信機能、ファイルの入出力機能、コーデックなどのライブラリ機能の呼び出し、ユーザとのインタフェース処理、入出力デバイスを使った入出力処理、日付や時間の読み出し、など)を提供する。これらのサービスは、VPU12上で動作するアプリケーションプログラムから呼び出されて、簡単なサービスの場合にはそのVPU12上のサービスプログラムで処理される。しかし通信やファイルの処理などVPU12だけでは処理できないサービスに関しては、MPU11上のサービスプログラムによって処理する。このようなサービスを提供するプログラムを、サービスプロバイダ(SP)と呼ぶ。
図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に処理を依頼する働きをする。
図29に、VPU側VPU実行環境502がサービス要求を処理する手順を示す。VPU側VPU実行環境502はアプリケーションプログラムからのサービス呼び出しを受け取ると(ステップS101)、VPU実行環境502内で処理できるサービスであるかどうかを判別し(ステップS102)、それであれば、対応するサービスを実行して、結果を呼び出し元へ返す(ステップS103,S107)。一方、VPU実行環境502内で処理できるサービスではないならば、該当するサービスを実行可能なサービスプログラムがVPU12上で実行可能なプログラムとして登録されているかどうかを判断する(ステップS104)。登録されているならば、当該サービスプログラムを実行し、結果を呼び出し元へ返す(ステップS105,S107)。登録されていないならば、サービスブローカ512に処理を依頼し、そしてサービスブローカ512から返されるサービスの結果を呼び出し元へ返す(ステップS106,S107)。
図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)。
なお、VPU12で実行するプログラムが発行するサービス要求には、サービスの実行結果のリプライを返すものもあれば、要求を出すだけでリプライの無いものもある。また、リプライ先は、通常は要求を出したスレッドであるが、リプライ先として他のスレッド、スレッドグループ、あるいはプロセスを指定することもできる。そのため、サービス要求のメッセージには、リプライ先の指定も含めることが好ましい。サービスブローカ512は、広く使われているオブジェクトリクエストブローカを用いて実現することができる。
(リアルタイム処理)
本実施形態の計算機システムはリアルタイム処理システムとして機能する。この場合、そのリアルタイム処理システムの対象とする処理は、大きく、
1.ハードリアルタイム処理
2.ソフトリアルタイム処理
3.ベストエフォート処理(ノンリアルタイム処理)
の3種類に分類できる。1と2がいわゆるリアルタイム処理と呼ばれるものである。本実施形態のリアルタイム処理システムは、多くの既存のOSと同様、スレッドとプロセスの概念を持っている。ここではまず、本実施形態のリアルタイム処理システムにおけるスレッドとプロセスに関して説明する。
スレッドには、次の3つのクラスがある。
1.ハードリアルタイムクラス
このスレッドクラスは、その時間要件(timing requirements)は非常に重要で、その要件が満たされなかった際に重大な状況になるような、重要なアプリケーションに用いる。
2.ソフトリアルタイムクラス
このスレッドクラスは、例えその時間要件が満たされなかった場合においても、その品質が低下するだけのアプリケーションに用いる。
3.ベストエフォートクラス
このスレッドクラスは、その要件の中に一切の時間要件を含まないアプリケーションに用いる。
スレッドは本アルタイム処理システム内において処理を実行する実体である。スレッドには、そのスレッドが実行するプログラムが関連付けられている。各スレッドは、スレッドコンテクストと呼ぶ、それぞれのスレッドに固有の情報を保持している。スレッドコンテクストには、たとえば、プロセッサのレジスタの値や、スタックなどの情報が含まれている。
本リアルタイム処理システムにおいては、MPUスレッドとVPUスレッドの2種類のスレッドが存在する。これら2つのスレッドは、そのスレッドが実行されるプロセッサ(MPU11かVPU12)によって分類されており、スレッドとしてのモデルは全く同じである。VPUスレッドのスレッドコンテクストには、VPU12のローカルストレージ32の内容や、メモリコントローラ33の持つDMAコントローラの状態なども含む。
複数のスレッドをその属性に応じてグループとしてまとめたものを、スレッドグループと呼ぶ。スレッドグループは、グループに含まれるスレッドすべてに対して同じ属性を与える、などの処理を効率よく簡単にできるメリットがある。ハードリアルタイムクラスまたはソフトリアルタイムクラスのスレッドグループは、密結合スレッドグループ(tightly coupled thread group)と疎結合スレッドグループ(loosely coupled thread group)の2種類に大別される。密結合スレッドグループ(tightly coupled thread group)と疎結合スレッドグループ(loosely coupled thread group)はスレッドグループに付加された属性情報(結合属性情報)によって識別される。アプリケーションプログラム内のコードまたは上述の構成記述によってスレッドグループの結合属性を明示的に指定することができる。
密結合スレッドグループは互いに協調して動作する複数のスレッドの集合から構成されるスレッドグループである。すなわち、密結合スレッドグループは、そのグループに属するスレッド群が、お互いに密接に連携して動作することを示す。密接な連携とは、例えば,頻繁にスレッド間で通信あるいは同期処理などの相互作用(interaction)を行ったり、あるいは、レイテンシ(latency)(遅延)の小さい相互作用を必要とする場合などである。一方、疎結合スレッドグループは、密結合スレッドグループに比べてそのグループに属するスレッド群間の密接な連携が不要であるスレッドグループであり、スレッド群はメモリ14上のバッファを介してデータ受け渡しのための通信を行う。
(密結合スレッドグループ)
図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上のデータをリードする。
このように、結合属性情報によって密結合関係にあるスレッドを特定できるようにすると共に、密結合関係にあるスレッドA,Bがそれぞれ別のVPUによって同時に実行されることを保証することにより、スレッドA,B間の通信、同期に関するインタラクションをより軽量で且つ遅延無く行うことが可能となる。
(疎結合スレッドグループ)
疎結合スレッドグループに属するスレッド群それぞれの実行時間は、それらスレッド群間の入出力関係によって決定され、たとえ実行順序の制約がないスレッド同士であってもそれらが同時に実行されることは保証されない。疎結合スレッドグループ属するスレッドを、疎結合スレッド(loosely coupled thread)と呼ぶ。図34においては、ある疎結合スレッドグループにスレッドC,Dの2つが疎結合スレッドとして含まれており、それらスレッドC,DがそれぞれVPU0,VPU1によって実行されている様子を示している。図34に示すように、各スレッドの実行時間はばらばらになる。スレッドC,D間の通信は、図35に示すように、メインメモリ14上に用意したバッファを介して行われる。スレッドCはローカルストレージLS0に用意したデータをDMA転送によってメインメモリ14上に用意したバッファに書き込み、スレッドDはその開始時にDMA転送によってメインメモリ14上のバッファからローカルストレージLS1にデータを読み込む。
(プロセスとスレッド)
プロセスは,図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のメリットは、ローカルストレージだけで動作するので、スレッドの生成やディスパッチや終了処理などのオーバーヘッドを小さくできることである。
(スレッド群のスケジューリング)
次に、図37のフローチャートを参照して、VPU実行環境401によって実行されるスケジューリング処理について説明する。VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群にスレッドグループ単位で付加されている結合属性情報に基づいて、スレッド間の結合属性をチェックし(ステップS121)、各スレッドグループ毎にそのスレッドグループが密結合スレッドグループおよび疎結合スレッドグループのいずれであるかを判別する(ステップS122)。結合属性のチェックは、プログラムコード中のスレッドに関する記述あるいは上述の構成記述117中のスレッドパラメータを参照することによって行われる。このようにして、密結合スレッドグループおよび疎結合スレッドグループをそれぞれ特定することにより、スケジュール対象のスレッド群は密結合スレッドグループと疎結合スレッドグループとに分離される。
密結合スレッドグループに属するスレッド群に対するスケジューリングは次のように行われる。すなわち、VPU実行環境401内のスケジューラは、スケジュール対象のスレッド群から選択された密結合スレッドグループに属するスレッド群がそれぞれ別のVPUによって同時に実行されるように、その密結合スレッドグループに属するスレッド群と同数のVPUそれぞれの実行期間を予約し、スレッド群をそれら予約したVPUそれぞれに同時にディスパッチする(ステップS123)。そして、スケジューラは、各スレッドが実行されるVPU内のアドレス変換ユニット331を用いて、各スレッドのEA空間の一部に、協調して相互作用を行う相手となる他のスレッドが実行されるVPUのローカルストレージに対応するRA空間をマッピングする(ステップS124)。一方、スケジュール対象のスレッド群から選択された疎結合スレッドグループに属する疎結合スレッド群については、スケジューラは、それらスレッド群間の入出力関係に基づいてそれらスレッド群を1以上のVPUに順次ディスパッチする(ステップS125)。
(スレッドの状態遷移)
一般にスレッドは、生成されてから消滅するまで、たとえば図38に示すような状態遷移を行う。図38の例では、以下の7種類の状態を遷移する。
1.NOT EXISTENT状態
論理的な状態であり,有効なスレッドでは,この状態はない。
2.DORMANT状態
スレッドは生成されているが,まだ実行は開始されていない。
3.READY状態
スレッドが,その実行を開始する準備ができている状態。
4.WAITING状態
スレッドが,実行を開始(再開)するための条件が満たされることを待っている状態。
5.RUNNING状態
スレッドが,実際にVPUまたはMPU上で実行されている状態。
6.SUSPENDED状態
VPU実行環境や他のスレッドにより,スレッドが強制的にその実行を中断させられている状態。
7.WAITING-SUSPENDED状態
WAITING状態とSUSPENDED状態が重なった状態。
これらの7つの状態の間の遷移条件と、その遷移に伴うスレッドコンテクストの扱いは、以下のようになる。
<NOT EXISTENT状態からDORMANT状態への遷移>
・スレッドの作成によって遷移する。
・スレッドコンテクストが作成される。ただしコンテクストの中身は初期状態である。
<DORMANT状態からNOT EXISTENT状態への遷移>
・スレッドの削除によって遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によって,保存されていたコンテクストは破棄される。
<DORMANT状態からWAITING状態への遷移>
・スレッドが,実行環境に対してスレッドのスケジューリングをリクエストすると,スレッドの状態は,DORMANT状態からWAITING状態へ遷移する。
<WAITING状態からREADY状態への遷移>
・スレッドが,生起するのを待っていたイベント(例えば,同期や通信,タイマなど)が,生起した場合に,スレッドの状態はWAITING状態からREADY状態へ遷移する。
<READY状態からRUNNING状態への遷移>
・スレッドが,実行環境によってMPUまたはVPUにディスパッチされると,スレッドの状態は,READY状態からRUNNING状態へ遷移する。
・スレッドコンテクストがロードされる。また,スレッドコンテクストが退避されていた場合には,復元される。
<RUNNING状態からREADY状態への遷移>
・スレッドが,スレッドの実行を横取りされると,スレッドの状態は,RUNNING状態からREADY状態へ遷移する。
<RUNNING状態からWAITING状態への遷移>
・スレッドが,同期や通信などの機構を利用し,イベントを待つために自身の実行を中断した場合,スレッドの状態は,RUNNING状態からWAITING状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からWAITING状態へ遷移する際に,実行環境によって,そのスレッドのスレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り保持され,次にこのスレッドがRUNNING状態に遷移した時に復元される。
<RUNNING状態からSUSPENDED状態への遷移>
・スレッドが,実行環境や他のスレッドからの指示などによって,強制的にその実行を中断させられた場合,スレッドの状態は,RUNNING状態からSUSPENDED状態へ遷移する。
・すべてのクラスのスレッドは,スレッドコンテクストを保存するように設定することができる。スレッドが,スレッドコンテクストを保存するように設定されていた場合は,RUNNING状態からSUSPEND状態へ遷移する際に,実行環境によって,スレッドコンテクストが退避される。このスレッドコンテクストは,DORMANT状態に遷移しない限り,次にこのスレッドがRUNNING状態に遷移した時に復元される。
<RUNNING状態からDORMANT状態への遷移>
・スレッドは,スレッド自身でその実行を終了した場合に,RUNNING状態からDORMANT状態へ遷移する。
・スレッドが,そのスレッドコンテクストを保存するように設定されていた場合,この遷移によってコンテクストの内容が破棄される。
<WAITING状態からWAITING-SUSPENDED状態への遷移>
・スレッドがWAITING状態にてイベントなどの生起を待っている最中に,外部から強制的にスレッドの実行を中断された場合,スレッドの状態は,WAITING状態からWAITING-SUSPENDED状態へ遷移する。
<WAITING-SUSPENDED状態からWAITING状態への遷移>
・スレッドが,WAITING-SUSPENDED状態にいる最中に,外部からスレッドの実行を再開された場合,スレッドの状態はWAITING-SUSPENDED状態からWAITING状態へ遷移する。
<WAITING-SUSPENDED状態からSUSPENDED状態への遷移>
・スレッドは,スレッドがWAITING状態にいた時に待っていたイベントが生起した場合に,スレッドの状態は,WAITING-SUSPENDED状態からSUSPENDED状態へ遷移する。
<SUSPENDED状態からREADY状態への遷移>
・スレッドが,外部からスレッドの実行を再開させられた時に,スレッドの状態は,SUSPENDED状態からREADY状態へ遷移する。
<READY状態からSUSPENDED状態への遷移>
・スレッドが,外部環境によってスレッドの実行が中断させられた場合に,スレッドの状態は,READY状態からSUSPENDED状態へ遷移する。
(スレッドの実行期間)
スレッドに実際にVPUが割り当てられて処理を実行しているRUNNING状態の期間を、実行期間(execution term)と呼ぶ。一般にスレッドが生成されてから消滅するまでの間には、スレッドは複数の実行期間を持つ。図39はあるスレッドの生成から消滅までの時間軸に沿った状態の変化の例を示しているが、この例では、その生存期間中に、2回の実行期間があることを示している。実行期間と実行期間との間のコンテクストの保存(save)や復元(restore)は、さまざまな方法を用いて実現することができる。たとえば、多くの通常のスレッドは、実行期間が終了した時点のコンテクストを保存しておいて、次の実行期間の初めにそのコンテクストを復元するように動作させる。一方、ある種の周期的な(periodic)処理においては、全ての周期(period)において、実行期間の開始時には新しいコンテクストを作成してその実行期間中はそのコンテクストを使って実行を進め、実行期間の終了時にはそのコンテクストは廃棄するように動作させる。
(密結合スレッドグループに属するスレッドの実行期間)
密結合スレッドグループに属するスレッドの場合の実行期間は、たとえば図40のようになる。すなわち、密結合スレッドグループに属するすべてのスレッドは、ある一つの実行期間において、全てのスレッドが同時に実行されるように、VPU実行環境401によってスケジューリングされる。このような密結合スレッドグループは、主としてハードリアルタイムスレッドに対して使用される。そのため、この動作を実現するために、VPU実行環境401は、ハードリアルタイムクラスにおける実行期間を予約するときに、同時に使用するプロセッサとその数を指定する。さらに、VPU実行環境401は、予約するそれぞれのプロセッサに対して、一対一に同時実行させるスレッドのコンテクストを対応させる。
なお、ある期間において密結合スレッドグループに属していた複数のスレッドは、他の実行期間においては、密結合の関係を解消して、各スレッドが別々に動作することもできる。このような場合には、各スレッドは、今、密結合スレッドとして動作しているのか、あるいは、別々に動作しているのかを意識して、相手のスレッドとの通信や同期等の処理を行う必要がある。各スレッドには、横取り可能(preemptive)か横取り不可(non-preemptive)を示すプリエンプションに関連した属性が与えられる。Preemptiveとは、スレッドの実行期間中に、そのスレッドが横取りされることを許す、すなわち、実行を停止させることができるという属性である。Non-preemptiveとは、スレッドの実行期間中に、そのスレッドが横取りされないことを保障するという属性である。この横取り不可(non-preemptive)という属性の意味は、スレッドのクラス間で異なる。ハードリアルタイムクラスでは、スレッドが実行を開始すると、実行期間が終わるまで、そのスレッド自身以外、誰もその実行を止めることが出来ないことを意味する。ソフトリアルタイムクラスでは、そのクラスにとって、横取り可能性(preemptive-ness)は必要不可欠であるため、横取り不可の属性はサポートされない。ベストエフォートクラスでは、スレッドの実行は、他のベストエフォートクラスからの横取りからは保護されるものの、ハードリアルタイムやソフトリアルタイムクラスといったより高いレベルからは、横取りされる。
(スレッドの実行モデル)
スレッドの実行モデルは、大きく、図41に示すような周期実行モデルと、図42に示すような非周期実行モデルの2つに分類できる。周期実行モデルでは、スレッドは周期的(periodically)に実行される。その一方、非周期実行モデルでは、イベントを起点としてその実行が行われる。周期実行モデルの実装方式には、ソフトウェア割込みを用いる方式と、同期機構(synchronization primitives)のようなイベントオブジェクトを用いる方式がある。ハードリアルタイムクラスでは、ソフトウェア割込みを用いて実装する。すなわち、VPU実行環境401は、周期的な処理を開始するタイミングで、所定の方法で決定されるスレッドのエントリポイントへジャンプしたり、あるいは、事前に所定の手順で登録されたコールバック関数を呼び出す。ソフトリアルタイムクラスでは、イベントオブジェクトを用いて実装する。すなわち、各周期において、あらかじめ登録されたイベントオブジェクトに対して、たとえばVPU実行環境401がイベントを通知するので、ソフトリアルタイムスレッドは、毎周期そのイベントオブジェクトを待ち、イベントが発生したら所定の処理を実行するようにプログラムを構成することで、周期実行モデルを実現する。ベストエフォートクラスの場合は、ソフトウェア割込みを用いる方式を用いても、イベントオブジェクトを用いる方式を用いても、周期実行モデルを実装できる。なお、実際の実行は、それぞれの周期の先頭で常に開始されるとは限らず、制約条件(constraints)の範囲内で、状態に応じて遅らされることもある。
非周期実行モデルは、イベントモデルを用いると、周期実行モデルと同様に実現できる。すなわち、ソフトリアルタイムやベストエフォートクラスでは、非周期実行モデルは、イベントが通知されるタイミングが異なるだけで、実装手法上は周期実行モデルと同じになる。ハードリアルタイムクラスの場合は、時間要件を保障するために必要な、最小発生期間(minimum inter-arrival time)やデットラインは、システムの振る舞いを強く制約するため、非周期実行は制限される。
(コンテクストの切り替え)
本実施形態のリアルタイム処理システムにおいては、VPUスレッドの実行期間の終了に伴うコンテクストの切り替え方式は、複数の方式から選択することができる。VPUのコンテクスト切り替えのコストは非常に大きいので、その方式を選択できるようにすることで、コンテクスト切り替えの効率を向上させることができる。指定したコンテクスト切り替え方式は、スレッドの予約された実行期間が終了した際に用いられるものである。実行期間中のコンテクスト切り替え、すなわち、いわゆるプリエンプションの際には、どの様な場合においても現在のスレッドの全てのコンテクストを保存して、次に実行再開するときに復元する必要がある。本実施形態のリアルタイム処理システムで提供するVPUコンテクスト切り替えの方式には、たとえば、以下のような方式がある。
1.コンテクストの破棄
いかなるコンテクストも保存しない。
2.完全なコンテクストの保存
VPUのレジスタ、ローカルストレージ、およびメモリコントローラ内のDMAコントローラの状態を含む、VPUの完全なコンテクストを保存する。
3.Gracefulコンテキスト保存
VPUのメモリコントローラ内のDMAコントローラが実行中の全ての動作が完了するまでコンテクスト切り替えを遅延する。その後、VPUのレジスタとローカルストレージの内容を保存する。この方式では、完全なコンテクスト保存と同様、VPUのコンテクストの全てが保存される。
スレッドのスケジューリングを行うスケジューラは、MPUスレッドとVPUスレッドの両方をスケジューリングするひとつのスケジューラとして実装することもできるし、MPUスレッド用のスケジューラとVPUスレッド用のスケジューラを別に実装することもできる。MPUとVPUではコンテクスト切り替えのコストが異なるため、別々にそれぞれに適したスケジューラを実装するほうが効率よくなる。
(ハードリアルタイムクラスのスケジューリング)
ハードリアルタイムクラスのスレッド群のスケジューリングは、タスクグラフを拡張した予約グラフを用いて行われる。図43はタスクグラフの例である。タスクグラフは、タスク間の関係を表す。タスク間の矢印は、タスク間の依存関係(入出力関係)を示している。図43の例では、タスク1とタスク2は、自由に実行を開始することが出来ることを表している。それに対し、タスク3は、タスク1とタスク2両方の実行終了後に始めて実行を開始することが出来ることを表している。また、タスク4とタスク5は、タスク3の実行終了後に実行を開始することが出来ることを表している。タスクグラフにはコンテクストの概念がない。例えば、タスク1とタスク4とを同じコンテクストを用いて実行したい場合に、それを記述することができない。そこで、本実施形態のリアルタイム処理システムでは、以下のようにしてタスクグラフを拡張した予約グラフを用いる。
まず、タスクグラフを、タスクではなく実行期間の間の関係を示すものととらえる。そして、それぞれの実行期間に、コンテクストを関係付けることで、そのコンテクストに対応するスレッドが、その実行期間に実行されることを示す。複数の実行期間に同じコンテクストが関係付けられると、それら全ての実行期間において、そのスレッドが実行されることを示す。例えば、図44では、スレッド1のコンテクストが実行期間1と2とに関係付けられており、スレッド1は、実行期間1と2の期間で実行されることを示す。さらに、グラフに用いられる実行期間の間の矢印に、実行環境にて保障されるハードリアルタイムの制約条件を表す属性を付加する。このようにして作成した予約グラフを用いて、リアルタイムシステムアプリケーションのモデルを一切修正することなく、処理モデルとその処理が持つ時間要件などの制約条件を記述することが可能になる。図45に、図44をベースに作成した予約グラフの例を示す。図45でコンテクスト1,2,3は、それぞれ図44のスレッド1,2,3のコンテクストを示している。
(ソフトリアルタイムクラスのスケジューリング)
ソフトリアルタイムクラスのスケジューリングは、スレッドの実行形態を予測可能とするために、固定優先度スケジューリングを用いて実行される。そのスケジューリング方式としては、固定優先度FIFOスケジューリングと固定優先度ラウンドロビンスケジューリングの2種類のスケジューリングアルゴリズムを用意する。優先度の高いスレッドの実行を優先するため、低い優先度のスレッドが実行中であっても、より高い優先度のスレッドが実行可能になった場合には、低優先度のスレッドの実行をプリエンプトし、直ちに高優先度のスレッドの実行を開始する。クリティカルセクション(critical section)の実行時に発生する、優先度逆転問題を避けるため、優先度継承プロトコルや、優先度シーリングプロトコルなどの同期機構を併せて実施するのが望ましい。
(ベストエフォートクラスのスケジューリング)
ベストエフォートクラスのスケジューリングは、たとえば、動的優先度スケジューリングなどを用いる。
(階層型スケジューラ)
VPU実行環境401内のスケジューリング機能は、図46に示すような階層型のスケジューラとして実施することができる。すなわち、スレッドレベルのスケジューリングは、スレッドクラス間(inter−class)スケジューリングと、スレッドクラス内(intra−class)スケジューリングの、2つの階層により構成する。そのため、VPU実行環境401内のスケジューラは、スレッドクラス内(intra−class)スケジューリング部601と、スレッドクラス間(inter−class)スケジューリング部602とを持つ。スレッドクラス間スケジューリングでは、スレッドクラス間を跨るスケジューリングを行う。スレッドクラス内スケジューリングでは、それぞれのスケジューリングクラスごとに、そのスケジューリングクラスに属するスレッドのスケジューリングを行う。スレッドクラス内(intra−class)スケジューリング部601には、ハードリアルタイム(ハードRT)クラススケジューリング部611、ソフトリアルタイム(ソフトRT)クラスケジューリング部612、ベストエフォートクラスケジューリング部613が設けられている。
スレッドクラス間スケジューリングとスレッドクラス内スケジューリングは、階層構造をなしており、まず、スレッドクラス間スケジューリングが動作して、どのスレッドクラスを実行するか決定した後、該当するスレッドクラス内スケジューリングによって、そのスレッドクラス内のどのスレッドを実行するかを決定する。スレッドクラス間スケジューリングは、プリエンプト可能な固定優先度スケジューリングを用いる。このとき、ハードリアルタイムクラスが最高優先度を持ち、ソフトリアルタイムクラス、ベストエフォートクラスの順に優先度が低くなるようにする。低優先度クラスのスレッドは、より優先度の高いクラスのスレッドが実行可能(ready)になると、その実行はプリエンプトされる。スレッドクラス間の同期は、VPU実行環境401によって提供される同期プリミティブによって実現する。このとき特に、ハードリアルタイムスレッドにはブロックすることのないプリミティブのみ使用できるようにして、ハードリアルタイムスレッドのブロックが発生しないようにする。また、ベストエフォートスレッドがソフトリアルタイムスレッドをブロックした場合には、そのベストエフォートスレッドは、ソフトリアルタイムスレッドとして扱うことで、スレッドクラス間の優先度逆転の発生を防止するようにする。さらに、そのベストエフォートスレッドが、他のソフトリアルタイムスレッドによってブロックされるような場合には、優先度継承プロトコルなどの方式を用いてブロックされないようにする。
(スレッドパラメタ)
本実施形態のリアルタイム処理システムでは、さまざまなパラメタを用いてスケジューリングを行う。各クラスのスレッドに共通のパラメタには、たとえば以下のようなものがある。
・スレッドのクラス(ハードリアルタイム、ソフトリアルタイム、ベストエフォート)
・使用するリソース(MPUもしくはVPUの数、バンド幅、物理メモリサイズ、入出力デバイス)
・優先度
・横取り可能(preemptive)か横取り不可(non-preemptive)か
さらにハードリアルタイムクラスのスレッドに関しては、たとえば以下のようなパラメタがある。
・実行期間
・デッドライン
・周期あるいは最小発生期間(minimum inter-arrival time)
・VPUのコンテクスト切り替え方式
図47にハードリアルタイムクラスの基本的なパラメタの例を示す。図47の一番上にある例1の実行期間の予約指定の例では、指定した実行期間の間、MPUを1つ、VPUを2つ同時に予約し、VPUのコンテクストを完全に保存することを指定している。この場合、3つのプロセッサ上で同時にスレッドが実行され、その実行期間終了後に、MPUスレッドに加え、VPUスレッドのコンテクストが完全に保存される。次に、右上にある例2では、VPU数とその実行期間によって表現される処理が、デッドラインより以前に実行されることを保障する際の、デッドラインの指定方法を示している。デッドラインは、予約リクエストを行った時刻(request time)からの相対時刻で指定される。もっとも下にある例3では、周期実行を指定している。この例では、2つのVPU12を指定した実行期間が、周期的に実行され、また、各周期の実行後にVPUスレッドのコンテクストが破棄され、全ての処理が新しいコンテクストで処理されること示している。さらに、その周期の先頭からの相対時刻を用いてデッドラインを指定している。
ハードリアルタイムクラスで用いる別のパラメタとして、たとえば以下に示すような制約条件がある。
・タイミング制約(絶対タイミング制約、相対タイミング制約)
・先行制約
・相互排他制約
タイミング制約は、実行タイミングを遅らせる手段を提供する。絶対タイミング制約は、図48に示すように、例えば周期の開始時刻のような、ある静的なタイミングを基準として遅延時間を指定する制約条件である。相対タイミング制約は、図49に示すように、例えば他の実行期間の開始時刻や終了時刻のような、動的なタイミングやイベントを基準として許容可能な遅延時間を指定する制約条件である。先行制約は、相対タイミング制約を用いて、他の実行期間の終了時間を基準にし、その遅延時間を0以上と指定することで実現できるので、先行制約は相対タイミング制約の特殊な場合と考えることができる。
相互排他制約(mutual exclusive)は、図50に示すように、それぞれの実行期間が、時間的に重ならないことを保障する制約である。相互排他制約を用いることによって、ロックによって発生するスレッド実行時間の予測不可能性を削減することが可能になる。すなわち、あるリソースを共有する全てのスレッドが同時に実行されないようにして、そのリソースに関するロックをなくすことができる。
(スレッドの同期機構)
本実施形態のリアルタイム処理システムでは、スレッドの同期機構として、たとえば以下のような手段を用いる。
・セマフォ
・メッセージキュー
・メッセージバッファ
・イベントフラグ
・バリア
・ミューテックス
その他の同期プリミティブも、これらと同様に用いることができる。このような同期機構を実現する手段として、本発明のリアルタイム処理システムでは、次の3通りの方式がある。
・メモリ(主記憶)13あるいはVPUのローカルストレージ32上に、たとえばTEST&SETのような命令を使って実現する
・メールボックスやシグナルレジスタなどのハードウェア機構を使って実現する
・VPU実行環境がサービスとして提供する機構を利用する
これらの実現手段の異なる同期機構は、それぞれ得失を持っているため、それを利用するスレッドの属性等によって、たとえば図51のように使い分けるのが望ましい。すなわち、MPUやVPUが共有してアクセスできるメモリ13(主記憶MS)を使って実装した同期機構は、すべてのクラスのスレッドで使用できる。それに対して,VPU12のローカルストレージLS上に実装した同期機構は、密結合スレッドグループ(tightly coupled thread group)に属するスレッドのみが使うことができる。これは、密結合スレッドグループに属するスレッドのみが,同期相手のスレッドが同時に動作していることを保障されるからである。例えば,相手のスレッドが動作しているVPUのローカルストレージ上に実装した同期機構を用いる場合、密結合スレッドグループのスレッドであれば、同期機構を使う時点で、相手のスレッドが動作していることが保障されているので、その相手スレッドを実行しているVPUのローカルストレージに同期機構のための情報が必ず存在する。
メモリ(主記憶MS)やローカルストレージLS以外の手段を用いて実装した同期機構としては、ハードウェア機構を使って実現する場合と、VPU実行環境401のサービスを使う場合がある。密結合スレッドグループに属するスレッド、あるいはハードリアルタイムクラスのスレッドは,速い同期機構が必要であるので、ハードウェア機構を用いて実装した同期機構を用いるのが望ましい。それに対して,疎結合スレッドグループに属するスレッド、あるいはソフトリアルタイムクラスと,ベストエフォートクラスのスレッドは,実行環境が提供する機構を利用するのが望ましい。
(同期機構の自動選択)
本実施形態のリアルタイム処理システムでは、上記の同期機構を、スレッドの属性や状態に合わせて自動的に選択・切り替えを行うことができる。これは例えば図52に示すような手順により、同期処理を行いたいスレッドが密結合スレッドグループに属している状態の間は(ステップS201のYES)、メモリ14あるいはVPU12のローカルストレージ32あるいはハードウェア機構を用いて実装された高速な同期機構を用いるが(ステップS202,S203,S204,S205)、スレッドの状態が変化して密結合関係になくなった状態では(ステップS201のNO)、メモリ14上に実装された同期機構化あるいはVPU実行環境401のサービスとして提供されている同期機構を用いるように同期機構を切り替える(ステップS206,S207,S208)。
この切り替え手段は、VPU12上で動作するプログラムに対して、ライブラリの形式で提供するようにしても良いし、VPU12側のVPU実行環境502の提供するサービスとして提供することもできる。複数の同期機構を切り替える方式としては、あらかじめ複数の同期機構を確保しておいて、それを使い分けるようにすることもできるし、切り替えを行う時点で新しく同期機構を確保するようにすることもできる。
VPU12のローカルストレージを用いた同期機構は、密結合スレッドグループに属するスレッド間のように、同期処理を行う時点で、同期機構を実装しているVPU12のローカルストレージが必ず有効になっている必要がある。この制限を緩和する方式としては、スレッドが実行中(RUNNING状態)で無い場合には、そのスレッドを最後に実行していたときのローカルストレージの内容をメモリに保存しておき、そのスレッドに対応付けられたローカルストレージを指すページテーブルあるいはセグメントテーブルのエントリからは、その保存したメモリ領域を指すようにマッピングを制御する。この方式により、相手のスレッドが実行中でなくても、相手のスレッドに対応付けられたローカルストレージがあたかもあるように、スレッドの実行を続けることができる。実行中で無かったスレッドが、VPU12を割り当てられて実行を始めるときには、メモリ14に保存していた内容を、再びローカルストレージに戻して、対応するページテーブルあるいはセグメントテーブルのマップを変更する。このように、VPU12のローカルストレージのバックアップコピーに対しても動作可能なように同期機構を実装しておくことで、密結合スレッドグループに属するスレッドでなくても、VPU12のローカルストレージを用いて実装した高速な同期機構を利用できるようになる。
(予約グラフ)
図53は、図9に例として示した処理フローに対応する予約グラフを示したものである。図53において、6つの四角い箱は実行期間(execution term)を表している。各実行期間の四角の左上の番号は予約する実行期間のIDであり、実行期間の四角の中の記号は、その実行期間に対応付けられているスレッドコンテクストの識別子である。実行期間の四角の下の数値は、その実行期間の長さ(コスト)を表している。実行期間の四角の間を結ぶ矢印は、ここではすべて先行制約を表している。すなわち、矢印が入る実行期間は、必ず矢印が出ている実行期間が終わった後で実行を開始することを示している。これにより、実行期間間の連鎖が表現される。また、矢印に添えられている番号はその矢印で結ばれた実行期間の間でデータの受け渡しに使うバッファのIDを表しており、番号と共に添えられている数値はバッファのサイズを表している。図53に示した予約グラフに従って処理を実行するための手順は、以下のようになる。
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とする 。
7.図54に示すようなデータ構造の予約リクエストを作成し、VPU実行環境401に渡して予約を行う。
ここで手順1から6までのスレッドコンテクストの作成は、スレッドとして実行したいプログラムを指定してVPU実行環境401に依頼すると、VPU実行環境401が必要な資源を割り当ててスレッドコンテクストを作成し、そのハンドルを返してくるので、それを識別子と関連付けている。
図54の予約リクエストは、BUFFERと書かれたバッファデータと、TASKと書かれた実行期間データから構成される。バッファデータは、実行期間の間でデータを受け渡すために用いるメモリ14上のバッファを宣言するもので、Id:にバッファ番号を、Size:にバッファサイズを、SrcTask:にデータを書き込む実行期間の番号を、DstTask:にデータを読み出す実行期間の番号を持つ。実行期間データは、Id:に実行期間番号を、Class:にスレッドクラス(VPUはVPUスレッドであることを示し、HRTはハードリアルタイムクラスであることを示す。他に、MPUスレッドを示すMPUや、ソフトリアルタイムクラスを示すSRTや、ベストエフォートクラスを示すBSTなどがある)を、ThreadContext:にこの実行期間に対応付けるスレッドコンテクストを、Cost:にこの実行期間の長さあるいはコストを、Constraint:にこの実行期間を基準とする各種の制約を、InputBuffer:にこの実行期間で読み出すバッファの識別子のリストを、OutputBuffer:にこの実行期間で書き込むバッファの識別子のリストを、Band:に必要なバスバンド幅を持つ。Constraint:には、先行制約を示すPrecedence:や、絶対タイミング制約を示すAbsoluteTiming:や、相対タイミング制約を示すRelativeTiming:や、排他制約を示すExclusive:などを指定でき、それぞれ制約の相手になる実行期間の番号のリストを持つ。
図54の予約リクエストで予約したバッファ領域は、VPU実行環境401が、バッファにデータを書き込むスレッドの実行開始時に割り当て、データを読み出すスレッドの実行終了時に解放する。割り当てられたバッファのアドレスは、たとえばスレッドの起動時にあらかじめ決まっているアドレスあるいは変数あるいはレジスタなどを用いて、スレッドに通知することができる。本実施形態のリアルタイム処理システムでは、図7に示したようなプログラムモジュール100が与えられたときに、その中にある、図8に示すような構成記述117を読み込んで、それに基づいて、上記の手順でスレッドコンテクストの生成と図54の予約リクエストの作成・発行を行って、そのプログラムモジュール100の実行を行う機能を提供する。この機能により、図7のようなプログラムモジュール100によって記述された専用ハードウェアの処理を、複数のプロセッサによるソフトウェア処理によって実現することが可能となる。実現したいハードウェア毎に図7のような構造を持つプログラムモジュールを作成して、それを本実施形態のリアルタイム処理システムに準拠した機能が組み込まれた機器で実行することにより、当該機器を所望のハードウェアとして動作させることが可能となる。別の例としては、アプリケーションプログラム中に図54の予約リクエストを作成する処理を記述しておき、アプリケーションプログラムが自ら予約リクエストを作成してVPU実行環境401に渡して予約を行うように動作させることも可能である。
図54に示す予約リクエストが与えられると、VPU実行環境401は、各実行期間を周期内のどのタイミングでどのVPU12で実行するかを決める。これがスケジューリングである。本実施形態のリアルタイム処理システムが組み込まれる電子機器の種類によっては、実際には、このような予約リクエストが同時に複数与えられることもあるので、それらが矛盾ないように(与えられた制約が満たされないことがないように)処理のタイミングが決定される。例えば、図55に示すように、VPU12が2つあるときに、図54の予約リクエストだけが入っていたとすると、DEMUX、V−DEC、PROG、BLENDの並行に実行できない処理をVPU0で順次実行し、DEMUXの実行後に並行して動作できるA−DECとTEXTをVPU1で実行するようにスケジューリングする。
(ソフトウェアパイプライン)
ここでもし、ひとつの周期内で一連の処理要素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が動くという具合に、パイプライン処理を行う。パイプライン処理を採用することにより、各周期におけるリアルタイム処理の実行をより短い時間で完了することが可能となる。
図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の総実行期間が予測される。そして、その予測値と周期の値とが比較される。
もし一連のスレッド群(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スレッドグループに分類される。
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秒の周期毎にフレームデータの処理結果を出力することが出来る。
なお、上述の例では、第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スレッドグループそれぞれが実行されるプロセッサが決定される。
(パイプライン処理を利用した省電力制御)
上述したパイプライン処理は、処理要素間の実行順序の制約を満足する範囲で、実際上各処理要素の実行タイミングの制約を緩和することを可能にする。このため、パイプライン処理を用いることにより、各周期内に空き時間が無い場合でも、バスバンド幅の大きい処理同士の実行期間が重ならないようにスケジューリングすることも出来る。
図60は、2チャンネル分のディジタルTV放送受信処理を同時に実行した場合に対応する必要なバスバンド幅を示している。各周期内に空き時間が無い場合には、VPU0におけるBLENDの実行期間とVPU1で実行されるBLENDの実行期間を単純にずらすことは出来ない。
図61は、パイプライン処理を用いて、VPU0におけるBLENDの実行期間とVPU1で実行されるBLENDの実行期間をずらした場合の例である。VPU1で実行されるリアルタイム処理(D2:DEMUX、V2:V−DEC、A2:A−DEC、T2:TEXT、P2:PROG、B2:BLEND)は、第1スレッドグループ(V2,A2,T2,V2)と、第2スレッドグループ(P2,B2)とに分類される。図61に示すように、第2スレッドグループ(P2,B2)は第1スレッドグループ(V2,A2,T2,V2)よりも1周期分遅れたタイミングで実行され、且つ周期内で第2スレッドグループ(P2,B2)は第1スレッドグループ(V2,A2,T2,V2)よりも先行して実行される。このように、リアルタイム処理(D2:DEMUX、V2:V−DEC、A2:A−DEC、T2:TEXT、P2:PROG、B2:BLEND)を2周期に跨ってVPU1で実行することにより、VPU0におけるBLENDの実行期間とVPU1におけるBLENDの実行期間とが重複することを防止することができる。よって、図62に示すように、各周期における必要なバスバンド幅のピーク値を図60の場合の半分に下げることが出来る。
(階層構造を持つ予約グラフ)
図53に示した予約グラフは階層構造を持っていないが、図63に示すように、階層構造を持つ予約グラフを扱うことも出来る。図63の例では、実行期間AはBに先行し、BはCに先行する。Bの中はDがEとFに先行している。それゆえ、階層を解くと、AはDに先行し、EとFはCに先行することになる。
(構成記述に基づくスケジューリングアルゴリズム)
以下、プログラムモジュールに組み込まれた構成記述に基づいて各スレッドの実行期間を予約するための処理手順について説明する。
図7のプログラムモジュール100内の構成記述117は、図8の例のようになっている。この構成記述117が与えられると、VPU実行環境401は次の手順を実行する。
1.構成記述117のモジュール欄に書かれている各プログラムをロードして、それぞれを実行するスレッドを生成する。このとき、本実施形態では、構成記述117のエントリそれぞれに対して一つのスレッドを生成する。構成記述117の中に、同じモジュール名を持つ複数のエントリが存在する場合には、同じモジュールを実行する複数のスレッドをそれぞれのエントリと対応するように生成することになる。なお、図8の例では、すべてのスレッドはひとつのプロセスに属するように生成されるものとしているが、それぞれのスレッドが別のプロセスに属するように実施することもできるし、あるグループのスレッドはあるプロセスに属し、また他のグループのスレッドは別のプロセスに属するといったように実施することもできる。
2.構成記述117の情報から、図54で説明したような予約リクエストのデータ構造を作成する。
3.予約リクエストをVPU実行環境に渡して処理のスケジューリングを行い、実行を開始する。
この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欄に記録されている。
次に、構成記述117のモジュール欄に1対1に対応するように、TASKレコードを作成して予約リクエストに加える。例えば、図8の構造記述117の例で、V−DECモジュールに対応するTASKレコードとして、図54のIdが3のTASKレコードを作成している。Idが3のTASKレコードには、以下のような情報が記録されている。
Class欄: このTASKレコードに指定されるスレッドをどのような属性で実行させるかを示すフラグ。VPUはVPU上で実行するスレッドであることを、HRTはハードリアルタイムクラスのスレッドであることを示す。これらの情報は、図8の例では構成記述117のスレッドパラメタに記述されている情報をもとに設定する。
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を必要な数指定する。
Band欄: このTASKレコードで指定されるスレッドが必要とするバスバンド幅を指定する。
このようにして、構造記述が与えられるとそれに対する予約リクエストが作成される。
次に、その予約リクエストをVPU実行環境401内のスケジューラに渡すと、スケジューラは、指定された予約リクエストを実行するのに必要なスケジュールを作成する。このスケジューリング処理の結果作成されたスケジュールは、例えば図55に示すような、各周期のどのタイミングで、どのVPUを、どれだけの時間、どのスレッドに割り当てるかを示すものである。実際には、例えば図64のような予約リストによって表現されるように実施することができる。
図64の予約リストは、各VPUに対応付けられた予約エントリから構成される。予約エントリには、ひとつのスレッドに対して、それを各周期内のどのタイミングでVPUを割り当てて実行を始めるかを開始時間欄に、どれくらいの時間でVPUを取り上げるかを実行期間欄に、そのスレッドの識別子を実行スレッド欄に記録している。それらの予約エントリは、実行するVPU別に、開始時間順にソートされて予約リストにつながれている。
図54に示すような予約リクエストから、図64に示すような予約リストを作成する手順は、例えば図65のフローチャートで示す手順で実施できる。
基本は、予約リクエスト中の各TASKレコードを、BUFFERを使った入出力関係を考慮して順序付けして、データの流れる順に、VPUの実行時間を割り付けて行けばよい。このとき、密結合スレッドグループに指定されているTASK群には、それぞれのTASKのスレッドに同時にVPUを割り付けるようにする必要がある。また、2以上のVPUを用いる場合には、全てのTASKレコードそれぞれのバスバンド幅を考慮して、与えられたリアルタイム処理を構成するTASK群のなかでバスバンド幅の大きい少なくとも上位2つのTASKの実行期間が互いに重複しないように、各VPUに対する順序付けがなされる。
図65にその手順を示す。予約リクエストが与えられると、その中のTASKレコードに指定されているすべてのタスクの集合に対して、以下の手順でスケジューリング(いいかえると、スケジュールの割り付け、あるいは予約リストの作成)を行う。
ステップS301: 全ての入力タスクが割付け済みのタスクで、密結合指定のないタスクを選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たない場合であって、かつ、そのタスクが密結合指定されていないものが存在すれば、それを選択してステップS302へ、そうでなければステップS304へ行く。
ステップS302: 選択したタスクを予約できるVPUが存在すれば(言い換えると、他のタスクとの間の制約を満たす開始時間と実行期間を予約できるVPUが存在すれば)、ステップS303へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS303: 選択したタスクの予約エントリを作成して、予約リストにつなぐ。この場合、上述したようにバスバンド幅を考慮して実行タイミングが決定される。
ステップS404: 全ての入力タスクが割付け済みのタスクで、密結合関係にあるタスク群を選択する。すなわち、未割り付けのタスク(すなわち、まだ予約エントリを作って予約リストにつないでいないタスク)の中で、そのタスクの入力となるデータのソースになるタスクがすべて割り付け済み(予約エントリが予約リストに入っている)であるか、あるいはそのタスクはデータの入力を持たないものの集合であって、かつ、その集合に属するタスク間が密結合指定されているものが存在すれば、そのタスク集合(タスク群とも呼ぶ)を選択してステップS3055へ、そうでなければ既にすべてのタスクを割り付けているのでスケジューリング処理を終了する。
ステップS305: 選択したタスク集合に含まれるすべてのタスクを同時に(同じ開始時間で同じ実行期間を持つように)予約できる複数のVPUが存在すればステップS306へ、そうでなければスケジューリング不可能なので失敗を通知する。
ステップS306: 選択したタスク集合のすべてのタスクの予約エントリを作成して、予約リストにつなぐ。
ここでの説明はひとつの予約リクエストのスケジューリングの手順について述べたが、上述したように、実際は、ひとつのシステムにおいて複数の予約リクエストが同時に存在することが普通である。そのような場合には、複数の予約リクエストを順次上記の手順でスケジューリングするように実施することもできるし、より望ましくは、同時に複数の予約リクエストを上記の手順でスケジューリングするように実施する。
以上、デジタルテレビ放送用受信機の動作を記述したプログラムモジュールを例に説明したが、他の様々なハードウェアの動作を記述したプログラムモジュールを用意することにより、デジタルテレビ放送用受信機以外の他の任意のハードウェアの動作をソフトウェアによって実現することが出来る。
なお、図1の計算機システムに設けられたMPU11と複数のVPU12は、それらを1チップ上に混載した並列プロセッサとして実現することもできる。この場合も、MPU11によって実行されるVPU実行環境、あるいは特定の一つのVPUなどによって実行されるVPU実行環境が、複数のVPU12に対するスケジューリングとそれらVPUが接続されるバスのデータ転送速度を制御することが出来る。
またVPU実行環境として動作するプログラムまたはそのVPU実行環境を含むオペレーティングシステムなどのプログラムをコンピュータ読み取り可能な記憶媒体に記憶することにより、その記憶媒体を通じて当該プログラムを、ローカルプロセッサをそれぞれ有する複数のプロセッサを含むコンピュータに導入して実行するだけで、本実施形態と同様の効果を得ることが出来る。
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の一実施形態に係るリアルタイム処理システムを構成する計算機システムの例を示すブロック図。 同実施形態のリアルタイム処理システムに設けられたMPUおよびVPUそれぞれの構成を示すブロック図。 同実施形態のリアルタイム処理システムで用いられる仮想アドレス変換機構の例を示す図。 同実施形態のリアルタイム処理システムにおける実アドレス空間にマッピングされるデータの例を示す図。 同実施形態のリアルタイム処理システムにおける実効アドレス空間、仮想アドレス空間、実アドレス空間を説明するための図。 デジタルテレビ放送の受信機の構成を示すブロック図。 同実施形態のリアルタイム処理システムによって実行されるプログラムモジュールの構成の例を示す図。 図7のプログラムモジュール内に含まれる構成記述の例を示す図。 図7のプログラムモジュールに対応するプログラム間のデータの流れを示す図。 図7のプログラムモジュールが2つのVPUによって並列に実行される様子を示す図。 図7のプログラムモジュールが2つのVPUによってパイプライン形式で実行される様子を示す図。 リアルタイム処理を構成する処理要素それぞれの実行期間と必要なデータ転送バンド幅との関係を示す図。 必要なデータ転送バンド幅が周期内でできるだけ均等に分散されるように各処理要素が必要とするデータ転送バンド幅を考慮してスケジューリングした例を示す図。 同実施形態のリアルタイム処理システムによって実行される省電力制御処理の手順の例を示すフローチャート。 リアルタイム処理を構成するスレッド群が1つのVPUによって周期的に実行されるようにスケジューリングした様子を示す図。 2つのリアルタイム処理を2つのVPUによって同時に実行するようにスケジューリングした例を示す図。 同実施形態のスケジューリング処理方法を用いて、2つのリアルタイム処理を2つのVPUによって同時に実行するようにスケジューリングした例を示す図。 同実施形態のリアルタイム処理システムにおけるオペレーティングシステムの実装形態の例を示す図。 同実施形態のリアルタイム処理システムにおけるオペレーティングシステムの実装形態の他の例を示す図。 同実施形態のリアルタイム処理システムにおける仮想計算機OSとゲストOSとの関係を示す図。 同実施形態のリアルタイム処理システムにおいて複数のゲストOSに時分割で資源が割り当てられる様子を示す図。 同実施形態のリアルタイム処理システムにおいてある特定のゲストOSによって特定の資源が専有される様子を示す図。 同実施形態のリアルタイム処理システムにおいてスケジューラとして用いられるVPU実行環境を示す図。 同実施形態のリアルタイム処理システムで用いられる仮想計算機OSにVPU実行環境を実装した例を示す図。 同実施形態のリアルタイム処理システムで用いられる一つのゲストOSとしてVPU実行環境を実装する例を示す図。 同実施形態のリアルタイム処理システムで用いられる複数のゲストOSそれぞれにVPU実行環境を実装する例を示す図。 同実施形態のリアルタイム処理システムで用いられる一つのゲストOSにVPU実行環境を実装する例を示す図。 同実施形態のリアルタイム処理システムで用いられるMPU側VPU実行環境とVPU側VPU実行環境を説明するための図。 同実施形態のリアルタイム処理システムで用いられるVPU側VPU実行環境によって実行される処理手順を示すフローチャート。 同実施形態のリアルタイム処理システムで用いられるMPU側VPU実行環境によって実行される処理手順を示すフローチャート。 同実施形態のリアルタイム処理システムにおいて密結合スレッドグループに属するスレッド群がそれぞれ別のプロセッサによって同時に実行される様子を示す図。 同実施形態のリアルタイム処理システムにおける密結合スレッド間の相互作用を説明するための図。 同実施形態のリアルタイム処理システムにおいて各密結合スレッドの実効アドレス空間に相手のスレッドが実行されるVPUのローカルストレージがマッピングされる様子を示す図。 同実施形態のリアルタイム処理システムにおける疎結合スレッドグループに属するスレッド群に対するプロセッサの割り当てを説明するための図。 同実施形態のリアルタイム処理システムにおける疎結合スレッド間の相互作用を説明するための図。 同実施形態のリアルタイム処理システムにおけるプロセスとスレッドとの関係を説明するための図。 同実施形態のリアルタイム処理システムにおけるスケジューリング処理の手順を示すフローチャート。 同実施形態のリアルタイム処理システムにおけるスレッドの状態遷移を示す図。 同実施形態のリアルタイム処理システムにおけるスレッドとその実行期間との関係を説明するための図。 同実施形態のリアルタイム処理システムにおける密結合スレッド群がある実行期間において同時に実行される様子を示す図。 同実施形態のリアルタイム処理システムにおける周期実行モデルを示す図。 同実施形態のリアルタイム処理システムにおける非周期実行モデルを示す図。 タスクグラフを説明するための図。 同実施形態のリアルタイム処理システムで用いられる予約グラフの原理を説明するための図。 同実施形態のリアルタイム処理システムで用いられる予約グラフの例を説明するための図。 同実施形態のリアルタイム処理システムで用いられる階層型スケジューラを説明するための図。 同実施形態のリアルタイム処理システムがハードリアルタイムクラスのスケジューリングのために使用するパラメータの例を説明する図。 同実施形態のリアルタイム処理システムで用いられる絶対タイミング制約を説明する図。 同実施形態のリアルタイム処理システムで用いられる相対タイミング制約を説明する図。 同実施形態のリアルタイム処理システムで用いられる相互排他制約を説明する図。 同実施形態のリアルタイム処理システムにおける同期機構を説明するための図。 同実施形態のリアルタイム処理システムにおいて同期機構を使い分ける手順を示すフローチャート。 同実施形態のリアルタイム処理システムにおいて用いられる予約グラフの例を示す図。 同実施形態のリアルタイム処理システムにおいて生成される予約リクエストの例を示す図。 同実施形態のリアルタイム処理システムが図54の予約リクエストに基づいて実行するスケジューリングの例を示す図。 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングを説明するための第1の図。 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングを説明するための第2の図。 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプラインのためのスケジューリング処理の手順を示すフローチャート。 同実施形態のリアルタイム処理システムによって実行されるソフトウェアパイプライン形式のスケジューリングの他の例を示す図。 2つのリアルタイム処理を2つのVPUによって同時に実行するようにスケジューリングした例を示す図。 同実施形態のリアルタイム処理システムにおいてパイプライン処理を用いて、2つのリアルタイム処理を2つのVPUによって同時に実行するようにスケジューリングした例を示す図。 図61のスケジューリングによって必要なバスバンド幅が低下される様子を説明するための図。 同実施形態のリアルタイム処理システムにおいて用いられる階層構造を持つ予約グラフの例を示す図。 同実施形態のリアルタイム処理システムにおいて用いられる予約リストの例を示す図。 同実施形態のリアルタイム処理システムにおける実行期間予約処理の手順を示すフローチャート。
符号の説明
11…MPU(Master Processing Unit)、12…VPU(Slave Processing Unit)、13…接続装置(バス)、14…メインメモリ、17…省電力制御装置、21…処理ユニット、22…メモリ管理ユニット、31…処理ユニット、32…ローカルストレージ、33…メモリコントローラ、50…セグメントテーブル、60…ページテーブル、100…プログラムモジュール、111〜116…プログラム、117…構成記述、331…アドレス変換ユニット、401…VPU実行環境。

Claims (11)

  1. バスを介してデータ転送を実行する複数のプロセッサを用いることによって複数の処理を特定の時間間隔内に実行するためのスケジューリング方法において、
    前記複数の処理それぞれの実行に要する時間を示すコスト情報、および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報を入力するステップと、
    前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記入力されたコスト情報およびバンド幅情報に基づいて、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を実行するステップとを具備することを特徴とするスケジューリング方法。
  2. 前記スケジューリング処理の結果に従って、前記特定の時間間隔内におけるデータ転送バンド幅のピーク値を決定するステップと、
    前記バスの最大データ転送バンド幅に対する前記算出されたピーク値の割合に基づいて、前記バスのデータ転送速度を前記最大データ転送バンド幅よりも低い値に設定するデータ転送速度設定ステップとをさらに具備することを特徴とする請求項1記載のスケジューリング方法。
  3. 前記データ転送速度設定ステップは、前記バスのデータ転送速度が前記最大データ転送バンド幅よりも低い値に設定されるように、前記バスの動作周波数の値を制御するステップを含むことを特徴とする請求項2記載のスケジューリング方法。
  4. 複数の処理を特定の時間間隔内に実行する情報処理システムにおいて、
    バスと、
    前記バスを介してデータ転送を実行する複数のプロセッサと、
    前記複数の処理それぞれの実行に要する時間を示すコスト情報および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報に基づき、前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を実行する手段とを具備することを特徴とする情報処理システム。
  5. 前記スケジューリング処理の結果に従って、前記特定の時間間隔内におけるデータ転送バンド幅のピーク値を決定する手段と、
    前記バスの最大データ転送バンド幅に対する前記算出されたピーク値の割合に基づいて、前記バスのデータ転送速度を前記最大データ転送バンド幅よりも低い値に設定するデータ転送速度設定手段とをさらに具備することを特徴とする請求項4記載の情報処理システム。
  6. 前記データ転送速度設定手段は、前記バスのデータ転送速度が前記最大データ転送バンド幅よりも低い値に設定されるように、前記バスの動作周波数の値を制御する手段を含むことを特徴とする請求項5記載の情報処理システム。
  7. 前記バスは、相互結合網を含むことを特徴とする請求項4記載の情報処理システム。
  8. 前記バスに接続されたメモリをさらに具備し、
    前記複数のプロセッサの各々は、前記バスを介して前記メモリとの間でデータ転送を実行するように構成されていることを特徴とする請求項4記載の情報処理システム。
  9. バスを介してデータ転送を実行する複数のプロセッサを含むコンピュータに、複数の処理を特定の時間間隔内に実行させるプログラムであって、
    前記複数の処理それぞれの実行に要する時間を示すコスト情報、および前記複数の処理それぞれが必要とするデータ転送バンド幅を示すバンド幅情報を入力する処理を、前記コンピュータに実行させる手順と、
    前記複数の処理が前記特定の時間間隔内に実行され、且つ前記複数の処理の中で必要とするデータ転送バンド幅が大きい上位少なくとも2つの処理の実行期間が互いに重複しないように、前記入力されたコスト情報およびバンド幅情報に基づいて、前記複数の処理それぞれが実行されるプロセッサと前記複数の処理それぞれの実行開始タイミングとを決定するスケジューリング処理を、前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。
  10. 前記スケジューリング処理の結果に従って、前記特定の時間間隔内におけるデータ転送バンド幅のピーク値を決定する処理を、前記コンピュータに実行させる手順と、
    前記バスの最大データ転送バンド幅に対する前記算出されたピーク値の割合に基づいて、前記バスのデータ転送速度を前記最大データ転送バンド幅よりも低い値に設定するデータ転送速度設定処理を、前記コンピュータに実行させる手順とをさらに具備することを特徴とする請求項9記載のプログラム。
  11. 前記データ転送速度設定処理を前記コンピュータに実行させる手順は、前記バスのデータ転送速度が前記最大データ転送バンド幅よりも低い値に設定されるように前記バスの動作周波数の値を制御する処理を、前記コンピュータに実行させる手順を含むことを特徴とする請求項10記載のプログラム。
JP2003335498A 2003-09-26 2003-09-26 スケジューリング方法および情報処理システム Expired - Fee Related JP4057989B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2003335498A JP4057989B2 (ja) 2003-09-26 2003-09-26 スケジューリング方法および情報処理システム
US10/935,188 US7685599B2 (en) 2003-09-26 2004-09-08 Method and system for performing real-time operation
EP04021572A EP1519269A3 (en) 2003-09-26 2004-09-10 Method and system for real-time scheduling
CNB2004100117191A CN1318968C (zh) 2003-09-26 2004-09-24 执行实时操作的方法和系统
KR1020040077323A KR100628492B1 (ko) 2003-09-26 2004-09-24 실시간 동작 수행방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003335498A JP4057989B2 (ja) 2003-09-26 2003-09-26 スケジューリング方法および情報処理システム

Publications (2)

Publication Number Publication Date
JP2005100264A true JP2005100264A (ja) 2005-04-14
JP4057989B2 JP4057989B2 (ja) 2008-03-05

Family

ID=34191526

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003335498A Expired - Fee Related JP4057989B2 (ja) 2003-09-26 2003-09-26 スケジューリング方法および情報処理システム

Country Status (5)

Country Link
US (1) US7685599B2 (ja)
EP (1) EP1519269A3 (ja)
JP (1) JP4057989B2 (ja)
KR (1) KR100628492B1 (ja)
CN (1) CN1318968C (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133858A (ja) * 2005-09-30 2007-05-31 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
JP2008165746A (ja) * 2006-12-06 2008-07-17 Toshiba Corp アクセラレータ、情報処理装置及び情報処理方法
JP2009025939A (ja) * 2007-07-18 2009-02-05 Renesas Technology Corp タスク制御方法及び半導体集積回路
US7529861B2 (en) 2006-07-25 2009-05-05 Ntt Docomo, Inc. Peripheral switching device and a peripheral switching control device
JP2009525545A (ja) * 2006-02-03 2009-07-09 ラッセル・エイチ・フィッシュ・ザ・サード スレッドに最適化されたマルチプロセッサアーキテクチャ
JP2010515155A (ja) * 2006-12-26 2010-05-06 クラスター リソーセス インク 異なるコンピュータリソースタイプにわたる予約の同時割当
WO2012111470A1 (ja) * 2011-02-16 2012-08-23 ソニー株式会社 送信端末および送信方法
JP2012533826A (ja) * 2009-07-22 2012-12-27 エンパイア テクノロジー ディベロップメント エルエルシー 分離によるバッチスケジューリング
JP2012533825A (ja) * 2009-07-23 2012-12-27 エンパイア テクノロジー ディベロップメント エルエルシー バッチスケジューリングによるスレッドのスケジューリング
JP2013500543A (ja) * 2009-07-27 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング
JP2013516711A (ja) * 2010-01-11 2013-05-13 クアルコム,インコーポレイテッド 電子デバイスにおける電力を制御するシステムおよび方法
US8799912B2 (en) 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
JP2015156165A (ja) * 2014-02-21 2015-08-27 ルネサスエレクトロニクス株式会社 画像処理装置、及びその制御方法
JP2018106472A (ja) * 2016-12-27 2018-07-05 日立オートモティブシステムズ株式会社 制御装置
KR20200068702A (ko) * 2017-10-10 2020-06-15 크로노-세이프 실시간 작업들 간에 저지연 통신을 보장하는 시퀀싱 계획들을 실행하는 방법

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3889726B2 (ja) * 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
JP4025260B2 (ja) 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
EP1725934A4 (en) 2004-03-13 2008-08-13 Cluster Resources Inc SYSTEM AND METHOD FOR SELF-OPTIMIZED RESOURCE RESERVATION IN CALCULATION TIME
US9778959B2 (en) 2004-03-13 2017-10-03 Iii Holdings 12, Llc System and method of performing a pre-reservation analysis to yield an improved fit of workload with the compute environment
US7620706B2 (en) 2004-03-13 2009-11-17 Adaptive Computing Enterprises Inc. System and method for providing advanced reservations in a compute environment
WO2005089245A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
JP4197672B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
JP4197673B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びタスク実行方法
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US9075657B2 (en) 2005-04-07 2015-07-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US7650603B2 (en) * 2005-07-08 2010-01-19 Microsoft Corporation Resource management for virtualization of graphics adapters
US20140250173A1 (en) * 2005-10-31 2014-09-04 Adobe Systems Incorported Selectively porting meeting objects
JP2009532082A (ja) * 2006-03-30 2009-09-10 ギブン イメージング リミテッド 生体内検出デバイス、ならびにイメージャとイメージャのプロセッサとの間の通信方法
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
KR20080008137A (ko) * 2006-07-19 2008-01-23 삼성전자주식회사 영상 복원 장치 및 방법
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7926035B2 (en) * 2007-04-24 2011-04-12 Microsoft Corporation Testing multi-thread software using prioritized context switch limits
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US20090132400A1 (en) * 2007-09-28 2009-05-21 Verizon Services Organization Inc. Data metering
US8543720B2 (en) * 2007-12-05 2013-09-24 Google Inc. Dynamic bit rate scaling
US8230436B2 (en) * 2008-01-10 2012-07-24 Microsoft Corporation Aggregating recurrent schedules to optimize resource consumption
US20090182802A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Mobile device management scheduling
US8166145B2 (en) * 2008-01-10 2012-04-24 Microsoft Corporation Managing event-based conditional recurrent schedules
DE102008005124A1 (de) * 2008-01-18 2009-07-23 Kuka Roboter Gmbh Computersystem, Steuerungsvorrichtung für eine Maschine, insbesondere für einen Industrieroboter, und Industrieroboter
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
FR2943158B1 (fr) * 2009-03-12 2011-04-08 St Wireless Sa Procede de commande d'un transfert de donnees sur un bus informatique a transmission serie.
FR2950714B1 (fr) * 2009-09-25 2011-11-18 Bull Sas Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8776076B2 (en) * 2010-07-20 2014-07-08 Nec Laboratories America, Inc. Highly scalable cost based SLA-aware scheduling for cloud services
CN101916068B (zh) * 2010-07-29 2012-01-11 北京交大资产经营有限公司 基于2取2结构的计算机控制系统及其实现方法
KR101522477B1 (ko) * 2010-08-20 2015-05-21 인터내셔널 비지네스 머신즈 코포레이션 시뮬레이션 방법, 시스템 및 프로그램
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US8861414B2 (en) * 2011-04-08 2014-10-14 The Regents Of The University Of Michigan Reducing energy consumption in wireless devices
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101812583B1 (ko) 2011-07-21 2018-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US9229847B1 (en) 2012-04-18 2016-01-05 Open Invention Network, Llc Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems
CN102722402B (zh) * 2012-05-28 2014-03-05 上海微频莱机电科技有限公司 一种非抢占式实时调度多任务的处理系统及方法
US9396735B2 (en) * 2013-01-03 2016-07-19 Google Inc. System for real time audio processing driven by interrupt and timer event
US9280388B2 (en) * 2013-01-22 2016-03-08 Oracle International Corporation Method and apparatus for efficient scheduling of multithreaded programs
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
JP6070355B2 (ja) * 2013-03-28 2017-02-01 富士通株式会社 仮想マシン制御プログラム,仮想マシン制御方法,仮想マシン制御装置及びクラウドシステム
US9135062B2 (en) * 2013-04-09 2015-09-15 National Instruments Corporation Hardware assisted method and system for scheduling time critical tasks
US9348644B2 (en) 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
EP3244304A4 (en) * 2015-01-07 2018-01-31 Fujitsu Limited Task switch assistance method, task switch assistance program, and information processing device
US20160301634A1 (en) * 2015-04-11 2016-10-13 International Business Machines Corporation Controlling a delivery of messages to designated computing devices
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager
CN111221573B (zh) * 2018-11-26 2022-03-25 深圳云天励飞技术股份有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
US11422857B2 (en) 2019-06-01 2022-08-23 Apple Inc. Multi-level scheduling
CN110990144B (zh) * 2019-12-17 2022-11-08 深圳市晨北科技有限公司 一种任务确定方法及相关设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4691280A (en) * 1982-06-28 1987-09-01 The Singer Company High performance multi-processor system
US5065392A (en) * 1990-04-10 1991-11-12 Dsc Communications Corporation Network controller scheduling system and method of operation
US5418953A (en) 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5590323A (en) * 1994-05-13 1996-12-31 Lucent Technologies Inc. Optimal parallel processor architecture for real time multitasking
FR2723652B1 (fr) * 1994-08-11 1996-09-13 Cegelec Procede pour ordonnancer des taches successives
JPH08180025A (ja) 1994-12-21 1996-07-12 Toshiba Corp スケジューリング装置
WO1996028783A1 (en) * 1995-03-10 1996-09-19 Motorola Inc. Method and system for storing instructions in computer memory
US5956321A (en) 1995-03-16 1999-09-21 Kabushiki Kaisha Toshiba Stream scheduling system for real time stream server
US6055577A (en) * 1996-05-06 2000-04-25 Oracle Corporation System for granting bandwidth for real time processes and assigning bandwidth for non-real time processes while being forced to periodically re-arbitrate for new assigned bandwidth
US6067557A (en) * 1996-09-06 2000-05-23 Cabletron Systems, Inc. Method and system for allocating CPU bandwidth by prioritizing competing processes
JPH10143380A (ja) 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
US6385638B1 (en) * 1997-09-04 2002-05-07 Equator Technologies, Inc. Processor resource distributor and method
JP3724536B2 (ja) 1998-02-20 2005-12-07 富士ゼロックス株式会社 画像出力制御装置およびその処理実行制御方法
JP3382176B2 (ja) * 1999-03-26 2003-03-04 株式会社東芝 要求処理方法および要求処理装置
US6542940B1 (en) * 1999-10-25 2003-04-01 Motorola, Inc. Method and apparatus for controlling task execution in a direct memory access controller
US6526462B1 (en) * 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US7140022B2 (en) * 2000-06-02 2006-11-21 Honeywell International Inc. Method and apparatus for slack stealing with dynamic threads
JP2004502235A (ja) 2000-06-27 2004-01-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ スケジュール決定方法、スケジューラ及びシステム
US7065586B2 (en) * 2000-12-22 2006-06-20 Radiance Technologies, Inc. System and method for scheduling and executing data transfers over a network
JP3990115B2 (ja) * 2001-03-12 2007-10-10 株式会社東芝 サーバ側プロキシ装置及びプログラム
US20040151187A1 (en) * 2003-01-31 2004-08-05 Lichtenstein Walter D. Scheduling data transfers for multiple use requests
JP3889726B2 (ja) * 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
JP4025260B2 (ja) * 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164953B2 (en) 2005-09-30 2015-10-20 Synopsys, Inc. Scheduling in a multicore architecture
US8751773B2 (en) 2005-09-30 2014-06-10 Synopsys, Inc. Scheduling in a multicore architecture
US9286262B2 (en) 2005-09-30 2016-03-15 Synopsys, Inc. Scheduling in a multicore architecture
JP2007133858A (ja) * 2005-09-30 2007-05-31 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
JP2012089154A (ja) * 2005-09-30 2012-05-10 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
US9442886B2 (en) 2005-09-30 2016-09-13 Synopsys, Inc. Scheduling in a multicore architecture
US8732439B2 (en) 2005-09-30 2014-05-20 Synopsys, Inc. Scheduling in a multicore processor
US8533503B2 (en) 2005-09-30 2013-09-10 Synopsys, Inc. Managing power consumption in a multicore processor
JP2009525545A (ja) * 2006-02-03 2009-07-09 ラッセル・エイチ・フィッシュ・ザ・サード スレッドに最適化されたマルチプロセッサアーキテクチャ
US7529861B2 (en) 2006-07-25 2009-05-05 Ntt Docomo, Inc. Peripheral switching device and a peripheral switching control device
JP2008165746A (ja) * 2006-12-06 2008-07-17 Toshiba Corp アクセラレータ、情報処理装置及び情報処理方法
JP2010515155A (ja) * 2006-12-26 2010-05-06 クラスター リソーセス インク 異なるコンピュータリソースタイプにわたる予約の同時割当
JP2009025939A (ja) * 2007-07-18 2009-02-05 Renesas Technology Corp タスク制御方法及び半導体集積回路
US8607234B2 (en) 2009-07-22 2013-12-10 Empire Technology Development, Llc Batch scheduling with thread segregation and per thread type marking caps
US8799912B2 (en) 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
JP2012533826A (ja) * 2009-07-22 2012-12-27 エンパイア テクノロジー ディベロップメント エルエルシー 分離によるバッチスケジューリング
US8839255B2 (en) 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
JP2012533825A (ja) * 2009-07-23 2012-12-27 エンパイア テクノロジー ディベロップメント エルエルシー バッチスケジューリングによるスレッドのスケジューリング
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
JP2013500543A (ja) * 2009-07-27 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング
JP2013516711A (ja) * 2010-01-11 2013-05-13 クアルコム,インコーポレイテッド 電子デバイスにおける電力を制御するシステムおよび方法
US8745629B2 (en) 2010-01-11 2014-06-03 Qualcomm Incorporated System and method of controlling power in an electronic device
WO2012111470A1 (ja) * 2011-02-16 2012-08-23 ソニー株式会社 送信端末および送信方法
CN102835126A (zh) * 2011-02-16 2012-12-19 索尼公司 传送终端和传送方法
JP2012169959A (ja) * 2011-02-16 2012-09-06 Sony Corp 送信端末および送信方法
JP2015156165A (ja) * 2014-02-21 2015-08-27 ルネサスエレクトロニクス株式会社 画像処理装置、及びその制御方法
JP2018106472A (ja) * 2016-12-27 2018-07-05 日立オートモティブシステムズ株式会社 制御装置
WO2018123707A1 (ja) * 2016-12-27 2018-07-05 日立オートモティブシステムズ株式会社 制御装置
KR20200068702A (ko) * 2017-10-10 2020-06-15 크로노-세이프 실시간 작업들 간에 저지연 통신을 보장하는 시퀀싱 계획들을 실행하는 방법
JP2020537269A (ja) * 2017-10-10 2020-12-17 クロノ−セーフ リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法
JP7266590B2 (ja) 2017-10-10 2023-04-28 クロノ-セーフ リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法
KR102602151B1 (ko) 2017-10-10 2023-11-15 크로노-세이프 실시간 작업들 간에 저지연 통신을 보장하는 시퀀싱 계획들을 실행하는 방법

Also Published As

Publication number Publication date
EP1519269A2 (en) 2005-03-30
CN1601474A (zh) 2005-03-30
CN1318968C (zh) 2007-05-30
JP4057989B2 (ja) 2008-03-05
US7685599B2 (en) 2010-03-23
KR100628492B1 (ko) 2006-09-26
KR20050030871A (ko) 2005-03-31
EP1519269A3 (en) 2006-08-23
US20050108715A1 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
JP4057989B2 (ja) スケジューリング方法および情報処理システム
JP4025260B2 (ja) スケジューリング方法および情報処理システム
JP3920818B2 (ja) スケジューリング方法および情報処理システム
JP4028444B2 (ja) スケジューリング方法およびリアルタイム処理システム
JP3889726B2 (ja) スケジューリング方法および情報処理システム
JP3892829B2 (ja) 情報処理システムおよびメモリ管理方法
US9836334B2 (en) Scheduling application tasks only on logical processors of a first set and operating system interferences in logical processors of a second set
Kato et al. CPU scheduling and memory management for interactive real-time applications

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070515

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071214

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101221

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111221

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121221

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121221

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131221

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees