JPH07105021A - 多重処理パイプラインデータ処理エミュレート方法 - Google Patents

多重処理パイプラインデータ処理エミュレート方法

Info

Publication number
JPH07105021A
JPH07105021A JP6125268A JP12526894A JPH07105021A JP H07105021 A JPH07105021 A JP H07105021A JP 6125268 A JP6125268 A JP 6125268A JP 12526894 A JP12526894 A JP 12526894A JP H07105021 A JPH07105021 A JP H07105021A
Authority
JP
Japan
Prior art keywords
data
pipeline
task
host application
processing
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
JP6125268A
Other languages
English (en)
Other versions
JP3617852B2 (ja
Inventor
Dennis L Venable
エル.ヴェナブル デニス
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.)
Xerox Corp
Original Assignee
Xerox 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 Xerox Corp filed Critical Xerox Corp
Publication of JPH07105021A publication Critical patent/JPH07105021A/ja
Application granted granted Critical
Publication of JP3617852B2 publication Critical patent/JP3617852B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 単一処理プロセッサを用いて多重データ処理
パイプラインをエミュレートする方法を提供する。 【構成】 コントローラはホストアプリケーション手段
50、ライブラリ手段10、メモリ管理手段56、最後
のタスク手段60、少なくとも一つの中間タスク手段6
2、及び第1のタスク手段64を備え、前記第1のタス
ク手段64もデータソース手段66の関数を実行する。
複数のリンク70は、ホストアプリケーション手段50
に接続されたデータ処理パイプライン80内の第1のタ
スク手段64、少なくとも一つの中間タスク手段62、
及び最後のタスク手段60を接続する。最後にデータ入
力リンク72はデータソース手段66を第1のタスク手
段64と接続する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、多重処理環境をエミュ
レートすることによる単一処理環境でのデータ処理に係
り、特に、所定のオブジェクト又はデータストラクチュ
アのライブラリを用いたオブジェクト指向システムに関
しており、当該オブジェクト指向システムは、ユニック
ス(登録商標)のようなパイプラインデータストラクチ
ュアをエミュレートするストリーム指向のデータ処理ス
トラクチュアを作成するため、ホストアプリケーション
とデータソース(源)の間でリンクされ得る。
【0002】
【従来の技術】真の多重処理環境でのデータ処理パイプ
ラインの使用は周知である。公知の多重処理環境の例
は、単一プロセッサが真の多重処理を支援することがで
きる多重プロセッサシステム及び高水準(レベル)シス
テムの両方を含む。ユニックス(登録商標)オペレーテ
ィングシステムはこのような多重処理システムにおいて
しばしば使用される。
【0003】このような多重処理環境において、データ
処理パイプラインは、画像処理、データベース処理、又
はスプレッドシート(表計算)処理と対応するデータブ
ロックのような大容量の高水準で構造化されたデータブ
ロックを処理するのに極めて有用である。このようなデ
ータブロックにおいて、種々のデータ処理動作は、デー
タブロックの各データ要素上で実行されなければならな
い。さらに、種々のデータ処理動作は特定の順序で実行
される。
【0004】多重処理環境において、データ処理パイプ
ラインは、データブロックを処理するために非常に効率
的な方法を提供する。これらのデータ処理パイプライン
において、各個別のデータ処理動作はパイプラインの一
部分として定義される。各部分は、それが隣接する複数
の部分(上流部分及び下流部分)の内の一つ又は両方へ
リンクされる。従って、データ処理動作は、データソー
スとホストアプリケーションの間でリンクされたパイプ
ラインの部分同士の連鎖を形成する。多数の独立プロセ
ッサを有するコンピュータにおいては、各パイプライン
部分がこれらのプロセッサの内の一つと対応している。
この場合、各プロセッサは独立して動作し、且つコンピ
ュータオペレーティングシステムはプロセッサとメモリ
アロケーション(割り当て)間でデータの流れを制御す
る。これは、データを効率的に処理するが、プロセッサ
とメモリを制御するために必要なオーバーヘッドは、相
当な割合でシステム資源を消費する。
【0005】同様に、多数の異なる独立した処理動作又
は処理(プロセス)を同時に実行することができる単一
プロセッサを有するコンピュータにおいて、各パイプラ
イン部分は独立型実行処理の内の一つに対応している。
この場合、オペレーティングシステムは、各処理のラン
タイム、各処理とメモリ間のデータのフロー、及びメモ
リアロケーションを割り当てる。この場合において、コ
ンピュータを制御するために必要なオーバーヘッドは、
各処理とそのデータが、プロセッサが実行される度にそ
のプロセッサへ、そしてそのプロセッサから、スワップ
(交換)されなければならないので、より一層大きな割
合でシステム資源を消費することになる。さらに、これ
らの処理はオペレーティングシステムを介して通信する
ので、それが可能であっても、ダイナミック(動的)に
パイプラインを変えるのは困難である。
【0006】一般に、パイプラインに対するデータのソ
ース(源)は、例えば、1)金融情報を提供するスプレ
ッドシート、2)データベース情報を提供するデータベ
ースファイル内の記録、及び3)オリジナル文書、コン
ピュータ作成画像、他から従来の画像スキャナによって
生成された画像データであってもよい。これに対して、
ホストアプリケーションは、処理された金融データから
パイチャート、バーチャート、他を生成するためのグラ
フィックスプログラムか、処理されたデータベースデー
タを使用する棚卸し(在庫管理)、会計、又は併合プロ
グラムか、又は処理された画像データから画像を形成す
るための画像形成装置であってもよい。
【0007】データの特別なソース又は最終的なホスト
アプリケーションにかかわらず、データ処理パイプライ
ンの第1の又は最上流の部分は、一般に、パイプライン
のためのデータソースである。或いは、この第1のパイ
プラインのためのデータソースは第2のパイプラインで
あってもよい。この場合、第2のパイプラインの特別な
ブランチング(分岐化)又は「ファンアウト(fan-out
)」パイプライン部分が、第1のパイプラインと、第
2のパイプラインの下流部分の両方へデータを供給する
ために使用され得る。両ケースにおいて、第1のパイプ
ライン部分は、データのソースからパイプラインに対す
るデータ要素を得て、且つこのデータ要素を直ぐ下流の
又は第2のパイプライン部分に使用可能とする。第2の
パイプライン部分は第1のパイプライン部分からデータ
要素をシーケンシャル(順次)に受け取り、このデータ
要素を処理し、且つそれを直ぐ次の下流又は第3のパイ
プライン部分へ渡す。同時に、真の多重処理環境におい
て、第1のパイプライン部分はデータのソースから次の
データ要素を得て、且つそれを第2のパイプライン部分
へ出力すると共に、データパイプラインの第2又は下流
の隣接部分が第1のパイプライン部分から受け取られた
データ要素を処理し、且つそれをデータ処理パイプライ
ンの第3の部分へ出力する。従って、各データ要素がパ
イプライン部分の内の一つによって処理されると、その
データ要素はそれがホストアプリケーションへ出力され
るまで次の下流部分へ出力される。
【0008】このように、データは、一つの処理動作又
はプロセッサをパイプラインの各部分と対応させること
によって、多重処理環境において効率的且つ迅速に処理
され得る。これは、パイプラインが、最も効率の悪いパ
イプライン部分及びオーバーヘッドによって生じる非効
率性によってのみ限定されるにすぎないデータスループ
ット(処理能力)でデータブロックを処理することが可
能であることを確実とする。
【0009】これに対して、単一処理環境においては、
全ての方法が非常に非効率的であるにもかかわらず、デ
ータを処理するために様々な方法が利用可能である。例
えば、各データ処理動作は、任意の他のデータ処理動作
がデータブロックの任意のデータ要素へ適用されるより
も前に、データブロックの全てのデータ要素へ適用され
る。即ち、データブロックの全ての要素は、次のデータ
処理動作が前もって処理されたデータ要素のいづれかに
実行される前に処理されなければならない。従って、単
一タスキングデータ処理動作の効率性は、各データ処理
動作の効率性に比例する。
【0010】従って、データ要素は多重処理環境でのパ
イプラインの或るデータ処理部分から連続的に移動する
ので、データブロックのメモリアロケーション(割り当
て)を管理する為に求められる必要オーバーヘッドは、
各データ要素が何度もメモリから読み取られ、また何度
もメモリへ書き込まれなければならない単一処理環境と
比べると小さい。即ち、必要なメモリを管理するために
要求されるオーバーヘッドは単一処理環境においては実
質的である。
【0011】
【発明が解決しようとする課題】従って、本発明は、単
一処理プロセッサを用いて多重処理データ処理パイプラ
インをエミュレートするための制御システムを提供す
る。
【0012】
【課題を解決するための手段】本発明の一つの方法にお
いて、データ処理動作のライブラリが提供されている。
このライブラリにおける各データ処理動作、又は関数
は、オブジェクト指向システム内のクラス又はサブクラ
スである。パイプラインの各部分は具体化された関数又
はタスクであり、且つタスクの状態を自己定義するため
に一つ又はそれより多くのデータ処理関数と充分なデー
タストラクチュアを有する。動作上、ホストアプリケー
ションがデータのソースからの処理されたデータ入力を
要求する時、データ処理パイプラインがデータのソース
からホストアプリケーションへ形成される。データ処理
パイプラインは、データ処理ライブラリにおける関数の
うちの一つを呼び出し且つタスクを形成するためにその
呼び出された関数を初期化することによって形成され
る。このタスクはパイプラインの第1の又は最上流の部
分となる。第1のパイプラインソースはデータのソース
からデータ要素を生成する。データのソースは、スキャ
ナ、ファクシミリ装置、遠隔コンピュータ、直列又は並
列データ信号を出力するセンサその他、又はROM、R
AMの一部、若しくはディスクドライブ内のディスクに
記憶されたデータのブロックであることができる。この
データ要素はまた、第1のパイプライン部分それ自体に
よって直接発生されることができる。この最後のケース
において、データ要素は、初期化された変数の値や第1
のパイプライン部分の状態などから得られることが可能
である。最初に初期化される時、ホストアプリケーショ
ンの逆方向又は上流のリンクが第1のパイプライン部分
へセットされる。
【0013】第2のパイプライン部分は、仮定上、第1
のパイプライン部分によって得られたデータ要素を処理
するために必要とされる。従って、ホストアプリケーシ
ョンはライブラリにおける関数の内の一つを初期化する
ことによって他のタスクを生成する。この第2のパイプ
ライン部分が作成されると、この部分は、自動的に第1
のパイプライン部分へリンクされる。さらに、ホストア
プリケーションのリンクは第2のパイプライン部分へセ
ットされる。他のデータ処理動作が全く要求されない場
合、ホストアプリケーションの逆方向リンクは、処理さ
れたデータを要求するホストアプリケーションの部分と
第2のパイプライン部分の間に残る。
【0014】或いは、パイプラインが追加の部分を要求
するならば、ホストアプリケーションが関数ライブラリ
に対して追加の呼出しを行ない、より多くのタスク又は
パイプライン部分を作り出す。新しく作成されたタスク
は、データ処理パイプラインの第3の、第4の、と順に
続くパイプライン部分となる。各追加のパイプライン部
分が作成されると、各追加のパイプライン部分と直ぐ上
流のパイプライン部分間での逆方向リンクが形成され
る。再び、パイプラインの最後の部分が作成された後、
ホストアプリケーションの逆方向リンクはパイプライン
の最後の部分へセットされたままである。このように、
各パイプライン部分へのアクセスは、オペレーティング
システムよりもむしろ直接下流のパイプライン部分(又
は最後のパイプラインに対するホストアプリケーショ
ン)によって制御され且つ保持される。従って、メモリ
を保持するために必要なオーバーヘッドは最小であり、
且つタスクの実行を計画するために必要なオーバーヘッ
ドは存在していない。それゆえ、本発明の制御システム
は、多重処理環境からの効率的な処理の利点を単一処理
環境からの最小オーバーヘッドの利点と結び付けると共
に、これらの環境の欠点を回避したのである。
【0015】さらに、これによって、単一処理アプリケ
ーションは、単一タスキングプロセッサ、単一プロセッ
サ、自動時分割を用いて多重タスキングシステム、又は
真の多重タスキングシステムにおいて実行され得るだけ
でなく、上記の利点を維持することができる。即ち、オ
ペレーティングシステムよりもホストアプリケーション
が、パイプラインを作成し、保持し、制御し、且つ終了
するので、パイプラインストラクチュアは、処理のタイ
プ又はホストアプリケーションを実行することとは無関
係である。従って、ホストアプリケーションは、単一プ
ロセッサ多重タスキングシステムにおいて実行される多
数の独立したアプリケーションの内の一つとなることが
できる。同時に、このホストは、パイプラインをスケジ
ュールし、このパイプラインに対するメモリを割り当
て、保持し、且つ割り当て解除したりする為に、オペレ
ーティングシステムを使用せずに、パイプラインシステ
ムを用いることによって、スキャナからパイプラインを
実行することができる。このようにして、オペレーティ
ングシステムを用いてパイプラインを実行する際に通常
は付きまとう欠点が回避され得る。
【0016】データブロックの処理を始めるにあたっ
て、ホストアプリケーションはパイプラインの最後の部
分からデータを要求する。パイプラインの各部分はま
た、それがリンクされる上流のパイプライン部分からデ
ータを要求する。これは、上流のパイプライン部分を呼
び出すために下流のパイプライン部分から手順呼出しを
行なうことによって実行される。これは、下流のパイプ
ライン部分をスタックへプッシュ(付け足すこと)する
ことに類似している。データが各上流のパイプライン部
分から要求されると、単一処理プロセッサは下流のパイ
プライン部分の処理を停止し且つ上流パイプライン部分
の処理を開始する。一旦第1のパイプライン部分に達す
ると、第1のパイプライン部分はデータ要素を得るか又
は生成し、且つそのデータ要素を第2のパイプライン部
分へリターンする。一旦第1のパイプライン部分がデー
タ要素をリターンすると、CPUは第1のパイプライン
部分の実行を停止し、且つ第2のパイプライン部分の実
行を開始する。即ち、下流のパイプライン部分は上流の
パイプライン部分を呼び出した手順呼出しからリターン
される。これは、下流のパイプライン部分をスタックか
らポップオフすることに類似している。一度、第2のパ
イプライン部分がデータ要素を処理すると、このデータ
要素は第3のパイプライン部分へリターンされる。
【0017】次いで、第3のパイプラインは、そのデー
タ処理動作を、第2のパイプライン部分から受け取られ
た処理されたデータ要素上で実行し、この処理されたデ
ータ要素を、第4のパイプライン部分へリターンし、且
つ動作を停止する。このデータ要素は、各パイプライン
部分において同じように処理される。最後のパイプライ
ン部分がデータ要素を処理した後で、この最後のパイプ
ライン部分は、完全に処理されたデータ要素をホストア
プリケーションへリターンする。次いで、ホストアプリ
ケーションが、他の処理されたデータ要素を望む(又は
必要とする)場合、このホストアプリケーションは処理
されたデータ要素を再びこの最後のパイプライン部分か
ら要求する。このように、処理されたデータは、高い効
率の低オーバーヘッド方式でパイプラインの下をリップ
ルする。さらに、データ処理パイプラインの効率性はパ
イプラインの最小効率リンクのみに依存する。
【0018】本発明の一つの態様は、単一処理プロセッ
サを用いて多重処理パイプラインデータ処理をエミュレ
ートするための方法であって、前記単一処理プロセッサ
上でホストアプリケーションを実行するステップと、デ
ータソースから処理されたデータを前記ホストアプリケ
ーションへ供給するためにデータ処理パイプラインを作
成するステップと、前記パイプラインを呼び出すステッ
プと、前記パイプラインを削除するステップと、を備
え、前記パイプラインを作成するステップが、(a)複
数の所定の関数から選択された第1の関数を第1のタス
クとして具体化するステップと、(b)前記ホストから
前記第1のタスクへのリンクを定義するステップと、
(c)前記複数の所定の関数から選択された第2の関数
を第2のタスクとして具体化するステップと、(d)前
記第1のタスクから前記第2のタスクへのリンクを定義
し且つ前記ホストから前記第2のタスクへの前記リンク
を再定義するステップと、を有し、引き続くタスクに対
してステップ(c)と(d)を繰り返すステップであっ
て、前記ホストアプリケーションが最後のタスクへリン
クされており、且つ各タスクがメモリ内に記憶され、且
つ前記各タスクが前記プロセッサを制御することよりな
るステップと、をさらに備え、前記パイプラインを呼び
出すステップが、(e)前記最後のタスクからデータ要
素を要求し、各タスクはまた前記データ要素がリンクさ
れる前記タスクから前記データ要素を要求するステップ
と、(f)前記第1のタスクによって前記データ要素を
得るステップと、(g)前記データ要素を前記要求タス
クへリターンするステップと、(h)前記リターンされ
たデータを処理するステップと、(i)前記データが前
記ホストアプリケーションへリターンされるまで、ステ
ップ(g)と(h)を反復するステップと、を有し、前
記ステップ(e)乃至(i)が前記ホストアプリケーシ
ョンによって要求されるデータごとに反復されることよ
りなる前記多重処理パイプラインデータ処理エミュレー
ト方法である。
【0019】
【実施例】図1に示されているように、コンピュータ1
00は単一処理コントローラ(CPU−中央処理装置)
20を有する。コンピュータ100は入力/出力(I/
O)インターフェース22、ROM24、及びRAM2
6も有する。CPU20は制御信号を制御ライン28を
介してI/Oインターフェース22、ROM24、及び
RAM26へ送り、且つデータバス30を通してI/O
インターフェース、ROM24、RAM26へデータを
送ったり、I/Oインターフェース、ROM24、RA
M26からデータを受け取ったりする。タスクライブラ
リ10、データソース12、ディスプレイ14、キーボ
ード16、マウス18、及びディスクドライブ19は、
I/Oインターフェース22を介してCPU22と接続
されている。マウス18は、マウス、トラックボール、
ライトペン、タッチスクリーン、タッチパッド、又はそ
の他同種のもののようなあらゆる第2のポインティング
装置を示す。ディスクドライブ18は、ハードドライ
ブ、ハードカード、フロッピーディスク及びフロッピー
ディスクドライブ、CD−ROM及びCD−RAMディ
スクドライブ、フラッシュメモリ、又はその他同種のも
ののようなあらゆる非揮発性の記憶装置を示す。
【0020】CPU20は単一処理プロセッサである。
即ち、CPUは、多くても一回に一つのアプリケーショ
ンのためにデータをアクティブに処理することが可能で
あり、且つ前もって作動し且つ一回で単一のデータ処理
動作のみを実行することが可能である。I/Oインター
フェース22は、CPU20を、直列データポート(図
示されてない)及び並列データポート(図示されてな
い)のいずれかを介して直列又は並列のデータ入力ソー
ス又はデータ出力ソースへ接続する。データのこれらの
ソースは、当然、キーボード16及びデータソース12
だけでなく、ディスクドライブ19及びマウス18も含
む。上記のように、データソース12は、スキャナ、フ
ァクシミリ装置又はその他同種のもの、遠隔コンピュー
タ、センサ又はその他同種のものを含む。I/Oインタ
ーフェース22は、ディスプレイ15を駆動し且つキー
ボード16、マウス18、及びディスクドライブ19か
らの信号を入力するために必要なハードウェアも有す
る。
【0021】ROM24は、CPU20に対する全ての
基本的なオペレーティングプログラムを記憶し、且つブ
ートストラップ又はその他同種のものを含む。RAM2
6は、非常に多くのランダムアクセス可能なメモリ位置
を備える。RAM26はブロック26a、26b、26
c、26d、26e、及び26fのような割り当て可能
なメモリのブロックへ分割されることができる。割り当
て可能なメモリ26a乃至26fのブロックは、ホスト
アプリケーションと、タスクを形成するデータ処理デー
タストラクチュア(即ちデータ処理パイプラインの部
分)の一つ又はそれより多くの具体例を記憶する。ディ
スプレイ14は目に見える情報を出力するが、キーボー
ド16は情報をコンピュータ100へ入力するために使
用される。
【0022】関数ライブラリ10は、CPU20によっ
て呼び出されるデータ処理関数を形成する初期化されな
いデータ処理ストラクチュア又はオブジェクトのライブ
ラリを記憶する。関数ライブラリ10は、I/Oインタ
ーフェース22を介してアクセスされる独立した要素と
して示されているが、関数ライブラリ10がROM24
内又はディスクドライブ19を介してアクセスされる不
揮発性メモリ装置上で格納される得ることが理解されよ
う。さらに、ディスクドライブ19内の非揮発性メモリ
装置又は関数ライブラリ10へまだ格納されてなかった
新しく書き込まれたデータ処理オブジェクト又は関数は
RAM26内に格納され得る。
【0023】同様に、データソース12はコンピュータ
100の外部にあるのが示されており、且つI/Oイン
ターフェース22を介してアクセスされる。しかしなが
ら、データソース12は、ROM24若しくはRAM2
6内、ディスクドライブ19内の非揮発性メモリ装置
上、又はCPU20のレジスタカウンタ若しくは内部メ
モリ内に格納されるデータであることができる。データ
ソース12は、キーボード16を介してデータ入力を有
することができる。上記のように、最後には、第1のパ
イプライン部分は、いくつかの外部ソースからデータ要
素を得るのではなく、データ要素それ自体を発生するこ
とができる。
【0024】図12に示されているように、本発明のコ
ントローラ20は、ホストアプリケーション手段50、
ライブラリ手段10、メモリ管理手段56、最後のタス
ク手段60、少なくとも一つの中間タスク手段62、及
び第1のタスク手段64を備える。コントローラはデー
タソース手段66を含んでいてもよいが、含む必要もな
い。この場合において、第1のタスク手段64もデータ
ソース手段66の関数を実行する。複数のリンク70
は、リンク70によってホストアプリケーション手段に
接続されたデータ処理パイプライン80内の第1のタス
ク手段64、少なくとも一つの中間手段62、及び最後
のタスク手段60を接続させる。当然、簡単なパイプラ
イン80が、第1のタスク手段64と最後のタスク手段
60だけを含んでもよいことは理解されるべきである。
最後に、データ入力リンク72はデータソース手段66
を第1のタスク手段64と接続させる。
【0025】ホストアプリケーション手段50は、デー
タ処理パイプライン80から受け取られたデータをさら
に処理するためのデータ処理手段58を含む。まず、コ
ントローラ20は、ホストアプリケーション手段50、
ライブラリ手段10、及びメモリ管理手段56を含むに
すぎない。ホストアプリケーション手段50は当該ホス
トアプリケーション50内に含まれた命令によってコン
トローラ20を操作する。コントローラ20は、単一タ
スキングコントローラ、単一CPU、多重タスキングコ
ントローラ又は真の多重CPUであり得る。いづれの場
合においても、ホストアプリケーション手段50自体が
コントローラ20内で単一タスキング環境を生成する。
【0026】ホストアプリケーション手段50は、それ
がデータソース66から処理されたデータを必要とする
と決定する時、当該ホストアプリケーション手段50
は、データ処理パイプライン80を作成し且つ呼び出
す。従って、ホストアプリケーション手段50は初期化
手段52及び呼出し手段54を含む。この初期化手段5
2は、関数を取り且つタスクを生成する為にその関数を
初期化するためにライブラリ手段10へアクセスする。
即ち、ライブラリ手段10は多数のデータ処理関数を記
憶する。データ処理関数は、ライブラリにおいて関数が
初期化されなかった時、オブジェクト指向システム内の
オブジェクトのクラス又はサブクラスである。
【0027】初期化手段52は、初期化されない関数の
内の一つを得るためにライブラリ手段10へアクセスす
る。次いで、初期化手段52は、得られた関数を初期化
して、具体化された関数又はタスクをコントローラ20
内に生成する。具体化された関数又はタスクは、ホスト
アプリケーション手段50又は他の前もって生成された
タスクへリンクされる。タスクがホストアプリケーショ
ン手段へリンクされている場合、それは最後のタスク6
0である。タスクが他のタスクへリンクされ、他のタス
クもそのタスクへリンクされている場合、それは中間タ
スク62である。タスクが他のタスクへリンクされ且つ
データソース手段66からデータを受け取るか、又はそ
れ自体がデータを発生する場合、それは第1のタスク6
4である。
【0028】タスクを生成するために関数を初期化する
にあたって、初期化手段52は、タスクを記憶するため
にメモリ26のメモリブロック26a乃至26fの内の
一つを割り当てるため、コントローラのメモリ管理手段
56と共に動作する。所望されるタスクの全てが初期化
手段52によって初期化された後で、呼出し手段54が
最後のタスク手段60からデータを要求することによっ
てパイプライン80を呼び出す。呼出し手段54からの
要求は、パイプライン80の上流方向へ第1のタスク手
段64へ向けて流れる(リップルする)。その要求が第
1のタスク手段64に達した時、第1のタスク手段はデ
ータソース66からデータを得るか又はそれ自体がデー
タを発生する。次いで、第1のタスキング手段64はデ
ータを下流方向で中間タスク手段62へリターンする。
中間タスク手段62はそのデータを処理し且つそれを最
後のタスキング手段60へリターンする。最後のタスク
手段60はそのデータを処理し且つそれをホストアプリ
ケーション手段へリターンする。次いで、より多くのデ
ータがホストアプリケーション手段によって必要とされ
る場合、呼出し手段54は再びパイプライン80を呼び
出す。
【0029】一旦ホストアプリケーション50が全ての
所望されるデータを有すると、呼出し手段54は、パイ
プライン80からエラーコードを要求することによっ
て、当該パイプライン80から発生するいづれのエラー
をも閉じ込め(シャットダウン)且つクリーンアップ
(浄化)するために再びパイプライン80を呼び出す。
前と同じようにこの要求は上流へリップルする。各タス
キング手段は、それがエラーコードを発生したかを決定
し、それらのエラーコードをリターンする。これらのエ
ラーコードが一旦リターンされると、初期化手段52
は、パイプライン80のタスク手段60乃至64に割り
当てられたメモリを解放するため、メモリ管理手段56
へ信号を送る。
【0030】図13は、汎用化されたタスク手段68を
示し、これはタスク手段60乃至64のいづれかを表
す。この汎用化されたタスク手段68は、リンク手段8
2、少なくとも一つのチャネル手段84(84a、84
b、84c)、データ処理手段86、データ分析手段8
8、タスク状態手段90、エラーコード発生手段92、
外部ポート手段94、及び再構成手段96を備える。実
際のタスク手段60乃至64が、一つより多くの要素を
欠いた、これらの要素の異なる組み合わせを有してもよ
いことは当然理解されよう。さらに、第1のタスク手段
64は、パイプライン80のためにデータを受け取った
り発生したりするためのデータ受取り及び/又は発生手
段98も含む。
【0031】リンク手段82は、順方向リンクが使用さ
れる時、汎用化されたタスク手段68を次の又は上流の
タスク手段68とリンクするか、又は逆方向リンクが使
用される時、汎用化されたアタスク手段68を前の又は
下流のタスク手段68とリンクする。両リンクとも一度
に使用されることができる。汎用化されたタスク手段6
8は、チャネル手段84を介して次のタスク手段68か
らリターンされたデータを受け取る。そのデータは、次
いで、それがチャネル84を介して前のタスク手段68
へリターンされる前にデータ処理手段86を用いて処理
される。
【0032】タスク状態手段90はタスク手段68の状
態を保持する。タスク状態手段90はまたタスク手段6
8の全ての他の手段を制御する。
【0033】データ分析手段88は次のタスク手段68
から受け取られたデータがデータ処理手段86に適して
いるかを決定する。データが適していない場合、データ
分析手段が二つの異なる可能な応答を持っている。第1
のタイプの応答においては、簡単化されたタスク手段6
8は、データの代わりに、エラーコード発生手段92に
よって発生されたエラーコードを前のタスク手段へリタ
ーンするだけである。ホストアプリケーション手段50
がデータの代わりにエラーコードを受け取った時、アプ
リケーション手段50は、そのエラーの性質(及び原
因)を決定するためにエラー処理システムを使用する。
次いで、ホストアプリケーション手段50は、グレース
フルに出るか又はパイプライン80を再構成且つ/又は
再初期化するとによってエラーから回復するように試み
ることができる。
【0034】第2のタイプの応答において、複雑なタス
ク手段68は、エラーから回復するためにパイプライン
80をダイナミックに再構成しようとする再構成手段9
6を含む。この再構成手段96は、追加のタスク手段6
8をダイナミックに初期化し且つそれらをパイプライン
80へ挿入するとによってこれを行なう。再構成手段は
外部ポート手段94を介して他のタスキング手段68へ
アクセスすることによってこれを行なう。この外部ポー
ト手段はタスキング手段68への様々なアクセスモード
を許容する。これらのモードはタスク状態手段90を検
査及び/又は変更し、エラーコード発生手段92を検査
し、即ちリンク手段82を変更したりすることも含まれ
る。
【0035】たとえタスク手段68が洗練された再構成
手段96有していたとしても、回復不可能又はハードエ
ラーはまだ発生する可能性がある。この場合、タスク手
段はエラーコードを発生するため、再びエラーコード発
生手段92を使用する。
【0036】最後に、第2の実施例において、リンク手
段82は、タスク手段68自体でなくて、チャネル手段
84をリンクする。リンク手段82はチャネルを次の又
は前のタスク手段68へ直接リンクする。従って、タス
ク手段68が多数のチャネル手段84a、84b、及び
84cを有する場合、各チャネル手段84a乃至84c
は異なる次の又は前のタスク手段68へリンクされ得
る。一方、第1の実施例において、リンク手段82はタ
スク手段68をリンクしたので、タスク手段68のすべ
てのチャネル手段84a乃至84cは同じ次のタスク手
段68とリンクされることになる。
【0037】図2に示されているように、各初期化関数
又はタスクはデータソース12とホストアプリケーショ
ン120の間で実行されるパイプライン40の部分40
a、40b、及び40cとしてビジュアル化され得る。
ホストアプリケーションはCPU20によって現在実行
されている(且つRAM26に格納される)アプリケー
ションである。パイプライン40の各部分40a、40
b、及び40cは、一つ又はそれより多くのデータ処理
チャネル42と、パイプライン部分の状態を定義するデ
ータストラクチュア44、及びゼロ、一つ又はそれより
多くの外部ポート46を備える。各パイプライン部分4
0b及び40c並びにホストアプリケーション120の
それぞれが、パイプライン部分40b及び40c又はホ
ストアプリケーション120を直ぐ上流のパイプライン
部分40a、40b、及び40cのそれぞれへリンクす
る逆方向リンク48を有する。或いは、各パイプライン
部分40a、40b、及び40cは、直ぐ下流のパイプ
ライン部分40b及び40c又はホストアプリケーショ
ン120への順方向リンク48’を有する。最後には、
逆方向リンク48と順方向リンク48’の両方が提供さ
れてもよい。
【0038】制御システムの好ましい実施例において、
パイプラインは「知的な」パイプライン部分を有する。
これらの知的なパイプライン部分は、それがホストコン
ピュータから操作される時、ホストアプリケーションに
よるいかなる割り込みも必要とせずに、パイプラインを
ダイナミックに再構成することが可能である。例えば、
パイプライン40bは、パイプライン部分40aによっ
てリターンされたデータ要素を処理することが可能であ
る。パイプライン40bがデータ要素を処理することが
不可能な場合、パイプライン部分40bは、関数ライブ
ラリ10をダイナミックに呼び出し、且つ新たなパイプ
ライン部分40dを作成する。パイプライン部分40d
はパイプライン部分40aにリンクされる。次いで、パ
イプライン部分40bはそれ自体のリンクを変えて、パ
イプライン部分40aよりもむしろパイプライン部分4
0dを指し示す。
【0039】或いは、パイプライン部分40bがそれが
データを処理することが不可能であることを決定した場
合(例え、それがそのパイプラインを再構成しようとす
る場合でも)、当該パイプライン部分40bはハードエ
ラーを示すエラーコードをリターンする。ホストアプリ
ケーションにおけるエラー処理システムは、ライブラリ
からエラーの性質を決定する。一つの実施例において
は、ホストアプリケーションはそれがエラーから回復す
るためにパイプラインを再生することができるかを決定
する。再生できる場合、ホストアプリケーションはパイ
プラインを再初期化する。しかしながら、ホストアプリ
ケーションがエラーから回復することが不可能である場
合又はこの能力を備えていない場合、ホストアプリケー
ションはグレースフルに出る。
【0040】この様な回復不可能エラーは、例えば、画
像を処理するにあたって発生し得る。ヘッダが1000
の走査ラインが画像内にあるが、走査ライン画像データ
要素が第998回目の呼び出しでも第1のパイプライン
部分へリターンされなかったことを示した場合、システ
ムはハードエラーへ出会う。単に処理できるデータがな
いために、パイプラインがそれ自体で再構成しようとす
る能力に関わらず、このエラーは回復することができな
い。この場合において、第1のパイプライン部分は"ER
R" エラーコードをリターンする。ホストアプリケーシ
ョンは、次いで、エラーコードに対する理由を決定する
ためにエラー処理システムを使用する。このエラーの性
質を決定した後、ホストアプリケーションは、システム
のいかなる再構成又は再初期化も的を得てないので、グ
レースフルに出る。
【0041】パイプラインが再構成される場合、パイプ
ライン部分40bはパイプライン部分40dからデータ
を要求する。パイプライン部分40dは、データ要素を
再リターンするパイプライン部分40aからデータを要
求する。しかしながら、ここで、パイプライン部分40
aは、データ要素を、パイプライン部分40bではなく
パイプライン部分40dへリターンする。あるいは、関
数ライブラリ10を呼び出す時、パイプライン部分はデ
ータ要素を提供することができ、これによってパイプラ
イン部分40dはこの部分が作成されるや否や、データ
要素を有することができる。従ってパイプライン部分4
0bがパイプライン40dからデータを要求する時、パ
イプライン部分40dはすぐに処理を行ない、且つその
データ要素をリターンすることができる。
【0042】さらに、順方向リンク48’が提供される
場合、知的なパイプライン部分は、それらのデータスト
ラクチュアにおいて、データ要素がこのパイプライン部
分によって処理されるのを必要とするかを決定するため
の手段を含むことができる。必要としない場合、パイプ
ライン部分は、それ自体をパイプラインラインから取り
去るため、ホストアプリケーションに全く割り込まれる
ことなく、パイプラインをダイナミックに再構成するこ
とができる。順方向リンクは必要であり、これによっ
て、パイプラインがどの下流のパイプライン部分を変え
るかを知り、これによってパイプライン部分が適切な上
流のパイプライン部分とリンクされる。
【0043】外部ポート46は、パイプライン部分の現
在状態を検査するため、パイプライン部分のデータ構造
44へデータを書き込むため、そのパイプライン部分の
現在状態を変えるか若しくはダイナミックに部分を追加
するためにパイプライン部分(又は複数のパイプライン
部分)の連結部分48をダイナミックに変えるため、又
はパイプライン40から複数の部分をデリート(削除)
するために使用される。一般に、外部ポート46は、デ
ータ要素を処理するにすぎないデータチャネル42から
独立して、パイプラインを制御するために使用される。
要するに、データチャネル42は、上流のパイプライン
部分から受け取られたデータを処理し、且つこの処理さ
れたデータを下流のパイプライン部分へ出力するためだ
けに使用される。外部ポート46は、データチャネル4
2の動作に影響を与えずにパイプライン部分のデータス
トラクチュア44へのアクセスを可能とする。
【0044】従って、他の実施例においては、例えば、
パイプライン40が作成された後で、パイプライン部分
40aとパイプライン部分40bの間にパイプライン部
分40dを追加することが必要となった場合、これは外
部ポート46を用いて達成される。この実施例におい
て、パイプライン部分40cは、そのデータストラクチ
ュアの一部として、チャネル内でデータをテストするた
めのストラクチュアを有する。データの形式が、例え
ば、パイプライン部分40cの適切な動作に必要とされ
る形式と互換性を持たないが、データが、例えば、パイ
プライン部分40bの前に変更されなればならない場
合、パイプライン部分40cは、新しいパイプライン部
分40dをダイナミックに初期化し且つそれをパイプラ
イン部分40aとパイプライン部分40bの間に挿入す
る。このパイプライン部分40cは、パイプライン部分
40bにおける外部ポート46を介して、パイプライン
部分40bのデータストラクチュア44にアクセスする
ことによってこれを行なう。パイプライン部分40cが
パイプライン部分40bのリンク48を変え、これによ
りパイプライン部分40aからのリンク48が新しいパ
イプライン部分40dへ変えられる。同様に、新しいパ
イプライン部分40dのデータストラクチュア44は、
このストラクチュアが適切に初期化され且つパイプライ
ン部分40aへリンクされることを確実とするためにア
クセスされる。
【0045】動作上、図7に示されているアプリケーシ
ョンのようなホストアプリケーションがデータをデータ
ソース12から要求する時、ホストアプリケーション
は、最初、関数ライブラリ10から関数を呼出し且つ初
期化することによってパイプライン40を形成する。図
7に示されている実施例において、変数 "i" 、"
n"、"add value"、及び"mul value"がホストアプリ
ケーションの5行目で初期化される。6行目では、第1
のタスク40aが「ヌル」タスクとして定義されてい
る。第1のタスクは、データソース12からデータ要素
を得るために接続されることができると共に、「ヌル」
コマンドを用いて第1のタスク40aがデータソース1
2として作用するのを示すことが可能である。図7の7
行目において、パイプライン40におけるタスクの数
は、図8に示されるホストアプリケーションを開始した
コマンドラインによって決定される。一般に、ホストア
プリケーションを実行すると、パイプライン40のレン
グス(長さ)及び構成素(constituents)はダイナミッ
クに決定される。或いは、パイプライン40のレングス
及び構成素はホストアプリケーションにおいて明白に説
明される。最後に、パイプライン40の初期のレングス
及び構成素がダイナミックに決定された時又は明白に説
明された時のいづれであっても、パイプライン40はデ
ータソース12から受け取られたデータによってそれ自
体をダイナミックに再構成することができる。
【0046】図7に示されている実施例において、7行
目に示されているように、パイプライン40のレングス
はプログラムを開始するコマンドラインにおいて明白に
説明される。この場合において、パイプラインのレング
スは図8が示すように5である。図7の8行目と9行目
に示されているように、各関数が呼び出され且つ初期化
され、且つデータソースからホストアプリケーションへ
拡張される。この場合、図7の6行目に示されているよ
うに、第1のタスク40aもデータソースのように動作
する。さらに、9行目に示されているように、パイプラ
イン40における各タスクは同じ関数の異なる具体化
(インスタンシェーション)又はタスクである。図7の
9行目と図5のの17行目に示されているように、この
例における関数"Math Task" が初期化されると、そのデ
ータストラクチュアは、各々が現在値" i" にセットさ
れる二つのチャネルデータバッファと、パイプライン内
の上流タスクを指し示すポインタを含む。さらに、パイ
プライン内に上流タスクが全くない場合、ポインタは
「ヌル」にセットされる。
【0047】関数ライブラリ10における関数がオブジ
ェクト指向言語においてはオブジェクトとして定義され
るので、図7に示されている実施例において関数が初期
化される度に、同じ関数の異なる具体化が事実上行なわ
れる。これによって、単一パイプライン40はあらゆる
単一関数の複数のコピーを有していてもよい。従って、
関数の各コピーはライブラリ内に格納されたベース関数
の異なる具体化であり且つパイプライン40の異なるタ
スク又は部分として動作する。これにより、関数ライブ
ラリ10における関数は、それらがあらゆる単一パイプ
ラインにおいて一回以上使用されることができるので、
再帰的である。
【0048】8行目及び9行目においてパイプライン内
の各タスクが作成された後、初期化されたタスクのチャ
ネル(この場合は二つ)が10行目と11行目で実行さ
れる。一旦、図6に示されたホストアプリケーション
が、10行目と11行目で実行された複数のチャネルを
介して、タスクから最後のデータを受け取ると、図8に
示された出力は、図7の12行目と13行目に説明され
ているようにプリントされる。
【0049】図7のホストアプリケーションにおいて
は、上記に示されているように、8行目及び9行目にお
いて、パイプラインは、多数の関数"MathTask"の独立し
た具体化を有する。図5及び図6は、図7に示されてい
るように、ホストアプリケーションによって形成される
パイプラインのために必要な各具体化を形成するため、
図7の8行目及び9行目においてホストアプリケーショ
ンによって呼び出されるライブラリオブジェクト"MathT
ask"を示す。
【0050】図5に示されている"MathTask"関数の1乃
至6行目において、主要データストラクチュアが定義さ
れる。1乃至6行目に示されているように、データスト
ラクチュアは、二つのチャネル即ちチャネル1及びチャ
ネル2並びに逆方向又は上流リンクを含む。次に、7行
目乃至12行目において、第1及び第2のチャネルのそ
れぞれに対するこの関数に特定のデータストラクチュ
ア、"aval"及び"mval"が定義される。
【0051】次に、17行目で、チャネル1に対するデ
ータ要求、"avalue"及びチャネル2に対するデータ要
求、"mvalue"、並びに上流リンク「リンク」で、タス
ク"MathTask"に対して具体化手順が定義される。18乃
至20行目において、チャネル1及びチャネル2のそれ
ぞれに対する変数"avalue"及び"mvalue"並びにリンクが
定義される。最後に、21行目において、関数"MathTas
k"のタスクを作成し且つRAM26のメモリブロックを
割り当てるための手順が定義される。
【0052】次に、図6の28乃至37行目に示されて
いるように、チャネル1に対応するデータ処理手順とデ
ータストラクチュアが定義される。チャネル1のデータ
処理手順は、タスクの直ぐ上流のタスクから番号を得
る。さらに、図7の6行目に示されているように、パイ
プラインにおける第1のタスクは「ヌル」タスクであ
る。第1のタスクに対する「ヌル」状態から生じる結果
は、"val" の初期値をゼロに定義する32行目で定義さ
れる。33行目では、逆方向リンクが存在している場
合、34行目で値"val" はチャネル1の上流タスクの出
力へセットされる。次いで、35行目では、値"val"
は、現在パイプライン部分のチャネル1の加数値"aval"
をその値へ追加することによって更新される。各パイプ
ライン部分に対するチャネル1の加数値"aval"は、25
行目で、図7の9行目でセットされたパイプライン部分
の状態パラメータ"avalue"へセットされた。最後に、チ
ャネル1のデータ処理手順は、新しい値"val" を直ぐ下
流のパイプライン部分へリターンすることによって終了
する。
【0053】同様に、図6の38乃至47行目におい
て、チャネル2のデータ処理手順が定義される。唯一の
差は、図5の22行目で初期化されたチャネル1の処理
手順よりもむしろ図5の23行目で初期化されたチャネ
ル2の手順を使用する39行目で発生する。さらに、4
2行目では、値"val" は第1のパイプライン部分に対す
る「ヌル」データソースを補償するため、1にプリセッ
トされる。45行目では、新しい値"val" は、図7の9
行目においてセットされた、図5の26行目で状態パラ
メータ"mvalue"にセットされたチャネル2の被乗数によ
って乗算される古い値"val" に等しい。
【0054】動作上、図7の8行目と9行目に示されて
いるホストアプリケーションは指示された回数だけ関
数"MathTask"を呼び出す。関数"MathTask"の第1の具体
化はデータソースに接続されないヌルタスクとしてセッ
トアップされる。再び、8行目と9行目をループするこ
とによって、関数"MathTask"の第2の具体化がタスク"M
athTask"の先の具体化との逆方向リンクによって形成さ
れる。その後、図7の8行目と9行目を介して各ループ
ごとに、関数"MathTask"のさらなる具体化が形成され
る。図7に示されているホストアプリケーションの8行
目と9行目を介して最後のループが一旦完了すると、ホ
ストアプリケーションからのタスク"MathTask"の最後の
一つへの逆方向リンクはセットされたままとなる。図4
は、このようにして初期化された3−セクションパイプ
ラインを示す。
【0055】次いで、10行目と11行目において、ホ
ストアプリケーションは、関数"MathTask"の最後の具体
化のチャネル1とチャネル2からデータを要求する。最
後のタスクは回転し且つその直ぐ上流のタスクからデー
タを要求する。これは、その"MathTask"の第1の具体化
がチャネル1とチャネル2を通してのデータに対する要
求を受け取るまで続く。図3はこのタイプのデータフロ
ーの例を示す。ホストアプリケーションは図7の10行
目及び11行目でパイプラインを呼び出した後、最後の
パイプライン部分はそれがリンクされるパイプライン部
分の図6の34行目と44行目で各チャネルを呼び出
す。次いで、最後のパイプライン部分は、各々の呼び出
されたパイプライン部分が、その部分がリンクされる上
流のパイプライン部分を呼び出す。第1のパイプライン
部分に達すると、この第1のパイプライン部分はデータ
ソース12からデータ要素を受け取るか、又はこの場
合、データ要素を自己発生する。第1のパイプライン部
分は、次いで、上記のようにそれを呼び出したパイプラ
イン部分へそのデータ要素をリターンする。
【0056】関数"MathTask"の第1の具体化は、次い
で、チャネル1とチャネル2に対して定義されたデータ
処理手順を実行する。第1の具体化は、チャネル1に対
しては0+1に等しい値1及びチャネル2に対しては1
×1に等しい値1を関数"MathTask"の第2又は具体化へ
リターンする。関数"MathTask"の各具体化は、引き続い
て、第1の数をチャネル1で保持された値へ加算し、次
いでチャネル2で保持された数を第2の数によって乗算
する。図5及び図6に示されている例において、第1と
第2の数は、図7の9行目でパイプラインが作成された
時に初期化された加数と被乗数である。しかしながら、
数はダイナミックに発生されることもできた。従って、
チャネル1及びチャネル2において処理されたデータ
は、ホストアプリケーションへ向けて下流へリップルす
る。これによって、関数"MathTask"の最下流の具体化
は、要求されたデータをホストアプリケーションへ提供
する。
【0057】CPU20が図7に示されているホストア
プリケーションを実行する時、それはホストアプリケー
ションをRAM26のメモリブロック26aに格納す
る。ホストアプリケーションは、事実上、割り当て可能
なメモリブロック26a内に格納されたデータストラク
チュアである。データストラクチュア自体は指定された
メモリの位置にわたるテンプレートを有しており、この
テンプレートはCPU20の制御動作のフロー(流れ)
を定義する。割り当てられたメモリブロック26aの第
1の部分において、種々のメモリ位置が定義され且つ/
又は変数として割り当てられる。データブロック26a
はまたホストアプリケーションの状態を定義する種々の
メモリ位置、及びホストアプリケーションによって要求
されたデータ又はホストアプリケーションによって処理
されたデータを記憶するためのバッファとして動作する
種々のメモリ位置を含む。
【0058】同様に、ホストアプリケーションが、例え
ば、関数"MathTask"の具体化を初期化するために関数ラ
イブラリ10を呼び出す時、他のデータブロック26b
がそのタスク又はパイプライン部分へ割り当てられる。
ホストアプリケーションのように、初期化されたパイプ
ライン部分は、実際に、割り当てられたメモリブロック
26bに対するテンプレートを備える割り当てられたメ
モリブロック26b内のデータストラクチュアである。
割り当てられたメモリブロックは、処理されるデータ、
データのタイプを定義するための種々のメモリ位置、こ
のタスクがそのデータを受け取る場所を示す手順ポイン
タ、そのタスクの状態を定義するデータを記憶する種々
のメモリ位置、及び関数"MathTask"の直ぐ上流の具体化
から受け取られた処理されたデータを記憶するための一
つ又はそれより多くのデータバッファを記憶するための
バッファを有する。
【0059】割り当てられたデータブロック26bはチ
ャネル1とチャネル2に対するデータ処理動作を定義す
るデータストラクチュアも含む。それとは別に、割り当
てられたデータブロック26b内のデータストラクチュ
アは、データ処理を実行するための、又は関数ライブラ
リ10における他の関数へのポインタルックアップテー
ブルとしての、ルックアップ(検索)テーブルを含む。
一般に、各タスクは、それがデータブロック26a乃至
26fの内の一つへ初期化され且つ割り当てられると、
データ入力、データ出力、タスク状態、及びそのタスク
によって実行される種々のデータ処理手順に充分なバッ
ファを自動的に割り当てる。
【0060】図9乃至図11は、この方法を実施する制
御ルーチンに対して汎用化されたフローチャートを示
す。図9に示されているように、スタートしてから、ス
テップS10において、ホストアプリケーションは単一
処理CPU20によって実行される。ステップS20に
おいては、コントローラが、一つのデータ処理パイプラ
インがコンピュータ100の現在動作に必要とされるか
否かをチェックする。必要とされない場合、制御ルーチ
ンはステップS10へ戻る。
【0061】しかしながら、パイプラインが必要とされ
る場合、制御ルーチンはステップS30へ進み、このス
テップにおいて、関数ライブラリから関数を呼び出す。
次いで、ステップS40において、呼び出された関数は
第1のタスク又は第1のパイプラインを形成するために
初期化される。次いで、ステップS50においては、コ
ントローラは追加のパイプライン部分のいづれかが必要
とされるか否かをチェックする。必要とされる場合、制
御ルーチンは、ライブラリから次の関数を呼び出すため
にステップS30へ戻る。従って、制御ルーチンは、追
加のタスクが要求されなくなるまで、ステップS30乃
至S50をループする。この時点で制御ルーチンはステ
ップS60へ進む。
【0062】ステップS60において、パイプラインが
呼び出される。ステップS70において、パイプライン
は処理されたデータ要素をホストアプリケーションへリ
ターンする。次いで、ステップS80において、コント
ローラは追加のデータが必要か否かを決定する。追加の
データが必要な場合、制御ルーチンはパイプラインを再
び呼び出すためにステップS70へリターンする。
【0063】しかしながら、追加データが必要とされな
い場合、制御ルーチンはステップS90へ進み、種々の
パイプライン部分へ割り当てられたメモリを割り当て解
除することによって初期化解除される。ステップS10
0において、ホストアプリケーションの次のコマンドが
実行される。次いで、ステップS110において、コン
トローラはホストアプリケーションの追加のパイプライ
ンが実行される必要があるかを決定する。実行される必
要がある場合、制御ルーチンはステップS30へリター
ンする。
【0064】しかしながら、この時点でパイプラインが
必要とされない場合、制御ルーチンはステップS120
へ進み、コントローラがホストアプリケーションが完了
したか否かを決定する。完了した場合、制御ルーチンは
ストップする。そうでない場合(完了していない場
合)、制御ルーチンはステップS100へ戻る。
【0065】図10は初期化ステップS40に対するフ
ローチャートを示す。ステップS40で初期化ルーチン
へエンターした後、制御ルーチンは、タスクに対する主
要データストラクチュアが作成されるステップS200
へ進む。次いで、ステップS210において、このタス
クに対して特定であるデータストラクチュアの部分が作
成される。次いで、ステップS220においては、チャ
ネルデータストラクチュアが作成され、且つステップS
230においては、逆方向リンクが作成される。順方向
リンクが必要とされる場合、そのデータストラクチュア
は定義されるが、順方向リンクがリンクする下流タスク
がまだ作成されていないので、それはパイプラインが呼
び出されるまで終了されない。リンクはリンクされたパ
イプライン部分を呼び出すための手順ポインタを有す
る。次いで、ステップS240において、制御ルーチン
はステップS40へ戻る。
【0066】図11はステップS60の呼出しルーチン
に対するフローチャートを示す。ステップS60からス
タートして、制御ルーチンはホストアプリケーションが
最後のパイプライン部分からデータを要求するステップ
S300へ進む。次いで、ステップS310において、
現在のパイプライン部分は次の上流パイプライン部分か
らデータを要求する。ステップS320においては、コ
ントローラは次のパイプライン部分が最初パイプライン
部分であるか否かを決定する。そうでない場合、制御ル
ーチンはステップS310へ戻る。
【0067】しかしながら、次のパイプライン部分が最
初パイプライン部分である場合、制御ルーチンはステッ
プS330へ進む。ステップS330において、コント
ローラは第1のパイプライン部分が「ヌル」部分である
か否かを決定する。そうでない場合、制御ルーチンは最
初パイプライン部分が外部ソースからデータ要素を得る
ステップS340へ進む。第1のパイプライン部分が
「ヌル」部分である場合、制御ルーチンは、第1のパイ
プライン部分がデータ要素を自己発生するステップS3
50へ進む。
【0068】両ケースにおいて、ステップS340又は
ステップS350のいづれかを経て、制御ルーチンはス
テップS360へ進み、ここで第1のパイプライン部分
はデータを第2即ち次のパイプライン部分へ下流へリタ
ーンする。ステップS370において、次のパイプライ
ン部分はデータを処理する。次いでステップS380に
おいて、次のパイプライン部分が最後のパイプライン部
分である場合、処理されたデータはステップS390で
ホストアプリケーションへリターンされる。しかしなが
ら、次のパイプライン部分が最後のパイプライン部分で
ない場合、データは新しい次のパイプライン部分へリタ
ーンされ、且つステップS360へのループバックによ
り示されるように、データ要素が処理される。この「ル
ーピング」は、最後のパイプライン部分へ至り、且つス
テップS390でデータがホストアプリケーションへリ
ターンされるまで行なわれる。次いで制御ルーチンはス
テップS60へ戻る。
【0069】本発明のデータ処理パイプラインの第1の
実施例において、前もって定義された逆方向リンクを置
換するか又はこの逆方向リンクに付け加えられる順方向
リンクが提供される。この場合、タスクライブラリのタ
スクの内の一つの現在最下流の具体化から逆方向リンク
が定義された後で、直ぐ上流のタスクから最下流タスク
への順方向リンクが定義される。或いは、順方向リンク
のみが提供されなければならない。しかしながら、この
場合において、パイプライン部分は、ホストアプリケー
ションから上流へ、存在していれば、データのデータソ
ースへ向かって初期化され、次いで下流のデータソース
からホストアプリケーションへ呼び出される。
【0070】さらなる実施例において、各タスクが二つ
又はそれより多くのデータ処理チャネルを有する時、単
一の順方向リンク及び/又は単一の逆方向リンクによっ
て共にリンクされる。この場合において、各チャネル
は、タスクライブラリからのタスクの具体化の内のいづ
れか一つの他の対応チャネルと逆方向又は順方向リンク
されることができる。従って、第1のパイプライン部分
のチャネルの内の一つは第2のパイプライン部分の対応
チャネルとリンクされるが、第1のパイプライン部分の
他のチャネルは第3のパイプライン部分の対応チャネル
とリンクされる。
【0071】本発明のまた他の実施例において、特別な
「ファンイン」及び「ファンアウト」のパイプライン部
分が提供される。これらのパイプライン部分において、
二つ又はそれより多くの上流にパイプライン部分がファ
ンイン分岐パイプライン部分を用いて単一の下流のパイ
プライン部分とリンクされる。同様に、単一上流パイプ
ライン部分がファンアウト分岐パイプライン部分を用い
て二つ又はそれより多くの下流パイプライン部分と接続
される。
【0072】
【発明の効果】単一処理プロセッサを用いて多重処理デ
ータ処理パイプラインをエミュレートするための制御シ
ステムを提供する。
【図面の簡単な説明】
【図1】本発明のシステムのブロック図を示す図であ
る。
【図2】本発明のパイプラインのブロック図を示す図で
ある。
【図3】本発明のパイプライン内のデータの流れを示す
図である。
【図4】適例となるデータ処理プログラムのためにリン
クされたパイプラインを示す図である。
【図5】サンプルタスクのための適例となるコードリス
ティングを示す図である。
【図6】サンプルタスクのための適例となるコードリス
ティングを示す図である。
【図7】パイプラインを形成するためにライブラリから
タスクを呼び出す適例となるホストアプリケーションに
ためのコードリスティングを示す図である。
【図8】図4に示され且つ図5及び6並びに図8にリス
トされているパイプラインの出力のリスティングを示す
図である。
【図9】主要ルーチンのフローチャートを示す図であ
る。
【図10】機能初期化ルーチンを示す図である。
【図11】呼出し及び処理ルーチンのフローチャートを
示す図である。
【図12】本発明のコントローラを示す図である。
【図13】本発明の汎用化されたタスク手段を示す図で
ある。
【符号の説明】
10 タスクライブラリ 12 データソース 13 ディスプレイ 16 キーボード 18 マウス 19 ディスクドライブ 20 単一処理コントローラ 22 I/Oインターフェース 24 ROM 26 RAM 100 コンピュータ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 単一処理プロセッサを用いて多重処理パ
    イプラインデータ処理をエミュレートするための方法で
    あって、 前記単一処理プロセッサ上でホストアプリケーションを
    実行するステップと、 データソースから処理されたデータを前記ホストアプリ
    ケーションへ供給するためにデータ処理パイプラインを
    作成するステップと、 前記パイプラインを呼び出すステップと、 前記パイプラインを削除するステップと、 を備え、 前記パイプラインを作成するステップが、 (a)複数の所定の関数から選択された第1の関数を第
    1のタスクとして具体化するステップと、 (b)前記ホストから前記第1のタスクへのリンクを定
    義するステップと、 (c)前記複数の所定の関数から選択された第2の関数
    を第2のタスクとして具体化するステップと、 (d)前記第1のタスクから前記第2のタスクへのリン
    クを定義し且つ前記ホストから前記第2のタスクへの前
    記リンクを再定義するステップと、 を有し、 引き続くタスクに対してステップ(c)と(d)を繰り
    返すステップであって、前記ホストアプリケーションが
    最後のタスクへリンクされており、且つ各タスクがメモ
    リ内に記憶され、且つ前記各タスクが前記プロセッサを
    制御することよりなるステップと、 をさらに備え、 前記パイプラインを呼び出すステップが、 (e)前記最後のタスクからデータ要素を要求し、各タ
    スクはまた前記データ要素がリンクされる前記タスクか
    ら前記データ要素を要求するステップと、 (f)前記第1のタスクによって前記データ要素を得る
    ステップと、 (g)前記データ要素を前記要求タスクへリターンする
    ステップと、 (h)前記リターンされたデータを処理するステップ
    と、 (i)前記データが前記ホストアプリケーションへリタ
    ーンされるまで、ステップ(g)と(h)を反復するス
    テップと、 を有し、前記ステップ(e)乃至(i)が前記ホストア
    プリケーションによって要求されるデータごとに反復さ
    れることよりなる前記多重処理パイプラインデータ処理
    エミュレート方法。
JP12526894A 1993-06-15 1994-06-07 多重処理パイプラインデータ処理エミュレート方法 Expired - Fee Related JP3617852B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/076,679 US5396616A (en) 1993-06-15 1993-06-15 System for emulating multi-tasking pipelines in a single tasking environment
US076679 1993-06-15

Publications (2)

Publication Number Publication Date
JPH07105021A true JPH07105021A (ja) 1995-04-21
JP3617852B2 JP3617852B2 (ja) 2005-02-09

Family

ID=22133561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12526894A Expired - Fee Related JP3617852B2 (ja) 1993-06-15 1994-06-07 多重処理パイプラインデータ処理エミュレート方法

Country Status (5)

Country Link
US (1) US5396616A (ja)
EP (1) EP0629945B1 (ja)
JP (1) JP3617852B2 (ja)
CA (1) CA2121154C (ja)
DE (1) DE69408601T2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995996A (en) * 1993-06-15 1999-11-30 Xerox Corporation Pipelined image processing system for a single application environment
US5557795A (en) * 1993-06-15 1996-09-17 Xerox Corporation Pipelined image processing system for a single application environment
US5701479A (en) * 1993-06-15 1997-12-23 Xerox Corporation Pipelined image processing system for a single application environment
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5724555A (en) * 1995-03-23 1998-03-03 Canon Kabushiki Kaisha Network interface board for digital copier
US5732269A (en) * 1995-04-21 1998-03-24 International Business Machines Corporation Data adapter transparent to application I/O path
US5937415A (en) * 1995-12-13 1999-08-10 Sybase, Inc. Data base development system with methods facilitating copying of data from one data source to another
US5809286A (en) * 1996-05-01 1998-09-15 Mci Communications Corporation Method and apparatus for emulating a dynamically configured digital cross-connect switch network
AU3061597A (en) * 1996-05-01 1997-11-19 Mci Communications Corporation Method and apparatus for emulating a digital cross-connect switch network
US5867689A (en) * 1996-05-01 1999-02-02 Mci Communications Corporation Method and apparatus for emulating a digital cross-connect switch network using a flexible topology to test MCS network management
US5748617A (en) * 1996-05-01 1998-05-05 Mci Corporation Method and apparatus for emulating a digital cross-connect switch network
US5850536A (en) * 1996-05-01 1998-12-15 Mci Communications Corporation Method and system for simulated multi-tasking
US5812826A (en) * 1996-06-27 1998-09-22 Mci Communications Corporation Method and apparatus for emulating a network of state monitoring devices
US5826265A (en) * 1996-12-06 1998-10-20 International Business Machines Corporation Data management system having shared libraries
US6035297A (en) * 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6088693A (en) * 1996-12-06 2000-07-11 International Business Machines Corporation Data management system for file and database management
US5854930A (en) * 1996-12-30 1998-12-29 Mci Communications Corporations System, method, and computer program product for script processing
US5954829A (en) * 1996-12-30 1999-09-21 Mci Communications Corporation System, method, and computer program product for digital cross connect testing
US5966515A (en) * 1996-12-31 1999-10-12 Unisys Corporation Parallel emulation system and method
US7013467B1 (en) 1997-12-09 2006-03-14 Mci Communications Corporation System and method for managing computer system resources using command control vectors
US5974532A (en) * 1997-12-09 1999-10-26 Mci Communications Corporation System and method for generating responses for inputs using a hybrid state engine table
US6256659B1 (en) 1997-12-09 2001-07-03 Mci Communications Corporation System and method for performing hybrid preemptive and cooperative multi-tasking in a computer system
US6286026B1 (en) * 1998-08-17 2001-09-04 Xerox Corporation Method and apparatus for integrating pull and push tasks in pipeline data processing
US6880122B1 (en) * 1999-05-13 2005-04-12 Hewlett-Packard Development Company, L.P. Segmenting a document into regions associated with a data type, and assigning pipelines to process such regions
US6728419B1 (en) 2000-02-17 2004-04-27 Xerox Corporation Multi-tasking multi-threaded image processing system and method for image capture devices
JP4082051B2 (ja) * 2002-03-19 2008-04-30 富士ゼロックス株式会社 画像処理装置および画像処理方法
JP4407231B2 (ja) * 2003-10-16 2010-02-03 セイコーエプソン株式会社 印刷装置、印刷処理方法およびそのプログラム
US8054487B2 (en) * 2004-12-16 2011-11-08 International Business Machines Corporation Mechanism to create a reservation against a future scheduling object instantiation
JP2006338507A (ja) * 2005-06-03 2006-12-14 Fujifilm Holdings Corp 処理装置及び処理方法
JP2006338506A (ja) * 2005-06-03 2006-12-14 Fujifilm Holdings Corp コネクタ
US7853950B2 (en) * 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
US9008464B2 (en) * 2009-06-16 2015-04-14 University-Industry Cooperation Group Of Kyung Hee University Media data customization
US8983632B2 (en) * 2011-03-29 2015-03-17 Honeywell International Inc. Function block execution framework
US20160328279A1 (en) * 2015-05-07 2016-11-10 Ebay Inc. Method and System for Providing a Framework as a Service
US20170163732A1 (en) * 2015-12-04 2017-06-08 Vmware, Inc. Inter-task communication within application-release-management pipelines
US11868206B2 (en) * 2021-05-11 2024-01-09 Sap Se Automated mass message processing

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5617437A (en) * 1979-07-23 1981-02-19 Fujitsu Ltd Loading system for nonresident program
JPS5960651A (ja) * 1982-09-30 1984-04-06 Fujitsu Ltd モジユ−ル間の制御遷移管理方式
JPS6238060A (ja) * 1985-08-12 1987-02-19 Matsushita Graphic Commun Syst Inc 通信制御装置
JPS6491260A (en) * 1987-10-01 1989-04-10 Nec Corp Communication control system
JPH01193935A (ja) * 1988-01-28 1989-08-03 Nec Software Ltd サブコマンド実行形式によるプログラム制御方式
JPH01284961A (ja) * 1988-05-12 1989-11-16 Canon Inc カラー画像処理装置
JPH02297632A (ja) * 1989-05-11 1990-12-10 Matsushita Graphic Commun Syst Inc 画像表示装置
JPH04130928A (ja) * 1990-09-21 1992-05-01 Fuji Xerox Co Ltd 情報処理システムにおける例外処理方法
JPH0696212A (ja) * 1992-09-14 1994-04-08 Nippon Telegr & Teleph Corp <Ntt> マルチプロセスを用いた動物体認識処理方法
JPH06187434A (ja) * 1992-06-04 1994-07-08 Internatl Business Mach Corp <Ibm> イメージ/ビデオ処理のためのプロセス・パイプライン・アー キテクチャ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3909797A (en) * 1973-12-13 1975-09-30 Honeywell Inf Systems Data processing system utilizing control store unit and push down stack for nested subroutines
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
GB2060225B (en) * 1979-09-29 1983-05-25 Plessey Co Ltd Multi-programming data processing system process suspension
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
JPH02120988A (ja) * 1988-09-02 1990-05-08 Tektronix Inc データ処理パイプライン装置
US5175854A (en) * 1989-06-19 1992-12-29 Digital Equipment Corporation Inter-applicataion interface system
DE58909661D1 (de) * 1989-12-18 1996-05-23 Siemens Ag Verfahren zum gepufferten Datenaustausch zwischen Programmen einer Datenverarbeitungsanlage
JPH0797323B2 (ja) * 1991-09-30 1995-10-18 インターナショナル・ビジネス・マシーンズ・コーポレイション 名前付きパイプを用いるプロセス間通信の方法及びプロセス

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5617437A (en) * 1979-07-23 1981-02-19 Fujitsu Ltd Loading system for nonresident program
JPS5960651A (ja) * 1982-09-30 1984-04-06 Fujitsu Ltd モジユ−ル間の制御遷移管理方式
JPS6238060A (ja) * 1985-08-12 1987-02-19 Matsushita Graphic Commun Syst Inc 通信制御装置
JPS6491260A (en) * 1987-10-01 1989-04-10 Nec Corp Communication control system
JPH01193935A (ja) * 1988-01-28 1989-08-03 Nec Software Ltd サブコマンド実行形式によるプログラム制御方式
JPH01284961A (ja) * 1988-05-12 1989-11-16 Canon Inc カラー画像処理装置
JPH02297632A (ja) * 1989-05-11 1990-12-10 Matsushita Graphic Commun Syst Inc 画像表示装置
JPH04130928A (ja) * 1990-09-21 1992-05-01 Fuji Xerox Co Ltd 情報処理システムにおける例外処理方法
JPH06187434A (ja) * 1992-06-04 1994-07-08 Internatl Business Mach Corp <Ibm> イメージ/ビデオ処理のためのプロセス・パイプライン・アー キテクチャ
JPH0696212A (ja) * 1992-09-14 1994-04-08 Nippon Telegr & Teleph Corp <Ntt> マルチプロセスを用いた動物体認識処理方法

Also Published As

Publication number Publication date
EP0629945B1 (en) 1998-02-25
CA2121154C (en) 1999-03-09
CA2121154A1 (en) 1994-12-16
EP0629945A3 (en) 1995-05-24
DE69408601D1 (de) 1998-04-02
EP0629945A2 (en) 1994-12-21
US5396616A (en) 1995-03-07
DE69408601T2 (de) 1998-09-17
JP3617852B2 (ja) 2005-02-09

Similar Documents

Publication Publication Date Title
JP3617852B2 (ja) 多重処理パイプラインデータ処理エミュレート方法
JP3617851B2 (ja) パイプライン化データ処理方法
Baer A survey of some theoretical aspects of multiprocessing
EP1138001B1 (en) Reconfigurable programmable logic device computer system
CN102576314B (zh) 具有横跨多个处理器的数据并行线程之映射处理逻辑
Singh et al. A template-based approach to the generation of distributed applications using a network of workstations
KR970008527B1 (ko) 고급 인스트럭션 처리 장치 및 방법
JPH06266683A (ja) 並列処理装置
US5995996A (en) Pipelined image processing system for a single application environment
EP0644486A2 (en) Management of data accesses in computer systems
WO2000031652A9 (en) Reconfigurable programmable logic device computer system
JPH0922362A (ja) コンピュータシステムおよびコンピュータ制御方法
US5701479A (en) Pipelined image processing system for a single application environment
US20040093477A1 (en) Scalable parallel processing on shared memory computers
Gonzalez et al. Parallel task execution in a decentralized system
Grimshaw et al. Mentat
US8561077B1 (en) Binder for a multi-threaded process to access an un-shareable resource
JPH08263306A (ja) パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法
Guzman et al. Performance of symbolic applications on a parallel architecture
Orlando et al. COLTHPF, a Coordination Layer for HPF Tasks
JPH10222381A (ja) データ処理システム
Brezany et al. Large-scale scientific irregular computing on clusters and grids
Bakkers et al. Automatic generation of scheduling and communication code in real-time parallel programs
Guzman et al. MCC Technical Report Number: PP-163-87
Yang et al. Executing scheduled task graphs on message-passing architectures

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040913

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041105

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20071119

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees