JPH08263306A - パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法 - Google Patents

パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法

Info

Publication number
JPH08263306A
JPH08263306A JP11686895A JP11686895A JPH08263306A JP H08263306 A JPH08263306 A JP H08263306A JP 11686895 A JP11686895 A JP 11686895A JP 11686895 A JP11686895 A JP 11686895A JP H08263306 A JPH08263306 A JP H08263306A
Authority
JP
Japan
Prior art keywords
data
pipeline
task
host application
header
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
JP11686895A
Other languages
English (en)
Inventor
Dennis L Venable
エル.ベナブル デニス
Takashi Nagao
隆 長尾
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
Priority claimed from US08/402,225 external-priority patent/US5701479A/en
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of JPH08263306A publication Critical patent/JPH08263306A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 単一処理環境において多重処理パイプライン
をエミュレートして大容量のデータブロックを処理する
システムと方法を提供する。 【構成】 タスク手段83は、データソースからヘッダ
を入手/発生するヘッダデータ入手/発生手段87、タ
スクを初期化する初期化手段89、ヘッダデータ解析手
段93、パイプラインを再構成する再構成手段95、イ
ンスタンス生成処理を取り消す自己消去手段99、及び
エラー処理しパイプラインをシャットダウンするエンド
チャネル手段97を含み、さらに、パイプラインの再構
成を容易化する為、タスクの状態又はリンクへのアクセ
スを得るためにパイプラインの他のタスクが呼び出せる
外部手順発生手段91も含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、多重処理環境をエミュ
レートすることによって単一アプリケーション環境にお
いて画像ヘッダ及び画像データを備える画像を処理する
ことに係り、より詳細には、所定のオブジェクト又はデ
ータストラクチュアのライブラリを用いたオブジェクト
指向システムに関しており、このオブジェクト指向シス
テムは、ユニックス(UNIX)(登録商標)のようなパイ
プラインデータストラクチュアをエミュレートしたスト
リーム指向データ処理ストラクチュアを作成するように
ホストアプリケーションとデータソース(源)の間でリ
ンクされ得る。
【0002】
【従来の技術】真の多重処理環境におけるデータ処理パ
イプラインの使用は周知である。公知の多重処理環境の
例は、単一プロセッサが真の多重処理を支援することが
できる多重プロセッサシステム及び高水準(ハイレベ
ル)システムの両方を含む。ユニックス(登録商標)オ
ペレーティングシステムはこのような多重処理システム
においてしばしば使用される。
【0003】このような多重処理環境において、データ
処理パイプラインは、画像処理、データベース処理、又
はスプレッドシート(表計算)処理と対応するデータブ
ロックのような大容量の高水準で構造化されたデータブ
ロックを処理するのに極めて有用である。このようなデ
ータブロックは、典型的に、ヘッダと、データの一つよ
り多くのライン(行)又はデータのセットを含む。ヘッ
ダは、データのタイプ、その特性、及びどのくらいのデ
ータのセットがデータブロック内にあるかを示す。この
ようなデータブロックにおいて、種々のデータ処理動作
がホストアプリケーションによって使用される前にデー
タブロック内のデータの各セット上で実行されなければ
ならない。さらに、種々のデータ処理動作が特定の順序
で実行される。
【0004】多重処理環境において、データ処理パイプ
ラインはデータブロックを処理するための非常に効率的
方法を提供する。これらのデータ処理パイプラインにお
いて、各個別のデータ処理動作はパイプラインの一部分
として定義される。各部分はそれが隣接している複数の
部分(上流及び下流の部分)の内の一つ又は両方へリン
クされる。従って、データ処理パイプラインは、データ
ソースとホストアプリケーションの間でリンクされたパ
イプラインの部分同士の連鎖を形成する。多数の独立し
たプロセッサを有するコンピュータにおいては、各パイ
プライン部分がこれらのプロセッサの内の一つと対応し
ている。この場合、各プロセッサは独立して作動し、コ
ンピュータオペレーティングシステムはプロセッサとメ
モリアロケーション(割り当て)間でデータの流れを制
御する。これはデータを効率的に処理するが、プロセッ
サとメモリを制御するのに必要なオーバーヘッドは相当
な割合のシステム資源を消費する。
【0005】同様に、多数の異なる独立した処理動作又
は処理(プロセス)を同時に実行することができる単一
プロセッサを有するコンピュータにおいて、各パイプラ
イン部分は独立型実行処理の内の一つに対応している。
この場合、オペレーティングシステムは、各処理のラン
タイム、各処理とメモリ間のデータのフロー、及びメモ
リアロケーションを割り当てる。この場合、コンピュー
タを制御するために必要なオーバーヘッドは、各処理と
そのデータが、プロセッサが実行される度にそのプロセ
ッサへ、そしてそのプロセッサから、スワップ(交換)
されなければならないので、より一層大きな割合でシス
テム資源を消費することになる。さらに、これらの処理
はオペレーティングシステムを介して通信するので、た
とえそれが可能であっても、パイプラインをダイナミッ
ク(動的)に変更することは難しい。
【0006】概して、パイプライン用のデータのソース
(源)は、例えば、金融情報を提供するスプレッドシー
ト、データベース情報を提供するデータベースファイル
内の記録、原稿から従来の画像スキャナによって生成さ
れる画像データ、及びコンピュータ生成画像を含むこと
ができる。ホストアプリケーションは、処理された金融
データからパイチャート、バーチャート、その他を生成
するためのグラフィックス(図形)プログラムか、処理
されたデータベースデータを使用する棚卸し(在庫管
理)、会計、若しくは併合プログラムか、又は処理され
た画像データから画像を形成するグラフックための画像
形成装置であってもよい。
【0007】データの特別なソース又は最終的なホスト
アプリケーションにかかわらず、データ処理パイプライ
ンの第1の(最初の)又は最上流の部分は、一般に、パ
イプラインのためのデータソースである。或いは、この
第1のパイプラインのためのデータソースは第2のパイ
プラインであってもよい。この場合、第2のパイプライ
ンの特別なブランチング(分岐化)又は「ファンアウト
(fan-out )」パイプライン部分が、第1のパイプライ
ンと、第2のパイプラインの下流部分の両方へデータを
供給するために使用され得る。両ケースにおいて、第1
のパイプライン部分は、データのソースからパイプライ
ンに対するデータ要素を得て、且つこのデータ要素を直
ぐ下流の又は第2のパイプライン部分に使用可能とす
る。第2のパイプライン部分は第1のパイプライン部分
からデータ要素を受け取り、このデータ要素を処理し、
それを直ぐ次の下流即ち第3のパイプライン部分へ渡
す。
【0008】真の多重処理環境において、第1のパイプ
ライン部分はデータのソースから次のデータ要素を得
て、それを第2のパイプライン部分へ出力すると共に、
第2のパイプライン部分は第1のパイプライン部分から
受け取られたデータ要素を処理し、それを第3のパイプ
ライン部分へ出力する。従って、各データ要素がパイプ
ライン部分の内の一つに処理されると、そのデータ要素
はホストアプリケーションへ出力されるまで次の下流部
分へ出力される。このデータは一つの処理動作又はプロ
セッサをパイプラインの各部分と対応させることによっ
て多重処理環境において効率的に且つ迅速に処理され得
る。これは、パイプラインが最も効率の悪いパイプライ
ン部分やオーバーヘッドによって生じた非効率性のみに
よって限定されるデータスループットによりデータブロ
ックを処理することが可能であることを確実する。
【0009】これに対して、単一処理環境においては、
大容量のデータブロックを処理するために種々の方法が
使用可能であるにもかかわらず、これらの方法の各々
は、多重処理システムと比べて不十分である。例えば、
一つの方法において、任意の他のデータ処理動作がデー
タブロックの任意のデータ要素へ適用される前に、各デ
ータ処理動作がデータブロックの全てのデータ要素へ適
用される。要するに、データブロックの全ての要素はあ
らゆる要素が第2のデータ処理動作を受ける前にデータ
ブロックの全ての要素が第1のデータ処理動作を受けな
ければならない。単一処理環境におけるデータ処理動作
の効率は各データ処理動作の効率性に比例する。
【0010】多重処理環境においてデータ要素はパイプ
ラインの一つのデータ処理部分から他のデータ処理部分
へ連続的に移動し、またデータ処理コマンドはシステム
のアクティブ(活動状態の)メモリへ又はシステムのア
クティブメモリから連続的にスワップ(交換)されなけ
ればならないので、多重処理システムを管理するのに必
要とされるシステムオーバーヘッドは単一処理環境のオ
ーバーヘッドの要求条件に比べて大きい。
【0011】
【発明が解決しようとする課題】従って、本発明は、単
一処理環境において多重処理パイプラインをエミュレー
トすることによって大容量データブロックを処理するシ
ステム及び方法を提供する。本発明においては、画像処
理動作のライブラリが提供されている。このライブラリ
における各画像処理動作又は関数はオブジェクト指向シ
ステムにおけるクラス又はサブクラスである。パイプラ
インの各部分はインスタンス生成された(instantiate
d)関数又はタスクであり、この関数又はタスクは、一
つ以上の画像処理関数、及びタスクの状態を自己定義す
るのに充分なデータストラクチュアを有する。
【0012】
【課題を解決するための手段】動作上、ホストアプリケ
ーションが、スキャナ又は画像データファイルからの画
像データのような生データソースから処理されたデータ
を要求する時、データ処理パイプラインはデータソース
とホストアプリケーションの間で形成される。データ処
理パイプラインはデータソースからこの生データを入力
し、このデータをホストアプリケーションが使用できる
形式になるように処理し、それをホストアプリケーショ
ンへ提供する。
【0013】画像処理パイプラインは画像処理ライブラ
リにおける関数の一つを呼び出すことによって及びこの
呼び出された関数をインスタンス生成することによって
形成され、第1のタスクを形成する。この第1のタスク
はパイプラインの最上流の部分となる。この最上流のパ
イプライン部分は、データソースから処理されるべきデ
ータ要素を得る。画像処理システムにおいて、データ要
素は画像のラスタ走査の単一走査ラインであってもよ
い。このデータソースはスキャナ、ファクシミリ装置、
遠隔コンピュータ、センサ、その他であることができ、
直列又は並列のデータ信号、ROM、RAM、又はディ
スクドライブにおけるディスクのようなメモリにおける
記憶されたデータのブロックを出力する。このデータ要
素は、第1のパイプライン部分それ自体によって直接発
生されことができる。この最後のケースにおいて、デー
タ要素は、初期化された変数の値、第1のパイプライン
部分の状態、その他から得られることができる。第1の
パイプライン部分がインスタンス生成されると、ホスト
アプリケーションの逆方向又は上流のリンクが第1のパ
イプライン部分へセットされる。
【0014】次いで、第2のパイプライン部分は、概し
て、第1のパイプライン部分によって得られたデータ要
素を処理するために必要とされる。従って、ホストアプ
リケーションはライブラリにおける関数の内の一つをイ
ンスタンス生成することによって他のタスクを作成し
て、第2のパイプライン部分を生成する。この第2のパ
イプライン部分が生成された時、それは第1のパイプラ
イン部分に自動的にリンクされる。さらに、ホストアプ
リケーションのリンクは第2のパイプライン部分へリセ
ットされる。他の画像処理動作が全く必要とされない場
合、ホストアプリケーションのリンクは、処理されたデ
ータを要求するホストアプリケーションの部分と第2の
パイプライン部分の間に残留する。
【0015】或いは、データをさらに処理するためにパ
イプラインが追加の部分を必要とする場合、ホストアプ
リケーションは関数ライブラリに追加の呼出しを行なっ
て追加のタスク又はパイプライン部分をインスタンス生
成する。新しく作成されたタスクは、データ処理パイプ
ラインの第3、第4、その他の部分となる。各追加のパ
イプライン部分が作成されると、各追加のパイプライン
部分と直ぐ上流のパイプライン部分の間に逆方向リンク
が形成され、ホストアプリケーションからのリンクが最
後にインスタンス生成されたタスク(又はパイプライン
部分)へリセットされる。
【0016】各パイプライン部分へのアクセスは、オペ
レーティングシステムによってではなく、直接的に下流
のパイプライン部分(又は最後のパイプライン部分に対
するホストアプリケーション)によって制御され、保持
される。従って、メモリを保持するのに必要なオーバー
ヘッドは最小であり、タスクの実行をスケジューリング
するために必要とされるオーバーヘッドは存在していな
い。従って、本発明の制御システムは、多重処理環境か
らの効率的な処理の利点を、単一処理環境からの最小オ
ーバーヘッドの利点と結び付けると共に、これらの環境
の欠点を回避する。
【0017】このようなパイプラインシステムを利用す
るホストアプリケーションは、上記に示した利点を維持
しながら、単一プロセッサ/単一タスキング環境、自動
タイムシェアリング(時分割)を用いた単一プロセッサ
/マルチ(多重)タスキング環境、又は真のマルチプロ
セッサ/マルチタスキング環境においてラン(実行)さ
れ得る。オペレーティングシステムではなくホストアプ
リケーションがパイプラインを作成し、維持し、制御
し、終了するので、このパイプラインストラクチュアは
ホストアプリケーションをランしているプロセッサのタ
イプから独立している。従って、このホストアプリケー
ションは、単一プロセッサマルチタスキングシステムで
ランされている多数の独立したホストアプリケーション
の内の一つであることができる。このホストアプリケー
ションはオペレーティングシステムを使用せずにこのパ
イプラインシステムを用いてスキャナーからパイプライ
ンをランして、このパイプラインをスケジューリング
し、又はこのパイプラインのためにメモリを割り当て、
保持し、割り当て解除することができる。従って、通常
はオペレーティングシステムを用いてパイプラインをラ
ンすることに伴うオーバーヘッドの欠点が回避され得
る。
【0018】本発明の第1の実施例において、ヘッダデ
ータチャネルはデータ処理動作を容易にするために使用
される。この実施例において、データブロックの処理を
開始するため、ホストアプリケーションはパイプライン
の最終の部分からデータブロックのヘッダを要求する。
パイプラインの各部分はまた、それがリンクされる上流
のパイプライン部分からヘッダを要求する。これは上流
のパイプライン部分を呼び出すために下流のパイプライ
ン部分から手順呼出しを行なうことによって行われる。
これは下流のパイプライン部分をスタックへプッシュ
(付け足すこと)することに類似している。ヘッダが各
上流のパイプライン部分から要求されると、プロセッサ
は下流のパイプライン部分の処理を停止し、上流パイプ
ライン部分の処理を開始する。
【0019】要求が第1のパイプライン部分に達する
と、この第1のパイプライン部分はデータブロックのヘ
ッダを入手し又は生成し、このヘッダをヘッダデータチ
ャネルを介して第2のパイプライン部分へリターンす
る。第1のパイプライン部分がヘッダをリターンする
と、CPU(中央処理装置)は第1のパイプライン部分
の実行を停止し、第2のパイプライン部分の実行を開始
する。これは下流のパイプライン部分をスタックからポ
ップオフする(取り出す)ことに類似している。パイプ
ラインの部分の各々がこのヘッダデータを処理し、デー
タブロック内のデータのラインに対してこの部分が行う
ことを示す。各部分は処理されたヘッダデータをヘッダ
データチャネルを介して次の下流のパイプライン部分へ
リターンする。最後のパイプライン部分がこのヘッダを
処理した後、最後のパイプライン部分は完全に処理され
たヘッダデータをホストアプリケーションへリターンす
る。
【0020】処理されたヘッダデータがホストアプリケ
ーションによって受け取られると、ホストアプリケーシ
ョンはデータブロック内にどのくらいの量のデータのラ
インがあるかを知る。ホストアプリケーションは第1の
ラインを最も下流のパイプライン部分から要求する。各
中間パイプライン部分は、この中間パイプライン部分が
リンクされる直ぐ上流のパイプライン部分から、この要
求が第1のパイプライン部分へ達するまで、データのラ
インを要求する。第1のパイプライン部分はデータソー
スからデータの第1のラインを得るか又はデータのライ
ンを生成し、次いでこのデータを直ぐ下流の部分へ提供
する。各中間の部分は、上流部分から受け取られたデー
タを処理し、この処理されたデータを、この処理された
データがホストアプリケーションへ提供されるまで直ぐ
下流の部分へパスする。
【0021】上記に概説された処理は、データブロック
を作成するデータの全てのラインが処理され、ホストア
プリケーションによって受け取られるまで繰り返され
る。従って、画像処理パイプラインの効率性はパイプラ
インの最も効率的でない部分のみに依存する。
【0022】本発明の第2の実施例において、ヘッダデ
ータ処理チャネルは使用されず、ヘッダデータは最初に
データ処理パイプラインのインスタンス生成中に処理さ
れる。この実施例において、ホストアプリケーションが
第1のパイプライン部分をインスタンス生成した時、第
1の部分はこのパイプラインによって処理されるべきデ
ータブロックを記述しているヘッダデータを直ぐに入手
又は生成する。第2のパイプライン部分がインスタンス
生成された時、この第2のパイプライン部分は第2の部
分によって実行されるデータ処理動作を反映するように
直ぐに第1のパイプライン部分からヘッダデータを入手
し、ヘッダデータを処理する。インスタンス生成された
パイプライン部分の各々はまた、インスタンス生成時に
ヘッダを入手し、処理する。パイプラインが終了した
時、ホストアプリケーションは既に処理されたヘッダデ
ータを有しており、ホストアプリケーションはデータブ
ロックからデータの第1のラインを直ぐに呼び出すこと
ができる。
【0023】本発明の一つの態様は、データユニットの
パイプラインデータ処理のためのデータ処理システムで
あって、前記データユニットがヘッダ部分と本体部分を
有し、前記本体部分が複数のデータセットを有し、単一
タスキングプロセッサと、メモリと、前記メモリのブロ
ックを割り当てるメモリ管理手段と、データ処理関数を
記憶するライブラリ手段と、データ処理パイプラインを
作成し、前記パイプラインから処理されたデータを得る
ホストアプリケーション手段と、を備え、前記ホストア
プリケーション手段が、リンクされたデータ処理タスク
のデータ処理パイプラインを作成するインスタンス生成
手段を有し、各タスクがメモリのメモリブロック内に記
憶され、各タスクが前記ライブラリ手段からのデータ処
理関数のインクスタンス生成であり、前記データ処理パ
イプラインからデータセットを要求する呼び出し手段を
有し、前記データ処理パイプラインの各タスクが、前記
パイプライン内の他のタスク、データソース、及び前記
ホストアプリケーションの内の少なくとも一つへ前記タ
スクをリンクするリンク手段と、前記タスク間へデータ
セットをパスするデータチャネル手段と、前記タスク内
部からのデータを他のタスク及び前記ホストアプリケー
ションの内の少なくとも一つへ提供する外部ポート手段
と、データソース、他のタスク、及びヘッダデータジェ
ネレータの内の一つからヘッダデータを得るヘッダデー
タ入手手段と、前記ヘッダデータに基づいて前記タスク
を初期化する初期化手段と、他のタスク及び前記ホスト
アプリケーションの内の少なくとも一つによって呼び出
し可能な外部手順を発生する外部手順発生手段であっ
て、前記外部手順が前記タスク内部からのデータを前記
外部手順を呼び出す前記ホストアプリケーション又はタ
スクへ提供する外部手順発生手段と、データソース、他
のタスク、及びデータセットジェネレータの内の一つか
らデータセットを得るデータ入手手段と、を有すること
よりなるデータ処理システムである。
【0024】本発明の他の態様は、単一タスキング環境
においてデータユニットをパイプラインデータ処理する
方法であって、前記データユニットがヘッダ部分と本体
部分を有し、前記本体部分が複数のデータセットを有
し、単一タスキング環境でホストアプリケーションをラ
ンするステップと、前記ホストアプリケーションを用い
てデータ処理パイプラインを作成するステップであっ
て、前記データ処理パイプラインは処理されたデータセ
ットを前記ホストアプリケーションへ提供すると共に第
1のタスクと少なくとも一つの追加のタスクを備え、前
記第1の及び前記少なくとも一つの追加のタスクが共に
リンクされると共にメモリのブロック内に記憶され、前
記ホストアプリケーションが前記パイプライン内の最下
流のタスクへリンクされる、データ処理パイプライン作
成ステップと、前記ホストアプリケーションを用いて外
部手順を呼び出し、前記外部手順が前記パイプラインの
前記最下流のタスクから処理されたヘッダデータを前記
ホストアプリケーションに提供するステップと、前記ホ
ストアプリケーションを用いて前記パイプラインを呼び
出し、前記パイプラインから処理されたデータを得るス
テップと、を備えるパイプラインデータ処理方法であ
る。
【0025】
【実施例】図1に示されているように、コンピュータ1
00は単一処理コントローラ(CPU:中央処理装置)
21を有する。コンピュータ100は入力/出力(I/
O)インターフェース22、ROM24、及びRAM2
6も有する。CPU21は制御信号を制御ライン28を
介してI/Oインターフェース22、ROM24、及び
RAM26へ送り、データバス30を通してI/Oイン
ターフェース、ROM24、RAM26へデータを送っ
たり、I/Oインターフェース、ROM24、RAM2
6からデータを受け取ったりする。関数ライブラリ1
0、データソース12、ディスプレイ14、キーボード
16、マウス18、及びディスクドライブ19は、I/
Oインターフェース22を介してCPU21と接続され
ている。マウス18は、マウス、トラックボール、ライ
トペン、タッチスクリーン、タッチパッド、又はその他
のようなあらゆる第2のポインティング装置を示す。デ
ィスクドライブ19は、ハードドライブ、ハードカー
ド、フロッピーディスク及びフロッピーディスクドライ
ブ、CD−ROM及びCD−RAMディスクドライブ、
フラッシュメモリ、又はその他のようなあらゆる非揮発
性の記憶装置を示す。
【0026】CPU21は単一処理プロセッサである。
CPUは、一回に一アプリケーションだけデータをアク
ティブに処理することが可能であり、どの一回において
も単一データ処理動作のみをランし、実行することが可
能である。I/Oインターフェース22は、CPU21
を、直列データポート(図示されてない)及び並列デー
タポート(図示されてない)のいずれかを介して直列又
は並列のデータ入力ソース又はデータ出力ソースへ接続
する。データのこれらのソースはキーボード16及びデ
ータソース12だけでなく、ディスクドライブ19及び
マウス18も含む。上記のように、データソース12
は、スキャナ、ファクシミリ装置又はその他、遠隔コン
ピュータ、センサ又はその他を含む。I/Oインターフ
ェース22は、ディスプレイ15を駆動し、キーボード
16、マウス18、及びディスクドライブ19からの信
号を入力するために必要なハードウェアも備えている。
【0027】ROM24は、ブートストラップ又はその
他を含むCPU21用の全ての基本的なオペレーティン
グプログラムを記憶する。RAM26は、非常に多くの
ランダムアクセス可能なメモリ位置を備える。RAM2
6はブロック26a、26b、26c、26d、26
e、及び26fのような割り当て可能なメモリのブロッ
クへ分割されることができる。割り当て可能なメモリ2
6a乃至26fのブロックは、ホストアプリケーション
と、データ処理タスクを有するデータ処理関数の一つ以
上のインスタンス生成(即ちデータ処理パイプラインの
部分)を記憶することができる。ディスプレイ14は目
に見える情報を出力するが、キーボード16は情報をコ
ンピュータ100へ入力するために使用される。
【0028】関数ライブラリ10は、CPU21によっ
て呼び出されるデータ処理関数を形成する初期化されな
いデータ処理ストラクチュア又はオブジェクトのライブ
ラリを記憶する。関数ライブラリ10はI/Oインター
フェース22を介してアクセスされる独立した要素とし
て示されているが、関数ライブラリ10がROM24内
部、又はディスクドライブ19を介してアクセスされる
不揮発性メモリ装置上で記憶され得ることが理解されよ
う。さらに、ディスクドライブ19内の非揮発性メモリ
装置又は関数ライブラリ10へまだ記憶されていなかっ
た新しく書き込まれたデータ処理関数はRAM26へ記
憶され得る。
【0029】同様に、データソース12はコンピュータ
100の外部にありI/Oインターフェース22を介し
てアクセスされるのが示されている。しかしながら、デ
ータソース12は、ROM24若しくはRAM26内、
ディスクドライブ19内の非揮発性メモリ装置上、又は
CPU21のレジスタカウンタ若しくは内部メモリ内に
記憶されるデータであってもよいことが理解されよう。
データソース12はキーボード16を介して入力される
データを有することもできる。最終的には上記のように
第1のパイプライン部分がいくつかの外部ソースからデ
ータ要素を得るのではなく、データ要素それ自体を生成
することができる。
【0030】図18に示されているように、本発明によ
るデータ処理システム200は、ホストアプリケーショ
ン手段50、ライブラリ手段10、メモリ管理手段5
6、及びデータ処理パイプライン80を備える。データ
処理パイプライン80は、ホストアプリケーション手段
50に接続された最終タスク手段60、少なくとも一つ
の中間タスク手段62、及び第1のタスク手段64を含
む。データ処理システム200はまたデータソース手段
66を含んでもよい。しかしながら、データ処理システ
ム200はデータソース手段66を含まなくてもよい。
この場合において、第1のタスク手段64もデータソー
ス手段66の関数を実行する。複数のリンク70は、リ
ンク70によってホストアプリケーション手段に接続さ
れたデータ処理パイプライン80内の第1のタスク手段
64、少なくとも一つの中間手段62、及び最終タスク
手段60を接続する。当然、簡単なパイプライン80
が、第1のタスク手段64と最終タスク手段60だけを
含んでもよいことが理解されよう。データ入力リンク7
2はデータソース手段66を第1のタスク手段64と接
続させる。
【0031】ホストアプリケーション手段50は、デー
タ処理パイプライン80から受け取られたデータをさら
に処理するためにデータ処理手段58を含む。最初に、
データ処理システム200は、ホストアプリケーション
手段50、ライブラリ手段10、及びメモリ管理手段5
6を含むにすぎない。ホストアプリケーション手段50
はこのホストアプリケーション50に含まれた命令によ
ってプロセッサを動作する。プロセッサは、単一タスキ
ング環境で動作する単一プロセッサ、多重タスキング環
境で動作する単一プロセッサ、又は多重タスキング環境
で動作する多重プロセッサコンピュータであってもよ
い。いづれの場合においても、ホストアプリケーション
手段50がまるで単一タスキング環境内にあるようにラ
ンする。
【0032】ホストアプリケーション手段50はそれが
データソース66から処理されたデータを必要とすると
決定する時、このホストアプリケーション手段50はデ
ータ処理パイプライン80を作成し、呼び出す。従って
ホストアプリケーション手段50はインスタンス生成手
段52及び呼出し手段54を含む。
【0033】パイプライン80を作成するため、インス
タンス生成手段52はライブラリ手段10へアクセスし
て初期化されていない関数の内の一つを得て、メモリの
ブロック内に記憶されるインスタンス生成された関数又
はタスクを作成する。このインスタンス生成された関数
又はタスクはホストアプリケーション手段50又は他の
前もって作成されたタスクへリンクされる。タスクがホ
ストアプリケーション手段にリンクされた場合、そのタ
スクは最終タスク60である。このタスクが他のタスク
にリンクされたり他のタスクがこのタスクにリンクされ
る場合、このタスクは中間タスク62である。このタス
クが他のタスクにリンクされ、データソース手段66か
らデータを得るか又はそれ自体がデータを発生する場
合、それは第1のタスク64である。
【0034】タスクを作成するために関数をインスタン
ス生成するにあたって、インスタンス生成手段52は、
メモリ26のメモリブロック26a乃至26fの内の一
つをタスクの記憶のために割り当てるようにメモリ管理
手段56と共に作動する。所望されるタスクの全てがイ
ンスタンス生成された後で、呼出し手段54は、最終タ
スク手段60からデータを要求することによってパイプ
ライン80を呼び出す。呼出し手段54からの要求は、
パイプライン80の上流方向へ第1のタスク手段64へ
波及する(リップルする)。その要求が第1のタスク手
段64に達した時、第1のタスク手段はデータソース6
6からデータを得るか又はそれ自体がデータを発生す
る。次いで、第1のタスキング手段64はデータを下流
方向で中間タスク手段62へリターンする。中間タスク
手段62はそのデータを処理し且つそれを最終タスキン
グ手段60へリターンする。最終タスク手段60はその
データを処理し且つそれをホストアプリケーション手段
へリターンする。次いで、より多くのデータがホストア
プリケーション手段50によって必要とされた場合、呼
出し手段54はパイプライン80を再び呼び出す。
【0035】ホストアプリケーション手段50が所望さ
れるデータの全てを有した時、呼出し手段54は再びパ
イプライン80を呼び出し、パイプライン80の動作か
ら生じたあらゆるエラーをシャットダウン(閉じ込め)
し、クリーンアップ(浄化)する。この呼出し手段54
はパイプラインからエラーコードを要求する。この要求
は前の様に上流までリップル(波及)する。各タスク手
段はそれがエラーコードを発生したか否かを決定し、そ
れらをリターンする。これらのエラーコードがリターン
されると、呼出し手段54は、パイプライン80のタス
ク手段60乃至64に割り当てられたメモリをリリース
(解放)するため、メモリ管理手段56へ信号を送る。
【0036】図19は、汎用化されたタスク手段68を
示し、これはタスク手段60乃至64のいづれかを表
す。この汎用化されたタスク手段68は、リンク手段8
2、少なくとも一つのチャネル手段84a乃至84c、
データ処理手段86、データ解析手段88、タスク状態
手段90、エラーコード発生手段92、外部ポート手段
94、及び再構成手段96を備える。実際のタスク手段
60乃至64が、一つ以上の要素を欠いたこれらの要素
の異なる組み合わせを有し得ることが当然理解されよ
う。さらに、第1のタスク手段64は、パイプライン8
0用にデータを受け取ったり発生したりするデータ受取
り/発生手段98も含む。
【0037】リンク手段82は、逆方向リンクが使用さ
れた時、汎用化されたタスク手段68を次の又は上流の
タスク手段68とリンクするか、又は順方向リンクが使
用された時、汎用化されたタスク手段68を前の又は下
流のタスク手段68とリンクする。両リンクとも一度に
使用されることができる。汎用化されたタスク手段68
は、一つ以上のチャネル手段84a乃至84cを介して
上流のタスク手段からリターンされたデータを受け取
る。次いで、データは、対応するチャネル手段84a乃
至84cを介して下流のタスク手段へ提供される前にデ
ータ処理手段86を用いて処理される。
【0038】タスク状態手段90はタスク手段68の状
態を保持する。タスク状態手段90はまたタスク手段6
8の全ての他の手段を制御する。データ分析手段88は
次の上流タスク手段から受け取られたデータがデータ処
理手段86に適しているか否かを決定する。データが適
していない場合、データ分析手段が二つの異なる可能な
応答を持っている。第1のタイプの応答においては、簡
単化されたタスク手段68は、データの代わりに、エラ
ーコード発生手段92によって発生されたエラーコード
を、下流のタスク手段へリターンするにすぎない。ホス
トアプリケーション手段50がデータの代わりにエラー
コードを受け取った時、アプリケーション手段50はエ
ラー処理システムを使用してエラーの性質(及び原因)
を決定する。次いで、ホストアプリケーション手段50
は、そのまま終了するか又はパイプライン80を再構成
及び/又は再初期化するとによってエラーから回復する
ように試みることができる。
【0039】第2のタイプの応答において、複雑なタス
ク手段68は、エラーから回復するようにパイプライン
80をダイナミックに再構成しようとする再構成手段9
6を含む。この再構成手段96は、追加のタスク手段を
ライブラリ手段10からダイナミックにインスタンス生
成することによって及びこれらの追加のタスク手段をパ
イプライン80へ挿入することによってこれを行う。こ
の再構成手段96は、これらの外部ポート手段94を介
して一つ以上の他のタスク手段へアクセスすることによ
ってこれを行なう。これらの外部ポート手段94は他の
タスク手段68への様々なアクセスモードを可能にす
る。これらのモードは、他のタスク手段の、又はそれ自
体の、タスク状態手段90を検査及び/又は変更するこ
と、エラーコード発生手段92を検査すること、リンク
手段82を変更すること、又はその他のことを有する。
【0040】勿論、タスク手段68がたとえ洗練された
再構成手段96を有していても、回復不可能な又は難し
いエラーがなお発生するかもしれない。この場合、タス
ク手段は再びエラーコード発生手段92を使用して次の
下流のタスク手段に提供されるエラーコードを発生す
る。
【0041】最終的に、第2の実施例において、リンク
手段82は汎用化されたタスク手段68それ自体の代わ
りにタスク手段68の個々のチャネル手段84a乃至8
4cをリンクすることができる。要するに、リンク手段
82はチャネル手段84a乃至84cの内の一つを他の
あらゆるタスク手段の対応するチャネル手段84a乃至
84cと直接リンクすることができる。従って、タスク
手段68が多数のチャネル手段84a、84b、及び8
4cを有する場合、各チャネル手段84a乃至84cは
異なる上流又は下流のタスク手段へリンクされ得る。こ
れに対して、第1の実施例においてはリンク手段82が
タスク手段68とリンクしたので、タスク手段68のチ
ャネル手段84a乃至84cの全部が同じ次の上流/下
流のタスク手段68とリンクされる。
【0042】図2に示されているように、各インスタン
ス生成された関数又はタスクは、データソース12とコ
ンピュータ100でランしているホストアプリケーショ
ン120の間でランされているパイプライン40の部分
40a、40b、及び40cとしてビジュアル化され得
る。ホストアプリケーションはCPU21によって現在
実行されている(且つRAM26に記憶される)アプリ
ケーションである。パイプライン40の各部分40a、
40b、及び40cは、一つ又はそれより多くのデータ
処理チャネル42と、パイプライン部分の状態を定義す
るデータストラクチュア44、及びゼロか、一つ又はそ
れより多くの外部ポート46を備える。各パイプライン
部分40b及び40c並びにホストアプリケーション1
20はまた、パイプライン部分40b及び40c又はホ
ストアプリケーション120を次の上流のパイプライン
部分40a、40b、及び40cのそれぞれへリンクす
る逆方向リンク48を有する。或いは、各パイプライン
部分40a、40b、及び40cは、直ぐ下流のパイプ
ライン部分40b及び40c又はホストアプリケーショ
ン120への順方向リンク48’を有する。最終的に、
逆方向リンク48と順方向リンク48’の両方がパイプ
ラインへ提供されることができる。
【0043】データ処理システムの好ましい実施例にお
いて、パイプラインは「インテリジェント(知的な)」
パイプライン部分を有する。これらのインテリジェント
パイプライン部分は、それがホストコンピュータから操
作される時、ホストアプリケーションによるいかなる割
り込みも必要とせずに、パイプラインをダイナミックに
再構成することが可能である。
【0044】例えば、中間パイプライン部分40bは、
パイプライン部分40aによってリターンされたデータ
要素を処理することが可能である。中間パイプライン部
分40bがデータ要素を処理することが不可能な場合、
中間パイプライン部分40bは、関数ライブラリ10を
ダイナミックに呼び出し、新しいパイプライン部分40
dをインスタンス生成する。この新しいパイプライン部
分40dは第1のパイプライン部分40aにリンクされ
る。パイプライン部分40bは、次いで、それ自体のリ
ンクを変更し、第1のパイプライン部分40aではな
く、新しいパイプライン部分40dを指し示す。
【0045】或いは、中間パイプライン部分40bがそ
れが決してデータを処理することができないと決定した
場合(例え、それがそのパイプラインを再構成しようと
した場合でも)、この中間パイプライン部分40bはハ
ードエラーを示すエラーコードを最後の下流パイプライ
ン部分40cへリターンする。最後の下流パイプライン
部分40cはエラーコードをホストアプリケーション1
20へ提供する。ホストアプリケーション120におけ
るエラー処理システムは、エラーコードライブラリから
エラーの性質を決定する。一つの実施例において、ホス
トアプリケーション120はそれがパイプラインを再構
成又は再初期化してエラーから回復できるかを決定す
る。決定した場合はホストアプリケーションはパイプラ
インを再構成又は再初期化する。しかしながら、ホスト
アプリケーションがエラーから回復することが不可能で
ある場合又はこの能力を与えられてない場合、ホストア
プリケーションはそのまま終了する。
【0046】この様な回復不可能エラーは、例えば、画
像を処理するにあたって発生し得る。ヘッダが1000
の走査ラインが画像内にあるが、走査ライン画像データ
要素が第998回目の呼び出しでも第1のパイプライン
部分へリターンされなかったことを示した場合、システ
ムはハードエラーへ出会う。単に処理できるデータがな
いために、パイプラインがそれ自体で再構成しようとす
る能力に関わらず、このエラーは回復することができな
い。この場合において、第1のパイプライン部分は"ER
R" エラーコードをリターンする。ホストアプリケーシ
ョンは、次いで、エラーコードに対する理由を決定する
ためにエラー処理システムを使用する。エラーの性質を
決定した後、ホストアプリケーションは、システムのい
かなる再構成又は再初期化も的を得てないので、そのま
ま終了する。
【0047】パイプラインが再構成された場合、中間パ
イプライン部分40bは新しいパイプライン部分40d
からデータを要求する。新しいパイプライン部分40d
は第1のパイプライン部分40aからデータを要求し、
第1のパイプライン部分40aは、得られたデータ要素
を新しいパイプライン部分40dへ提供する。或いは、
中間パイプライン部分40bは、関数ライブラリ10を
呼び出す時、それが受け取ったデータ要素を第1のパイ
プライン部分40aから新しいパイプライン部分40d
へ提供することができ、これによって新しいパイプライ
ン部分40dは作成されたばかりのデータ要素を有する
ことができる。次いで、中間パイプライン部分40bが
新しいパイプライン40dからデータを要求すると、こ
の新しいパイプライン部分40dはこのデータ要素をす
ぐに処理して、リターンすることができる。
【0048】さらに、順方向リンク48’が提供された
場合、各インテリジェントパイプライン部分は、そのデ
ータストラクチュアにおいて、データ要素がこのパイプ
ライン部分によって処理されるのを必要とするかを決定
する手段を含むことができる。必要とされない場合、こ
のパイプライン部分はホストアプリケーションに割り込
まれずにパイプラインをダイナミックに再構成して、こ
のパイプラインラインからそれ自体を除去することがで
きる。インテリジェントパイプライン部分は下流のタス
クがインテリジェントパイプライン部分の上流にあるタ
スクへリンクされるようにそれがリンクされる下流のタ
スクがその逆方向リンクを変更させる。これがパイプラ
インからインテリジェントパイプラインを「短絡」す
る。順方向リンクは必要であり、これによりインテリジ
ェントパイプライン部分がどの下流のパイプライン部分
を変えるべきかを知り、この結果、下流のパイプライン
部分が適切な上流のパイプライン部分とリンクされる。
【0049】外部ポート46は、パイプライン部分の現
在状態を検査し、パイプライン部分のデータ構造44へ
データを書き込み、このパイプライン部分の現在状態を
変化させ、又はパイプライン部分(又は複数のパイプラ
イン部分)の連結部分48をダイナミックに変更して部
分をダイナミックに追加するか若しくは複数の部分をパ
イプライン40からデリート(削除)するように使用さ
れる。一般に、外部ポート46は、データ要素を処理す
るにすぎないデータチャネル42から独立してパイプラ
インを制御するために使用される。要するに、データチ
ャネル42は、上流のパイプライン部分から受け取られ
たデータを処理し、この処理されたデータを下流のパイ
プライン部分へ出力するためだけに使用される。外部ポ
ート46はデータチャネル42の動作に影響を与えずに
パイプライン部分のデータストラクチュア44へのアク
セスを可能とする。
【0050】従って、他の実施例においては、例えば、
パイプライン40が作成された後で、第1のパイプライ
ン部分40aと中間のパイプライン部分40bの間に新
しいパイプライン部分40dを追加することが必要とな
った場合、これは外部ポート46を用いて達成される。
この例において、最後のパイプライン部分40cは、そ
のデータストラクチュアの一部として、チャネル内でデ
ータをテストするためのストラクチュアを有する。最後
のパイプライン部分40cで受け取られたデータの形式
が、例えば、最後のパイプライン部分40cの適切な動
作に必要とされる形式と互換性を持たないが、データ
が、例えば、中間パイプライン部分40bがデータを処
理する前に変更されなればならない場合、最後のパイプ
ライン部分40cは新しいパイプライン部分40dをダ
イナミックにインスタンス生成し、それを第1のパイプ
ライン部分40aと中間パイプライン部分40bの間に
挿入する。最後のパイプライン部分40cは、中間パイ
プライン部分40bの外部ポート46を介して中間パイ
プライン部分40bのデータストラクチュア44にアク
セスすることによってこれを行なう。最後のパイプライ
ン部分40cがパイプライン部分40bのリンク48を
変更して、リンク48を第1のパイプライン部分40a
から新しいパイプライン部分40dへ変える。同様に、
新しいパイプライン部分40dのデータストラクチュア
44は、それが適切に初期化され、第1のパイプライン
部分40aへリンクされることを確実とするようにアク
セスされる。
【0051】動作上、図7に示されているアプリケーシ
ョンのようなホストアプリケーション120がデータソ
ース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のレングス(長さ)及び構成素(cons
tituents)は、ホストアプリケーションがランすると、
ダイナミックに決定される。或いは、パイプライン40
のレングス及び構成素はホストアプリケーションにおい
て明白に記述される。最後に、パイプライン40の初期
のレングス及び構成素がダイナミックに決定されるか又
は明白に記述される時のいづれでも、パイプライン40
はデータソース12から受け取られたデータによってそ
れ自体をダイナミックに再構成することができる。
【0052】図7に示されている実施例において、7行
目に示されているように、パイプライン40のレングス
はプログラムを開始するコマンドラインにおいて明白に
説明される。この場合において、パイプラインのレング
スは図8が示すように5である。図7の8行目と9行目
に示されているように、各関数が呼び出され且つ初期化
され、且つデータソースからホストアプリケーションへ
拡張される。この場合、図7の6行目に示されているよ
うに、第1のタスク40aもデータソースのように動作
する。さらに、9行目に示されているように、パイプラ
イン40における各タスクは同じ関数の異なるインスタ
ンス生成又はタスクである。図7の9行目と図5のの1
7行目に示されているように、この例における関数"Mat
h Task"が初期化されると、そのデータストラクチュア
は、各々が現在値" i" にセットされる二つのチャネル
データバッファと、パイプライン内の上流タスクを指し
示すポインタを含む。さらに、パイプライン内に上流タ
スクが全くない場合、ポインタは「ヌル」にセットされ
る。
【0053】関数ライブラリ10における関数がオブジ
ェクト指向言語においてはオブジェクトとして定義され
るので、図7に示されている実施例において関数がイン
スタンス生成される度に、同じ関数の異なるインスタン
ス生成が事実上行なわれる。これによって、単一パイプ
ライン40はあらゆる単一関数の複数のコピーを有して
いてもよい。従って、関数の各コピーはライブラリ内に
記憶されたベース関数の異なるインスタンス生成であ
り、パイプライン40の異なるタスク又は部分として動
作する。これにより、関数ライブラリ10における関数
はあらゆる単一パイプラインにおいて一回以上使用され
ることができるので、再帰的である。
【0054】8行目及び9行目においてパイプライン内
の各タスクが作成された後、初期化されたタスクのチャ
ネル(この場合は二つ)が10行目と11行目で実行さ
れる。一旦、図7に示されたホストアプリケーション
が、10行目と11行目で実行された複数のチャネルを
介して、タスクから最終データを受け取ると、図8に示
された出力は、図7の12行目と13行目に説明されて
いるようにプリントされる。
【0055】上記に示されているように、図7のホスト
アプリケーションにおいては、8行目及び9行目におい
て、パイプラインは、多数の関数"MathTask"の独立した
インスタンス生成を有する。図5乃至図6は、図7に示
されているように、ホストアプリケーションによって形
成されるパイプラインのために必要な各インスタンス生
成を形成するため、図7の8行目及び9行目においてホ
ストアプリケーションによって呼び出されるライブラリ
オブジェクト"MathTask"を示す。
【0056】図5に示されている"MathTask"関数の1乃
至6行目において、主要データストラクチュアが定義さ
れる。1乃至6行目に示されているように、データスト
ラクチュアは、二つのチャネル即ちチャネル1及びチャ
ネル2並びに逆方向又は上流リンクを含む。次に、7行
目乃至12行目において、第1及び第2のチャネルのそ
れぞれに対するこの関数に特定のデータストラクチュ
ア、"aval"及び"mval"が定義される。
【0057】次に、17行目で、チャネル1に対するデ
ータ要求、"avalue"及びチャネル2に対するデータ要
求、"mvalue"、並びに上流リンク「リンク」で、タス
ク"MathTask"に対してインスタンス生成手順が定義され
る。18乃至20行目において、チャネル1及びチャネ
ル2のそれぞれに対する変数"avalue"及び"mvalue"並び
にリンクが定義される。最後に、図6に示されているよ
うに、21行目において、関数"MathTask"のタスクを作
成し、RAM26のメモリブロックを割り当てる手順が
定義される。
【0058】次に、図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" を直ぐ下
流のパイプライン部分へリターンすることによって終了
する。
【0059】同様に、図6の38乃至47行目におい
て、チャネル2のデータ処理手順が定義される。唯一の
差は、図5の22行目で初期化されたチャネル1の処理
手順ではなく、図5の23行目で初期化されたチャネル
2の手順を使用する39行目で発生する。さらに、42
行目では、値"val" は第1のパイプライン部分に対する
「ヌル」データソースを補償するため、1にプリセット
される。45行目では、新しい値"val" は、図7の9行
目においてセットされた、図5の26行目で状態パラメ
ータ"mvalue"にセットされたチャネル2の被乗数によっ
て乗算される古い値"val" に等しい。
【0060】動作上、図7の8行目と9行目に示されて
いるホストアプリケーションは指示された回数だけ関
数"MathTask"を呼び出す。関数"MathTask"の第1のイン
スタンス生成はデータソースに接続されないヌルタスク
としてセットアップされる。再び、8行目と9行目をル
ープすることによって、関数"MathTask"の第2のインス
タンス生成がタスク"MathTask"の先のインスタンス生成
との逆方向リンクによって形成される。その後、図7の
8行目と9行目を介して各ループごとに、関数"MathTas
k"のさらなるインスタンス生成が形成される。図7に示
されているホストアプリケーションの8行目と9行目を
介して最終ループが完了すると、ホストアプリケーショ
ンからのタスク"MathTask"の最後の一つへの逆方向リン
クはセットされたままとなる。図4は、このようにして
初期化された3−セクションパイプラインを示す。
【0061】次いで、10行目と11行目において、ホ
ストアプリケーションは、関数"MathTask"の最後のイン
スタンス生成のチャネル1とチャネル2からデータを要
求する。最終タスクは回転し且つその直ぐ上流のタスク
からデータを要求する。これは、その"MathTask"の第1
のインスタンス生成がチャネル1とチャネル2を通して
のデータに対する要求を受け取るまで続く。図3はこの
タイプのデータフローの例を示す。ホストアプリケーシ
ョンは図7の10行目及び11行目でパイプラインを呼
び出した後、最後のパイプライン部分はそれがリンクさ
れるパイプライン部分の図6の34行目と44行目で各
チャネルを呼び出す。次いで、最後のパイプライン部分
は、各々の呼び出されたパイプライン部分が、その部分
がリンクされる上流のパイプライン部分を呼び出す。第
1のパイプライン部分に達すると、第1のパイプライン
部分はデータソース12からデータ要素を受け取るか、
又はこの場合、データ要素を自己発生する。第1のパイ
プライン部分は、次いで、上記のようにそれを呼び出し
たパイプライン部分へそのデータ要素をリターンする。
【0062】関数"MathTask"の第1のインスタンス生成
は、次いで、チャネル1とチャネル2に対して定義され
たデータ処理手順を実行する。第1のインスタンス生成
は、チャネル1に対しては0+1に等しい値1及びチャ
ネル2に対しては1×1に等しい値1を関数"MathTask"
の第2又はインスタンス生成へリターンする。関数"Mat
hTask"の各インスタンス生成は、引き続いて、第1の数
をチャネル1で保持された値へ加算し、次いでチャネル
2で保持された数を第2の数によって乗算する。図5乃
至図6に示されている例において、第1と第2の数は、
図7の9行目でパイプラインが作成された時に初期化さ
れた加数と被乗数である。しかしながら、数はダイナミ
ックに発生されることもできた。従って、チャネル1及
びチャネル2において処理されたデータは、ホストアプ
リケーションへ向けて下流へリップルする。これによっ
て、関数"MathTask"の最下流のインスタンス生成は、要
求されたデータをホストアプリケーションへ提供する。
【0063】CPU21が図7に示されているホストア
プリケーションを実行する時、それはホストアプリケー
ションをRAM26のメモリブロック26aに記憶す
る。ホストアプリケーションは、事実上、割り当て可能
なメモリブロック26a内に記憶されたデータストラク
チュアである。データストラクチュア自体は指定された
メモリの位置にわたるテンプレートを有しており、この
テンプレートはCPU21の制御動作のフロー(流れ)
を定義する。割り当てられたメモリブロック26aの第
1の部分において、種々のメモリ位置が定義され且つ/
又は変数として割り当てられる。メモリブロック26a
はまたホストアプリケーションの状態を定義する種々の
メモリ位置、及びホストアプリケーションによって要求
されたデータ又はホストアプリケーションによって処理
されたデータを記憶するためのバッファとして動作する
種々のメモリ位置を含む。
【0064】同様に、ホストアプリケーションが、関数
ライブラリ10を呼び出して、例えば、関数"MathTask"
をインスタンス生成する時、他のメモリブロック26b
がそのタスク又はパイプライン部分へ割り当てられる。
ホストアプリケーションのように、初期化されたパイプ
ライン部分は、実際に、割り当てられたメモリブロック
26bに対するテンプレートを備える割り当てられたメ
モリブロック26b内のデータストラクチュアである。
割り当てられたメモリブロックは、処理されるデータ、
データのタイプを定義するための種々のメモリ位置、こ
のタスクがそのデータを受け取る場所を示す手順ポイン
タ、そのタスクの状態を定義するデータを記憶する種々
のメモリ位置、及び関数"MathTask"の直ぐ上流のインス
タンス生成から受け取られた処理されたデータを記憶す
る一つ以上のデータバッファを記憶するバッファを有す
る。
【0065】割り当てられたメモリブロック26bは、
チャネル1とチャネル2に対するデータ処理動作を定義
するデータストラクチュアも含む。或いは、割り当てら
れたメモリブロック26b内のデータストラクチュアは
データ処理を実行するルックアップテーブル又は関数ラ
イブラリ10内の他の関数へのポインタを含むことがで
きる。概して、各タスクがメモリブロック26a乃至2
6fの内の一つへインスタンス生成され、割り当てられ
ると、各タスクは、データ入力、データ出力、タスク状
態、及びこのタスクによって実行される種々のデータ処
理手順に対して充分なバッファを自動的に割り当てる。
【0066】図9乃至図11は、この方法を実施する制
御ルーチンに対して汎用化されたフローチャートを示
す。図9に示されているように、スタートした後、ステ
ップS10において、ホストアプリケーションは単一処
理CPU21によって実行される。ステップS20にお
いては、コントローラが、一つのデータ処理パイプライ
ンがコンピュータ100の現在動作に必要とされるか否
かをチェックする。必要とされない場合、制御ルーチン
はステップS10へ戻る。
【0067】しかしながら、パイプラインが必要とされ
る場合、制御ルーチンはステップS30へ進み、このス
テップにおいて、関数ライブラリから関数を呼び出す。
次いで、ステップS40において、呼び出された関数は
第1のタスク又は第1のパイプラインを形成するために
初期化される。次いで、ステップS50において、デー
タ処理システム20は追加のパイプライン部分が必要か
否かをチェックする。必要とされる場合、制御ルーチン
は、ライブラリから次の関数を呼び出すためにステップ
S30へ戻る。従って、制御ルーチンは、追加のタスク
が要求されなくなるまで、ステップS30乃至S50を
ループする。この時点で制御ルーチンはステップS60
へ進む。
【0068】ステップS60において、パイプラインが
呼び出される。ステップS70において、パイプライン
は処理されたデータ要素をホストアプリケーションへリ
ターンする。次いで、ステップS80において、データ
処理システム20は追加のデータが必要か否かを決定す
る。追加のデータが必要な場合、制御ルーチンはパイプ
ラインを再び呼び出すためにステップS70へリターン
する。
【0069】しかしながら、追加データが必要とされな
い場合、制御ルーチンはステップS90へ進み、このス
テップにおいて、パイプラインは種々のパイプライン部
分へ割り当てられたメモリを割り当て解除することによ
って除去される。ステップS100において、ホストア
プリケーションの次のコマンドが実行される。次いで、
ステップS110において、データ処理システム20は
パイプラインがさらに必要とされるか否かを決定する。
必要な場合、制御ルーチンはステップS30へリターン
する。
【0070】しかしながら、この時点でパイプラインが
必要とされない場合、制御ルーチンはステップS120
へ進み、このステップにおいて、データ処理システム2
0がホストアプリケーションが終了したか否かを決定す
る。終了した場合、制御ルーチンは停止する。そうでな
い場合、制御ルーチンはステップS100へ戻る。
【0071】図10はインスタンス生成ステップS40
に対するフローチャートを示す。ステップS40でイン
スタンス生成ルーチンへエンターした後、制御ルーチン
は、タスクに対する主要データストラクチュアが作成さ
れるステップS200へ進む。次いで、ステップS21
0において、このタスクに対して特定であるデータスト
ラクチュアの部分が作成される。次いで、ステップS2
20においては、チャネルデータストラクチュアが作成
され、ステップS230においては、逆方向リンクが作
成される。順方向リンクが必要とされる場合、そのデー
タストラクチュアは定義されるが、順方向リンクがリン
クする下流タスクがまだ作成されていないので、それは
パイプラインが呼び出されるまで終了されない。リンク
はリンクされたパイプライン部分を呼び出すための手順
ポインタを有する。次いで、ステップS240におい
て、制御ルーチンはステップS40へ戻る。
【0072】図11はステップS60の呼出しルーチン
に対するフローチャートを示す。ステップS60からス
タートして、制御ルーチンはホストアプリケーションが
最後のパイプライン部分からデータを要求するステップ
S300へ進む。次いで、ステップS310において、
現在のパイプライン部分は次の上流パイプライン部分か
らデータを要求する。ステップS320においては、デ
ータ処理システム20は次のパイプライン部分が最初パ
イプライン部分であるか否かを決定する。そうでない場
合、制御ルーチンはステップS310へ戻る。
【0073】しかしながら、次のパイプライン部分が最
初のパイプライン部分である場合、制御ルーチンはステ
ップS330へ進む。ステップS330において、デー
タ処理システム20は第1のパイプライン部分が「ヌ
ル」部分であるか否かを決定する。そうでない場合、制
御ルーチンは最初パイプライン部分が外部ソースからデ
ータ要素を得るステップS340へ進む。第1のパイプ
ライン部分が「ヌル」部分である場合、制御ルーチン
は、第1のパイプライン部分がデータ要素を自己発生す
るステップS350へ進む。
【0074】いづれかのケースおいて、ステップS34
0又はステップS350のいづれかを経て、制御ルーチ
ンはステップS360へ進み、ここで第1のパイプライ
ン部分はデータを直ぐ下流のパイプライン部分へリター
ンする。ステップS370において、次のパイプライン
部分はデータを処理する。次いでステップS380にお
いて、次のパイプライン部分が最後のパイプライン部分
である場合、処理されたデータはステップS390でホ
ストアプリケーションへリターンされる。しかしなが
ら、次のパイプライン部分が最後のパイプライン部分で
ない場合、データは直ぐ下流の新しいパイプライン部分
へリターンされ、ステップS360へのループバックに
より示されるように、データ要素が処理される。この
「ルーピング」は最後のパイプライン部分迄進み、ステ
ップS390でデータがホストアプリケーションへリタ
ーンされるまで行なわれる。次いで制御ルーチンはステ
ップS60へ戻る。
【0075】本発明のデータ処理パイプラインの他の実
施例において、前もって定義された逆方向リンクを置換
するか又はこの逆方向リンクに追加される順方向リンク
が提供される。この場合、タスクライブラリのタスクの
内の一つの現在最下流タスクからの逆方向リンクが定義
された後で、直ぐ上流のタスクから最下流タスクまでの
順方向リンクが定義される。
【0076】或いは、順方向リンクのみが提供されなけ
ればならないこともある。しかしながら、この場合、パ
イプライン部分は、ホストアプリケーションから上流の
データソースへ向かって初期化される。パイプラインは
次いで下流のデータソースからホストアプリケーション
へ呼び出される。
【0077】さらなる実施例において、各タスクが二つ
又はそれより多くのデータ処理チャネルを有する時、単
一の順方向リンク又は単一の逆方向リンクをタスク間へ
提供するよりも、これらのチャネル自体が複数の順方向
及び/又は逆方向リンクによって共にリンクされる。こ
の場合、各チャネルは、あらゆるタスクの一つのあらゆ
る他の対応チャネルと逆方向又は順方向にリンクされ得
る。従って、第1のパイプライン部分のチャネルの内の
一つが第2のパイプライン部分の対応チャネルとリンク
されてもよいし、第1のパイプライン部分の他のチャネ
ルが第3のパイプライン部分の対応チャネルとリンクさ
れてもよい。
【0078】本発明のまた他の実施例において、特別な
「ファンイン(fan-in)」及び「ファンアウト(fan-ou
t )」のパイプライン部分が提供される。これらのパイ
プライン部分において、二つ又はそれより多くの上流の
パイプライン部分がファンイン分岐パイプライン部分を
用いて単一の下流のパイプライン部分とリンクされる。
同様に、単一上流パイプライン部分がファンアウト分岐
パイプライン部分を用いて二つ又はそれより多くの下流
パイプライン部分と接続される。
【0079】図12乃至図15に示されているように、
このシステムのアプリケーションにおいて、システム
は、走査ライン×走査ラインを基本にして画像を非常に
効率的に処理するストリーム指向のユニックス(登録商
標)パイプラインをエミュレートするために作成され
る。ユニックス(登録商標)パイプラインは、保持され
なければならないモジュラー性と容易なメンテナンスを
含むなど多数の利点を有する。しかしながら、ユニック
ス(登録商標)パイプラインは、多重処理プロセッサを
必要としたり、携帯性の欠如、ダイナミックな再構成の
それ自体の能力の欠如、及びタスクスケジューリング及
びデータフロー処理におけるシステムオーバーヘッドの
必要性などを含む多くの欠点も有している。
【0080】本発明による画像処理パイプラインにおい
て、画像は、二つの主要部分、ヘッダ及び画像本体に分
割される。ヘッダは、画像の状態、例えば、画像が表現
されるカラースペース、画像の配向、及びその大きさ、
例えば、走査ラインのレングス、走査ラインの数、イン
タレースファクタ、ピッチ又はその他を定義する。画像
本体は、各走査ラインがパイプラインを介してパスされ
るべき一つのデータ要素であるラスタ出力スキャナの形
式又はその他の実際の走査ラインデータを備える。この
タイプの画像処理パイプラインにおいて、画像本体は同
じ走査ラインストラクチュアの複数の反復を備える。
【0081】パイプライン部分はそれぞれ少なくとも三
つのチャネルを有する。第1のチャネルはヘッダ情報を
処理するために使用される。第2のチャネルは、走査ラ
イン毎のベースで画像本体を処理するために使用され
る。一つ以上の第2のチャネルタイプのチャネルがパイ
プラインによって提供される画像処理のタイプによって
提供される。第3のチャネルは要求されるクリーンアッ
プ動作を実行し、画像が完全に処理された時はパイプラ
イン部分を備えるデータストラクチュアへ割り当てられ
るメモリを解除するために使用される。画像処理はこの
第3のチャネルが呼び出されるまでに終了するので、第
3のチャネルを介して流れるデータフローのみがエラー
処理情報となる。第3のチャネルは、各上流のパイプラ
イン部分によって画像処理から発生したあらゆるエラー
コードをリターンさせ、次いでこの情報が一度リターン
されると、受け取る下流パイプライン部分によって上流
のパイプライン部分をダイナミックにデリートさせる。
また、あらゆる必要な外部ポート手順ポインタはこのデ
ータ処理パイプラインのパイプライン部分のデータスト
ラクチュア内に含まれる。
【0082】図12乃至図15に示された画像処理シス
テムにおいて、図17の汎用化されたタスク手段68
は、ヘッダチャネルとして第1のチャネル手段84a
と、画像処理チャネルとして第2のチャネル手段84b
と、エンドチャネルとして第3のチャネル手段84cを
備える。
【0083】上記のように、ホストアプリケーションが
処理された画像データが必要とされると決定した時、デ
ータ処理パイプラインが作成される。パイプラインは関
数ライブラリ10から種々のライブラリ関数を初期化す
ることによって作成される。画像処理システムにおい
て、これらの関数は、画像のカラーを反転する「反転
(invert)」、白黒画像をカラー化する「カラー化(co
lorize)」、例えば、画像内のエッジをソフトにするた
めに重畳フィルタをかけるフィルタ、画像本体を拡大す
る「拡大(enlarge )」、及び画像本体を縮小する「縮
小(reduce)」を含む。これは例示を目的としているに
すぎず、全てを網羅してはいない。例えば、「反転(in
vert)」は黒を白へ又はその逆へ変換することができ
る。さらに、反転は、カラー画素を、例えば、赤からシ
アンへ、緑をマゼンタへ、及び青を黄へ変換することも
できる。
【0084】データ処理パイプラインによって実行され
るデータ処理の例が図12によって説明されている。こ
の例はカラー画像スキャナによって提供されたカラー画
像データブロックのデータ処理を説明している。この例
において、パイプラインは其れ自体をダイナミックに再
構成して検出されたエラーを克服することが可能であ
る。
【0085】この例において、図12に示されているよ
うに、ホストアプリケーションは、関数ライブラリから
データ処理関数をインスタンス生成してデータ処理パイ
プラインを作成して4色のカラープリンタ上のホストア
プリケーションによってプリントされる4色のカラー画
像を受け取り、処理する。パイプラインは次いでホスト
アプリケーションによって呼び出されてカラースキャナ
から画像のヘッダデータを入力する。ヘッダに対する要
求はそれが第1のパイプライン部分へ達するまで、パイ
プラインのチャネル1へ逆上って移動する。第1のパイ
プライン部分はスキャナからヘッダデータを得て、次い
でそれをチャネル1の下流へリターンする。
【0086】各パイプライン部分がヘッダを受け取る
と、各パイプライン部分はそれが受け取る画像データを
正確に処理できることを確実とするためにこの受け取ら
れたヘッダをチェックし、次いでパイプライン部分はこ
のパイプライン部分が画像データに対して行うことを反
映するようにヘッダを変更する。次いでパイプライン部
分は変更されたヘッダデータを隣接の下流パイプライン
部分へ送る。しかしながら、パイプライン部分がそれが
受け取る画像データが適切に処理されることができない
と決定した場合、パイプライン部分はダイナミックにパ
イプラインを再構成してこの問題を解決する。
【0087】カラースキャナが4色のカラースキャナで
あると仮定してパイプラインが作成されるが、カラース
キャナが4色のカラースキャナではなく3色のカラース
キャナーであることがわかった場合、このスキャナから
受け取られたカラー画像に対するヘッダデータは画像が
3色のカラー画像であることを示す。スキャナ及びプリ
ンタが元来4色のカラーデータを使用するものと仮定し
てパイプラインが設定されているのでエラーが発生す
る。この場合、潜在的なエラーはパイプライン部分がヘ
ッダデータを処理する時に検出される。
【0088】エラーを検出するパイプライン部分は、そ
の直ぐ上流に新しいパイプライン部分をインスタンス生
成し、追加することによりパイプラインを自動的に再構
成する。新しいパイプライン部分は画像データのカラー
スペースを3色から4色へ変更する。同時に、エラーを
検出するパイプライン部分は新しいパイプライン部分の
位置を反映するようにリンクを変更する。次いでヘッダ
データが再実行される。新しいパイプライン部分が画像
のカラースペースを4色のカラー画像データへ変更する
ことを反映するようにヘッダを変更した後で、このエラ
ーを検出したパイプライン部分はそれが画像データを正
確に処理することができること決定する。
【0089】ヘッダが完全に処理され、ホストアプリケ
ーションへリターンされると、ホストアプリケーション
はパイプラインを繰り返し呼び出して、画像本体を入力
する。パイプラインが呼び出される度に画像本体の一つ
の走査ラインが得られ、処理され、次いで処理されたデ
ータセットとしてホストアプリケーションへリターンさ
れる。このヘッダから、ホストアプリケーションは画像
本体の中にいくつの走査ラインがあるかを知り、これに
よりホストアプリケーションは、画像本体全体を入力し
て処理するのに呼出しサイクルが何個必要かをも知るこ
とになる。他のすべての点において、パイプラインは概
して上記のように動作する。一旦、全体の画像本体が得
られ、処理され、次いでホストアプリケーションへリタ
ーンされると、ホストアプリケーションは第3のチャネ
ルを呼び出して、パイプラインをシャットダウンする。
図13は、このパイプラインの実行を示すフローチャー
トである。
【0090】上記のパイプラインシステムにおいて、タ
スクがインスタンス生成された時、タスクは実際にRA
Mメモリの部分内に配設され、いくつかの変数及び処理
パラメータがプリセット(事前設定)される。このタス
クはタスクがヘッダデータを処理するまでは「初期化」
されない。上記のように、データパイプラインによって
処理された第1の情報はヘッダデータであり、このヘッ
ダデータはパイプラインのチャネル1を下流へリップル
する。タスクが最初に直ぐ上流のタスクからヘッダデー
タを受け取る時、タスクは固有の初期化手順を終了すこ
とが可能であり、この手順において全ての変数値及び処
理パラメータが最終的にセットされる。
【0091】上記のように、パイプライン部分がヘッダ
データを解析し、それがデータを処理するために必要と
されないと決定する場合、パイプライン部分はそれ自体
をパイプラインから短絡するステップを取ることができ
る。この短絡手順は少なくとも二つの異なる方法で発生
することができる。第1の例において、パイプライン部
分は画像データをそれがリンクされる上流のタスクから
受け取り、この画像データを次の変更されない下流のタ
スクへ単純にパスする。第2の例においては、逆方向及
び順方向の両リンクが提供された場合、不必要なタスク
は外部手順を使って、直ぐ上流のタスクがその画像デー
タを直ぐ下流のタスクへパスすることができるようにパ
イプラインのリンクを変更することができる。これは、
リンクポインタが不必要なタスクの直ぐ上流にあるタス
クを指し示すように、不必要なタスクをそれがリンクさ
れる直ぐ下流のタスクのリンクポインタを変更させるこ
とによって達成される。
【0092】上記の短絡方法のいづれにおいて、不必要
な処理時間及びコンピュータ資源が不必要なタスクをイ
ンスタンス生成するのに当てられる。また、不必要なタ
スクがメモリ内に残り、変更しないままで画像データを
単純にパスし続けるような第1の短絡方法が使用された
場合、さらなる処理時間が掛かる追加の不必要な処理ス
テップが発生する。これらの欠陥を克服する本発明の他
の実施例が以下に記述される。
【0093】本発明の他の実施例において、これらのタ
スク又はこれらのパイプライン部分の各々は第2及び第
3の処理チャネルを含むにすぎない。ヘッダデータはホ
ストアプリケーションによって最初にインスタンス生成
された時、タスクの各々によって読み取られる。インス
タンス生成時にタスクがそれがデータを処理するために
必要とされないと決定した場合、このインスタンス生成
手順は取り消され、ホストアプリケーションは次のタス
クへ移動する。この実施例において、不必要なタスクは
開始されるにあたってインスタンス生成されない。これ
によって、システムの資源は、不必要なタスクをインス
タンス生成したり、不要な処理ステップを実行したりす
ることによって無駄にされることがない。
【0094】この他の実施例の汎用化されたタスク手段
83が図18に説明される。汎用化されたタスク手段8
3は他の実施例によるパイプラインのタスク手段のいづ
れかであってもよい。
【0095】汎用化されたタスク手段83は、リンク手
段82、データチャネル手段85(複数の分離データチ
ャネル85a、85b、その他を有することができ
る)、データ処理手段86、データ解析手段88、エラ
ーコード発生手段92、タスク状態手段90、再構成手
段96、外部ポート手段94、及びデータ入手/発生手
段98を備える。これらの手段の各々は、図17に示さ
れた汎用化されたタスク手段に関して前もって記述され
ている。図18に示された汎用化されたタスク手段83
は、データソースからヘッダを得るか又はヘッダを発生
するためのヘッダデータ入手/発生手段87、この入手
/発生されたヘッダデータに基づいてタスクを初期化す
る初期化手段89、タスクが上流タスクから受け取られ
るべきデータを処理することが可能でるか否かを決定す
るために入手/発生されたヘッダデータを解析するヘッ
ダデータ解析手段93と、パイプラインを再構成する再
構成手段95、タスクがそれが上流タスクから受け取ら
れるべきデータを処理するために必要とされないと決定
した時にインスタンス生成処理を取り消すための自己消
去手段99、及び発生されたエラーコードを収集し、パ
イプラインをシャットダウンするエンドチャネル手段9
7を含む。汎用化されたタスク手段83は、パイプライ
ンの再構成を容易にするようにタスクの状態又はリンク
へのアクセスを得るためにパイプラインの他のタスクに
よって呼び出し可能な外部手順を発生する外部手順発生
手段91を含むことができる。特定のインスタンス生成
されたタスクはこれらの基本的な特徴の組み合わせを含
むことができ、また上記に説明された特徴の全てが本発
明を実行するのに必ずしも必要ではないことが当然理解
されよう。
【0096】他の実施例によるパイプラインが図14及
び図18に説明されている。ホストアプリケーションが
パイプラインを作成しはじめた時、それは第1のパイプ
ライン部分40aをインスタンス生成し、第1のパイプ
ライン部分40aはまもなく、データソース12からヘ
ッダデータを読み取るか又はヘッダデータを発生する。
第1のパイプライン部分40aはこのヘッダデータに従
って全てのその変数を初期化し、パラメータを処理す
る。第1のパイプライン部分40aはまた外部手順発生
手段91を用いて外部手順を発生し、この外部手順発生
手段91は他のパイプライン部分が第1のパイプライン
部分40aからヘッダデータを直接読み取るのを可能に
する。第1のパイプライン部分40aがヘッダデータを
処理し、それ自体を初期化し、外部手順を発生した後
で、ホストアプリケーションは第2の(中間)パイプラ
イン部分40bをインスタンス生成する。
【0097】第2のパイプライン部分40bは、第1の
パイプライン部分40aによって設定された外部手順を
呼び出して、第1のパイプライン部分40aからヘッダ
データを得る。第2のパイプライン部分40bはヘッダ
データを解析してそれがデータ処理パイプラインにおい
て必要とされるか否かを決定する。第2のパイプライン
部分40bがその画像処理が必要とされることを決定し
た場合、それはヘッダデータに基づいて全てのその変数
及び処理パラメータを初期化し、それが実行するデータ
処理を反映するようにヘッダデータを処理する。第2の
パイプライン部分40bは他のパイプライン部分がその
処理されたヘッダデータを読み取るのを可能にするよう
にその外部手順発生手段91を用いて新しい外部手順を
発生する。
【0098】他の実施例において、パイプライン部分が
その画像処理ステップが画像処理パイプラインのために
必要とされないと決定した場合、このパイプライン部分
はそれ自体をメモリから削除し、ホストアプリケーショ
ンへ戻るように制御(コントロール)をリターンする。
次いでホストアプリケーションは先へ進み、次のパイプ
ライン部分をインスタンス生成する。この結果、不必要
なパイプライン部分をインスタンス生成することでメモ
リが無駄にされることがなく、またデータ処理ステップ
を実行しないパイプライン部分を介して画像データを渡
すような処理時間のロスが回避される。
【0099】例えば、縮小/拡大パイプライン部分はホ
ストアプリケーションによってインスタンス生成され
て、上流のパイプライン部分から画像データを受け取
り、この受け取られた画像を、1000×1000画素
の画像を形成するように、必要に応じて縮小又は拡大す
る。パイプライン部分のインスタンス生成の間、この部
分は、隣接している上流パイプライン部分によって作成
された外部手順を呼び出すことによって隣接している上
流パイプライン部分からヘッダデータを得る。このヘッ
ダデータが上流パイプライン部分によって提供されよう
とする画像データが既に1000×1000画素である
ことを示した場合、拡大/縮小パイプライン部分は必要
とされない。従って、拡大/縮小パイプライン部分はメ
モリからそれ自体を削除し、ホストアプリケーションは
先へ進んで次のパイプライン部分をインスタンス生成す
る。
【0100】最後のパイプライン部分40cがインスタ
ンス生成された時、この最後のパイプライン部分40c
は、ホストアプリケーションが最後のパイプライン部分
40cから処理されたヘッダデータを読み取るのを可能
にする外部手順を発生する。このホストアプリケーショ
ンは外部手順を呼び出すことによってヘッダデータを得
て、その最初のデータに最後のパイプライン部分40c
を呼び出させて、データの処理を開始する。本発明の他
の実施例に対して上記に説明したように、データへの要
求は第1のパイプライン40aまでリップルされ、この
第1のパイプライン40aはデータソース12から画像
データの第1のラインを得る(又は画像データのライン
を発生する)、第1のパイプライン40aは画像データ
を隣接の下流パイプライン部分へリターンし、この処理
された画像データはそれがホストアプリケーションへ達
するまでパイプライン部分の各々を介して下流へリップ
ルする。
【0101】特定の画像に対する画像データの全てがホ
ストアプリケーションによって受け取られた後で、この
ホストアプリケーションはエンドチャネル手段97を使
用してあらゆるエラーコードを収集し、パイプライン部
分の各々に使用されたメモリを割当て解除することによ
ってパイプラインをシャットダウンする。
【0102】この他の実施例において、必要とされない
パイプライン部分が決してインスタンス生成されないこ
とだけでなく、パイプライン部分の各々はインスタンス
生成の直後に初期化される。これによってこのパイプラ
インを用いてパイプラインをセットアップし、画像デー
タを処理するのに必要とされる時間をさらに節約するこ
とができる。
【0103】また、他の実施例において、パイプライン
部分が上流のパイプライン部分から受け取られたヘッダ
データを解析し、それが上流のパイプライン部分から受
け取る画像データを処理することが不可能であると決定
した場合、パイプライン部分は新しいパイプライン部分
をインスタンス生成し、この新しいパイプライン部分を
それ自体と元の上流パイプライン部分との間に挿入する
ことができる。この処理は他の実施例に対して上記に説
明した処理と類似している。しかしながら、この他の実
施例において、新たに挿入されたパイプライン部分は、
直ぐ上流のパイプライン部分への外部手順呼び出しを介
して直接に直ぐ上流のパイプライン部分から又は新しい
パイプライン部分を作成したパイプライン部分から、ヘ
ッダデータを受け取らなければならない。いづれの場合
においても、新たに作成されたパイプライン部分は、ヘ
ッダデータを解析し、その変数を初期化し、パラメータ
を処理し、このヘッダデータを処理し、他のパイプライ
ン部分がその処理されたヘッダデータを得るのを可能に
する外部手順をセットアップし、次いで新たに作成され
たパイプライン部分を作成したパイプライン部分へ戻る
ようにコントロールをリターンする。この新しいパイプ
ライン部分を作成したパイプライン部分は、新しいパイ
プライン部分から処理されたヘッダデータを得て、この
新しいパイプライン部分がそれに提供された画像データ
を処理できることを確実とする。可能である場合、パイ
プラインの構成は通常に進行する。この新しいパイプラ
インが画像データを処理することが未だに不可能である
場合、それはまた他の新しいパイプライン部分を挿入す
ることができる。
【0104】例えば、隣接している上流パイプライン部
分から4色のカラー画像データを要求する回転パイプラ
イン部分がインスタンス生成されていると仮定する。イ
ンスタンス生成の間、回転パイプライン部分は外部手順
を呼び出して上流パイプライン部分からヘッダデータを
得る。このヘッダデータが、回転パイプライン部分へパ
スされている画像データが3色のカラー画像データであ
ることを示した場合、回転パイプライン部分はこの画像
データを処理することができないことが分かる。この問
題を解決するため、回転パイプライン部分は、画像デー
タを3色カラー画像データから4色カラー画像データへ
変更する新しい「カラー変更」パイプライン部分をイン
スタンス生成させる。この新しいカラー変更パイプライ
ン部分は上流パイプライン部分へリンクされ、この新し
いカラー変更パイプライン部分は上流のパイプライン部
分からそのインスタンス生成の一部としてヘッダデータ
を得て、処理する。この新しいカラー変更パイプライン
部分は、次いで、他のパイプライン部分が処理されたデ
ータをそこから得るのを可能とするように外部手順を発
生し、またそれはコントロールを回転パイプライン部分
へ戻るようにリターンする。この回転パイプライン部分
は次いでヘッダデータを新しいカラー変更パイプライン
部分から呼び出し、それ自体の初期化を終了する。
【0105】インスタンス生成されているパイプライン
部分はまたそれ自体をもっと効率的な異なるパイプライ
ン部分と置き換える能力が提供され得る。例えば、縮小
/拡大パイプライン部分が、上流のパイプライン部分か
らあらゆるサイズの画像データを受け取り、この画像デ
ータをデータを1000×1000画素の画像データへ
変換するようにインスタンス生成されていると仮定す
る。この縮小/拡大パイプライン部分がヘッダデータを
上流のパイプライン部分から得る時、この縮小/拡大パ
イプライン部分はそれが受け取る画像データが既に50
0×500画素の画像データであることを発見する。こ
の縮小/拡大パイプライン部分はまた、整数によって画
像のサイズをかけ算するように指定された関数ライブラ
リ内の異なるデータ処理関数は画像データをより効率的
に処理して、1000×1000画素の画像データを生
成することができる。この例において、縮小/拡大パイ
プライン部分は整数関数によるかけ算をインスタンス生
成させ、また上流のパイプライン部分とリンクさせ、そ
れ自体をメモリから削除させる。この結果、より迅速で
より効率的なデータ処理パイプラインが得られる。
【0106】
【発明の効果】本発明は単一処理環境において多重処理
パイプラインをエミュレートすることによって大容量の
データブロックを処理するシステム及び方法を提供す
る。
【図面の簡単な説明】
【図1】本発明のシステムのブロック図を示す図であ
る。
【図2】本発明のパイプラインのブロック図を示す図で
ある。
【図3】本発明のパイプライン内のデータの流れを示す
ブロック図である。
【図4】適例のデータ処理プログラムのためにリンクさ
れたパイプラインを示す図である。
【図5】サンプルタスク用適例コードリスティングを示
す図である。
【図6】サンプルタスク用適例コードリスティングを示
す図である。
【図7】パイプラインを形成するためにライブラリから
タスクを呼び出す適例ホストアプリケーションのための
コードリスティングを示す図である。
【図8】図4に示され、図5乃至図7にリスト作成され
ているパイプラインの出力のリスティングを示す図であ
る。
【図9】本発明を実行するルーチンを示すフローチャー
トである。
【図10】関数初期化ルーチンを示すフローチャートで
ある。
【図11】ルーチンを呼び出し、処理するフローチャー
トである。
【図12】データ処理パイプラインを示す図である。
【図13】図12のパイプラインを形成し、ランするフ
ローチャートである。
【図14】データ処理パイプラインの第2の実施例を示
す図である。
【図15】図14のデータ処理パイプラインを形成し、
ランするフローチャートである。
【図16】本発明のデータ処理システムを示すブロック
図である。
【図17】本発明の汎用化されたタスクを示すブロック
図である。
【図18】本発明の第2の汎用化されたタスクを示すブ
ロック図である。
【符号の説明】
10 タスクライブラリ 12 データソース 13 ディスプレイ 16 キーボード 18 マウス 19 ディスクドライブ 20 単一処理コントローラ 22 I/Oインターフェース 100 コンピュータ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 データユニットのパイプラインデータ処
    理のためのデータ処理システムであって、前記データユ
    ニットがヘッダ部分と本体部分を有し、前記本体部分が
    複数のデータセットを有し、 単一タスキングプロセッサと、 メモリと、 前記メモリのブロックを割り当てるメモリ管理手段と、 データ処理関数を記憶するライブラリ手段と、 データ処理パイプラインを作成し、前記パイプラインか
    ら処理されたデータを得るホストアプリケーション手段
    と、 を備え、 前記ホストアプリケーション手段が、 リンクされたデータ処理タスクのデータ処理パイプライ
    ンを作成するインスタンス生成手段を有し、各タスクが
    メモリのメモリブロック内に記憶され、各タスクが前記
    ライブラリ手段からのデータ処理関数のインクスタンス
    生成であり、 前記データ処理パイプラインからデータセットを要求す
    る呼び出し手段を有し、 前記データ処理パイプラインの各タスクが、 前記パイプライン内の他のタスク、データソース、及び
    前記ホストアプリケーションの内の少なくとも一つへ前
    記タスクをリンクするリンク手段と、 前記タスク間へデータセットをパスするデータチャネル
    手段と、 前記タスク内部からのデータを他のタスク及び前記ホス
    トアプリケーションの内の少なくとも一つへ提供する外
    部ポート手段と、 データソース、他のタスク、及びヘッダデータジェネレ
    ータの内の一つからヘッダデータを得るヘッダデータ入
    手手段と、 前記ヘッダデータに基づいて前記タスクを初期化する初
    期化手段と、 他のタスク及び前記ホストアプリケーションの内の少な
    くとも一つによって呼び出し可能な外部手順を発生する
    外部手順発生手段であって、前記外部手順が前記タスク
    内部からのデータを前記外部手順を呼び出す前記ホスト
    アプリケーション又はタスクへ提供する外部手順発生手
    段と、 データソース、他のタスク、及びデータセットジェネレ
    ータの内の一つからデータセットを得るデータ入手手段
    と、 を有することよりなるデータ処理システム。
  2. 【請求項2】 単一タスキング環境においてデータユニ
    ットをパイプラインデータ処理する方法であって、前記
    データユニットがヘッダ部分と本体部分を有し、前記本
    体部分が複数のデータセットを有し、 単一タスキング環境でホストアプリケーションをランす
    るステップと、 前記ホストアプリケーションを用いてデータ処理パイプ
    ラインを作成するステップであって、前記データ処理パ
    イプラインは処理されたデータセットを前記ホストアプ
    リケーションへ提供すると共に第1のタスクと少なくと
    も一つの追加のタスクを備え、前記第1の及び前記少な
    くとも一つの追加のタスクが共にリンクされると共にメ
    モリのブロック内に記憶され、前記ホストアプリケーシ
    ョンが前記パイプライン内の最下流のタスクへリンクさ
    れる、データ処理パイプライン作成ステップと、 前記ホストアプリケーションを用いて外部手順を呼び出
    し、前記外部手順が前記パイプラインの前記最下流のタ
    スクから処理されたヘッダデータを前記ホストアプリケ
    ーションに提供するステップと、 前記ホストアプリケーションを用いて前記パイプライン
    を呼び出し、前記パイプラインから処理されたデータを
    得るステップと、 を備えるパイプラインデータ処理方法。
JP11686895A 1995-03-10 1995-05-16 パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法 Pending JPH08263306A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/402,225 US5701479A (en) 1993-06-15 1995-03-10 Pipelined image processing system for a single application environment
US402225 1995-03-10

Publications (1)

Publication Number Publication Date
JPH08263306A true JPH08263306A (ja) 1996-10-11

Family

ID=23591053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11686895A Pending JPH08263306A (ja) 1995-03-10 1995-05-16 パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法

Country Status (1)

Country Link
JP (1) JPH08263306A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006318466A (ja) * 2005-05-11 2006-11-24 Sharp Corp 画像形成システム、画像データ処理方法、および記録媒体
GB2435335A (en) * 2006-02-21 2007-08-22 Sony Computer Entertainment Inc Multi-processor emulation by a multi-processor
JP2007527559A (ja) * 2003-04-03 2007-09-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ランタイム構成可能仮想ビデオパイプライン
JP2010039511A (ja) * 2008-07-31 2010-02-18 Toshiba Corp パイプライン処理装置、パイプライン処理方法及びパイプライン制御プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527559A (ja) * 2003-04-03 2007-09-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ランタイム構成可能仮想ビデオパイプライン
JP2006318466A (ja) * 2005-05-11 2006-11-24 Sharp Corp 画像形成システム、画像データ処理方法、および記録媒体
JP4485485B2 (ja) * 2005-05-11 2010-06-23 シャープ株式会社 画像形成システム、ジョブ処理方法
GB2435335A (en) * 2006-02-21 2007-08-22 Sony Computer Entertainment Inc Multi-processor emulation by a multi-processor
JP2010039511A (ja) * 2008-07-31 2010-02-18 Toshiba Corp パイプライン処理装置、パイプライン処理方法及びパイプライン制御プログラム

Similar Documents

Publication Publication Date Title
JP3617851B2 (ja) パイプライン化データ処理方法
JP3617852B2 (ja) 多重処理パイプラインデータ処理エミュレート方法
US5752068A (en) Mesh parallel computer architecture apparatus and associated methods
Rumbaugh A data flow multiprocessor
US7171548B2 (en) Method for managing resources in a reconfigurable computer having programmable logic resources where automatically swapping configuration data between a secondary storage device and the programmable logic resources
US8074211B2 (en) Computer program, multiprocessor system, and grouping method
US6336209B1 (en) Information processing system that processes portions of an application program using programmable logic circuits
Singh et al. A template-based approach to the generation of distributed applications using a network of workstations
DE202008017916U1 (de) Virtuelle Architektur und virtueller Befehlssatz für die Berechnung paralleler Befehlsfolgen
US5701479A (en) Pipelined image processing system for a single application environment
Gealow et al. System design for pixel-parallel image processing
Di Cosmo et al. Skeletal parallel programming with ocamlp3l 2.0
JPH08263306A (ja) パイプラインデータ処理用データ処理システムとパイプラインデータ処理方法
US6594814B1 (en) Dynamic pipelining approach for high performance circuit design
CN113326137B (zh) 深度学习计算方法、装置、芯片及介质
JPH10222381A (ja) データ処理システム
Uchida Inference machine: From sequential to parallel
Orlando et al. COLTHPF, a Coordination Layer for HPF Tasks
Kaiser et al. MYMPI-MPI programming in Python.
Claret et al. Experiments in the parallel computation of 3D convex hulls
Salama et al. Software experience with concurrent c and lisp in a distributed system
Eckle et al. Integrating transputer arrays within a data-ow architecture: Applications in real-time image processing
Johnson et al. High resolution interactive volume rendering on the cray t3d
Carpenter The Lawd is smilin'through the do'.[By] John Alden Carpenter. Jan. 20th'18.
Ding Exploiting Hardware Abstraction for Parallel Programming Framework: Platform and Multitasking

Legal Events

Date Code Title Description
A977 Report on retrieval

Effective date: 20050728

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20050830

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Effective date: 20051122

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051220