JP2002041308A - マルチプロセッサ・オブジェクト制御 - Google Patents

マルチプロセッサ・オブジェクト制御

Info

Publication number
JP2002041308A
JP2002041308A JP2001168859A JP2001168859A JP2002041308A JP 2002041308 A JP2002041308 A JP 2002041308A JP 2001168859 A JP2001168859 A JP 2001168859A JP 2001168859 A JP2001168859 A JP 2001168859A JP 2002041308 A JP2002041308 A JP 2002041308A
Authority
JP
Japan
Prior art keywords
server
client
data
dsp
algorithm
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.)
Pending
Application number
JP2001168859A
Other languages
English (en)
Inventor
Robert T Killian
ティ、キリアン ロバート
Ajai Narayan
ナラヤン アジャイ
Rajko Milovanovic
ミロバノビック ラジコ
James M Overturf
エム、オーバーターフ ジェームズ
Schuyler T Patton
ティ、パットン シャイラー
Philip R Thrift
アール、スリフト フィリップ
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2002041308A publication Critical patent/JP2002041308A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 オーバーヘッドを低減しスループット向上を
図ったクライアント−サーバ・システムを提供する。 【解決手段】 クライアント−サーバ・システムは、2
フェーズでサーバ・タスクのスケジューリングを行い、
クライアント・デッドライン・フェーズ情報を第2のフ
ェーズのサブタスク・サーバ・スケジューリングで用い
る。また、システムのオブジェクト・ブローカは、クラ
イアント要求コールおよびリターンを崩壊させ、コプロ
セッサにおいてデータを維持する。マルチタスキング用
のサーバ・メモリ管理および多数のプロセッサの共有メ
モリを用いたデータ・フローにより、一次プロセッサ・
バスの輻輳を回避する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、電子デバイスに関
し、特に、マルチプロセッサおよびディジタル信号プロ
セッサ分散オブジェクトおよび方法に関する。
【0002】
【従来の技術】インターネットの成長は、高速ネットワ
ーク・アクセスと相俟って、分散計算環境を主流に押し
上げた。共通オブジェクト要求ブローカ・アーキテクチ
ャ(CORBA)および分散コンポーネント・オブジェ
クト・モデル(DCOM)規格が生まれ、オブジェクト
指向ネットワーク・プログラミングおよびコンポーネン
ト・ソフトウエア手法が簡略化された。したがって、ク
ライアント・アプリケーションは、リモート・サーバ・
オブジェクトにデータまたは機能性を与えるように要求
し、これによって、アプリケーションのプログラミング
を簡略化することが可能となる。図24は、汎用リモー
ト・プロシージャ・コール・アーキテクチャを示す。実
際には、オブジェクト指向プログラミングは詳細をカプ
セル化し、これによって、他のオブジェクトとのクエリ
または双方向処理に対してオブジェクト・インターフェ
ースのみを提示し、かかる分散計算環境を可能としてい
る。
【0003】CORBAの中核は、オブジェクト要求ブ
ローカ(ORB)であり、これはローカルおよびリモー
トのオブジェクト間の双方向処理に「バス」を提供す
る。CORBAオブジェクトは、一組のメソッドおよび
インターフェースである。CORBAオブジェクトのク
ライアントは、オブジェクトがクライアントのアドレス
空間に位置するかのように、オブジェクトのリファレン
スをメソッド・コール用のハンドルとして用いる。OR
Bは、(可能なリモート・サーバ上の)オブジェクト・
インプリメンテーションを発見し、クライアント・アプ
リケーションからのコール要求を受信するようにオブジ
ェクトの準備を行い、クライアントからの要求(例え
ば、パラメータ)をオブジェクトに転送し、何らかの回
答をオブジェクトからクライアントに戻す役割を果た
す。オブジェクト・インプリメンテーションは、ORB
インターフェースまたはオブジェクト・アダプタ(O
A)のいずれかによってORBと双方向処理を行う。図
25は、CORBAアーキテクチャ全体を示す。
【0004】インターフェース定義言語(IDL)は、
オブジェクト指向プログラミングでは常にそうであるよ
うに詳細(データ,インプリメンテーション)を隠しつ
つクライアントによって呼び出されるべきメソッドを含
むオブジェクトのインターフェースを定義する。通常で
は、IDLは、データ・カプセル化,ポリモーフィズム
(polymorphism)およびインヘリタンス(inheritanc
e)を規定する。図24に示すように、クライアント
は、まずクライアント・スタブ(プロクシ)にコールす
ることによってオブジェクトの関数を呼び出す。スタブ
はコール・パラメータをメッセージ内に整列させ、ワイ
ヤ・プロトコルはメッセージをサーバ・スタブ(スケル
トン)に送り、サーバ・スタブはメッセージからコール
・パラメータを抜き取る(unmarshal)とともにオブジ
ェクトの関数をコールする。図25における最上層は基
本プログラミング・アーキテクチャであり、中間層はリ
モーティング・アーキテクチャであり、最下位層はワイ
ヤ・プロトコル・アーキテクチャである。クライアント
・プログラムおよびサーバ・オブジェクト・プログラム
の開発者は基本プログラミング・アーキテクチャを用い
て作業を行い、リモーティング・アーキテクチャはイン
ターフェース・ポインタ,オブジェクト・リファレンス
およびハンドルをクライアントとサーバ・プロセスとの
間で意味のあるものにする。ワイヤ・プロトコルはリモ
ーティング・アーキテクチャを種々のハードウエア・デ
バイス間に効果的に拡張する。
【0005】Cheung らの“DCOM and CORBA Side by Si
de, Step by Step, and Layer by Layer”に記載されて
いるように、CORBAイネーブルされたクライアント
およびサーバ・プロセッサによってリモート・オブジェ
クトを用いる簡単なアプリケーションは、次の5つのフ
ァイルで作成することができる。(1)オブジェクトに
対するインターフェースを定義するIDLファイル。I
DLコンパイラは、クライアントおよびサーバの双方に
よって用いられるインターフェース・ヘッダ・ファイル
とともにクライアント・スタブおよびオブジェクト・ス
ケルトン・コードを発生する。(2)インターフェース
からのオブジェクトに対してサーバ・インプリメンテー
ション・クラスを導出するインプリメンテーション・ヘ
ッダ・ファイル。本質的に、インプリメンテーション・
クラスは、IDLコンパイラによって作成されたインタ
ーフェース・クラスと(インヘリタンスによって)関連
付けられている。(3)サーバ・クラスのメソッドのイ
ンプリメンテーション。(4)サーバ用の主プログラ
ム。このプログラムはサーバ・クラスのインスタンス
(オブジェクト)をインスタンス化する。(5)クライ
アント・スタブに対するコールによってオブジェクトの
メソッドを呼び出すクライアント・アプリケーション。
【0006】静的なオブジェクトの呼出しでは、コンパ
イル後ではあるが実行前に、CORBAはインターフェ
ース名とインプリメンテーション・レポジトリ(図25
参照)で実行可能なサーバのパス名との間の連携を登録
する。動的なオブジェクト呼出しでは、IDLコンパイ
ラは、インターフェースのメソッド毎にタイプ情報も発
生し、それをインターフェース・レポジトリに格納す
る。クライアントは、インターフェース・レポジトリに
問い合わせして特定のインターフェースに関するランタ
イム情報を獲得し、それを用いて動的呼出しインターフ
ェースを介して動的にオブジェクト上のメソッドを呼び
出す。同様に、サーバ側では、動的スケルトン・インタ
ーフェースは、それが実行しているオブジェクトのタイ
プのコンパイル時知識を有さないオブジェクト上で動作
をクライアントが呼び出すことを可能にする。
【0007】図26aは、オブジェクトのクライアント
要求のCORBA最上層(基本プログラミング・アーキ
テクチャ)アクティビティおよびそれのメソッドの呼出
しと、サーバのオブジェクト・インスタンスの作成およ
びそれのクライアントへの利用可能性とを示す。特に、
オブジェクト活性化(activation)は次のように行われ
る。(1)クライアントがオブジェクト・インターフェ
ースに対するクライアント・スタブの静的関数をコール
する。(2)ORBは、オブジェクト・インターフェー
スをサポートするオブジェクトを含むサーバを起動す
る。(3)サーバ・プログラムは、オブジェクトをイン
スタンス化するとともに、オブジェクト・リファレンス
を登録する。(4)ORBはオブジェクト・リファレン
スをクライアント・アプリケーションに戻す。続いて、
オブジェクト・メソッド呼出し[1],[2]のため
に、クライアントは、最終的にサーバのメソッドを呼び
出すオブジェクト・インターフェースのメソッドをコー
ルする。メソッドが値を戻すならば、サーバはこれらを
クライアントに返送する。
【0008】図26bは、オブジェクト活性化に伴うC
ORBA中間層(リモーティング・アーキテクチャ)を
示す。(1)コールの受信時、クライアント・スタブは
タスクをORBに任命する。(2)ORBは、インプリ
メンテーション・レポジトリを参照してコールをそれの
サーバ・パス名にマップするとともに、サーバ・プログ
ラムを活性化する。(3)サーバは、オブジェクトをイ
ンスタンス化するとともに、一意のリファレンスIDを
作成してオブジェクト・リファレンスを得る。オブジェ
クト・リファレンスをORBに登録する。(4)サーバ
・クラス用のコンストラクタ(constructor)もスケル
トン・クラスのインスタンスを作成する。(5)ORB
は、オブジェクト・リファレンス・タックをクライアン
トに送るとともに、クライアント・スタブ・クラスのイ
ンスタンスを作成し、対応するオブジェクト・リフェレ
ンスとともにそれをクライアント・スタブ・オブジェク
ト・テーブルに登録する。(6)クライアント・スタブ
はクライアントにオブジェクト・リファレンスを戻す。
続いて、オブジェクト・メソッドのクライアント呼出し
を進め、[1]クライアント・コールの受信時に、クラ
イアント・スタブは、要求疑似オブジェクトを作成し、
コールのパラメータを疑似オブジェクト内に整列させ、
疑似オブジェクトをサーバーへのチャンネルにおけるメ
ッセージに置くようにコールし、回答を待つ。[2]メ
ッセージがサーバに到達すると、ORBは、ターゲット
・スケルトンを発見し、要求疑似オブジェクトを再構築
し、それをスケルトンに転送する。[3]スケルトン
は、要求疑似オブジェクトからパラメータを抜き取り、
サーバ・オブジェクトのメソッドを呼び出し、(ある場
合には)戻り値を整列させ、スケルトン・メソッドから
戻る。ORBは、回答メッセージを構築するとともに、
それを送信バッファに入力する。[4]回答がクライア
ント側に到達すると、ORBコールは、受信バッファか
らの回答メッセージを読んだ後にリターンする。続い
て、クライアント・スタブは、戻り値を抜き取るととも
に、それらをクライアントに戻してコールを完了する。
【0009】図26cに示すように、オブジェクト活性
化用の最下位層(ワイヤ・プロトコル・アーキテクチ
ャ)は、(1)要求の受信時に、クライアント側ORB
がオブジェクトをサポートする機械を選択するととも
に、TCP/IPを介してサーバ側ORBに要求を送る
ことを含む。(2)サーバ側ORBがサーバを起動する
と、オブジェクトはサーバによってインスタンス化さ
れ、ORBコンストラクタがコールされ、作成機能(cr
eate function)が呼び出される。作成機能の内部では
ソケット終点が作成され、オブジェクトはオブジェクト
・アイデンティティが割り当てられ、インターフェース
名およびインプリメンテーション名とリファレンス・ア
イデンティティと終点アドレスを含むオブジェクト・リ
ファレンスが作成される。オブジェクト・リファレンス
にはORBが登録される。(3)オブジェクト・リファ
レンスがクライアント側に戻されるとき、クライアント
・スタブは、終点アドレスを抽出するとともに、サーバ
へのソケット接続を確立する。続いて、メソッド呼出し
を進め、[1]コールの受信時に、クライアント・スタ
ブはパラメータを共通データ表現(CDR)フォーマッ
トで整列させる。[2]要求は、確立されたソケット接
続を介してターゲット・サーバに送られる。[3]ター
ゲット・スケルトンは、リファレンス・アイデンティテ
ィまたはインターフェース・インスタンス識別子のいず
れかによって識別される。[4]サーバ・オブジェクト
上で実際のメソッドを呼び出した後に、スケルトンは戻
り値をCDRフォーマットで整列させる。
【0010】CORBAのリアル・タイム拡張は、通
常、予測可能な処理能力,安全な動作およびリソース割
当てというようなサービス品質(QoS)アスペクトを
備えている。例えば、Gillらの“Applying Adaptive Mi
ddleware to Manage End-to-End QoS for Next-generat
ion Distributed Applications”。
【0011】CORBAコンポーネントはメタタイプと
して導入され、また、関連するコンポーネント・インプ
リメンテーション定義言語(CIDL)はインプリメン
テーションを記述するために利用可能である。図27
は、プログラミング・ステップを示す。DCOMは、同
様に、3つのレイヤと、CORBAにいくらか類似した
アーキテクチャとを有する。
【0012】Notenboomの米国特許第5,748,46
8号とEquator Technologies のPCT公開WO99/
12097号はそれぞれ、プロセッサ・リソースを多数
のタスクに割り当てる方法について記載している。Note
nboomは、優先度システムに従ってコプロセッサ・リソ
ースを割り当てられたタスクとともにホスト・プロセッ
サおよびコプロセッサを考慮する。Equator Technologi
esは、サポートされた少なくとも1つのサービス・レベ
ル(プロセッサ・リソース消費レート)を各タスクが提
示するタスク時間消費に従ってプロセッサ・リソースを
スケジュール化し、また、リソース・マネージャは、サ
ポートされたサービス・レベルに十分なリソースが存在
するならば、タスクを受け入れる。
【0013】各プロセッサがそれ自体のオペレーティン
グ・システムまたはBIOSを有する2つ以上のプロセ
ッサを持つシステムは、インターネットを介して接続さ
れた広分散プロセッサを有するシステムや、RISC
CPUおよび1つ以上のDSPのような同じ半導体ダイ
上に2つ以上のプロセッサが集積されたシステムも含ま
れる。
【0014】XDAIS規格は、DSP上で走るアルゴ
リズム用のインターフェースを規定する。これは再使用
可能なオブジェクトを備える。XDAISは、アルゴリ
ズムが標準的なインターフェースIALGおよびそのア
ルゴリズムを走らせるための拡張部を実装することを要
求する。XDAISは、リロケータブル・コードや命名
慣例のようなある種の柔軟性規則に従うことも要求す
る。クライアント・アプリケーションは、関数ポインタ
のテーブル内にコールすることによってアルゴリズムの
インスタンスを管理することができる。XDAIS規格
/指針では、アルゴリズム開発者は、iDSPメディア
・プラットフォームDSPフレームワークのようなDS
Pアプリケーション・フレームワークへのプラグがもっ
と容易になるように、アルゴリズムを開発または変換す
ることができる。
【0015】フレームワーク・ノード(クライアント/
サーバ)内のサービス品質(QoS)マネージャの必要
性は、具体的には、全てのストリーミング・メディア系
アプリケーションのリアル・タイム・サービス要求から
生じた。ストリーミング・メディア・アプリケーション
は、異種コデック(エンコーダ/デコーダ)を扱わなけ
ればならないとともに、一意のレンダリング・デッドラ
イン(rendering deadline)でフィルタをかける。これ
らのアプリケーションも、人間の知覚特性を利用してサ
ービス品質におけるグレースフル・デグラデーション
(graceful degradation)に変換することができるべき
である。それらは、それらの処理およびレンダリング・
サイクルにおいて適量のジッタを扱うことができるべき
である。例えば、ビデオ・アプリケーションでは、レン
ダリング用フレーム・レートを30フレーム/秒(fp
s)に維持しなければならず、これは33msのフレー
ム期間に換算される。しかしながら、アプリケーション
は、サーバとネゴシエート(negotiate)して、限られ
た瞬時的な変動には耐えることができなければならな
い。また、30fpsでは、人間の視覚は約6フレーム
/秒のフレーム欠落に耐えることができる。クライアン
ト・アプリケーションも、処理(瞬時的なフレームの欠
落)におけるグレースフル・デグラデーションをサポー
トすることができるとともに、サーバとネゴシエートさ
れた特定の許容度以内でレンダリングの定常状態を維持
しなければならない。QoSマネージャとは、そのよう
なリアル・タイム・システムを実現するための必要な機
能および能力を備える機構のことである。
【0016】DSLやケーブル・モデムのような広帯域
通信が新たなマーケットに激増しかつ空前の量のデータ
を処理および消費用の消費者デバイスに配信するにつれ
て、もっと効率的なデータ処理,ルーティングおよび処
理技術がこれを支えるために必要となる。
【0017】図20は、データがどのように現行の異種
システムの処理エレメントを流れるかを示す図である。
各データ・トランザクションは番号付けされて時間順序
を示す。各トランザクション毎に、データは中央制御プ
ロセッサ(CCP)の制御の下でシステム・バスを通過
しなければならない。CCPは、制御パスを介してメッ
セージまたはトリガをシステム内の種々の処理エレメン
トに送ることによってトランザクションを開始する。
【0018】図20の処理エレメントは、規定された一
組のタスクを実行することができる別個のプロセッサ
(例えば、DSP,ASIC,GPPなど)として示さ
れている。これは、各々がそれ自体のメモリとともに示
されている理由である。処理エレメントは、同一プロセ
ッサ上で走る個々のタスクとすることも可能である。
【0019】
【発明が解決しようとする課題】場合によっては、同じ
データが多数回(例えば、トランザクション1および
2,3および4,5および6)システム・バスを通過し
なければならない。そのようなシステムでは、データは
合計2+(2×n)回(すなわち、この場合には6回)
システム・バスを通過しなければならない。システム・
バスを通過しCCPによる介入がある毎に、データ・フ
ロー・オーバーヘッドをもたらすとともに、全体的なシ
ステム・スループットを低下する。
【0020】データ・フロー・オーバーヘッドは、所与
の時間フレームにおいてシステムを移動できるデータ量
に悪影響を及ぼし、それにより、システムが処理できる
データ量を制限する。おそらく、そのようなシステム
は、さもなければそれのエレメントのケーパビリティの
合計が示すよりももっと少ない有用なタスクを実行する
であろう。
【0021】
【課題を解決するための手段】本発明は、サーバ・タス
クの2フェーズ・スケジューリングとサーバDSP上に
おけるタスクの連鎖を用いたクライアント−サーバ・シ
ステム用オブジェクト要求ブローカとプロセッサ・オー
バーヘッドおよび一度に単一の実行タスクに属するタス
ク・ワークスペースへの内部メモリ区分によるマルチタ
スク・プロセッサ内部メモリ管理と中央制御プロセッサ
およびバス接続された処理エレメントおよび処理エレメ
ント用共有メモリを含んで中央制御プロセッサ・バスを
回避する異種システムにおけるデータ・フローとを含む
特徴の1つ以上を有するクライアント−サーバ・システ
ムを提供する。
【0022】
【発明の実施の形態】1.概要 好適な実施形態のシステムは、通常、クライアント・ア
プリケーションを走らせるホスト・プロセッサとサーバ
・アルゴリズムを走らせる1つ以上のサーバ・プロセッ
サとを有し、また、アルゴリズム・オブジェクト用のオ
ブジェクト要求ブローカとオブジェクト要求ブローカ用
のサービス品質制御とアルゴリズム・オブジェクト用の
メモリ・ページングとアルゴリズム・オブジェクト用の
データ・フローとを含む。iDSPOrbと称する好適
な実施形態は、一次プロセッサと1つ以上のDSPコプ
ロセッサとを備えたシステムに適用される。
【0023】iDSPOrbは、DSPオブジェクトの
作成とマルチプロセッサ環境における汎用プロセッサ
(GPP)または他のDSPからのDSPオブジェクト
へのアクセスをサポートする高性能DSPオブジェクト
要求ブローカ(DSPORB)である。iDSPOrb
は、CORBAに類似した全体的アーキテクチャおよび
動作を有する。iDSPOrbは、以下のDSPORB
機能を有する。 (1)iDSPOrbは、プロセッサ境界を越えたオブ
ジェクト結束および呼出し(DSPオブジェクト・プロ
シージャ・コール)をサポートする。 (2)iDSPOrbは、静的呼出し用のコンパイル時
ヘッダおよびスタブとランタイム動的呼出しインターフ
ェースとの双方からなるGPP側プロクシ・インターフ
ェースを備えている。 (3)iDSPOrbは、iDSPサーバを構築するた
めのDSP側アルゴリズム・インターフェース(スタブ
およびヘッダ)を備えている。 (4)iDSPOrbは、同期および非同期の双方の呼
出しを行うことができる。 (5)iDSPOrbは、リアル・タイムQoSを保証
する。 (6)iDSPOrbは、フレーム単位処理およびスト
リーム単位処理の双方を可能にする。 (7)iDSPOrbは、オブジェクト連鎖データ・フ
ロー(中間結果はDSPメモリに留まる)に対応する。 (8)iDSPOrbは、広帯域幅マルチチャネルGP
P/DSP I/Oインターフェース上で実行される。
【0024】図1は、GPP/DSPデュアル・プロセ
ッサ構成用のiDSPOrbアーキテクチャを示し、こ
こで、GPPは「クライアント」として作動し、DSP
は「サーバ」として作動する。
【0025】ここではiDSP-QoSMと呼ばれるi
DSPシステム内のサービス品質(QoS)マネージャ
は、クライアント・アプリケーションにネゴシエート・
レベルのサービスを提供する(サーバ内部の)機構であ
る。それは、クライアントに伝達される所定の低下政策
(degradation policy)を備えた保証されたサービス品
質を提供する。iDPS-QoSMは次の特徴を有す
る。(1)それは、ネットワーク上に常駐するノードの
限られたコンテクストの内部で定義される(ノード
内)。それは、ノード間(ネットワーク)通信を制御す
るために適当なQoSマネージャの存在を仮定する。
(2)それは、負荷共有能力を備えたマルチ・プロセッ
サ環境のために定義される。
【0026】好適な実施形態のiDSP-QoSMによ
って実行される機能は次のものを含む。(1)システム
内のサーバ上における定常状態処理負荷の監視。(2)
過負荷サーバからそれのピア(peer)への負荷分散。
(3)サーバにあらゆる追加負荷を登録するためのクラ
イアント・アプリケーションとのサービス要件のネゴシ
エーション。(4)サーバによってサービスされる個々
のオブジェクトの具体的な特性に基づいたサーバ上の将
来負荷の予測。(5)アルゴリズム・ランタイム予測は
処理時間の代わりにプロセッサ時間のサイクルに基づく
であろう。このようなアルゴリズム・ランタイム予測は
プロセッサ動作周波数には結び付けられていない。
【0027】テキサス・インスツルメンツ社のTMS320C6
2XX DSPでは、内部(オン・チップ)データ・メモリ
の量は限られている。TMS320C6211(およびそれの派生
製品)を除いて、TMS320C62XX DSPは、外部メモリ
(オフ・チップ)アクセスを効率的にするデータ・キャ
ッシュを有していない。内部メモリは、TMS320C62XX D
SPのデータ・メモリ階層内の最上位レベルにある。し
たがって、TSM320C62XXDSP上で走る全てのアルゴリ
ズムはそれらのデータ・ワークスペースのために内部メ
モリを使いたい。何故なら、それはデータ・メモリにア
クセスするための最上位の効率であるからである。
【0028】通常、DSP用のアルゴリズムは、それら
がDSPプロセッサ全体を所有すると、したがって、D
SPの全ての内部メモリを所有すると仮定して、開発さ
れる。これは、数個の異なるアルゴリズムを集積するこ
とを、それらが同じであろうが(同質)異なろうが(異
質)、非常に困難にする。内部メモリのようなシステム
・リソースにアクセスし使用する共通の方法に関するア
ルゴリズム開発者には、一組の規則が必要とされてい
る。
【0029】好適な実施形態は、DSP内部メモリにデ
ータ・ページング・アーキテクチャを用いることによっ
てデータ・キャッシュのないDSP上で多数のアルゴリ
ズムを走らせる際のプロセッサ利用度を高める方法を提
供する。データ・ページング・アーキテクチャに準拠す
るDSPアルゴリズムの開発または変換はテキサス・イ
ンスツルメンツXDAIS規格を用いて達成することが
できる。この規格は、アルゴリズム開発者に、当該アル
ゴリズムに対して全てのデータ・メモリをサポートする
少なくとも1つ以上のメモリ領域を定義するように要求
する。これらのユーザ定義領域の中の1つまたは全てが
TMS320C62X DSPの内部メモリで走るようにアルゴリ
ズム開発者によって選択される。アプリケーションのD
SPシステム・ソフトウエア部分内部では、内部メモリ
はシステム・サポートとデータ・ワークスペース(ペー
ジ)とに分割される。DSPアプリケーション内部の全
てのアルゴリズムは、ワークスペースを共有するととも
に、実行時にワークスペース全体を所有する。2つのア
ルゴリズム間のコンテクスト・スイッチ上では、DSP
システム・ソフトウエアは、ワークスペースと各アルゴ
リズムの外部シャドー・メモリとの間の転送をそれぞれ
処理するであろう。好適な実施形態は次のように構成さ
れている。
【0030】(1)2つ以上のDSPアルゴリズム間の
データ・キャッシュのないDSP内の内部データ・メモ
リの共有はプロセッサ利用度を高める。 (2)同じ共有内部メモリからの多数のアルゴリズムを
走らせることは、スタック要件およびアルゴリズム内部
変数をサポートするためにデータ・メモリにアクセスす
るとき、各アルゴリズムがTMS320C62X DSP環境にお
いて最大効率を発揮することを可能にさせる。 (3)このアーキテクチャは、内部メモリとプロセッサ
の内部メモリにアクセスできるDMAユーティリティと
を備えたいずれかの単一プロセッサ上で機能する。 (4)データ入力フレーム境界においてのみコンテクス
ト・スイッチを実行することはデータ・ページング・ア
ーキテクチャの最大効率を与える。読み取られるだけで
あるアルゴリズム・データの非対称ページ転送をサポー
トする。
【0031】アプリケーションにおけるデータ・フロー
はアルゴリズムからアルゴリズムへとすることができ、
また、好適な実施形態は、アルゴリズム実行毎にデータ
をGPPとやりとりするのではなく、1つ以上のDSP
内にデータが残留するようにしている。
【0032】2.デュアル・プロセッサ構成におけるD
SP ORB 図1は、汎用プロセッサ(GPP)およびディジタル信
号プロセッサ(DSP)を含むデュアル・プロセッサ構
成用の好適な実施形態のORB(「iDSPOrb」)
アーキテクチャを示し、ここで、GPPは「クライアン
ト」として作動し、DSPは「サーバ」として作動す
る。iDSPOrbはサービス品質(QoS)マネージ
ャを含むことに留意願いたい。図1は、2つのDSPア
ルゴリズム・オブジェクト“A”,“B”を呼び出すク
ライアント・アプリケーションを示す。iDSPOrb
は、最初に、GPP上でプロクシ(クライアント・スタ
ブ)オブジェクト“a”,“b”のオブジェクト・バイ
ンディングを与える。例えば、“A”および“B”は、
以下のように、デコーダ(DEC)用のDSPIDLイ
ンターフェースの拡張とすることができる。
【0033】
【表1】
【0034】(iDSPサーバと呼ばれる)DSP側ア
プリケーションは、DSPIDLコンパイラによって与
えられるアルゴリズム・インターフェースを用いて構築
される。
【表2】
【0035】GPP側アプリケーションは、DSPID
Lコンパイラによっても与えられるプロクシ・インター
フェースを用いて構築される。
【表3】
【0036】または、GPP側アプリケーションはiD
SPOrb動的呼出しインターフェースを用いて構築さ
れる。ランタイムでは、“a”はGPP側クライアント
・アプリケーションから呼び出されてバッファを処理す
ることができる。このデータはDSP側の実際のオブジ
ェクト“A”に渡される。オブジェクト連鎖データ・フ
ローを用いて、“A”の出力を“B”の入力に接続する
ことができる結果、中間データ・バッファはGPPに転
送して戻されない。“b”は、データをGPPに戻す別
の処理ステップをもたらす“B”を呼び出す。iDSP
Orbの動的呼出しインターフェースは対称呼出しおよ
び非対称呼出しの双方をサポートする。
【0037】iDSPOrbはGPPと単一DSPとの
間で区分される必要はない。それは多数のDSPを備え
た構成においても走ることができる。この場合、QoS
マネージャ(サーバ側)は利用可能DSP間でDSPア
ルゴリズムの負荷均衡化を実行する。他の構成は、(固
定機能DSPとして作動する)ASICすなわちASI
CおよびRISCからなることもでき、ここでは、アル
ゴリズム・インターフェースがクライアント・アプリケ
ーションに提供される。
【0038】2a.DSPIDLコンパイラ iDSPOrbは、DSPIDL、以下のキーワードを
有するIDL(インターフェース定義言語)をサポート
する。 module:インターフェース仕様の集合体 例えば、H263モジュールはデコーダ・インターフェ
ースおよびエンコーダ・インターフェースを内蔵するこ
とができる。 interface:インターフェース仕様 in:入力引数を示す out:出力引数を示す BUFFER:バッファ・タイプを示す STREAM:ストリーム・タイプを示す RESULT:関数のリターン・タイプを示す。 メモリ利用,リアル・タイムに対するその他。
【0039】DSPIDLファイルの一般フォームは次
の通りである。
【表4】
【0040】また、directionはin, out,または[in, ou
t]であり、TYPEはBUFFERまたはSTREAMである。例えば、
H263 IDLは、図2に示すようなアルゴリズムおよびプロ
クシ・インターフェースを生成するかもしれない。
【0041】2b.フレームおよびストリーム処理 フレーム対ストリーム処理には、以下の相違がある。 キーワード: BUFFER:引数タイプとしてBUFFERを有する関数はフレー
ム毎に処理する。 STREAM:引数タイプとしてSTREAMを有する関数は、通常
はタスクを生成することによってフレームのストリーム
を処理する。
【0042】関数コール
【表5】 は、オブジェクト出力を入力(それぞれフレームまたは
ストリーム)に接続する。バッファに対して、接続演算
子はDSPORBにDSP上でメモリ・バッファを作成
させ、そこでは、1つのメソッド呼出しの出力は別のメ
ソッド呼出しの入力のために格納される(オブジェクト
連鎖)。例えば、
【表6】
【0043】ストリーム処理では、
【表7】 のようなプロクシ呼出しは、通常は、DSP側に作成さ
れたタスクをもたらして2つのストリーム SIOスト
リーム(H263 TIDEC decodeStreamのインプリメンテ
ーションはこれを行うタスクを生成する。)を取り扱
う。接続されていないストリームはクライアント・プロ
クシとサーバとの間のI/Oを与える。
【0044】2c.リアル・タイムQoSマネージャ iDSPOrbは、設定された時間制約内で所与の動作
を実行するために必要とされるリソースをDSPORB Syst
em setTimeConstraint()およびDSPORB System setPr
iority()インターフェースを介して割り当てることによ
ってハード・リアル・タイムQoSを与えることができ
る。GPP/DSPチャネルI/Oドライバは多数のス
レッドが並列に動作することを可能にする。QoSマネ
ージャは、(1)クライアントによって必要とされるア
ルゴリズムをインスタンス化し、(2)クライアント・
アプリケーションからの制約を更新するとともにリソー
スを管理して制約を満たし(または、制約が満たされ得
なかったことを報告し戻し)、(3)その他のことを行
うDSP側のiDSPOrbの一部である。
【0045】2d.iDSPORB登録サービス iDSPOrbはクラス登録サービスを備えているの
で、サーバ・オブジェクトはそれらのサービスを登録す
ることができる。例えば、サーバ・オブジェクトはiD
SPOrbを用いて登録を行ってMP3オーディオをデ
コードすることができる。クライアント・オブジェクト
は、所望のサービスの名称を供給することによってサー
バ・オブジェクトをインスタンス化する。iDSPOr
b登録サービスは任意の種類のDSPオブジェクト・サ
ービスに用いることができるが、それは、オーディオお
よびビデオ・サービス用の標準的な一組のモニカ(moni
ker)を備えることによって分かるメディア・ドメイン
である。
【0046】
【表8】
【0047】iDSPOrb登録サービスは、iDSP
Orbがランタイムにサーバ・オブジェクトを動的にイ
ンスタンス化することを可能にする。サーバ・オブジェ
クトをインスタンス化するとき、iDSPOrbはマイ
クロプロセッサとDSPとの間に低レベルI/Oチャネ
ルを動的に割り当てる。これらの低レベル・チャネル
は、iDSPOrbストリーミング・インターフェース
(DSPORB Streamインターフェースを参照)を介してク
ライアント・オブジェクトによって直接にアクセスする
ことができる。iDSPOrb登録サービスは、iDS
POrbが特定のサービスを提供するDSPを突き止め
ることを可能にする情報も提供し、また、それは、Qo
Sマネージャが負荷均衡化およびスケジューリング・プ
ロジェクションをすることを可能にする(リアルタイム
QoSマネージャを参照)。例えば、動的呼出しモデル
を用いて、コールDSPORB ALG create(“MP3 Audio De
code”, NULL)はMP3オーディオ・デコーダのインス
タンスをインスタンス化するであろう。iDSPOrb
負荷はシステムを均衡化し、また、クライアントは、D
SPが実際にデコーダを実行している詳細と、どの低レ
ベル・ストリームがデータを通過させるために割り当て
られたかということとから遮蔽される。クライアントは
また、iDSPOrbに問い合せることによって、現在
登録されているサービス・クラスのリストを列挙する。
関数DSPORB Alg*DSPORB System getServices()は、
現在登録されているサービスのエニュメレータ(enumer
ator)を獲得するために用いられ得る。次に、char*DSP
ORB System next(DSPORB Alg*enum)は各登録された
サービスの名称を得るためにコールされ得る。目録(enu
meration)は、DSPORB System reset(DSPORB Handle*
enum)をコールすることによって先頭にリセットされ得
る。
【0048】2e.メディア・フレームワーク・サポー
ト iDSPOrbは、以下のような特定のメディア・フレ
ームワーク用のコンポーネントを備えることによってメ
ディア処理加速をサポートするために用いられ得る。 DirectShow(Windows(登録商標)メディア):
フィルタ・オブジェクトは、iDSPOrbコデック・
クライアント・オブジェクトをラップ(wrap)するよう
に実装されることができ、DirectShowフレームワークに
プラグ・インされることができる。 RealMedia Architecture(RealSystem G2):レンダラ・
プラグイン(rendererplugin)は、iDSPOrbコデ
ック・クライアント・オブジェクトをラップするために
実装されることができ、RealSystem G2フレームワーク
にプラグ・インされることができる。DSPOrbは、
同じ方法論を用いてJMFおよびQuickTimeにプラグ・
インすることもできる。
【0049】iDSPOrbのAPIはDSPORBモ
ジュールにカプセル化することができる。クライアント
(GPP)側DSPORBのデータタイプおよび関数は
以下のように指定される。 2f.データ・タイプ: DSPORB Alg:DSPアルゴリズム・オブジェクト用ク
ライアント・プロクシ。 DSPORB Fxn:動的呼出しと共に用いられる関数オブジ
ェクト。 DSPORB Arg:動的呼出しと共に用いられる関数引数オ
ブジェクト。 DSPORB BufferおよびDSPORB StreamはDSPORB Argの
「サブクラス」である。 DSPORB Params:DSP側のIALG Paramsアルゴリズム
・パラメータ構造に一致するアルゴリズムに対してパラ
メータを与える。 DSPORB Buffer:バッファ・オブジェクト。 DSPORB Stream:ストリーム・オブジェクト。
【0050】2g.DSPORB Bufferインターフェース -DSPORB Buffer*DSPORB Buffer create(int size, i
nt direction);長さsizeのデータを参照することができ
るバッファ・オブジェクトを作成する。directionはDSP
BUFFER INPUTまたはDSPBUFFER OUTPUTの一方である。
バッファ方向が関数呼出しシグネーチャと一致しなけれ
ばならないか、iDSPOrbランタイム・エラーが発
生するであろう。または、DSPORB Buffer*DSPORB Buf
fer create(DSP ORB Alg*, int, int); オブジェク
トによって利用されるバッファ。 -unsigned char*DSPORB Buffer getData();バッファ
・オブジェクトによって参照されたデータを獲得する。
バッファが他のバッファに接続されているならば、ヌル
が戻される。 -Void DSPORB Buffer setData(usigned char*data) バッファ・データ・ポインタをセットする。このバッフ
ァが別のバッファに接続されているならば、この動作は
行われない。何故なら、このバッファのデータ用のメモ
リ空間はDSPメモリ空間にあるからである。 -void DSPORB Buffer setSize(int) 実際のデータのサイズをセットする。 -int DSPORB Buffer getSize() 実際のデータのサイズを獲得する。 -void DSPORB Buffer delete(DSPORB Buffer*buffe
r) -int DSPORB Buffer connect(DSPORB Buffer*outpu
t, DSPORB Buffer*input) 入力バッファをDSP上の出力バッファに接続する。こ
れらのバッファ・オブジェクトが接続されているなら
ば、データは、DSP上に残り、GPPに転送し戻され
ない(バッファは、中間結果を保持するためにDSP上
のiDSPOrbによって作成される。)。
【0051】2h.DSPORB Streamインターフェース ストリーム・インターフェースは次のメソッドを有す
る。 -DSPORB Stream*DSPORB Stream create(int n, int
direction);n個のバッファを保持することができるス
トリームを作成する。directionはDSPSTREAM INPUTま
たはDSPSTREAM OUTPUTの一方である。 -int DSPORB Stream issue(DSPORB Buffer*buf);入
力ストリーム上で送られる入力バッファbuf、または、
出力ストリーム上で満たされるキュー上に置かれた空バ
ッファを有する。接続されているストリームに対して
は、この動作は何の効果もない。何故なら、ストリーム
はアルゴリズム間に直接に接続されるであろうからであ
る。 -DSPORB Buffer*DSPORB Stream reclaim();出力スト
リームから出力バッファ、または、入力ストリーム上で
再送出され得る入力バッファを獲得する。接続されてい
るバッファに対しては、この動作は何の効果もない。 -DSPORB Stream select(DSPORB Stream array[], in
t n streams, int*mask, long millis);ストリームが
I/Oのために準備できるまでブロックする。 -DSPORB Stream idel(DSPORB Stream*str);ストリー
ムをアイドルする。 -DSPORB Stream close(DSPORB Stream*str);ストリ
ームを閉じる。 -DSPORB Stream conect(DSPORB Stream* out, DSPOR
B Stream*in);出力ストリームを入力ストリームに接続
する。2つの半ストリームは、DSPプロセッサ空間で
動作し、GPPにアクセス可能でない。
【0052】2i.DSPORB動的呼出しインターフ
ェース 動的呼出しインターフェースは次のメソッドを有する。 -int DSPORB System int();DSPOrbを初期化す
るために最初にコールされなければならない。 -DSPORB Alg*DSPORB Alg create(cost char*name, D
SPORB Params*params);シンボル‘name'によって参照
されたアルゴリズムのインスタンスを作成する。 -void DSPORB Alg delete(DSPORB Handle alg);アル
ゴリズム・インスタンスを削除する。 -DSPORB Fxn*DSPORB Alg getFxn(DSPORB Alg* alg,
const char* fxn name);シンボル‘fxn name'に関連
する関数オブジェクトを戻す。 -int DSPORB Fxn setTimeConstraing(DSPORB Fxn*fx
n);fxnの実行に対して時間境界をセットする。DSPO
rbは、この制約を満たすために十分なリソースを割り
当てるか0を戻す。 -int DSPORB Fxn setPriority(DSPORB Fxn*fxn);1
から15の優先度レベルをセットする。 -int DSPORB Fxn invoke(DSPORB Fxn*fxn, DSPORB
Arg*args[]);入力および出力上で関数を呼び出す。この
呼出しは、未接続出力で全てのデータが使用可能になる
までブロックする。‘DSPORB Buffer connect’と接
続されている入力および出力に対しては、‘NULL’が渡
され得る。 -int DSPORB Fxn invokeAsync(DSPORB Fxn*fxn, DSP
ORB Arg*args[]);入力および出力上で関数を呼び出
す。この呼出しは直ちに戻る。アプリケーションは、
‘DSPORB getData’を用いて出力引数オブジェクトか
らデータを引き出す。 -unsigned char*DSPORB Arg getData(DSPORB Arg*ou
tput, long timeout);出力引数オブジェクトからデータ
を獲得する。ナノ秒で‘timeout'が発生するまでブロッ
クするか、‘timeout=−1’であれば無期限にブロッ
クする。 -void DSPORB Arg setCallback(DSPORB Arg* outpu
t, unsigned char*(*getData)(DSPORB Arg*));出力引
数上でコールバック関数をセットする。データが利用可
能であるときは、getDataがコールされる。 -void DSPORB System close()は、DSPOrbを閉
じる。
【0053】2j.iDSPOrbの例 最初の例は、動的呼出しインターフェースを用いてC6xx
x上でTI H.263デコーダに接続するためにiDSPOr
bがどのように用いられるかを示す。第2の例は、プロ
クシ・スタブを用いて書かれた同じプログラムを示す。
【表9】
【0054】3.サービスの品質(QoS) iDSPOrbサービス品質管理マネージャ(iDSP
−QoSM)を定義する好適な実施形態の構成は、ディ
ジタル信号プロセッサ(DSP)のプールをピア・サー
バとして有するホスト・プロセッサからなる。特定のサ
ービス品質を維持するために必要な全ての関数を実行す
るアンブレラQoSマネージャは、このDSPサーバの
プールを管理する。ホスト・プロセッサは汎用プロセッ
サ(GPP)である場合が多く、それは共有メモリまた
はバス型インターフェースのようなハードウエア・イン
ターフェースを介してDSPに接続されている。QoS
マネージャは、iDSPOrbの一部としてもよく、よ
り一般的には、DSP上の別個のマネージャとしてもよ
い。システムはハードウエア割込みおよびソフトウエア
割込みの双方によって駆動される。好適な実施は主要な
ユーザ(クライアント)アプリケーションをGPP上で
走らせることであり、特定のサービスは負荷共有ベース
でDSP上を走る。iDSPメディア・フレームワーク
のようなフレームワークはQoSマネージャと同時に全
てのプロセッサ上で走ることができる。iDSP−Qo
Sマネージャは、3つの主要な機能、すなわち、(1)
オブジェクトの分類、(2)オブジェクトのスケジュー
リングおよび(3)オブジェクトの実行時間の予測を行
う。
【0055】これら3つの機能について、メディア特定
例を用いてGPP/マルチDSP環境において、以下に
説明する。
【0056】3a.オブジェクトの分類 メディア特定環境では、オブジェクトはメディア・コデ
ック/フィルタ(アルゴリズム)に変換する。メディア
・オブジェクトは、それらのストリーム・タイプ,アプ
リケーション・タイプまたはアルゴリズム・タイプに基
づいて分類され得る。アルゴリズムのタイプに応じて、
QoSマネージャは、コデック・サイクル,フィルタ・
サイクルなどとして知られているメトリックを規定す
る。
【0057】3b.オブジェクトのスケジューリング
(ハード・デッドライン) iDSP-QoSMは、2フェーズ・スケジューラに基
づいてアルゴリズム・オブジェクトをスケジューリング
する。第1のフェーズは、新たなメディア・ストリーム
がDSP上でスケジュール可能か否かを判定するととも
にコデック・サイクルに対してハード・リアル・タイム
・デッドラインをセットする上位スケジューラである。
第2のフェーズは、個々のメディア・フレームをスケジ
ューリングするとともに、第1のフェースからのハード
・リアル・タイム・デッドラインを利用する。第1のフ
ェーズは、オブジェクト・ネゴシエーション時間で、通
常はホスト(GPP)上で走る。第2のフェーズは、D
SP(サーバ)上で走るとともに、フレーム単位ベース
で走る。
【0058】スケジューリングの第1のフェーズは、オ
ブジェクトが既に同時に走っているオブジェクトと共に
サポートされ得るか否かをQoSマネージャが平均して
判定するときである。また、第1のフェーズ・スケジュ
ーリングの一部として必要とされるのは、メモリに関す
るオブジェクトに対しての十分なサポートの検討であ
る。内部使用,入力および出力用のオブジェクト・メモ
リ・バッファは、それのインスタンス化の時点で静的に
固定されて動的にメモリを割り当てることの不確実性を
排除しなければならない。iDSPメディア・プラット
フォームはXDAIS準拠アルゴリズムを走らせるのみ
である。開発者は、彼らのアルゴリズムに対して異なる
条件下で処理時間を規定するように要求される。データ
のサーバへのトランスポートおよびサーバからのトラン
スポートに必要なおおよその時間は、それが各オブジェ
クトに対してデッドラインをセットするときにQoSマ
ネージャによって考慮に入れられる(factor in)初期
化の時点で決定される。
【0059】各DSPオブジェクトは、QoSマネージ
ャに以下の情報を供給する必要がある。 n:コデック・サイクルおよびフレーム数(デフォル
ト:フレーム/秒)。 Tacc:ターゲット・サーバ(DSP)サイクル数でコ
デック・サイクルを計算するための平均時間。 Tacd:ターゲット・サーバ(DSP)サイクル数での
コデック・サイクルの表示時間。
【0060】ビデオ・コデックについては、nは、通
常、連続I-フレーム間のフレーム数(例えば、15フ
レーム)である。そして、Taccは、通常、I-フレーム
に必要な最大時間量とPおよびBフレームに必要な平均
時間との和である。QoSマネージャは全てのメディア
・オブジェクトに対してTccdを絶えず注意している。
(DSPサイクルに関する)この時間は現フレーム・レ
ートに基づく。例えば、30fprビデオ・ストリーム
およびn=15については、Tccd=125Mサイクル
となる。
【0061】QoSマネージャは、新たなストリームが
スケジュール可能であるか否かを以下のように判定する
ことができる。現在スケジュールされている全てのスト
リームに対するコデック・サイクル(Tacc)の和をS
とする。新たなストリームに対する(S+Tacc)が新
たなストリームに対するTccd未満であるならば、スト
リームはスケジュール可能であり、さもなければ、可能
ではない。例えば、n=15,Taxc=39.5Mサイ
クル(158ms)およびTccd=125Mサイクル
(500ms)であるオブジェクト-Aがあり、かつ、
DSP上でスケジュールされたタスクがない(したがっ
て、S=0)と仮定する。QoSマネージャは、オブジ
ェクト-Aを必要とする新たなストリームのためにリソ
ースをスケジュールすることが通知される。S+39.
5=39.5Mサイクル<125Mサイクル(500m
s)であるので、そのストリームをスケジュールするこ
とができる。オブジェクト-Aを必要とする第2のスト
リームが到達したとき、それもスケジュールされる。何
故なら、S+39.5=70Mサイクル(316ms)
<125Mサイクル(500ms)であるからである。
第3のストリームもスケジュールされ得る。しかしなが
ら、第4のストリームは、158Mサイクル(632m
s)を必要とし、500msハード・デッドラインを満
たすことができないので、スケジュールされることがで
きない。この時点で、QoSマネージャは、ストリーム
のフレーム・レートを低下するようにネゴシエートし、
それに失敗すると、ストリーム全体を拒絶する。
【0062】修正は、異なるコデック・サイクル時間で
異種のメディア・オブジェクトをスケジューラが処理す
ることを可能にする。もっと長いTccdを有するオブジ
ェクトは最も小さいTccdに割り当てられる。例えば、
n=30,Taxc=40Mサイクル(160ms)およ
びTccd=169Mサイクル(675ms)のオブジェ
クト-Bがあり、かつ、DSP上でスケジュールされた
2つの(先に定義された)オブジェクト-Aがある(し
たがって、S=79Mサイクル/316ms)と仮定す
る。S+40*(125/158)=110.45Mサ
イクル(S+160*500/675=435ms)で
あるので、新たなオブジェクト-Bストリ−ムをスケジ
ュールすることができる。(79+40<125)Mサ
イクル/(316+160<500)msであるので、
これは恐らく正しい。したがって、500msというも
っと短いコデック・サイクル・デッドライン以内で全て
のストリームを実際に保証することができる。オブジェ
クト-Bを必要とする第2のストリームをスケジュール
しなければならないときに、何が発生するのか。11
0.45+40*125/158=139>125Mサ
イクル/435+160*(500/675)=554
ms>500ms。したがって、スケジューラは、この
ストリームを拒絶し、上述したようにネゴシエートし始
める。
【0063】iDSP-QoSMは、アプリケーション
またはそれのプロクシとネゴシエートしてコデック・サ
イクルに基づいてメディア・オブジェクトのために十分
な処理帯域幅を予約する。このネゴシエーションは、オ
ブジェクトが必要とするメモリ,要求QoSレベルおよ
び他の同時に走っているDSPアプリケーションを有す
るDSPの利用可能なMIPSを考慮に入れる。オブジ
ェクト選択が変化すると、QoSマネージャはDSPプ
ロセッサ帯域幅の再ネゴシエーションを行う。QoSマ
ネージャのネゴシエーション・プロセスへの入力パラメ
ータは、アプリケーションにオブジェクトのために以下
のことを定義するように要求する。 (1)DSPメモリ要件(入力/出力バッファの数およ
びサイズ)。 (2)所望のQoSレベル(通常は、フレーム/秒で表
わされる)。 (3)オブジェクトを開始する際の最悪ランタイム。 (4)コデック・サイクルと呼ばれるメディア・フレー
ムのシーケンス用のハード・リアル・タイム・デッドラ
インを有する(フレーム数および平均実行時間)。
【0064】iDSP-QoSマネージャにおけるオブ
ジェクトの第2のフェーズ・スケジューリングは、2つ
の面(すなわち、どれのデッドラインが最初に来るか
と、どれが高い優先度を有するか)を基準とする。次の
例を検討する。オブジェクト-Aが10msでデッドラ
インを有し、かつ、オブジェクト-Dが3msでデッド
ラインを有するならば、iDSP QoSマネージャ
は、オブジェクト-Aの方が優先度が高くても、オブジ
ェクト-Dを最初に走らせるようにスケジュールする。
オブジェクトのおおよそのランタイムを知っているの
で、オブジェクトが開始されるときに、なおもそれのデ
ッドラインを満たすように、「最終」時点(No later t
ime)を決定することができる。図3では、オブジェク
ト-Aの「最終」開始時点よりも前にオブジェクト-Dが
終了すると予測される。この状況では、優先度が高い方
のオブジェクト-Aおよびオブジェクト-Dの間にはデッ
ドライン・コンフリクトはない。したがって、オブジェ
クト-Aは、優先度がより低いオブジェクト-Dの後に走
る。
【0065】別のスケジューリングの例では、優先度が
最初のデッドラインよりも優先するのは、優先度が高い
方のオブジェクト-Aの「最終」時点が予測されたオブ
ジェクト-Dの予測終了時刻よりも前である場合であ
る。この場合、オブジェクト-Aは優先度が高いので最
初に走り、また、オブジェクト-Dがオブジェクト・イ
ンスタンス化時点において指定されたそれのフレーム欠
落パラメータを満たす場合にのみ、オブジェクト−Dは
後から走ることを許される。図4を参照。
【0066】iDSP QoSがデッドラインを可能な
かぎり効率的に管理するためには、GPPは、できるだ
け早くDSPサブシステムにデータ入力フレームを与
え、オブジェクトのために到達時刻とデッドラインとの
間で最大の時間量が許されるようにしなければならな
い。データ・フレームの到達とそれのデッドラインとの
間の時間が長い程、iDSP-QoSMは、各オブジェ
クトの他の同時オブジェクトとのスケジューリングにお
いて一層の柔軟性を可能にする。
【0067】3c.オブジェクトのランタイム予測(ソ
フト・デッドライン) iDSP-QoSMの中心的機能は、全てのスケジュー
ルされたオブジェクトの次の入力フレームに対する要求
処理時間を予測することである。この予測は、厄介であ
り、オブジェクトに一意である。QoSマネージャは、
以前のランタイムの統計を用いて次の入力フレームに対
する予測ランタイムを算出することによって、オブジェ
クトに対するランタイムを予測する。オブジェクトに対
する予期されたランタイムは、(各オブジェクトに対し
て一意に決定された)最大可能正変化との以前のランタ
イムの(オブジェクトに一意である)関数である。例え
ば、ビデオ・オブジェクトの場合には、I,PおよびB
フレームの周期性は決定論的である。したがって、今後
の処理時間は現フレームのタイプとビデオ・フレームの
周期内のそれのロケーションとに基づいて予測され得
る。全ての同時アルゴリズムに対して行われたそのよう
な予測は、予測された処理時間および近づきつつあるハ
ード・デッドラインに基づいて動的に優先度を割り当て
し直すのに直接に役に立つ。
【0068】これらの予測は、ソフト・デッドラインと
処理時間におけるジッタとを管理するためのキー・イネ
ーブラ(key enabler)である。iDSP-QoSMは、
予測に基づいて、処理のためにオブジェクトを瞬時に再
スケジュールする。この瞬間的な再スケジュールは、個
々のオブジェクトのコデック・サイクル・デッドライン
時間(平均的に定義されたハード・デッドライン)内で
行われる。この方法は、個々のフレームがハード・デッ
ドラインおよびソフト・デッドラインの双方に従って重
み付けされるという意味で、独特である。上述した例で
は、オブジェクト-Aとの500ms重複に対して作業
負荷の平均を取ったときに、オブジェクト-Bの全フレ
ームは同じ時間量を必要とすると仮定した。オブジェク
ト-Bのフレームは実際の重複の間よりも多くの時間を
必要とする場合もあり、また、オブジェクト-Bは平均
時間量が与えられない場合もあるので、これは真ではな
いかもしれない。したがって、それらのコデック・サイ
クル・デッドラインに最も近いフレームは、より高い優
先度を受ける。予測ランタイムがユーザ定義時間要件に
違反するならば、QoSマネージャは数個の可能なアク
ションの1つを取るであろう。
【0069】単一DSP構成では: (レベル1)単純バイナリ・カットオフ:これは自動フ
レーム欠落をもたらす。問題のオブジェクトは、フレー
ム欠落が破局的な結果を招くか否か示すことができなけ
ればならない。 (レベル2)割り当てられた時間の終了時におけるオブ
ジェクトのプリエンプション(pre-emption)による低
優先度オブジェクトの割当てランタイムの全体的な削
減。 (レベル3)オブジェクトは、出力データの品質低下
(scaling back)のようなQoSコマンドを受け入れる
能力を有することを要求される。
【0070】多数DSP構成では: (1)各QoSタイム・スライスの終了時では、負荷デ
ータを有するメッセージが各DSPからGPPに送られ
る。 (2)GPPは、推定されたデッドライン・ミスの場合
にのみオブジェクトの再分配に訴える。このタスクの再
割当ては、サービスしているDSPから「負荷データ」
を受信した後にGPP(ORBレイヤー)によって実行
される。しかしながら、タスク切換え時間を減少するた
めには、全てのDSPが外部メモリ空間の共通クラスタ
から動作することが非常に望ましい。
【0071】iDSPシステムで実行する全オブジェク
トは、実行時間で決定論的でなければならない。DSP
オブジェクトは、3つのタイプ(データの圧縮(エンコ
ード),データの伸長(デコード)およびデータ変換
(オブジェクト用のデータの前または後処理))に分解
することができる。オブジェクトは、処理するデータが
ブロック単位で提示され、これらのブロックは入力デー
タ・フレームと呼ばれる。オブジェクトは、入力データ
・フレームを処理するとともに、出力データ・フレーム
を発生する。いずれの計算データの場合でも、入力デー
タ・フレームおよび出力データ・フレームの双方はサイ
ズおよび処理量に関して制限されている。任意の所与の
入力フレームのサイズに基づいて、DSPまたはその件
のための他の任意のコンピュータが当該入力フレーム上
で実行しなければならない最大処理量を正確に決定する
ことができる。
【0072】各オブジェクトは、それがiDSPシステ
ムに統合される前に、単一フレームに対する当該オブジ
ェクト用の最悪ラン・タイムを宣言するように要求され
る。この最悪ラン・タイムは、オブジェクトが開始され
得るように最初の入力データ・フレームのラン・タイム
を計算するのに用いられる。QoSマネージャは、オブ
ジェクトを走らせる前に入力データ・フレームを特徴付
けることができない。エンコード・オブジェクトおよび
デコーダ・オブジェクトは稀に最悪の状況で走ることが
あるので、最初の入力フレームはコストがかかる(何故
なら、最悪の場合であると予測されなければならないか
らである)。この最悪スケジュールは、最初のフレーム
の実際のランタイムよりも大きい場合が多い。これは、
実際のランタイムが最悪スケジュールよりも大きい場合
にのみ、問題となる。
【0073】先に述べたように、アルゴリズム・オブジ
ェクトの処理時間は入力フレーム間で変動する。開始時
には、iDSP-QoSMは最初のデータ入力フレーム
に対して最悪の値で開始する。最初のフレームの後に、
QoSマネージャは、アルゴリズムの特性および最初の
フレームについての測定処理時間に基づいて次の入力フ
レームに対する処理時間を予測する。各後続フレームに
ついては、それはアルゴリズム・オブジェクトのセマン
ティックス(semantics)および履歴に基づいておおよ
その処理時間を予測する。例えば、エンコーダ・オブジ
ェクトは、オブジェクト・セマンティックス(例えば、
I,PおよびBフレーム・タイプ)を直前の同様の入力
フレームの平均エンコード時間と共に用いて今後のエン
コード時間要件を予測する。エンコーダ・オブジェクト
は、それらが実行のためにスケジュールされる毎に、同
じサイズの入力フレーム上で動作する。処理時間の変動
は、フレームにおけるアクティビティ・レベルおよびフ
レーム間の動き度合などというような要因によって生ず
る。しかしながら、これらの変動は制限される。したが
って、2つのフレーム間の処理時間は、予測処理時間に
加算されて次のフレームに対する最悪処理時間を決定す
ることができる有限最大差を有する。図5および図6を
参照。
【0074】デコード・オブジェクトは、通常、可変サ
イズの入力フレームを提示される。入力データ・フレー
ムの処理時間はそれのサイズに直接に比例する。次のフ
レーム処理時間に増大があるか否かを判定するために、
QoSマネージャは現データ入力フレーム・サイズと次
のデータ入力フレーム・サイズとの差の大きさをチェッ
クする。エンコーダの場合のように、同様の引数がデコ
ーダにも保持される。すなわち、2つの意味的に同様の
フレーム間の処理における差が制限される。デコーダに
対する最大すなわち最悪の処理時間は、オブジェクトに
対して定義された最大可能バッファである。図7を参
照。
【0075】変換オブジェクトは、同じサイズの入力バ
ッファ上で常に動作するという点で、エンコーダ・オブ
ジェクトと同様に走る。各フレームは、同じ処理時間量
が常にかかり、また、入力フレームを通過する単一パス
である。したがって、入力フレーム当たりの処理時間は
常に一定のままである。
【0076】各オブジェクトは、受け渡されたフレーム
がオブジェクトによって完成されなければならない相対
時間をユーザ・アプリケーションから受け取る。一例
は、このフレームが次の7mS以内に処理されなければ
ならないとアプリケーションが指定することである。ホ
ストGPPとDSPとの間には共通ソフトウエア・クロ
ックがないので、デッドラインは相対的にしか指定され
ることができない。ホストとDSPとの間のデータ・フ
レームのトランスポート時間は決定論的であると仮定す
る。iDSPシステムは内部クロックを維持し、内部ク
ロック対して、データ・フレームは到達時にタイムスタ
ンプを受け取ったのちに予期処理時間を算出する。予期
処理時間を計算した後に、QoSマネージャはデータ・
フレーム実行をスケジュールする。
【0077】オブジェクトがスケジュールされる前に、
QoSマネージャは、他の同時オブジェクトと比較し
て、オブジェクトの実行の適切な順序を決定する。他に
入力フレームを処理するオブジェクトがないならば、オ
ブジェクト・フレームは実行のために直ちにスケジュー
ルされる。他に走っているオブジェクトがあるならば、
QoSマネージャは、各要求オブジェクトの優先度,予
期デッドラインおよびハードまたはソフト・リアルタイ
ム要件を考慮することによって実行順序を決定する。図
8を参照。
【0078】ランタイム特性が異なる多数のオブジェク
トが同じDSP上に結合されるとき、QoSマネージャ
は、オブジェクトの特定のランタイム算出に基づいて各
オブジェクトについてランタイム予測を計算する。次い
で、それはスケジューリング・オブジェクト(TBD)
に基づいて異なるタスクをスケジュールする。以下の3
つのスケジューリング状況が可能である。
【0079】(1)全てのオブジェクトは、与えられた
入力データ・フレーム上で完了まで走るとともに、アプ
リケーション指定デッドライン内に完了する。この状況
は図9に提示されている。図の全てのオブジェクトは各
オブジェクト・デッドラインの前に完了していることに
注目すること。全てのオブジェクトがそれらの各デッド
ラインよりも前に完了するならば、QoSマネージャの
要求された作業は最小である。
【0080】(2)処理負荷は1つ以上のオブジェクト
(例えば、オブジェクト-B)上で増大するが、これは
後続オブジェクトに対する予測デッドラインを看過する
ことにはならない。負荷がオブジェクト-Bにおけるよ
うに1つ以上のオブジェクト上で増大することができ
る。オブジェクトによっては、同じオブジェクトの後続
データ・フレームがそれらのデッドライン制約内で処理
されるならば、デッドラインの看過は容認できるかもし
れない。一例は、“I”フレームが計算に最も時間がか
かるH264エンコーダにおける場合であろう。“I”
フレームに続くフレームは、常に“P”フレームであ
り、遥かに少ない処理要件を典型的には有する。これ
は、“I”フレームの処理が次のPフレームの処理から
サイクルを盗むことを可能にする。したがって、1つの
フレーム上でデッドラインを看過しても、次のフレーム
上に十分な処理余裕があれば、破局的にはならないかも
しれない。オブジェクト-Bに対するデッドラインを超
過したので、全体的なシステム効果が判断されなければ
ならない。オブジェクト-Bによるデッドラインの看過
が次のオブジェクトに対する予測デッドラインを看過す
ることにはならないならば、全体的なシステム被害は最
小である。図10および図11を参照。
【0081】(3)処理負荷は1つ以上のオブジェクト
(例えば、オブジェクト-B)上で増大するが、これが
次のオブジェクトに対する予測デッドラインを看過させ
ることになる。図12を参照。この場合には、オブジェ
クト-Bによるデッドラインの看過は次のオブジェクト
に対する予測デッドラインを看過させる。この場合で
も、全体的なシステム被害は最小であるかもしれず最小
でないかもしれない。同時に走っているオブジェクトの
各々は、後続のフレームからサイクルを盗むことができ
る、したがって、デッドライン看過のドミノ効果を回避
することができるかもしれない。
【0082】iDSP-QoSMはソフトウエア・デッ
ドライン管理のために一組の規則を提案する。この一組
の規則は、1つの重要なデッドライン看過に端を発する
デッドライン看過の雪だるま現象を制限するように設計
される。(1)あらゆるアルゴリズム・オブジェクト
は、許された秒単位の最大フレーム欠落数をQoSマネ
ージャに与える。(2)各オブジェクトは、各処理サイ
クルの後に移動平均として「看過デッドライン」の数の
ランニング・カウントを更新する。(3)オブジェクト
がそれの看過デッドライン限界を越えたとき、オブジェ
クトの優先度を最高値に変更する。元の優先度は、一度
でも数が限界未満に低下すると、復元される。(4)限
界後にそれらのデッドラインを看過した全ての後続フレ
ームは欠落される。これは、次の直接レベルへのQoS
の一時的低下をもたらす。次に、(極く稀でなければな
らない)このQoSの瞬時的落下がクライアントに報告
される。(5)DSPがそれのデッドラインの超過の後
でも問題のオブジェクトを開始させない場合にのみ、フ
レームは規則として欠落される。
【0083】3d.周期的メディア・レンダリングに対
するスロットル制御 所与のアルゴリズム・オブジェクトに対して、iDSP
-QoSMは、任意の時点ではレディ・キューに1つの
みだけの要求があると仮定している。一般に、メディア
・ストリームには、QoSマネージャに対するサービス
品質制約として特定された周期的デッドライン(例え
ば、ビデオ・ストリームについては30フレーム/秒)
を有する。メディア・ストリームにおけるオーディオお
よびビデオ・レンダリング・コンポーネントは、到達時
刻の分散を取り扱うためにフレームをバッファすること
ができ、フレームがスケジュールより多少早く到達する
ことを可能にする。しかし、これらのバッファは有限で
あり、したがって、メディア・システムの上流コンポー
ネントは、フレームが処理される相対的速度を注意深く
調節しなければならない。
【0084】2つの機構が、アルゴリズム・オブジェク
トの処理速度を調節するために、iDSP-QoSMに
よって用意されている。 (1)DSPアルゴリズム・オブジェクトのクライアン
トは、それがアルゴリズム・オブジェクトの処理関数
(サーバ)を呼び出す速度を制御する。これは、それら
が満たされなければならない時間期間内に要求が行われ
るならば、QoSマネージャのスケジューリング・アル
ゴリズムの準最適作用(sub-optimal behavior)をもた
らす。例えば、バッファA1が時間期間T1内に処理さ
れなければならず、かつ、バッファA2が時間期間T2
内に処理されなければならない上述したアルゴリズム・
オブジェクトAについて検討する。図。ここでは、T1
およびT2は2つの連続する期間であり、[x]はバッ
ファxの到達を示し、{x}はバッファxの処理の完了を
示す。図13aを参照。
【0085】(2)QoSマネージャはメディア・スト
リームの調節(throttling)を制御する。この機構は、
クライアントができるだけ早く入力バッファを用いてア
ルゴリズム・オブジェクトの処理関数を呼び出すことを
可能とする。次に、QoSマネージャは「開始−デッド
ライン」を入力バッファに添付する。スケジューラは
「開始デッドライン」の後までこのバッファをスケジュ
ールしない。クライアントは、それの現バッファの処理
が完了されるまで停止する。図13bを参照。
【0086】このように、両方の場合において、QoS
マネージャ・レディ・キューにはいずれの時点において
もアルゴリズム・オブジェクト当たりの要求はせいぜい
1つである。
【0087】4.メモリ・ページング DSPまたは当該事項用の任意のプロセッサ上で多数の
アルゴリズムを最良に走らせるためには、システム・リ
ソースがアルゴリズム間で公平に共有されるように一組
の規則が制定されなければならない。これらの規則は、
DMA,内部メモリおよびアルゴリズム用スケジューリ
ング方法のようなプロセッサの周辺へのアクセスを指定
する。一旦一組の規則が受け入れられると、システム・
インターフェースがアルゴリズム用に開発されて、それ
らがシステム・リソースにアクセスできるようにプラグ
・インすることができる。共通のシステム・インターフ
ェースは、アルゴリズム開発者に、アルゴリズムをより
早く開発するのに明確な境界を与える。何故なら、彼ら
はシステム対応問題ではなくアルゴリズムの開発のみに
集中できるからである。そのようなインターフェースの
一例はテキサス・インスツルメンツ社のiDSP Media Pla
tform DSPフレームワークである。アルゴリズムとTMS32
0C62XX DSPとの間の全アクセスはこのフレームワー
クを介して行われる。
【0088】テキサス・インスツルメンツ社のXDAI
S規格要件は、1つよりも多いアルゴリズムをiDSP
メディア・プラットフォームにプラグ・インすることを
可能にし、システム構築者が1つ以上のアルゴリズムか
ら素早く生産品質システムを組み上げることを可能にす
る。XDAIS規格は、アルゴリズムがAlgインター
フェースと呼ばれる共通のインターフェース要件を満た
すことを要求する。XDAIS規格によって課される規
則はいくつかあるが、アルゴリズムがメモリを直接に定
義したりハードウエア周辺に直接にアクセスすることが
できないことが最も重要である。システム・サービス
は、全アルゴリズム用の単一の共通インターフェースを
介して与えられる。したがって、システム構築者は、全
アルゴリズムに対してAlgインターフェースをサポー
トするDSPフレームワークを設けるだけでよい。Al
gインターフェースは、システム・サービスにアクセス
するとともにそれらのアルゴリズムを呼び出す手段もア
ルゴリズム開発者に提供する。
【0089】アルゴリズムはそれの内部メモリ要件を正
確に定義しなければならない。これは、ページング・ア
ーキテクチャが内部メモリ内の同じ空間にアクセスする
マルチ・アルゴリズムをサポートするのに必要である。
XDAIS準拠アルゴリズムは、それらの内部および外
部メモリ要件を指定するように要求される。
【0090】内部(オンチップ)メモリは2つのエリア
に分割されなければならない。第1のエリアはシステム
・オーバーヘッド・エリアであり、これは特定のDSP
システム・コンフィギュレーション用のOSデータ構造
に対してサポートする。第2のエリアは、アルゴリズム
が使用するためであるが、それらが実行するようにスケ
ジュールされているときだけである。双方のメモリ・エ
リアはサイズを固定されなければならない。この第2の
メモリ・エリアはアルゴリズム・オンチップ・ワークス
ペースと呼ばれ、言い換えると、このワークスペースは
データ・オーバーレイまたはデータ・メモリ・ページと
して記述されることもできる。図14を参照。
【0091】どれだけのメモリがアルゴリズム・オンチ
ップ・ワークスペースのために使用可能であるかを判定
するために、システム開発者は、使用可能な内部データ
・メモリ空間の総量を把握するとともに、ページング・
アーキテクチャ用のOSサポートおよびデータサポート
のようなシステム・ソフトウエアをサポートするのに必
要な量を差し引く。タスク,セマファー(semaphore)
などのようなOSコンフィギュレーションは、システム
DSP設計者が一度に同時に走らせたいアルゴリズムの
総数をサポートする最大サイズにその設計者によって設
定されなければならない。これは、OSサポート・オー
バーヘッドを最小に抑えるとともに、アルゴリズム・ワ
ークスペースを増加する。
【0092】アルゴリズムがこの環境で走るためには、
それの内部メモリ要件はワークスペースのサイズ未満で
なければならない。そうでないと、システム構築者はア
ルゴリズムを統合することができず、アルゴリズム当た
り1ページしかないという制限が生ずる。このアーキテ
クチャはアルゴリズムについて多数のページをサポート
しない。
【0093】アルゴリズム・ワークスペースは3つのコ
ンポーネント(スタック(必須)と永続メモリと非永続
メモリ)に分割される。場合によっては、永続メモリの
読取りのみの部分を扱う後述する第4のコンポーネント
がある。図15を参照。
【0094】アルゴリズムは、それが実行している間
は、オンチップ・ワークスペースを使用するのみであ
る。アルゴリズムが実行するようにスケジュールされて
いるときは、DSPシステム・ソフトウエアは、アルゴ
リズムのワークスペースをそれの外部記憶ロケーション
(シャドー・ストレージ)からオンチップ内部ワークス
ペースに移す。アルゴリズムが制御を行うときは、DS
Pシステム・ソフトウエアはどのアルゴリズムを次に走
らせるかを決定し、それが同じアルゴリズムであるなら
ば、ワークスペースの移動は不要である。次のアルゴリ
ズムが異なるアルゴリズムであるならば、現ワークスペ
ースはそれの外部メモリのシャドー・ロケーションに格
納され、また、次のアルゴリズムのワークスペースが移
される。図16を参照。
【0095】あるアルゴリズムのワークスペース全体
は、コンテクスト・スイッチ時には移されない。スタッ
クおよび永続データ・メモリの使用された部分のみが移
される。アルゴリズムがそれのコール・スタックでそれ
の最高レベルにあるときは、アルゴリズムのスタックは
それの最高レベルである(使用頻度が最も低い)。言い
換えると、アルゴリズムはそれのエントリ点にある。ア
ルゴリズムに対する理想的なコンテクスト・スイッチ
は、それのスタックがそれの最高レベルにあるときに行
われる。何故なら、それは、オフチップのシャドー・ス
トレージに転送するデータが少ないことを意味するから
である。図17を参照。
【0096】好適な実施形態のデータ・ページ・アーキ
テクチャは、コンテクスト・スイッチが最も効率的であ
ることを要求する。コンテクスト・スイッチ処理オーバ
ーヘッドは、DSPがアルゴリズムを実行することがで
きる時間の効果を減じる。アルゴリズムをコンテクスト
・スイッチする最良の時点はそれのコール境界上である
ので、アルゴリズムのプリエンプティングは絶対的に最
小化されなければならない。アルゴリズムのプリエンプ
ティングは、それのスタックがそれの最小値よりも大き
いとき、システム全体の能力低下を招く。これは要件で
なければならないが、非常に制限されたベースでプリエ
ンプトすることは容認できるかもしれない。図18およ
び図19を参照。
【0097】アルゴリズム・ワークスペースの特殊ケー
スは、アルゴリズムが読取りのみの永続メモリを必要と
する場合である。この種のメモリはアルゴリズムによっ
て用られる参照テーブルのために用いられる。このメモ
リは決して変更されないので、読取りができさえすれば
よく、書込みを行う必要はない。この非対称的ページ転
送は、アルゴリズムのコンテクスト・スイッチでオーバ
ーヘッドを低減する。
【0098】このデータ・ページング・アーキテクチャ
によって、単一のアルゴリズムは1回よりも多くインス
タンス化され得る。アルゴリズムは内部メモリ要件に対
するそれの必要性を定義しているので、DSPシステム
構築者は同じアルゴリズムの1つより多いインスタンス
が可能である。DSPシステム・ソフトウエアは、多数
のインスタンスとアルゴリズムの各インスタンスをスケ
ジュールすべきときとに絶えず注意している。インスタ
ンス数の制限は、どれだけの外部メモリがアルゴリズム
・インスタンスのシャドー・バージョンを維持するため
にDSPシステムにあるかである。
【0099】DSPシステム・ソフトウエアは、アルゴ
リズムをスケジュールする際にアルゴリズム・データに
正確に一致されるように各インスタンスを管理しなけれ
ばならない。殆どのDSPアルゴリズムはタスクとして
インスタンス化されるので、DSPシステム・ソフトウ
エアは、アルゴリズム・インスタンスを管理する手段と
してタスク環境ポインタを用いることができる。
【0100】5.連鎖を持つデータ・フロー データ・フローの好適な実施形態は、処理エレメントを
統合化し、それらに共有メモリ空間を与え、GPPによ
る介入なしに処理エレメント間で直接にデータをルーテ
ィングすることに頼る。そのようなシステムが図21に
示されている。
【0101】処理エレメントPEaがかなりの量のデー
タを処理し終えたとき、得られたデータを共有メモリ内
の既定の出力バッファに書き込む。次に、PEaは連鎖
内の次の処理エレメントPEbに適切な制御パスを介し
て通知する。通知は、どの共有メモリ・バッファをPE
bが入力として使うかを示す。その後、PEbは、次の処
理のために入力バッファからデータを読み出す。このよ
うに、データは、全てのデータが消費されるまで、要求
された全ての処理エレメント間で受け渡される。
【0102】上述した一組のバッファは、2つの処理エ
レメント間でデータを伝達するのに用いられるととも
に、これらのエレメント間にI/Oチャネルを備える。
多数のI/Oチャネルが任意の2つの処理エレメント間
に存在し、多数のデータ・ストリームがシステムによっ
て同時に(すなわち、並列に)処理されることを可能に
する。図22は、多数のデータ・ストリームs1,s2
の並列処理の一例を示す。
【0103】I/Oチャネルによって接続された一連の
処理エレメントはチャネル・チェーンを構成する。数個
のチャネル・チェーンが特定のシステム内部に規定され
得る。チェーン内処理エレメントの場合には、各入力チ
ャネルは関連する出力チャネルを有する。端末処理エレ
メントは入力チャネルまたは出力チャネルのみを有す
る。
【0104】処理エレメントの入力チャネルは、データ
が読み出されるべきバッファ(複数のバッファ)を規定
する。処理エレメントの出力チャネルは、データが書き
込まれるべきバッファ(複数のバッファ)と次に通知す
る処理エレメントとを規定する。データ処理エレメント
と中央制御プロセッサ(CCP)との間の制御メッセー
ジの形式は、次の通りである。
【0105】(1)ステータス・メッセージ:データ・
ストリーム処理開始,停止,中断,休止,再開など。 (2)サービス品質メッセージ:タイム・スタンプ,シ
ステム負荷,リソース・フリー/ビジーなど。 (3)データ・ストリーム制御メッセージ:開始,停
止,休止,再開,巻き戻しなど。 (4)システム負荷メッセージ:タスク実行,アクティ
ブ・チャネルの数,処理エレメント毎のチャネルなど。
【0106】好適な一実施形態では、処理エレメントに
よるI/Oチャネルの作成および連携は、システム初期
化時点で読み取られ得るコンフィギュレーション・ファ
イルを介して静的に定義される。処理されるべき各ビッ
トストリーム・タイプについて、コンフィギュレーショ
ン・ファイルは、適切な処理エレメントを接続するチャ
ネル・チェーン(すなわち、データ・パス)を規定す
る。チャネル・チェーンにおける全ての処理エレメント
の一括処理はデータの完全消費をもたらす。
【0107】多数のデータ・パスが所与のビットストリ
ームに存在する場合には、代わりのチャネル・チェーン
またはバックアップ・チャネル・チェーンが定義され得
るであろう。一次チャネル・チェーンの任意の処理エレ
メントも使用できない場合には、ビットストリームはこ
れらにルーティングされ得る。ランタイムにおけるビッ
トストリーム・タイプの決定と動的QoS分析とは、デ
ータがルーティングされるチャネル・チェーンを選択す
る。ランタイムでは、システム内の全ての正当なチャネ
ル・チェーンは固定され変更できない。
【0108】別の好適な実施形態では、新たなビットス
トリームが通信プロセッサに到達するときに、異なるビ
ットストリーム用のチャネル・チェーンは動的に構築さ
れ得る。ランタイムで得られるビットストリーム情報
は、必要な処理エレメントを決定するとともにそれらの
間でI/Oチェーンを動的に割り当てるCCPに制御メ
ッセージ(複数の制御メッセージ)を介して送られる。
この手法は、リソースをサービスから外したり、ランタ
イムでオンラインに戻したりして、自動的にシステムを
適合化することを可能にする。
【0109】共有メモリ異種システムでは、データは、
CCPの介入を受けずに外部共有メモリを介して処理エ
レメント間に流れる。データは決してバス上に現れない
ので、データ・トランザクションの速度は、バス・トラ
ンスポート時間ではなく共有メモリ・アクセス時間によ
って決定される。CCP介入も最小化されるので、CC
P応答および処理遅延は全体的なデータ・フロー時間か
ら除かれる。これは、処理エレメント間のデータ転送時
間を最小化することによってシステムのスループットを
向上させる。
【0110】5a.一例 ここに論じられたデータ・フロー技術の典型的な応用は
メディア処理システムに対するものであろう。そのよう
なシステムは、デコード,エンコード,変換(translat
ing),変換(converting),スケーリングなどのような
処理のために広帯域メディアのストリームを開始し制御
する。ローカル・ディスクからまたは遠方の機械/サー
バから発するメディア・ストリームをケーブル・モデ
ム,DSLまたはワイヤレスのような通信媒体を介して
処理することができる。図23は、そのようなシステム
の一例を示す。
【0111】図23のメディア処理システムは5つの処
理エレメントを含む。 (1)DSLまたはケーブル・モデムI/Oフロント・
エンドDSP (2)メディア処理DSP (3)ビデオ/グラフィクス・オーバーレイ・プロセッ
サ (4)H.263デコーダ・タスク (5)カラー空間変換タスク
【0112】フロント・エンドI/O DSPから入る
H.263ストリームは、付番された円弧1〜3によっ
て規定されるチャネル・チェーンを辿る。各チャネル
は、2つの処理エレメントを接続するとともに、エレメ
ント間でデータを受け渡すのに用いられる一組のI/O
バッファからなる。チャネル・フローは、影を付けた円
弧で示されている。
【0113】H.263ストリームは、グローバル共有
メモリ内に規定されたチャネル1I/OバッファにI/
Oフロント・エンドDSPから流入する。I/Oフロン
ト・エンドDSPは、チャネル1と関連する宛先処理エ
レメント(すなわち、メディア処理DSP上のH.26
3デコーダ・タスク)に、それの入力バッファが満杯で
あり読み出される準備ができていることを知らせる。
H.263デコーダ・タスクは、チャネル1I/Oバッ
ファから読み出し、データをデコードし、得られたYU
Vデータをローカル共有メモリ内のチャネル2I/Oバ
ッファに書き込む。
【0114】チャネルはプロセッサ間またはプロセッサ
内であり得ることに留意願いたい。データは、グローバ
ル共有メモリ(プロセッサ間)を介してか所与のプロセ
ッサに「ローカルな」共有メモリ(プロセッサ内)を介
してプロセッサ間を通過することができる。図4では、
チャネル1およびチャネル3はプロセッサ間であり、チ
ャネル2はプロセッサ内である。
【0115】6.変更 好適な実施形態は、その特徴を保持しつつ種々の方法で
変更され得る。
【0116】関連出願 本願は、全て2000年4月26日に出願された米国仮
出願番号第60/199,753号,第60/199,
755号,第60/199,917号および第60/1
99,754号の優先権を主張する。
【図面の簡単な説明】
【図1】好適な実施形態のDSPORBアーキテクチャ
を示す図である。
【図2】IDLコンパイルを示す図である。
【図3】QoSのタイミング図である。
【図4】QoSのタイミング図である。
【図5】QoSのタイミング図である。
【図6】QoSのタイミング図である。
【図7】QoSのタイミング図である。
【図8】QoSのタイミング図である。
【図9】QoSのタイミング図である。
【図10】QoSのタイミング図である。
【図11】QoSのタイミング図である。
【図12】QoSのタイミング図である。
【図13a】QoSのタイミング図である。
【図13b】QoSのタイミング図である。
【図14】好適な実施形態のメモリ分析を示す図であ
る。
【図15】好適な実施形態のメモリ分析を示す図であ
る。
【図16】好適な実施形態のメモリ分析を示す図であ
る。
【図17】好適な実施形態のメモリ分析を示す図であ
る。
【図18】好適な実施形態のメモリ分析を示す図であ
る。
【図19】好適な実施形態のメモリ分析を示す図であ
る。
【図20】異種システムにおける公知のデータ・フロー
を示す図である。
【図21】好適な実施形態のデータ・フローを示す図で
ある。
【図22】好適な実施形態のデータ・フローを示す図で
ある。
【図23】好適な実施形態のデータ・フローを示す図で
ある。
【図24】CORBAを示す図である。
【図25】CORBAを示す図である。
【図26a】CORBAを示す図である。
【図26b】CORBAを示す図である。
【図26c】CORBAを示す図である。
【図27】CORBAを示す図である。
フロントページの続き (72)発明者 アジャイ ナラヤン アメリカ合衆国 テキサス、リチャードソ ン、ウオータービュー パークウェイ 2700、アパートメント ナンバー 4538 (72)発明者 ラジコ ミロバノビック アメリカ合衆国 テキサス、プラノ、パス フィンダー トレイル 5824 (72)発明者 ジェームズ エム、オーバーターフ アメリカ合衆国 テキサス、ダラス、ダラ ス パークウェイ 14500、アパートメン ト 166 (72)発明者 シャイラー ティ、パットン アメリカ合衆国 テキサス、キャロルト ン、ランズ エンド ドライブ 2524 (72)発明者 フィリップ アール、スリフト アメリカ合衆国 テキサス、ダラス、チャ ーチル ウェイ 7900、ナンバー 2304 Fターム(参考) 5B045 GG01 GG06 5B098 AA10 GA04 GC01 GC16 GD02 GD14

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 クライアント−サーバ・スケジューリン
    グ方法であって、(a)クライアント上でスケジューリ
    ングを行って前記クライアントに結合されたサーバ用の
    タスクに対してリアルタイム・デッドラインを設定する
    第1のフェーズと、(b)前記サーバ上で前記タスクの
    サブタスクのスケジューリングを行う第2のフェーズで
    あって、ステップ(a)の前記リアルタイム・デッドラ
    インを用いてスケジューリングを行う第2のフェーズ
    と、 を含む、クライアント−サーバ・スケジューリング方
    法。
  2. 【請求項2】 (a)前記タスクが、メディア・ストリ
    ーム・デコードを含み、(b)前記サブタスクが、前記
    メディア・ストリームのフレームに対するフレーム・デ
    コードを含む、 請求項1記載のスケジューリング方法。
  3. 【請求項3】 クライアント−サーバ・システム用のオ
    ブジェクト要求ブローカ方法であって、(a)第1のク
    ライアント要求リターンおよび第2のクライアント要求
    コールを崩壊させるステップと、(b)第1のサーバ・
    オブジェクトの出力を第2のサーバ・オブジェクトの入
    力に連鎖するステップであって、前記第1のサーバ・オ
    ブジェクトおよび前記第2のサーバ・オブジェクトが第
    1および第2のクライアント要求にそれぞれ対応する、
    ステップと、 を含む、クライアント−サーバ・システム用のオブジェ
    クト要求ブローカ方法。
  4. 【請求項4】 (a)前記連鎖が、前記サーバにおける
    中間結果(前記第1のオブジェクトの出力および前記第
    2のオブジェクトに対する入力)用のバッファの作成に
    よるものである、請求項3記載の方法。
  5. 【請求項5】 クライアント−サーバ・システムにおけ
    るサーバ・プロセッサ・メモリ管理の方法であって、
    (a)プロセッサ・メモリの第1の部分をプロセッサ・
    オーバーヘッドに割り当てるステップと、(b)前記プ
    ロセッサ・メモリの第2の部分をタスク・ワークスペー
    スに割り当てるステップであって、前記第2の部分があ
    る時点でたった1つのタスクによって占有され得る、ス
    テップと、 を含む、方法。
  6. 【請求項6】 (a)前記メモリの第2の部分が、スタ
    ック・コンポーネント,永続メモリ・コンポーネントお
    よび非永続メモリ・コンポーネントを含む、請求項5記
    載の方法。
  7. 【請求項7】 制御プロセッサと複数の処理エレメント
    の各々とに接続されたバスを有する異種システムにおけ
    るデータ・フローの方法であって、(a)前記バスとは
    別個の共通メモリの使用により前記処理エレメント間で
    データを転送するステップ、 を含む、方法。
JP2001168859A 2000-04-26 2001-04-26 マルチプロセッサ・オブジェクト制御 Pending JP2002041308A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19975400P 2000-04-26 2000-04-26
US199754 2000-04-26

Publications (1)

Publication Number Publication Date
JP2002041308A true JP2002041308A (ja) 2002-02-08

Family

ID=22738883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001168859A Pending JP2002041308A (ja) 2000-04-26 2001-04-26 マルチプロセッサ・オブジェクト制御

Country Status (3)

Country Link
JP (1) JP2002041308A (ja)
KR (1) KR20010098904A (ja)
TW (1) TW514832B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418358B2 (en) 2004-01-26 2008-08-26 Kabushiki Kaisha Toshiba Dynamic voltage controller
JP2009037627A (ja) * 2008-09-05 2009-02-19 Canon Inc 画像形成装置、画像形成装置の制御方法、及び、制御プログラム
WO2010052874A1 (ja) * 2008-11-05 2010-05-14 パナソニック株式会社 物体位置推定システム、物体位置推定装置、物体位置推定方法、及び、物体位置推定プログラム
CN109814996A (zh) * 2019-01-04 2019-05-28 平安科技(深圳)有限公司 流媒体传输控制方法、装置及存储介质、计算机设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8050198B2 (en) 1999-05-24 2011-11-01 Qualcomm Incorporated Method and system for scheduling data transmission in communication systems
KR100440577B1 (ko) * 2001-12-28 2004-07-21 한국전자통신연구원 개방형 멀티서비스 시스템에서 선언적 우선순위를 이용한우선순위기반 분산 객체 호출 실행장치 및 그 방법
KR100450843B1 (ko) * 2002-02-21 2004-10-01 (주)씨앤에스 테크놀로지 비디오 코덱 프로세서와 프로토콜 프로세서간의인터페이싱 아키텍쳐
KR100450844B1 (ko) * 2002-02-21 2004-10-01 (주)씨앤에스 테크놀로지 비디오 코덱 프로세서의 아키텍쳐
TWI650636B (zh) * 2017-11-23 2019-02-11 財團法人資訊工業策進會 偵測系統及偵測方法
TWI740276B (zh) * 2019-11-19 2021-09-21 英業達股份有限公司 一種主從架構伺服器及其資訊讀寫方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418358B2 (en) 2004-01-26 2008-08-26 Kabushiki Kaisha Toshiba Dynamic voltage controller
JP2009037627A (ja) * 2008-09-05 2009-02-19 Canon Inc 画像形成装置、画像形成装置の制御方法、及び、制御プログラム
WO2010052874A1 (ja) * 2008-11-05 2010-05-14 パナソニック株式会社 物体位置推定システム、物体位置推定装置、物体位置推定方法、及び、物体位置推定プログラム
JP4669581B2 (ja) * 2008-11-05 2011-04-13 パナソニック株式会社 物体位置推定システム、物体位置推定装置、物体位置推定方法、及び、物体位置推定プログラム
US8111876B2 (en) 2008-11-05 2012-02-07 Panasonic Corporation Object position estimating system, object position estimating apparatus, object position estimating method, and object position estimating program
CN109814996A (zh) * 2019-01-04 2019-05-28 平安科技(深圳)有限公司 流媒体传输控制方法、装置及存储介质、计算机设备
CN109814996B (zh) * 2019-01-04 2024-03-22 平安科技(深圳)有限公司 流媒体传输控制方法、装置及存储介质、计算机设备

Also Published As

Publication number Publication date
TW514832B (en) 2002-12-21
KR20010098904A (ko) 2001-11-08

Similar Documents

Publication Publication Date Title
EP1150208A2 (en) Multiprocessor object control
US7140016B2 (en) Media accelerator quality of service
Schmidt et al. An overview of the real-time CORBA specification
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
US7080386B2 (en) Architecture with digital signal processor plug-ins for general purpose processor media frameworks
US7657890B2 (en) Scheduling system and method in which threads for performing a real-time operation are assigned to a plurality of processors
Stankovic et al. Real-time operating systems
US8171477B2 (en) Method and system for performing real-time operation
EP1438674B1 (en) System for integrating java servlets with asynchronous messages
KR100628492B1 (ko) 실시간 동작 수행방법 및 시스템
Pyarali et al. Evaluating and optimizing thread pool strategies for real-time CORBA
KR100883517B1 (ko) 예측 기반 동적 쓰레드 풀 조정방법 및 이를 사용하는에이전트 플랫폼
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
JP2004536382A (ja) 置換可能なサービス品質機能のあるネットワーク通信チャネルコンポーネントを選択するために、置換可能なコンポーネントを用いるシステム、方法及び製造物
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
JP2002041308A (ja) マルチプロセッサ・オブジェクト制御
WO2022257247A1 (zh) 数据处理方法、装置及计算机可读存储介质
Koster et al. Thread transparency in information flow middleware
Duran-Limon et al. Reconfiguration of resources in middleware
Calvo et al. Supporting a reconfigurable real-time service-oriented middleware with FTT-CORBA
Coviello et al. Dataxe: A system for application self-optimization in serverless edge computing environments
Schmidt Middleware techniques and optimizations for real-time, embedded systems
García-Valls et al. Integrating middleware for timely reconfiguration of distributed soft real-time systems with Ada DSA
Kalogeraki et al. Resource management using multiple feedback loops in soft real-time distributed object systems
Bryan et al. Integrated CORBA scheduling and resource management for distributed real-time embedded systems