JPH10222381A - Data processing system - Google Patents

Data processing system

Info

Publication number
JPH10222381A
JPH10222381A JP1719798A JP1719798A JPH10222381A JP H10222381 A JPH10222381 A JP H10222381A JP 1719798 A JP1719798 A JP 1719798A JP 1719798 A JP1719798 A JP 1719798A JP H10222381 A JPH10222381 A JP H10222381A
Authority
JP
Japan
Prior art keywords
data
pipeline
pipeline section
task
host application
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
JP1719798A
Other languages
Japanese (ja)
Inventor
Lee Benable Dennis
リー ベナブル デニス
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/790,417 external-priority patent/US5995996A/en
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of JPH10222381A publication Critical patent/JPH10222381A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To enable host application to process a large data block by emulating a multiprocessing pipeline in single processing environment by forming a pipeline so as to obtain data from a data source. SOLUTION: The host application 50 when deciding that processed data from the data source 66 are necessary generates a data processing pipeline 80 and makes a call by a calling means 54. To generate this pipeline 80, an instance generating means 52 accesses a library means 10, and generates an instance-generated function or task from an uninitialized function and stores it in a block of a memory. This instance-generated task is linked with the host application means 50 or another task. Then the data processing pipeline 80 processes the raw data from the data source 66 into usable format and sends it to the host application 50.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、単一アプリケーシ
ョン環境において、多重(マルチ)処理環境をエミュレ
ートすることによる、画像ヘッダ及び画像データを含む
画像の処理に関する。特に、本発明は、ホストアプリケ
ーションとデータソースとの間又はホストアプリケーシ
ョンとデータユーザとの間でリンクされてUNIX(登
録商標)のようなパイプラインデータ構造をエミュレー
トするストリーム指向データ処理構造を生成することが
できる、事前定義されたオブジェクト又はデータ構造の
ライブラリを用いたオブジェクト指向システムに関す
る。
The present invention relates to the processing of images, including image headers and image data, by emulating a multiple processing environment in a single application environment. In particular, the present invention creates a stream-oriented data processing structure that is linked between a host application and a data source or between a host application and a data user to emulate a pipeline data structure such as UNIX. Object-oriented system using a library of predefined objects or data structures.

【0002】[0002]

【従来の技術】実際の多重処理環境においてデータ処理
パイプラインを使用することはよく知られている。既知
の多重処理環境の例には、多重プロセッサシステム、及
び単一のプロセッサが実際の多重処理をサポートするこ
とができる高水準システムの両方が含まれる。UNIX
(登録商標)オペレーティングシステムは、このような
多重処理システムにおいてよく使用される。
BACKGROUND OF THE INVENTION The use of data processing pipelines in a real multiprocessing environment is well known. Examples of known multiprocessing environments include both multiprocessor systems and high-level systems in which a single processor can support actual multiprocessing. UNIX
The ® operating system is often used in such multi-processing systems.

【0003】このような多重処理環境において、画像処
理、データベース処理、又はスプレッドシート(表計
算)処理に関連するような大容量の高度に構造化された
データブロックを処理するには、データ処理パイプライ
ンが非常に有効である。このようなデータブロックは一
般には1つのヘッダ及び1つ以上のデータライン又はデ
ータセットを含む。ヘッダはデータの型、その特徴、及
びどれくらい多くのデータセットがデートブロック内に
あるのかを示す。このようなデータブロックに対して作
業する場合、そのデータがホストアプリケーションによ
って使用されることができるようになるまでには、デー
タブロック内の各データセットに対して様々なデータ処
理操作を行わなければならない。更に、これらの様々な
データ処理操作は特定の順序で行われる。
In such a multiprocessing environment, processing large volumes of highly structured data blocks, such as those associated with image processing, database processing, or spreadsheet processing, requires a data processing pipe. The line is very effective. Such a data block typically includes one header and one or more data lines or data sets. The header indicates the type of data, its characteristics, and how many data sets are in the date block. When working on such data blocks, various data processing operations must be performed on each data set within the data block before the data can be used by the host application. No. Further, these various data processing operations are performed in a particular order.

【0004】多重処理環境において、データ処理パイプ
ラインはデータブロックを処理するための非常に効率的
な方法を提供する。これらのデータ処理パイプラインで
は、個々の各データ処理操作はそのパイプラインのセク
ションとして定義される。各セクションは、そのセクシ
ョンに隣接する片側又は両側のセクション(上流及び下
流のセクション)にリンクされる。こうしてデータ処理
パイプラインは、ホストアプリケーションとデータソー
スとの間又はホストアプリケーションとデータユーザと
の間でリンクされたパイプラインセクションのチェーン
(鎖)を形成する。多くの独立したプロセッサを有する
コンピュータでは、各パイプラインセクションはこれら
のプロセッサの内の1つに対応する。この場合、各プロ
セッサは独立して作業し、そのコンピュータのオペレー
ティングシステムがプロセッサ間のデータフロー及びメ
モリの割当てを制御する。これによりデータは効率的に
処理されるが、プロセッサ及びメモリを制御するのに必
要なオーバーヘッドは、システムリソースの大部分を消
費する。
[0004] In a multi-processing environment, data processing pipelines provide a very efficient way to process data blocks. In these data processing pipelines, each individual data processing operation is defined as a section of the pipeline. Each section is linked to one or both sections (upstream and downstream sections) adjacent to that section. Thus, the data processing pipeline forms a chain of pipeline sections linked between the host application and the data source or between the host application and the data user. In computers with many independent processors, each pipeline section corresponds to one of these processors. In this case, each processor works independently and the computer's operating system controls the data flow and memory allocation between the processors. This allows data to be processed efficiently, but the overhead required to control the processor and memory consumes most of the system resources.

【0005】同様に、多くの異なる独立した処理操作又
はプロセスを同時に実行することができる単一のプロセ
ッサを有するコンピュータでは、各パイプラインセクシ
ョンはこの独立して動作するプロセスの内の1つに対応
する。この場合、オペレーティングシステムは各プロセ
スの実行時間、各プロセスとメモリとの間のデータフロ
ー、及びメモリ割当てを割り当てる。この場合、各処理
が実行される度に各プロセス及びそのデータがそのプロ
セッサの内外にスワップインされたりスワップアウトさ
れたりしなければならないため、コンピュータを制御す
るのに必要なオーバーヘッドは更に多くのシステムリソ
ースの部分を消費する。更に、これらのプロセスはオペ
レーティングシステムを通して通信するので、パイプラ
インを動的に変更することは不可能でないにしろ難し
い。
Similarly, in a computer having a single processor capable of simultaneously executing many different and independent processing operations or processes, each pipeline section corresponds to one of the independently operating processes. I do. In this case, the operating system allocates the execution time of each process, the data flow between each process and the memory, and the memory allocation. In this case, each process and its data must be swapped in and out of the processor each time the process is executed, thus increasing the overhead required to control the computer. Consume part of the resource. Furthermore, as these processes communicate through the operating system, it is difficult, if not impossible, to change the pipeline dynamically.

【0006】一般的に、パイプラインのためのデータソ
ースには、金融情報を提供するスプレッドシート(表計
算)、データベース情報を提供するデータベースファイ
ル内のレコード(記録)、オリジナル文書(原稿)から
通常のイメージスキャナにより生成された画像データ、
及びコンピュータ生成画像が含まれる。ホストアプリケ
ーションは、処理された金融データから円グラフや棒グ
ラフ等を生成するためのグラフィックスプログラムや、
処理されたデータベースのデータを用いる在庫調査、会
計、又は組合せプログラム、又は処理された画像データ
から画像を形成するための画像形成装置であってもよ
い。
Generally, data sources for pipelines include spreadsheets (spreadsheets) that provide financial information, records (records) in database files that provide database information, and original documents (original documents). Image data generated by the image scanner of
And computer generated images. The host application includes a graphics program for generating pie charts, bar charts, etc. from the processed financial data,
It may be an inventory survey, accounting, or combination program using data of the processed database, or an image forming apparatus for forming an image from the processed image data.

【0007】特定のデータソース、又は基本のホストア
プリケーションに関係なく、データ処理パイプラインの
第一セクション即ち最上流セクションがたいていそのパ
イプラインのデータソースである。或いは、この第一パ
イプラインのデータソースが第二パイプラインであって
もよい。この場合、この第二パイプラインの特別分岐し
た即ち”ファンアウト”したパイプラインセクションを
使用して、第一パイプラインセクション、及び第二パイ
プラインセクションの下流のセクションの両方にデータ
を供給することができる。どちらの場合でも、第一パイ
プラインセクションはデータソースからそのパイプライ
ンのためのデータ要素を得て、このデータ要素をすぐ下
流の第二パイプラインセクションで使用できるようにす
る。この第二パイプラインセクションは第一パイプライ
ンセクションからデータ要素を受け取り、このデータ要
素を処理してこれを次のすぐ下流の第三パイプラインセ
クションへと下流に渡す。
[0007] Regardless of the particular data source, or the underlying host application, the first or most upstream section of a data processing pipeline is often the data source for that pipeline. Alternatively, the data source of the first pipeline may be the second pipeline. In this case, using a specially branched or "fan-out" pipeline section of this second pipeline to feed data to both the first pipeline section and a section downstream of the second pipeline section. Can be. In either case, the first pipeline section gets the data element for that pipeline from the data source and makes this data element available to the second pipeline section immediately downstream. The second pipeline section receives the data element from the first pipeline section, processes the data element and passes it downstream to the next immediately downstream third pipeline section.

【0008】実際の多重処理環境では、第一パイプライ
ンセクションはデータソースから次のデータ要素を得て
これを第二パイプラインセクションに出力し、第二パイ
プラインセクションは第一パイプラインセクションから
受け取ったこのデータ要素を処理してこれを第三パイプ
ラインセクションに出力する。従って、各データ要素は
パイプラインセクションのうちの1つによって処理され
ると、このデータ要素は次の下流セクションへと出力さ
れて、最終的にはホストアプリケーションに出力され
る。多重処理環境において、1つの処理操作即ちプロセ
ッサをそのパイプラインの各セクションに関連付けるこ
とによって、データを効率的且つ迅速に処理することが
できる。これによりパイプラインは、データ処理能力が
最も効率の悪いパイプラインセクションのみによって制
限されてデータブロックを処理することができるように
なり、オーバーヘッドにより非効率性が生じる。
In an actual multiprocessing environment, the first pipeline section obtains the next data element from the data source and outputs it to the second pipeline section, and the second pipeline section receives from the first pipeline section. Process this data element and output it to the third pipeline section. Thus, as each data element is processed by one of the pipeline sections, this data element is output to the next downstream section and ultimately to the host application. In a multi-processing environment, data can be processed efficiently and quickly by associating one processing operation or processor with each section of the pipeline. This allows the pipeline to process data blocks with data processing capacity limited only by the least efficient pipeline section, resulting in overhead inefficiencies.

【0009】これに対し、単一処理環境では、大きなデ
ータブロックを処理するための様々な方法を用いること
ができるが、各々の方法は多重処理システムに比べて効
率が悪い。例えば、ある方法では、データブロックの全
てのデータ要素に各データ処理操作を行ってから、他の
データ処理操作をそのデータブロックのデータ要素のど
れかに行う。つまり、これらの要素のどれかに第二のデ
ータ処理操作を行う前に、そのデータブロックの全ての
要素に対して第一データ処理操作を行わなければならな
い。単一処理環境におけるデータ処理操作の効率は、各
データ処理操作の効率に比例する。
On the other hand, in a single processing environment, various methods for processing large blocks of data can be used, but each method is less efficient than multiple processing systems. For example, one method performs each data processing operation on every data element in a data block, and then performs another data processing operation on any of the data elements in that data block. That is, before performing a second data processing operation on any of these elements, a first data processing operation must be performed on all elements of the data block. The efficiency of data processing operations in a single processing environment is proportional to the efficiency of each data processing operation.

【0010】多重処理環境においてデータ要素は1つの
パイプラインの1つのデータ処理セクションから他のデ
ータ処理セクションに連続的に移動するので、及びこの
データ処理コマンドはそのシステムのアクティブメモリ
の内外に連続的にスワップイン及びスワップアウトをさ
れなければならないので、多重処理システムを管理する
のに必要なシステムのオーバーヘッドは単一処理環境で
必要なオーバーヘッドに比べて大きい。
In a multiprocessing environment, data elements move continuously from one data processing section of one pipeline to another data processing section, and this data processing command is continuously transferred into and out of the active memory of the system. The system overhead required to manage a multi-processing system is large compared to the overhead required in a single processing environment.

【0011】[0011]

【発明が解決しようとする課題】従って、本発明は単一
処理環境において多重処理パイプラインをエミュレート
することによって大きなデータブロックを処理するため
のシステム及び方法を提供する。本発明では、画像処理
操作のライブラリが提供される。ライブラリの中の各画
像処理操作、即ち関数は、オブジェクト指向システムに
おけるクラス又はサブクラスである。パイプラインの各
セクションは、1つ以上の画像処理関数を含むインスタ
ンス生成された関数、即ちタスク、及びそのタスクの状
態を自己定義するのに十分なデータ構造である。
Accordingly, the present invention provides a system and method for processing large blocks of data by emulating a multiprocessing pipeline in a single processing environment. In the present invention, a library of image processing operations is provided. Each image processing operation or function in the library is a class or subclass in an object-oriented system. Each section of the pipeline is an instantiated function that includes one or more image processing functions, ie, tasks, and data structures sufficient to self-define the state of the task.

【0012】[0012]

【課題を解決するための手段】本発明の第一の実施の形
態において、ホストアプリケーションはデータソースか
らデータを得るためにこのパイプラインを用いる。これ
をプルシステムと呼ぶ。
SUMMARY OF THE INVENTION In a first embodiment of the present invention, a host application uses this pipeline to obtain data from a data source. This is called a pull system.

【0013】操作上、ホストアプリケーションが(例え
ばスキャナ又は画像データファイルからの画像データの
ような)生のデータソースから処理されたデータを必要
とするとき、データソースとホストアプリケーションと
の間にパイプラインが形成される。データ処理パイプラ
インはデータソースから生のデータを入力し、このデー
タをホストアプリケーションが使用できる形式に処理し
てホストアプリケーションに送る。
[0013] When the host application requires data processed from a raw data source (eg, image data from a scanner or image data file) in operation, a pipeline between the data source and the host application is required. Is formed. The data processing pipeline inputs raw data from a data source, processes the data into a format usable by the host application, and sends the processed data to the host application.

【0014】画像処理パイプラインは、画像処理ライブ
ラリの中の関数のうち1つの関数を呼出し、この呼び出
された関数をインスタンス生成して第一タスクを形成す
ることによって、形成される。この第一タスクはそのパ
イプラインの最上流セクションとなる。この最上流パイ
プラインセクションはデータソースから処理すべきデー
タ要素を受け取る。画像処理システムでは、データ要素
は画像のラスタ走査の単一の走査線である。データソー
スは、スキャナ、ファクシミリマシン、リモートコンピ
ュータ、又はセンサ等であり、直列又は並列のデータ信
号、又はROM、RAM、又はディスクドライブの中の
ディスク等のメモリ内に格納されたデータのブロックを
出力する。また、データ要素は第一パイプラインセクシ
ョン自体により直接生成されることもできる。この場
合、データ要素は初期化された変数の値から、又は第一
パイプラインセクションの状態等から、得ることができ
る。第一パイプラインセクションがインスタンス生成
(具体化、instantiate )されると、ホストアプリケー
ションの逆方向即ち上流のリンクが第一パイプラインセ
クションに設定される。
The image processing pipeline is formed by calling one of the functions in the image processing library and instantiating the called function to form a first task. This first task will be the most upstream section of the pipeline. This upstream pipeline section receives data elements to be processed from a data source. In an image processing system, a data element is a single scan line of a raster scan of an image. The data source is a scanner, facsimile machine, remote computer, or sensor, etc., which outputs serial or parallel data signals or blocks of data stored in a memory such as a ROM, RAM, or a disk in a disk drive. I do. Data elements can also be generated directly by the first pipeline section itself. In this case, the data element can be obtained from the value of the initialized variable or from the state of the first pipeline section or the like. When the first pipeline section is instantiated, the reverse or upstream link of the host application is set in the first pipeline section.

【0015】次に第二パイプラインセクションは一般
に、第一パイプラインセクションにより得られたデータ
要素を処理する必要がある。従って、ホストアプリケー
ションはライブラリの中の関数の内の1つをインスタン
ス生成して第二パイプラインセクションを形成すること
によって他のタスクを生成する。この第二パイプライン
セクションが生成されると、この第二パイプラインセク
ションは第一パイプラインセクションに自動的にリンク
される。更に、ホストアプリケーションのリンクはこの
第二パイプラインセクションにリセットされる。他の画
像処理操作が必要でない場合、ホストアプリケーション
のリンクはホストアプリケーションの処理済データが必
要な部分と第二パイプラインセクションとの間に残る。
Next, the second pipeline section generally needs to process the data elements obtained by the first pipeline section. Thus, the host application creates another task by instantiating one of the functions in the library to form a second pipeline section. When the second pipeline section is created, the second pipeline section is automatically linked to the first pipeline section. Further, the link of the host application is reset to this second pipeline section. If no other image processing operations are required, the host application link remains between the portion of the host application that requires processed data and the second pipeline section.

【0016】また、このパイプラインがデータを更に処
理するための追加のセクションを必要とする場合、ホス
トアプリケーションは関数ライブラリに追加の呼出しを
行って追加のタスク、即ちパイプラインセクションをイ
ンスタンス生成する。新しく生成されたタスクはそのデ
ータ処理パイプラインの第三、第四等のセクションとな
る。各追加のパイプラインセクションが生成されると
き、各追加のパイプラインセクションとそのすぐ上流の
パイプラインセクションとの間に逆方向リンクが形成さ
れ、ホストアプリケーションからのリンクは最後にイン
スタンス生成されたタスク(即ちパイプラインセクショ
ン)にリセットされる。
Also, if the pipeline requires additional sections to further process the data, the host application makes additional calls to the function library to instantiate additional tasks, ie, pipeline sections. The newly created task becomes the third, fourth, etc. section of the data processing pipeline. As each additional pipeline section is created, a reverse link is formed between each additional pipeline section and the immediately upstream pipeline section, and the link from the host application is the last instantiated task. (Ie, pipeline section).

【0017】各パイプラインセクションへのアクセス
は、オペレーティングシステムではなく、そのすぐ下流
のパイプラインセクション(または最後のパイプライン
セクションの場合はホストアプリケーション)によって
制御及び維持される。従って、メモリを維持するのに必
要なオーバーヘッドは最小限に抑えられ、タスクの実行
をスケジュールするのに必要なオーバーヘッドは存在し
ない。従って本発明の制御システムは、多重処理環境の
効率的な処理の利点を単一処理環境の最小オーバーヘッ
ドの利点と組合せて、これらの環境の欠点を回避する。
Access to each pipeline section is controlled and maintained by the pipeline section immediately downstream of the operating system, or by the host application in the case of the last pipeline section. Thus, the overhead required to maintain memory is minimized and there is no overhead required to schedule the execution of a task. Thus, the control system of the present invention avoids the disadvantages of multiple processing environments by combining the advantages of efficient processing with the benefits of minimal overhead in a single processing environment.

【0018】このようなパイプラインシステムを用いた
ホストアプリケーションは、先述の利点を保持したま
ま、単一プロセッサ/単一タスキング環境、自動時分割
を使用する単一プロセッサ/多重タスキング環境、又は
実際の多重プロセッサ/多重タスキング環境上で動作す
ることができる。オペレーティングシステムでなくホス
トアプリケーションがパイプラインを生成、維持、制御
及び終了するので、このパイプライン構造はホストアプ
リケーションを走らせるプロセッサのタイプからは独立
している。従って、ホストアプリケーションは単一プロ
セッサ多重タスキングシステム上で動作する多くの独立
したアプリケーションのうちの1つであってもよい。ホ
ストアプリケーションはこのパイプラインシステムを用
いることによって、オペレーティングシステムにそのパ
イプラインをスケジュールさせたりそのパイプラインの
ためのメモリの割当てや割当てを解除をさせたりするこ
となく、スキャナからパイプラインを実行することがで
きる。従って、オペレーティングシステムを用いてパイ
プラインを動作する場合に通常付随するオーバーヘッド
の欠点を回避することができる。
A host application using such a pipeline system can maintain a single processor / single tasking environment, a single processor / multitasking environment using automatic time sharing, or a real application while retaining the advantages described above. It can operate on a multi-processor / multi-tasking environment. This pipeline structure is independent of the type of processor running the host application, as the host application, not the operating system, creates, maintains, controls and terminates the pipeline. Thus, the host application may be one of many independent applications running on a single processor multitasking system. The host application uses this pipeline system to execute the pipeline from the scanner without having the operating system schedule the pipeline or allocate or deallocate memory for the pipeline. Can be. Thus, the overhead drawbacks typically associated with operating a pipeline with an operating system can be avoided.

【0019】本発明のプルシステムの他の実施の形態に
おいて、データ処理操作の簡易化するためにヘッダデー
タチャネルが使用される。この実施の形態では、データ
ブロックの処理を開始するために、ホストアプリケーシ
ョンはパイプラインの最終セクションからデータブロッ
クのヘッダをリクエストする。このパイプラインの各セ
クションは、自分がリンクされている上流パイプライン
セクションからヘッダをリクエストする。これは、下流
パイプラインセクションから手続き呼出しを行って上流
パイプラインセクションを呼び出すことにより、行われ
る。これは下流のパイプラインセクションをスタックに
プッシュするのに似ている。各上流パイプラインセクシ
ョンからヘッダがリクエストされるとき、プロセッサは
下流パイプラインセクションの処理を止め、上流パイプ
ラインセクションの処理を開始する。
In another embodiment of the pull system of the present invention, a header data channel is used to simplify data processing operations. In this embodiment, to start processing a data block, the host application requests a data block header from the last section of the pipeline. Each section of this pipeline requests a header from the upstream pipeline section to which it is linked. This is done by making a procedure call from the downstream pipeline section to call the upstream pipeline section. This is similar to pushing the downstream pipeline section onto the stack. When a header is requested from each upstream pipeline section, the processor stops processing the downstream pipeline section and starts processing the upstream pipeline section.

【0020】リクエストが第一パイプラインセクション
に到達すると、第一パイプラインセクションはデータブ
ロックのヘッダを獲得又は生成し、ヘッダデータチャネ
ルを介してこれを第二パイプラインセクションに返す。
第一パイプラインセクションがヘッダを返すと、CPU
は第一パイプラインセクションの動作を止め、第二パイ
プラインセクションを動作させる。これは、スタックか
ら下流パイプラインセクションを取り出し(ポップオ
フ、popping off )させるのに似ている。パイプライン
の各セクションはヘッダデータを処理して、セクション
がそのデータブロックの中のデータラインに何を行うか
を示す。各セクションはヘッダデータチャネルを介して
処理されたヘッダデータを次の下流パイプラインセクシ
ョンに返す。最後のパイプラインセクションがヘッダを
処理した後、この最後のパイプラインセクションは完全
に処理されたヘッダデータをホストアプリケーションに
返す。
When a request reaches the first pipeline section, the first pipeline section obtains or generates a header for the data block and returns it to the second pipeline section via a header data channel.
When the first pipeline section returns the header, the CPU
Stops the operation of the first pipeline section and activates the second pipeline section. This is similar to popping off the downstream pipeline section from the stack. Each section of the pipeline processes the header data and indicates what the section does to the data lines in the data block. Each section returns the processed header data via the header data channel to the next downstream pipeline section. After the last pipeline section has processed the header, this last pipeline section returns the fully processed header data to the host application.

【0021】処理されたヘッダデータをホストアプリケ
ーションが受け取ると、ホストアプリケーションはその
データブロックの中に何本のデータラインがあるかを知
る。ホストアプリケーションは最下流パイプラインセク
ションから第一ラインをリクエストする。リクエストが
第一パイプラインセクションに到達するまで、各中間パ
イプラインセクションは自分がリンクされている直ぐ上
流のパイプラインセクションから1本のデータラインを
リクエストする。第一パイプラインセクションはデータ
ソースから第一データラインを受け取り、又は1本のデ
ータラインを生成し、次にこのデータをすぐ下流のセク
ションに送る。各中間セクションは上流セクションから
受け取ったデータを処理してこの処理済データをすぐ下
流のセクションに送り、最終的にこの処理済データはホ
ストアプリケーションに送られる。
When the host application receives the processed header data, the host application knows how many data lines are in the data block. The host application requests the first line from the most downstream pipeline section. Until the request reaches the first pipeline section, each intermediate pipeline section requests one data line from the immediately upstream pipeline section to which it is linked. The first pipeline section receives the first data line from the data source or generates one data line and then sends this data to the section immediately downstream. Each intermediate section processes the data received from the upstream section and sends this processed data to the section immediately downstream, which is ultimately sent to the host application.

【0022】上記プロセスは、データブロックを構成す
るデータラインの全てが処理されてホストアプリケーシ
ョンに受け取られるまで、繰り返される。従って、画像
処理パイプラインの効率は、そのパイプラインの最も効
率の悪いセクションにのみ依存する。
The above process is repeated until all of the data lines making up the data block have been processed and received by the host application. Thus, the efficiency of an image processing pipeline depends only on the least efficient sections of the pipeline.

【0023】本発明のプルシステムの他の実施の形態に
おいて、ヘッダデータ処理チャネルは使用せず、データ
処理パイプラインをインスタンス生成する間にヘッダデ
ータがまず処理される。この実施の形態では、ホストア
プリケーションが第一パイプラインセクションをインス
タンス生成すると、第一セクションはそのパイプライン
によってこれから処理されるデータブロックを表すヘッ
ダデータを即獲得又は生成する。第二パイプラインセク
ションがインスタンス生成されると、第二パイプライン
セクションは第一パイプラインセクションからヘッダデ
ータを受け取り、このヘッダデータを処理して、第二セ
クションによって行われるべきデータ処理操作を反映さ
せる。インスタンス生成された各パイプラインセクショ
ンは、インスタンス生成のあとすぐにヘッダを獲得して
処理する。パイプラインが完成したときにはホストアプ
リケーションは処理済みヘッダデータを既に持ってお
り、ホストアプリケーションはデータブロックから第一
データラインを即呼び出すことができる。
In another embodiment of the pull system of the present invention, the header data processing channel is not used, and the header data is first processed during instantiation of the data processing pipeline. In this embodiment, when the host application instantiates a first pipeline section, the first section immediately obtains or generates header data representing a data block to be processed by the pipeline. When the second pipeline section is instantiated, the second pipeline section receives header data from the first pipeline section and processes the header data to reflect data processing operations to be performed by the second section. . Each instantiated pipeline section acquires and processes a header immediately after instantiation. When the pipeline is completed, the host application already has the processed header data, and the host application can immediately call the first data line from the data block.

【0024】本発明の更に他の実施の形態では、更に処
理するためのデータを供給するためにパイプラインを使
用する。これはプッシュシステムと呼ばれる。操作にお
いて、ホストアプリケーションがデータユーザ、データ
格納装置、又は出力装置にデータを供給するとき、ホス
トアプリケーショとデータ記憶装置又は出力装置との間
にデータ処理パイプラインが形成される。データ処理パ
イプラインはホストアプリケーションからデータを入力
し、記憶装置又は出力装置が使用できる形式にこのデー
タを処理して、このデータをこの記憶装置/出力装置に
送る。
In yet another embodiment of the present invention, a pipeline is used to provide data for further processing. This is called a push system. In operation, when a host application supplies data to a data user, data storage device, or output device, a data processing pipeline is formed between the host application and the data storage device or output device. The data processing pipeline inputs data from the host application, processes the data into a form usable by a storage device or an output device, and sends the data to the storage device / output device.

【0025】このプルシステムを用いて、関数ライブラ
リから画像処理関数をインスタンス生成することにより
プッシュシステムパイプラインが生成される。このパイ
プラインにおける第一タスクは、記憶装置/出力装置へ
のソフトウェアインターフェースである。第一タスクと
ホストアプリケーションとの間に他の追加のタスクを加
えて中間タスクを形成しても良い。ホストアプリケーシ
ョンは最後にインスタンス生成されたタスクにリンクさ
れる。
The push system pipeline is generated by instantiating an image processing function from the function library using the pull system. The first task in this pipeline is a software interface to storage / output devices. Other additional tasks may be added between the first task and the host application to form an intermediate task. The host application is linked to the last instantiated task.

【0026】ホストアプリケーションから記憶装置/出
力装置へとデータが流れるので、ホストアプリケーショ
ンにリンクされている最後にインスタンス生成されたタ
スクがそのパイプラインの中の最上流タスクと見なさ
れ、記憶装置/出力装置にリンクされたタスクが最下流
タスクと見なされる。
As data flows from the host application to the storage / output device, the last instantiated task linked to the host application is considered the most upstream task in the pipeline and the storage / output The task linked to the device is considered the most downstream task.

【0027】操作において、ホストアプリケーションは
データアイテムを最上流タスクに渡す。この最上流タス
クはデータアイテムを処理してその次の下流タスクに渡
す。このプロセスは、そのパイプラインの中の最終タス
クがそのデータアイテムに対して行われ、このデータア
イテムを記憶装置/出力装置に渡すまで繰り返される。
In operation, the host application passes the data item to the most upstream task. This top-level task processes the data item and passes it to the next downstream task. This process is repeated until the last task in the pipeline has been performed on the data item and the data item has been passed to the storage / output device.

【0028】プルシステムを用いた場合と同様、本発明
のプッシュシステムの他の実施の形態において、データ
処理操作を簡易化するためにヘッダデータチャネルが用
いられる。この実施の形態では、データブロックの処理
を始めるために、ホストアプリケーションはデータブロ
ックのヘッダをそのパイプラインの最終パイプラインセ
クション(最上流タスク)に供給する。最終パイプライ
ンセクションはそれがそのデータブロックのデータライ
ンに対して何を行うかを示すようにヘッダを処理する。
最終パイプラインセクションは次にヘッダデータチャネ
ルを介してデータブロックの処理済ヘッダを最後から2
番目のパイプラインセクションに渡す。最終パイプライ
ンセクションがヘッダを渡してしまうと、CPUは最終
パイプラインセクションの操作を止め、最後から2番目
のパイプラインセクションの動作を開始する。各セクシ
ョンはヘッダデータを処理し、ヘッダデータチャネルを
介してこの処理済ヘッダデータを次の下流パイプライン
セクションに送る。第一パイプラインセクション(最下
流タスク)がヘッダを処理した後、第一パイプラインセ
クションは完全に処理したヘッダデータを出力装置に与
える。ヘッダデータがパイプラインを移動したことを示
す応答が、パイプラインを介してホストアプリケーショ
ンへと上流に返される。
As with the pull system, in another embodiment of the push system of the present invention, a header data channel is used to simplify data processing operations. In this embodiment, to begin processing a data block, the host application supplies the header of the data block to the last pipeline section of the pipeline (the most upstream task). The final pipeline section processes the header to indicate what it does to the data lines of that data block.
The last pipeline section then puts the processed header of the data block from the last two through the header data channel.
Pass to the second pipeline section. When the final pipeline section passes the header, the CPU stops the operation of the final pipeline section and starts the operation of the penultimate pipeline section. Each section processes the header data and sends this processed header data to the next downstream pipeline section via the header data channel. After the first pipeline section (the most downstream task) processes the header, the first pipeline section provides fully processed header data to the output device. A response indicating that the header data has moved through the pipeline is returned upstream to the host application via the pipeline.

【0029】処理されたヘッダデータが出力装置によっ
て受け取られてしまうと、パイプラインセクション及び
出力装置は、そのデータブロックの中に何本のデータラ
インがあるのかを知る。次に、ホストアプリケーション
は第一データラインを最終パイプラインセクションに供
給する。最終パイプラインセクションはホストアプリケ
ーションにより供給されたデータを処理してこの処理さ
れたデータを直ぐ下流のパイプラインセクションに供給
する。各後続の中間セクションは上流のパイプラインセ
クションから受け取ったデータを処理してこの処理され
たデータをすぐ下流のセクションに渡し、この処理済デ
ータは最終的に出力装置に供給される。
When the processed header data has been received by the output device, the pipeline section and the output device know how many data lines are in the data block. Next, the host application supplies the first data line to the final pipeline section. The final pipeline section processes the data provided by the host application and provides the processed data to the immediately downstream pipeline section. Each subsequent intermediate section processes the data received from the upstream pipeline section and passes the processed data to a section immediately downstream, which is ultimately provided to an output device.

【0030】上述のプロセスは、データブロックを構成
するデータラインの全てがホストアプリケーションによ
って供給され、パイプラインによって受け取られて出力
装置により受け取られるまで、繰り返される。従って、
画像処理パイプラインの効率は、そのパイプラインの最
も効率の悪いセクションにのみ依存する。
The above process is repeated until all of the data lines that make up the data block are supplied by the host application, received by the pipeline, and received by the output device. Therefore,
The efficiency of an image processing pipeline depends only on the least efficient sections of the pipeline.

【0031】他の目的及び利点は、本発明を全て理解す
るとともに明らかになるであろう。また、添付した図面
に関連して以下の記述及び請求の範囲を参照されたい。
Other objects and advantages will become apparent with a full understanding of the present invention. Reference should also be made to the following description and claims in connection with the accompanying drawings.

【0032】[0032]

【発明の実施の形態】図1に示されているように、コン
ピュータ100は単一処理コントローラ(CPU−中央
処理装置)21を有する。コンピュータ100は入出力
(I/O)インターフェース22、ROM24、及びR
AM26も有する。CPU21は制御ライン28を介し
て制御信号をI/Oインターフェース22、ROM2
4、及びRAM26へ送り、データバス30を通してI
/Oインターフェース、ROM24、RAM26へデー
タを送ったり、これらからデータを受け取ったりする。
関数ライブラリ10、データソース12、ディスプレイ
14、キーボード16、マウス18、及びディスクドラ
イブ19は、I/Oインターフェース22を介してCP
U22に接続されている。マウス18は、マウス、トラ
ックボール、ライトペン、タッチスクリーン、又はタッ
チパッド等のようなあらゆる二次的なポインティング装
置を示す。ディスクドライブ19は、アナログ又はデジ
タルの磁気テープ又は光学テープ、ハードドライブ、ハ
ードカード、フロッピーディスクとフロッピーディスク
ドライブ、CD−ROMとCD−ROMディスクドライ
ブ、又はフラッシュメモリ等のようなあらゆる不揮発性
の記憶装置を示す。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS As shown in FIG. 1, a computer 100 has a single processing controller (CPU-central processing unit) 21. The computer 100 includes an input / output (I / O) interface 22, a ROM 24,
It also has AM26. The CPU 21 transmits a control signal via the control line 28 to the I / O interface 22 and the ROM 2
4 and to the RAM 26,
It sends data to the I / O interface, ROM 24, and RAM 26, and receives data from them.
The function library 10, the data source 12, the display 14, the keyboard 16, the mouse 18, and the disk drive 19 are connected to the CP via the I / O interface 22.
It is connected to U22. Mouse 18 refers to any secondary pointing device, such as a mouse, trackball, light pen, touch screen, or touch pad. Disk drive 19 may be any non-volatile storage such as analog or digital magnetic or optical tape, hard drive, hard card, floppy disk and floppy disk drive, CD-ROM and CD-ROM disk drive, or flash memory, etc. The device is shown.

【0033】CPU21は単一処理プロセッサである。
即ち、CPUは、一回につき一つのアプリケーションの
ためにデータをアクティブに処理することが可能である
ため、一回につきたった1つのデータ処理動作しか動作
及び実行することができない。I/Oインターフェース
22は、直列データポート(図示されてない)又は並列
データポート(図示されてない)を介して直列又は並列
のデータ入力ソース又はデータ出力ソースにCPU21
を接続する。これらのデータソースはキーボード16及
びデータソース12だけでなく、ディスクドライブ19
及びマウス18も含む。上記のように、データソース1
2はスキャナやファクシミリ機、リモートコンピュー
タ、センサ等を含む。I/Oインターフェース22は、
ディスプレイ14を駆動し且つキーボード16、マウス
18、及びディスクドライブ19からの信号を入力する
ために必要なハードウェアも含む。
The CPU 21 is a single processing processor.
That is, since the CPU can actively process data for one application at a time, it can operate and execute only one data processing operation at a time. The I / O interface 22 connects the CPU 21 to a serial or parallel data input or output source via a serial data port (not shown) or a parallel data port (not shown).
Connect. These data sources include not only the keyboard 16 and the data source 12 but also the disk drive 19.
And mouse 18. As mentioned above, data source 1
Reference numeral 2 includes a scanner, a facsimile machine, a remote computer, a sensor, and the like. The I / O interface 22
It also includes the necessary hardware to drive the display 14 and to input signals from the keyboard 16, mouse 18, and disk drive 19.

【0034】ROM24は、ブートストラップ等を含
む、CPU21のための全ての基本的なオペレーティン
グプログラムを記憶する。RAM26は、非常に多くの
ランダムアクセス可能メモリ位置を備える。RAM26
はブロック26a、26b、26c、26d、26e、
及び26fのような割り当て可能メモリのブロックに分
割されることができる。割り当て可能メモリ26a〜2
6fのブロックは、1つのホストアプリケーションと、
データ処理タスクを形成するデータ処理関数(即ちデー
タ処理パイプラインのセクション)の一つ以上のインス
タンス生成を記憶することができる。ディスプレイ14
はビジュアル情報を出力し、キーボード16は情報をコ
ンピュータ100へ入力するために使用される。
The ROM 24 stores all basic operating programs for the CPU 21, including the bootstrap and the like. RAM 26 comprises a large number of randomly accessible memory locations. RAM 26
Are the blocks 26a, 26b, 26c, 26d, 26e,
And 26f can be divided into blocks of assignable memory. Allocatable memories 26a-2
The 6f block has one host application,
One or more instantiations of the data processing functions (ie, sections of the data processing pipeline) that form the data processing task can be stored. Display 14
Outputs visual information, and the keyboard 16 is used to input information to the computer 100.

【0035】関数ライブラリ10は、CPU21によっ
て呼び出されるデータ処理関数を形成する初期化されて
いないデータ処理構造又はオブジェクトのライブラリを
記憶する。関数ライブラリ10は、I/Oインターフェ
ース22を介してアクセスされる独立した要素として表
されているが、この関数ライブラリ10は、ROM24
内又はディスクドライブ19を介してアクセスされる不
揮発性メモリ装置上に格納される得ることが理解されよ
う。さらに、ディスクドライブ19内の非揮発性メモリ
装置又は関数ライブラリ10にまだ格納されていない新
しく書き込まれたデータ処理関数はRAM26内に格納
されることができる。
The function library 10 stores a library of uninitialized data processing structures or objects that form the data processing functions called by the CPU 21. The function library 10 is represented as an independent element accessed via the I / O interface 22.
It will be appreciated that it may be stored within or on a non-volatile memory device accessed via the disk drive 19. Further, newly written data processing functions not yet stored in the non-volatile memory device or function library 10 in the disk drive 19 can be stored in the RAM 26.

【0036】同様に、データソース12はコンピュータ
100の外部にあってI/Oインターフェース22を介
してアクセスされるよう表されている。しかし、データ
ソース12は、ROM24又はRAM26内、ディスク
ドライブ19内の非揮発性メモリ装置上、又はCPU2
1のレジスタカウンタ若しくは内部メモリ内に格納され
るデータであってもよい。データソース12は、キーボ
ード16を介して入力されたデータも含むことができ
る。上記のように、最後には、第1パイプライン部分
は、いくつかの外部ソースからデータ要素を得るのでは
なく、データ要素それ自体を生成することができる。
Similarly, data source 12 is shown external to computer 100 and accessed via I / O interface 22. However, the data source 12 may be stored in the ROM 24 or RAM 26, on a non-volatile memory device in the disk drive 19, or in the CPU 2
It may be one register counter or data stored in an internal memory. Data source 12 may also include data entered via keyboard 16. As noted above, ultimately, the first pipeline section may generate the data elements themselves, rather than obtaining the data elements from some external source.

【0037】図18に示されているように、本発明のデ
ータ処理システム200は、ホストアプリケーション手
段50、ライブラリ手段10、メモリ管理手段56、及
びデータ処理パイプライン80を含む。データ処理パイ
プライン80は、ホストアプリケーション手段50に接
続されている1つの最終タスク手段60、少なくとも1
つの中間タスク手段62、及び1つの第一タスク手段6
4を含む。データ処理システム200は、データソース
手段66を含んでいてもよいが、含む必要もない。デー
タソース手段66を含まない場合、第1のタスク手段6
4はデータソース手段66の機能も果たす。複数のリン
ク70によって、第一タスク手段64、少なくとも1つ
の中間タスク手段62、及び最終タスク手段60が接続
されている。もちろん、簡単なパイプライン80なら第
1タスク手段64と最終タスク手段60だけを含んでも
よいことを理解されたい。データ入力リンク72はデー
タソース手段66を第一タスク手段64に接続する。
As shown in FIG. 18, the data processing system 200 of the present invention includes a host application unit 50, a library unit 10, a memory management unit 56, and a data processing pipeline 80. The data processing pipeline 80 comprises one final task means 60 connected to the host application means 50, at least one
One intermediate task means 62 and one first task means 6
4 inclusive. Data processing system 200 may, but need not, include data source means 66. If the data source means 66 is not included, the first task means 6
4 also performs the function of the data source means 66. The plurality of links 70 connect the first task means 64, at least one intermediate task means 62, and the final task means 60. Of course, it should be understood that a simple pipeline 80 may include only the first task means 64 and the final task means 60. Data input link 72 connects data source means 66 to first task means 64.

【0038】ホストアプリケーション手段50は、デー
タ処理パイプライン80から受け取られたデータをさら
に処理するためのデータ処理手段58を含む。まず、デ
ータ処理システム200は、ホストアプリケーション手
段50、ライブラリ手段10、及びメモリ管理手段56
のみを含む。ホストアプリケーション手段50は当該ホ
ストアプリケーション50内に含まれたインストラクシ
ョンに従ってプロセッサを操作する。このプロセッサ
は、単一タスキング環境において動作する単一プロセッ
サ、多重タスキング環境において動作する単一プロセッ
サ、又は多重タスキング環境において動作する多重プロ
セッサコンピュータであってもよい。いずれの場合で
も、ホストアプリケーション手段50は、単一タスキン
グ環境におかれているかの如く動作する。
The host application means 50 includes a data processing means 58 for further processing the data received from the data processing pipeline 80. First, the data processing system 200 includes the host application unit 50, the library unit 10, and the memory management unit 56.
Including only. The host application means 50 operates the processor according to the instructions included in the host application 50. The processor may be a single processor operating in a single tasking environment, a single processor operating in a multitasking environment, or a multiprocessor computer operating in a multitasking environment. In each case, the host application means 50 operates as if it were in a single tasking environment.

【0039】ホストアプリケーション手段50は、デー
タソース66から処理されたデータが必要であると決定
すると、データ処理パイプライン80を作成して呼び出
す。従って、ホストアプリケーション手段50はインス
タンス生成手段52及び呼出し手段54を含む。
When the host application means 50 determines that data processed from the data source 66 is necessary, it creates and calls a data processing pipeline 80. Therefore, the host application means 50 includes the instance generating means 52 and the calling means 54.

【0040】パイプライン80を生成するために、この
インスタンス生成手段52はライブラリ手段10にアク
セスして初期化されていない関数のうちの1つを得、イ
ンスタンス生成された関数又はタスクを生成してメモリ
のブロック内に格納する。このインスタンス生成された
関数、即ちタスクは、ホストアプリケーション手段50
又は他の既に生成されたタスクにリンクされる。タスク
がホストアプリケーション手段にリンクされた場合、こ
のタスクは最終タスク60である。このタスクが他のタ
スクにリンクされ、その他のタスクがホストアプリケー
ション手段にリンクされる場合、このタスクは中間タス
ク62である。タスクが他のタスクにリンクされてデー
タソース手段66からデータを得る場合、又はデータ自
体を生成する場合、このタスクは第一タスク64であ
る。
To generate the pipeline 80, the instance generating means 52 accesses the library means 10 to obtain one of the uninitialized functions, and generates an instantiated function or task. Store in a block of memory. The function for which the instance is generated, that is, the task, is stored in the host application unit 50.
Or linked to other already created tasks. If the task is linked to a host application means, this task is the final task 60. If this task is linked to another task and the other task is linked to the host application means, the task is an intermediate task 62. This task is the first task 64 if the task is linked to another task and obtains data from the data source means 66 or generates the data itself.

【0041】関数をインスタンス生成してタスクを生成
する際、インスタンス生成手段52はメモリ管理手段5
6と協動してメモリ26のメモリブロック26a〜26
fのうちの1つを割り当て、タスクを記憶する。所望の
タスクの全てがインスタンス生成された後、呼出し手段
54が最終タスク手段60からデータをリクエストする
ことによりパイプライン80を呼び出す。呼出し手段5
4からのリクエストは、第一タスク手段64に向けてパ
イプライン80の上流方向へと流れる(リップルす
る)。このリクエストが第一タスク手段64に達する
と、第一タスク手段はデータソース66からデータを得
るか又はそれ自体がデータを生成する。次いで、第一タ
スク手段64は中間タスク手段62へとデータを下流方
向に戻す。中間タスク手段62はそのデータを処理して
これを最終タスク手段60へ戻す。最終タスク手段60
は中間タスク手段から受け取ったデータを処理してこの
処理されたデータをホストアプリケーション手段50へ
戻す。次に、ホストアプリケーション手段50が更に多
くのデータを必要とする場合、呼出し手段54は再びパ
イプライン80を呼び出す。
When generating a task by instantiating a function, the instance generating means 52
6 and memory blocks 26a to 26 of the memory 26.
Assign one of f and store the task. After all of the desired tasks have been instantiated, the calling means 54 calls the pipeline 80 by requesting data from the final task means 60. Calling means 5
4 flows (ripples) toward the first task means 64 in the upstream direction of the pipeline 80. When the request reaches the first task means 64, the first task means obtains data from the data source 66 or generates the data itself. Next, the first task means 64 returns the data to the intermediate task means 62 in the downstream direction. The intermediate task means 62 processes the data and returns it to the final task means 60. Final task means 60
Processes the data received from the intermediate task means and returns the processed data to the host application means 50. Next, when the host application means 50 needs more data, the calling means 54 calls the pipeline 80 again.

【0042】一旦ホストアプリケーション50が全ての
所望のデータを有すると、呼出し手段54はパイプライ
ン80を呼び出してこれをシャットダウン(停止)し、
パイプライン80の動作により生じるあらゆるエラー
(誤差)をクリーンアップ(削除)する。呼出し手段5
4はパイプラインからエラーコードを呼び出す。先述の
ように、このリクエストは上流へリップルする。各タス
キング手段は、それがエラーコードを生成したかどうか
を決定し、このエラーコードを戻す。これらのエラーコ
ードが一旦戻されると、呼出し手段54は、パイプライ
ン80のタスク手段60〜64に割り当てられたメモリ
を解放するため、メモリ管理手段56へ信号を送る。
Once the host application 50 has all the desired data, the calling means 54 calls the pipeline 80 to shut it down,
Clean up (delete) any errors caused by the operation of the pipeline 80. Calling means 5
4 calls an error code from the pipeline. As described above, this request ripples upstream. Each tasking means determines whether it generated an error code and returns this error code. Once these error codes are returned, the calling means 54 sends a signal to the memory management means 56 to release the memory allocated to the task means 60-64 of the pipeline 80.

【0043】図19は、一般化されたタスク手段68を
示し、これはタスク手段60〜64のいずれかを表す。
この一般化されたタスク手段68は、リンク手段82、
少なくとも1つのチャネル手段84a〜84c、データ
処理手段86、データ分析手段88、タスク状態手段9
0、エラーコード生成手段92、外部ポート手段94、
及び再構成手段96を備える。もちろん、実際のタスク
手段60〜64が、1つ以上の要素を欠いた、これらの
要素の異なる組み合わせを有してもよいことが理解され
よう。さらに、第一タスク手段64は、パイプライン8
0のためのデータを受け取ったり生成したりするための
データ獲得/生成手段98も含んでもよい。
FIG. 19 shows a generalized task means 68, which represents any of the task means 60-64.
This generalized task means 68 comprises link means 82,
At least one channel means 84a-84c, data processing means 86, data analysis means 88, task status means 9
0, error code generation means 92, external port means 94,
And reconstruction means 96. Of course, it will be appreciated that the actual task means 60-64 may have different combinations of these elements, missing one or more elements. Further, the first task means 64 includes the pipeline 8
Data acquisition / generation means 98 for receiving and generating data for zeros may also be included.

【0044】リンク手段82は、逆方向リンクが使用さ
れる時に一般化タスク手段68を次の即ち上流のタスク
手段68にリンクするか、又は順方向リンクが使用され
る時、一般化タスク手段68を前の即ち下流のタスク手
段68にリンクする。両リンクを一度に使用することも
できる。一般化タスク手段68は、チャネル手段84a
〜84cのうちの1つ以上を介して上流のタスク手段か
ら戻されたデータを受け取る。次にこのデータは、対応
するチャネル84a〜84cを介して下流のタスク手段
へ戻される前に、データ処理手段86を用いて処理され
る。
Link means 82 links generalized task means 68 to the next or upstream task means 68 when a reverse link is used, or generalized task means 68 when a forward link is used. To the previous or downstream task means 68. Both links can be used at once. The generalized task means 68 includes a channel means 84a
Receive data returned from upstream task means via one or more of .about.84c. This data is then processed using data processing means 86 before being returned to the downstream task means via corresponding channels 84a-84c.

【0045】タスク状態手段90はタスク手段68の状
態を保持する。タスク状態手段90はまた一般化タスク
手段68の全ての他の手段を制御する。データ分析手段
88は次のタスク手段から受け取ったデータがデータ処
理手段86に適しているかを決定する。データが適して
いない場合、データ分析手段88は二つの異なる可能な
応答を有する。第1のタイプの応答において、簡単化さ
れたタスク手段68は、データの代わりに、エラーコー
ド生成手段92によって生成されたエラーコードを下流
のタスク手段へ単に戻す。ホストアプリケーション手段
50がデータの代わりにエラーコードを受け取った時、
アプリケーション手段50は、そのエラーの性質(及び
原因)を決定するためにエラー処理システムを使用す
る。次に、ホストアプリケーション手段50は、余裕を
持って抜け出るか、又はパイプライン80を再構成及び
/又は再初期化するとによってエラーから回復するよう
に試みることができる。
The task state means 90 holds the state of the task means 68. Task state means 90 also controls all other means of generalized task means 68. The data analysis means 88 determines whether the data received from the next task means is suitable for the data processing means 86. If the data is not suitable, the data analysis means 88 has two different possible responses. In a first type of response, the simplified task means 68 simply returns the error code generated by the error code generation means 92 to downstream task means instead of data. When the host application means 50 receives an error code instead of data,
The application means 50 uses an error handling system to determine the nature (and cause) of the error. Next, the host application means 50 can attempt to recover from the error by exiting gracefully or by reconfiguring and / or reinitializing the pipeline 80.

【0046】第2のタイプの応答において、複雑なタス
ク手段68は、エラーから回復するためにパイプライン
80を動的に再構成しようとする再構成手段96を含
む。この再構成手段96は、ライブラリ手段10から追
加のタスク手段68を動的にインスタンス生成し、これ
らの追加のタスク手段をパイプライン80へ挿入するこ
とによって、これを行なう。再構成手段96は、外部ポ
ート手段94を介して他のタスク手段のうちの1つ以上
にアクセスすることによって、これを行なう。この外部
ポート手段94は、他のタスク手段68への様々なアク
セスモードを許す。これらのモードは、他のタスク手段
又はそのタスク手段自身のタスク状態手段90の検査及
び/又は変更、エラーコード生成手段92の検査、リン
ク手段82の変更、又は他のこのような手段の変更等を
含む。
In the second type of response, the complex task means 68 includes a reconfiguration means 96 that attempts to dynamically reconfigure the pipeline 80 to recover from an error. This reconfiguration means 96 does this by dynamically instantiating additional task means 68 from the library means 10 and inserting these additional task means into the pipeline 80. The reconfiguring means 96 does this by accessing one or more of the other task means via the external port means 94. This external port means 94 allows various access modes to other task means 68. These modes may include checking and / or changing other task means or the task state means 90 of the task means itself, checking the error code generating means 92, changing the link means 82, or changing other such means. including.

【0047】もちろん、タスク手段68が高性能の再構
成手段96を有していた場合でさえ、回復不可能エラー
やハードエラーが生じる可能性はある。この場合、タス
ク手段は再びエラーコード生成手段92を使用してエラ
ーコードを生成し、このエラーコードを次の下流のタス
ク手段に供給する。
Of course, even if the task means 68 has the high-performance reconstructing means 96, an irrecoverable error or a hard error may occur. In this case, the task means generates an error code again using the error code generation means 92, and supplies the error code to the next downstream task means.

【0048】最後に、第2の実施の形態において、リン
ク手段82は、一般化タスク手段68自体ではなくタス
ク手段68の個々のチャネル手段84a〜84cをリン
クすることができる。つまり、リンク手段82はチャネ
ル手段84a〜84cのうちの1つを他のどれかのタス
ク手段の対応するチャネル手段84a〜84cに直接リ
ンクすることができる。従って、タスク手段68が多く
のチャネル手段84a、84b、及び84cを有する場
合、各チャネル手段84a〜84cは異なる上流又は下
流のタスク手段へリンクされることができる。一方、第
1の実施例において、リンク手段82はタスク手段68
にリンクされているので、タスク手段68のすべてのチ
ャネル手段84a〜84cは同じ次の上流/下流タスク
手段にリンクされることになる。
Finally, in the second embodiment, the link means 82 can link the individual channel means 84a-84c of the task means 68 instead of the generalized task means 68 itself. That is, the link means 82 can directly link one of the channel means 84a-84c to the corresponding channel means 84a-84c of any other task means. Thus, if task means 68 has many channel means 84a, 84b, and 84c, each channel means 84a-84c can be linked to a different upstream or downstream task means. On the other hand, in the first embodiment, the link means 82 is
, All channel means 84a-84c of task means 68 will be linked to the same next upstream / downstream task means.

【0049】図2に示されているように、各インスタン
ス生成された関数、即ちタスクは、データソース12と
コンピュータ100上で動作しているホストアプリケー
ション120との間で動作されるパイプライン40のセ
クション40a、40b、及び40cとしてビジュアル
化されることができる。ホストアプリケーション120
はCPU21によって現在実行されている(且つRAM
26に格納される)アプリケーションである。パイプラ
イン40の各セクション40a、40b、及び40c
は、一つ又はそれ以上のデータ処理チャネル42、パイ
プラインセクションの状態を定義するデータ構造44、
及び0個以上の外部ポート46を備える。パイプライン
セクション40b及び40c並びにホストアプリケーシ
ョン120のそれぞれが、これらのパイプラインセクシ
ョン40b及び40c又はホストアプリケーション12
0を次の上流パイプラインセクション40a、40b、
及び40cのそれぞれへリンクする逆方向リンク48を
有する。或いは、各パイプラインセクション40a、4
0b、及び40cは、直ぐ下流のパイプラインセクショ
ン40b及び40c又はホストアプリケーション120
への順方向リンク48’を有する。最後に、逆方向リン
ク48と順方向リンク48’の両方が提供されてもよ
い。
As shown in FIG. 2, each instantiated function, or task, is associated with a pipeline 40 running between data source 12 and host application 120 running on computer 100. It can be visualized as sections 40a, 40b, and 40c. Host application 120
Is currently being executed by the CPU 21 (and RAM
26 (stored at 26). Each section 40a, 40b, and 40c of the pipeline 40
Comprises one or more data processing channels 42, a data structure 44 defining the state of the pipeline section,
And zero or more external ports 46. Each of the pipeline sections 40b and 40c and the host application 120
0 to the next upstream pipeline section 40a, 40b,
And 40c each have a reverse link 48. Alternatively, each pipeline section 40a, 4
0b and 40c are the immediately downstream pipeline sections 40b and 40c or the host application 120
Has a forward link 48 '. Finally, both a reverse link 48 and a forward link 48 'may be provided.

【0050】データ処理システムの好適な実施の形態に
おいて、パイプラインは「インテリジェント」パイプラ
インセクションを有する。これらのインテリジェントパ
イプラインセクションは、ホストコンピュータから動作
される時、ホストアプリケーションによるいかなる割り
込みも必要とせずに、パイプラインを動的に再構成する
ことが可能である。
In the preferred embodiment of the data processing system, the pipeline has an "intelligent" pipeline section. These intelligent pipeline sections can dynamically reconfigure the pipeline when operated from the host computer without the need for any interrupts by the host application.

【0051】例えば、中間パイプラインセクション40
bは、第一パイプラインセクション40aによって戻さ
れたデータ要素を処理することが可能であるかを決定す
ることができる。中間パイプラインセクション40bが
データ要素を処理することが不可能な場合、この中間パ
イプラインセクション40bは、関数ライブラリ10を
動的に呼び出し、新たなパイプラインセクション40d
をインスタンス生成する。この新しいパイプラインセク
ション40dは第一パイプラインセクション40aにリ
ンクされる。次に、パイプラインセクション40bはそ
れ自体のリンクを変えて、第一パイプラインセクション
40aではなくこの新しいパイプラインセクション40
dを指し示す。
For example, the intermediate pipeline section 40
b can determine whether it is possible to process the data elements returned by the first pipeline section 40a. If the intermediate pipeline section 40b is unable to process the data element, the intermediate pipeline section 40b dynamically calls the function library 10 and a new pipeline section 40d
Instantiate. This new pipeline section 40d is linked to the first pipeline section 40a. Next, the pipeline section 40b changes its own link so that this new pipeline section 40
Indicates d.

【0052】或いは、中間パイプラインセクション40
bがそのデータを処理することが不可能であると決定し
た場合(例えそれがそのパイプラインを再構成しようと
する場合でも)、当該パイプラインセクション40bは
ハードエラーを示すエラーコードを最下流のパイプライ
ンセクション40cに戻す。この最下流のセクション4
0cは、エラーコードをホストアプリケーション120
に提供する。ホストアプリケーション120におけるエ
ラー処理システムは、エラーコードライブラリからその
エラーの性質を決定する。一つの実施の形態において
は、ホストアプリケーション120はそれがエラーから
回復するためにパイプラインを再構成又は再初期化する
ことができるかを決定する。もしできる場合、ホストア
プリケーションはパイプラインを再構成又は再初期化す
る。しかし、ホストアプリケーションがエラーから回復
することが不可能である場合又はこの能力を備えていな
い場合、ホストアプリケーションは余裕を持って抜け出
す。
Alternatively, the intermediate pipeline section 40
If b determines that it cannot process the data (even if it attempts to reconfigure the pipeline), the pipeline section 40b will send an error code indicating a hard error to the most downstream Return to pipeline section 40c. This lowest section 4
0c indicates an error code in the host application 120.
To provide. The error handling system in the host application 120 determines the nature of the error from the error code library. In one embodiment, host application 120 determines whether it can reconfigure or reinitialize the pipeline to recover from an error. If so, the host application reconfigures or reinitializes the pipeline. However, if the host application is unable to recover from the error or does not have this capability, the host application exits with room.

【0053】この様な回復不可能エラーは、例えば、画
像を処理する際に生じ得る。画像内に1000本の走査
ラインがあるのに走査ライン画像データ要素が第998
回目の呼び出しで第1のパイプラインセクションへ戻さ
れなかったことをヘッダが示した場合、システムはハー
ドエラーに出くわす。単に処理するデータがないため
に、パイプラインがそれ自体を再構成しようとする能力
があるにも関わらず、このエラーは回復することができ
ない。この場合、第1のパイプラインセクションは”E
RR”エラーコードを戻す。次に、ホストアプリケーシ
ョンはエラー処理システムを使用してエラーコードに対
する理由を決定する。このエラーの性質を決定した後、
ホストアプリケーションは、そのシステムのいかなる再
構成又は再初期化を行っても意味がないので、余裕を持
って抜け出る。
Such an unrecoverable error can occur, for example, when processing an image. There are 1000 scan lines in the image but the scan line image data element is
If the header indicates that the first call did not return to the first pipeline section, the system encounters a hard error. This error cannot be recovered despite the pipeline's ability to reconfigure itself, simply because there is no data to process. In this case, the first pipeline section is "E
RR "error code. The host application then uses the error handling system to determine a reason for the error code. After determining the nature of this error,
The host application exits gracefully because any reconfiguration or re-initialization of the system is meaningless.

【0054】パイプラインが再構成される場合、中間パ
イプラインセクション40bは新しいパイプラインセク
ション40dからデータをリクエストする。この新しい
パイプラインセクション40dは第一パイプラインセク
ション40aからデータをリクエストし、第一パイプラ
インセクション40aは得られたデータ要素を新しいパ
イプラインセクション40dに提供する。あるいは、関
数ライブラリ10を呼び出す時、中間パイプラインセク
ション40bは第一パイプラインセクション40aから
受け取ったデータ要素を新しいパイプラインセクション
40dに提供することができ、これによって新しいパイ
プラインセクション40dはこのセクションが生成され
るとすぐにこのデータ要素を有する。従って中間パイプ
ラインセクション40bが新しいパイプラインセクショ
ン40dからデータをリクエストする時、新しいパイプ
ラインセクション40dは即座に処理を行なってそのデ
ータ要素を戻すことができる。
When the pipeline is reconfigured, the intermediate pipeline section 40b requests data from a new pipeline section 40d. The new pipeline section 40d requests data from the first pipeline section 40a, and the first pipeline section 40a provides the obtained data elements to the new pipeline section 40d. Alternatively, when calling the function library 10, the intermediate pipeline section 40b can provide the data elements received from the first pipeline section 40a to the new pipeline section 40d, whereby the new pipeline section 40d will It has this data element as soon as it is created. Thus, when the intermediate pipeline section 40b requests data from the new pipeline section 40d, the new pipeline section 40d can immediately process and return its data elements.

【0055】さらに、順方向リンク48’が提供される
場合、各インテリジェントパイプラインセクションは、
そのデータ構造のなかに、データ要素がこのパイプライ
ンセクションによって処理される必要があるかを決定す
るための手段を含むことができる。処理する必要がない
場合、パイプラインセクションは、ホストアプリケーシ
ョンに全く割り込まれることなく、パイプラインを動的
に再構成してそのセクション自体をパイプラインから取
り除くことができる。インテリジェントパイプラインセ
クションは、そのセクションがリンクされている下流の
タスクをその後方リンク(逆方向リンク)に変えて、そ
の下流タスクをそのインテリジェントパイプラインセク
ションの上流のタスクにリンクさせる。これは、そのパ
イプラインセクションからインテリジェントパイプライ
ンセクションを”短絡させる”。インテリジェントパイ
プラインセクションがどの下流パイプラインセクション
を変更するかを知り、下流パイプラインセクションが適
切な上流パイプラインセクションにリンクされるよう
に、順方向リンクが必要である。
In addition, if a forward link 48 'is provided, each intelligent pipeline section will:
Within the data structure, means for determining whether a data element needs to be processed by this pipeline section may be included. If it does not need to be processed, the pipeline section can dynamically reconfigure the pipeline and remove itself from the pipeline without any interruption to the host application. The intelligent pipeline section turns the downstream task to which the section is linked into its back link (reverse link), linking the downstream task to the upstream task of the intelligent pipeline section. This "shorts" the intelligent pipeline section from that pipeline section. A forward link is needed so that the intelligent pipeline section knows which downstream pipeline section to change and the downstream pipeline section is linked to the appropriate upstream pipeline section.

【0056】外部ポート46は、パイプラインセクショ
ンの現在の状態を検査するため、パイプラインセクショ
ンのデータ構造44にデータを書き込むため、そのパイ
プラインセクションの現在の状態を変えるため、又はパ
イプラインセクションのリンケージを動的に変更して動
的にセクションを追加したりパイプライン40からセク
ションを削除したりするために使用される。一般に、外
部ポート46は、データ要素を単に処理するだけのデー
タチャネル42から独立してパイプラインを制御するた
めに使用される。つまり、データチャネル42は、上流
パイプラインセクションから受け取ったデータを単独で
処理し、この処理されたデータを下流のパイプラインセ
クションへ出力するために使用される。外部ポート46
は、データチャネル42の動作に影響を与えずにパイプ
ラインセクションのデータ構造44へのアクセスを可能
にする。
The external port 46 can be used to check the current state of a pipeline section, write data to the pipeline section data structure 44, change the current state of that pipeline section, or It is used to dynamically change the linkage to dynamically add sections and remove sections from the pipeline 40. Generally, external port 46 is used to control the pipeline independent of data channel 42, which merely processes data elements. That is, the data channel 42 is used to independently process data received from the upstream pipeline section and output the processed data to the downstream pipeline section. External port 46
Allows access to the data structure 44 of the pipeline section without affecting the operation of the data channel 42.

【0057】従って、もう1つの実施の形態では、例え
ば、パイプライン40が生成された後で、第一パイプラ
インセクション40aと中間パイプラインセクション4
0bの間に新しいパイプラインセクション40dを追加
することが必要となった場合、これは外部ポート46を
用いて達成される。この例では、最終パイプラインセク
ション40cはそのデータ構造の一部として、チャネル
内でデータをテストするための構造を有する。最終パイ
プラインセクション40cで受け取ったデータの形式が
この最終パイプラインセクション40cの適切な動作に
必要な形式に適さないのに中間パイプラインセクション
40bがそのデータを処理する前にそのデータが変更さ
れなればならない場合、最終パイプラインセクション4
0cは、新しいパイプラインセクション40dを動的に
インスタンス生成してそれを第一パイプラインセクショ
ン40aと中間パイプラインセクション40bの間に挿
入する。この最終パイプラインセクション40cは、中
間パイプラインセクション40bの外部ポート46を介
してこの中間パイプラインセクション40bのデータ構
造44にアクセスすることによってこれを行なう。最終
パイプラインセクション40cは中間パイプラインセク
ション40bのリンク48を変更し、これにより第一パ
イプラインセクション40aからリンク48を新しいパ
イプラインセクション40dへ変える。同様に、新しい
パイプラインセクション40dのデータ構造44は、こ
れが適切に初期化されて第一パイプラインセクション4
0aへ確実にリンクされるようにアクセスされる。
Therefore, in another embodiment, for example, after the pipeline 40 has been created, the first pipeline section 40a and the intermediate pipeline section 4
If it becomes necessary to add a new pipeline section 40d during 0b, this is achieved using the external port 46. In this example, final pipeline section 40c has a structure for testing data in a channel as part of its data structure. Even if the format of the data received in the final pipeline section 40c is not suitable for the format required for proper operation of the final pipeline section 40c, the data may be modified before the intermediate pipeline section 40b processes the data. If not, final pipeline section 4
0c dynamically instantiates a new pipeline section 40d and inserts it between the first pipeline section 40a and the intermediate pipeline section 40b. This final pipeline section 40c does this by accessing the data structure 44 of this intermediate pipeline section 40b via the external port 46 of the intermediate pipeline section 40b. The final pipeline section 40c changes the link 48 of the intermediate pipeline section 40b, thereby changing the link 48 from the first pipeline section 40a to a new pipeline section 40d. Similarly, the data structure 44 of the new pipeline section 40d contains the first pipeline section 4 when it is properly initialized.
0a is accessed to ensure linking.

【0058】動作上、図9に示されているアプリケーシ
ョンのようなホストアプリケーション120がデータソ
ース12からデータをリクエストする時、ホストアプリ
ケーションはまず、関数ライブラリ10から関数を呼出
してインスタンス生成することによってパイプライン4
0を形成する。図9に示されている実施例において、変
数 "i" 、" n" 、"add value"、及び"mul value"が
ホストアプリケーションの5行目で初期化される。6行
目では、第一タスク40aが「null」(ヌル、空白)タ
スクとして定義されている。第一タスクは、データソー
ス12からデータ要素を得るために接続されることがで
きると共に、「null」コマンドを用いて第一タスク40
aがデータソース12として作用するのを示すことが可
能である。図9の7行目において、パイプライン40に
おけるタスクの数は、ホストアプリケーションにより開
始された図10に示されるコマンドラインによって決定
される。一般に、ホストアプリケーションが動作する
と、パイプライン40の長さ及び構成要素が動的に決定
される。或いは、パイプライン40の長さ及び構成要素
はホストアプリケーションにおいて明白に記載される。
最後に、パイプライン40の初期の長さ及び構成要素が
動的に決定された時又は明白に記載された時であって
も、パイプライン40はデータソース12から受け取っ
たデータによってそれ自体を動的に再構成することがで
きる。
In operation, when a host application 120, such as the application shown in FIG. 9, requests data from the data source 12, the host application first calls the function from the function library 10 to instantiate it by creating an instance. Line 4
0 is formed. In the embodiment shown in FIG. 9, the variables "i", "n", "add value", and "mul value" are initialized in the fifth line of the host application. In the sixth line, the first task 40a is defined as a “null” (null, blank) task. The first task can be connected to obtain a data element from the data source 12 and the first task 40
It can be shown that a acts as a data source 12. In the seventh line of FIG. 9, the number of tasks in the pipeline 40 is determined by the command line shown in FIG. 10 started by the host application. Generally, as the host application runs, the length and components of the pipeline 40 are determined dynamically. Alternatively, the length and components of pipeline 40 are explicitly stated in the host application.
Finally, even when the initial length and components of pipeline 40 are dynamically determined or explicitly stated, pipeline 40 moves itself with data received from data source 12. Can be reconstructed dynamically.

【0059】図9に示されている例では、7行目に示さ
れているように、パイプライン40の長さはプログラム
を開始するコマンドラインにおいて明白に記載される。
この場合、パイプラインの長さは図10で示したように
5である。図9の8行目と9行目に示されているよう
に、各関数が呼び出されて初期化され、データソースか
らホストアプリケーションに拡張される。この場合、図
9の6行目に示されているように、第一タスク40aは
データソースとしても動作する。さらに、9行目に示さ
れているように、パイプライン40における各タスクは
同じ関数の異なるインスタンス生成又はタスクである。
図9の9行目と図5の17行目に示されているように、
この例における関数"Math Task" が初期化されると、そ
のデータ構造は、各々が現在値" i" にセットされる二
つのチャネルデータバッファと、パイプライン内の上流
タスクを指し示すポインタとを含む。さらに、パイプラ
イン内に上流タスクがない場合、ポインタは「null」に
セットされる。
In the example shown in FIG. 9, the length of the pipeline 40 is explicitly stated in the command line that starts the program, as shown on the seventh line.
In this case, the length of the pipeline is 5, as shown in FIG. As shown in lines 8 and 9 of FIG. 9, each function is called and initialized, and is extended from the data source to the host application. In this case, as shown in the sixth line in FIG. 9, the first task 40a also operates as a data source. Further, as shown in line 9, each task in pipeline 40 is a different instantiation or task of the same function.
As shown in line 9 in FIG. 9 and line 17 in FIG.
When the function "Math Task" in this example is initialized, its data structure contains two channel data buffers, each set to the current value "i", and a pointer to the upstream task in the pipeline. . Furthermore, if there is no upstream task in the pipeline, the pointer is set to "null".

【0060】関数ライブラリ10の中の関数はオブジェ
クト指向言語でオブジェクトとして定義されるので、図
9に示されている例において関数が初期化される度に、
同じ関数の異なるインスタンス生成が事実上行なわれ
る。従って、単一パイプライン40はあらゆる単一関数
の複数のコピーを有していてもよい。よって、関数の各
コピーはライブラリ内に格納された基底関数(base fun
ction )の異なるインスタンス生成であり、パイプライ
ン40の異なるタスク又はセクションとして動作する。
これにより、関数ライブラリ10の中の関数は、それら
がどの単一パイプラインにおいても一回以上使用される
ことができるので、再帰的である。
Since the functions in the function library 10 are defined as objects in an object-oriented language, each time the functions are initialized in the example shown in FIG.
Different instantiations of the same function are effectively performed. Thus, a single pipeline 40 may have multiple copies of any single function. Therefore, each copy of the function is a base function (base fun
ction) and operate as different tasks or sections of the pipeline 40.
This allows the functions in function library 10 to be recursive as they can be used more than once in any single pipeline.

【0061】8行目及び9行目においてパイプライン内
の各タスクが生成された後、初期化されたタスクのチャ
ネル(この場合は二つ)が10行目と11行目で実行さ
れる。一旦、図9に示されたホストアプリケーション
が、10行目と11行目で実行された複数のチャネルを
介してタスクから最終データを受け取ると、図10に示
された出力は、図9の12行目と13行目に記載されて
いるようにプリントされる。
After the tasks in the pipeline are generated in the eighth and ninth lines, the channels (two in this case) of the initialized tasks are executed in the tenth and eleventh lines. Once the host application shown in FIG. 9 receives the final data from the task via the multiple channels executed on lines 10 and 11, the output shown in FIG. Printed as described on lines 13 and 13.

【0062】図9のホストアプリケーションにおいて、
上記に記載したように、8行目及び9行目において、パ
イプラインは、関数"MathTask"の多くの独立したインス
タンス生成を有する。図5〜図8は、図9に示されてい
るように、ホストアプリケーションによって形成される
パイプラインに必要な各インスタンス生成を形成するた
め、図9の8行目及び9行目においてホストアプリケー
ションによって呼び出されるライブラリオブジェクト"M
athTask"を示す。
In the host application shown in FIG.
As described above, in lines 8 and 9, the pipeline has many independent instantiations of the function "MathTask". FIGS. 5-8 illustrate the instantiations required by the host application in lines 8 and 9 of FIG. Called library object "M
athTask ".

【0063】図5に示されている関数"MathTask"の1〜
6行目では、主要データ構造が定義される。1〜6行目
に示されているように、データ構造は、二つのチャネル
(即ちチャネル1及びチャネル2)及び逆方向即ち上流
リンクを含む。次に、7行目〜12行目では、この関数
に第1及び第2のチャネルのそれぞれに対して特定のデ
ータ構造、"aval"及び"mval"が定義される。
The functions "MathTask" shown in FIG.
In the sixth line, the main data structure is defined. As shown in lines 1-6, the data structure includes two channels (ie, channel 1 and channel 2) and a reverse or upstream link. Next, in lines 7-12, the function defines specific data structures, "aval" and "mval", for each of the first and second channels.

【0064】次に、17行目で、チャネル1に対するデ
ータ要求"avalue"及びチャネル2に対するデータ要求"m
value"、並びに上流リンク”link”を用いて、タスク"M
athTask"のインスタンス生成手順が定義される。18〜
20行目では、チャネル1及びチャネル2のそれぞれに
対する変数"avalue"及び"mvalue"並びにリンクが定義さ
れる。最後に、21行目では、関数"MathTask"のタスク
を作成してRAM26のメモリブロックを割り当てるた
めの手順が、図6に表されたように定義される。
Next, in the 17th line, the data request “avalue” for the channel 1 and the data request “m” for the channel 2
value ", and the upstream link" link ", the task" M
athTask "instance generation procedure is defined.
In the twentieth line, variables “avalue” and “mvalue” for each of channel 1 and channel 2 and a link are defined. Finally, on line 21, a procedure for creating a task of the function "MathTask" and allocating a memory block in the RAM 26 is defined as shown in FIG.

【0065】次に、図7の28〜37行目に示されてい
るように、チャネル1に関連するデータ処理手順とデー
タ構造が定義される。チャネル1のデータ処理手順は、
直ぐ上流のタスクから番号を得る。さらに、図9の6行
目に示されているように、パイプラインにおける第一タ
スクは”null”タスクである。第一タスクに対する”nu
ll”状態から生じる結果は、"val" の初期値をゼロに定
義する32行目で定義される。33行目において逆方向
リンクが存在する場合、34行目では値"val"は上流タ
スクのチャネル1の出力にセットされる。次に、35行
目では、値"val" は、現在のパイプラインセクションの
チャネル1の加数値"aval"をその値へ追加することによ
って更新される。各パイプラインセクションに対するチ
ャネル1の加数値"aval"は、25行目では図9の9行目
でセットされたパイプラインセクションの状態パラメー
タ"avalue"にセットされていた。最後に、チャネル1の
データ処理手順は、新しい値"val" を直ぐ下流のパイプ
ラインセクションへ戻すことによって終了する。
Next, as shown in lines 28 to 37 of FIG. 7, a data processing procedure and a data structure relating to channel 1 are defined. The data processing procedure for channel 1 is as follows:
Get the number from the task immediately upstream. Further, as shown in the sixth line of FIG. 9, the first task in the pipeline is a “null” task. "Nu" for the first task
The result from the "ll" state is defined in line 32, which defines the initial value of "val" to be zero. If there is a reverse link in line 33, then in line 34 the value "val" is the value of the upstream task The value "val" is then updated in line 35 by adding the channel 1 addend "aval" of the current pipeline section to that value. The addend value “aval” of channel 1 for each pipeline section was set in the state parameter “avalue” of the pipeline section set in line 9 of FIG. The data processing procedure ends by returning the new value "val" to the pipeline section immediately downstream.

【0066】同様に、図7〜図8の38〜47行目では
チャネル2のデータ処理手順が定義される。唯一の違い
は39行目で起こり、図6の22行目で初期化されたチ
ャネル1の処理手順ではなく図6の23行目で初期化さ
れたチャネル2の手順を使用する。さらに、42行目で
は、値"val" は第1のパイプラインセクションに対す
る”null”データソースを補償するため、1に事前設定
される。45行目では、新しい値"val" は、図9の9行
目でセットされた、図6の26行目で状態パラメータ"m
value"にセットされたチャネル2の被乗数によって乗算
される古い値"val" に等しい。
Similarly, the data processing procedure for channel 2 is defined in lines 38 to 47 of FIGS. The only difference occurs at line 39, which uses the procedure for channel 2 initialized at line 23 in FIG. 6 instead of the procedure for channel 1 initialized at line 22 in FIG. Further, on line 42, the value "val" is preset to 1 to compensate for a "null" data source for the first pipeline section. In line 45, the new value "val" is set in line 9 in FIG. 9, and the state parameter "m" in line 26 in FIG.
Equal to the old value "val" multiplied by the channel 2 multiplicand set to "value".

【0067】動作上、図9の8行目と9行目に示されて
いるホストアプリケーションは指示された回数だけ関
数"MathTask"を呼び出す。関数"MathTask"の第1のイン
スタンス生成はデータソースに接続されない”null”タ
スクとしてセットアップされる。再び、8行目と9行目
をルーピングすることによって、関数"MathTask"の第2
のインスタンス生成がタスク"MathTask"の先のインスタ
ンス生成への逆方向リンクを用いて形成される。その
後、図9の8行目と9行目を介する各ループごとに、関
数"MathTask"のさらなるインスタンス生成が形成され
る。図9に示されているホストアプリケーションの8行
目と9行目を介して最後のループが完了すると、ホスト
アプリケーションからタスクの最後の一つ"MathTask"へ
の逆方向リンクはセットされたままとなる。図4は、こ
のようにして初期化された3−セクションパイプライン
を示す。
In operation, the host application shown in the eighth and ninth lines in FIG. 9 calls the function "MathTask" a specified number of times. The first instantiation of the function "MathTask" is set up as a "null" task that is not connected to a data source. Again by looping lines 8 and 9, the second function "MathTask"
Is created using the reverse link to the previous instantiation of the task "MathTask". Thereafter, for each loop through lines 8 and 9 of FIG. 9, a further instantiation of the function "MathTask" is formed. When the final loop is completed via lines 8 and 9 of the host application shown in FIG. 9, the reverse link from the host application to the last one of the tasks "MathTask" remains set. Become. FIG. 4 shows a three-section pipeline initialized in this way.

【0068】次に、10行目と11行目において、ホス
トアプリケーションは、関数"MathTask"の最後のインス
タンス生成のチャネル1とチャネル2からデータをリク
エストする。最終タスクはその直ぐ上流のタスクからデ
ータをリクエストする。これは、その"MathTask"の第1
のインスタンス生成がチャネル1とチャネル2を通して
データに対するリクエストを受け取るまで続く。図3は
このタイプのデータフローの例を示す。ホストアプリケ
ーションが図9の10行目及び11行目でパイプライン
を呼び出した後、最終パイプラインセクションはそれが
リンクされるパイプラインセクションの各チャネルを図
7の34行目と44行目で呼び出す。次に、呼び出され
た各パイプラインセクションが、そのセクションがリン
クされる上流のパイプラインセクションを呼び出す。第
一パイプラインセクションに達すると、この第一パイプ
ラインセクションはデータソース12からデータ要素を
受け取るか、又はこの場合、データ要素を自己生成す
る。次に第一パイプラインセクションは、上記のように
それを呼び出したパイプラインセクションへそのデータ
要素を戻す。
Next, in the tenth and eleventh lines, the host application requests data from channels 1 and 2 of the last instantiation of the function "MathTask". The final task requests data from the task immediately upstream. This is the first of its "MathTask"
Continue until a request for data is received over channels 1 and 2. FIG. 3 shows an example of this type of data flow. After the host application calls the pipeline at lines 10 and 11 of FIG. 9, the final pipeline section calls each channel of the pipeline section to which it is linked, at lines 34 and 44 of FIG. . Next, each called pipeline section calls the upstream pipeline section to which it is linked. Upon reaching the first pipeline section, the first pipeline section receives a data element from the data source 12, or in this case, self-creates the data element. The first pipeline section then returns its data element to the pipeline section that called it as described above.

【0069】関数"MathTask"の第1のインスタンス生成
は、次にチャネル1とチャネル2に対して定義されたデ
ータ処理手順を実行する。第1のインスタンス生成は、
チャネル1に対しては値1(=0+1)及びチャネル2
に対しては値1(=1×1)を関数"MathTask"の第2の
インスタンス生成に戻す。関数"MathTask"の各インスタ
ンス生成は、第1の数をチャネル1で保持された値へ加
算し、チャネル2で保持された数に第2の数を乗じる。
図5〜図8に示されている例において、第1と第2の数
は、図9の9行目でパイプラインが生成された時に初期
化された加数と被乗数である。しかし、これらの数は動
的に生成されることもできた。従って、チャネル1及び
チャネル2において処理されたデータは、ホストアプリ
ケーションへ向けて下流へとリップルする。これによっ
て、関数"MathTask"の最下流のインスタンス生成は、リ
クエストされたデータをホストアプリケーションへ提供
する。
The first instantiation of the function "MathTask" then executes the data processing procedures defined for channels 1 and 2. The first instantiation is
Value 1 (= 0 + 1) and channel 2 for channel 1
Returns the value 1 (= 1 × 1) to the second instantiation of the function “MathTask”. Each instantiation of the function "MathTask" adds the first number to the value held in channel 1 and multiplies the number held in channel 2 by the second number.
In the example shown in FIGS. 5 to 8, the first and second numbers are the addend and the multiplicand initialized when the pipeline was generated in the ninth row of FIG. However, these numbers could also be generated dynamically. Thus, the data processed in channel 1 and channel 2 ripple downstream towards the host application. Thus, the lowest-level instantiation of the function "MathTask" provides the requested data to the host application.

【0070】CPU21が図9に示されているホストア
プリケーションを実行する時、これはホストアプリケー
ションをRAM26のメモリブロック26aに格納す
る。ホストアプリケーションは、実際には、割り当て可
能メモリブロック26a内に格納されたデータ構造であ
る。データ構造自体は指定されたメモリのテンプレート
を有しており、このテンプレートはCPU21の制御動
作のフロー(流れ)を定義する。割り当てられたメモリ
ブロック26aの第1の部分において、様々なメモリ位
置が変数として定義され及び/又は割り当てられる。デ
ータブロック26aはまたホストアプリケーションの状
態を定義する様々なメモリ位置、及びホストアプリケー
ションによってリクエストされたデータ又はホストアプ
リケーションによって処理されたデータを記憶するため
のバッファとして動作する様々なメモリ位置を含む。
When the CPU 21 executes the host application shown in FIG. 9, it stores the host application in the memory block 26a of the RAM 26. The host application is actually a data structure stored in the allocatable memory block 26a. The data structure itself has a designated memory template, and this template defines the flow of the control operation of the CPU 21. In the first part of the allocated memory block 26a, various memory locations are defined and / or allocated as variables. The data block 26a also includes various memory locations that define the state of the host application, and various memory locations that act as buffers for storing data requested by or processed by the host application.

【0071】同様に、ホストアプリケーションが、例え
ば関数"MathTask"をインスタンス生成するために関数ラ
イブラリ10を呼び出す時、他のデータブロック26b
がそのタスク又はパイプラインセクションへ割り当てら
れる。ホストアプリケーションのように、このパイプラ
インセクションは、実際には、割り当てられたメモリブ
ロック26bに対するテンプレートを含む、この割り当
てられたメモリブロック26b内のデータ構造である。
割り当てられたメモリブロックは、処理されるデータを
格納するためのバッファ、データのタイプを定義するた
めの種々のメモリ位置、このタスクがそのデータを受け
取る場所を示す手続きポインタ、そのタスクの状態を定
義するデータを記憶する種々のメモリ位置、及び直ぐ上
流のパイプラインセクションから受け取った処理済みデ
ータを記憶するための一つ又はそれより多くのデータバ
ッファを含む。
Similarly, when the host application calls the function library 10 to instantiate the function “MathTask”, for example, the other data block 26 b
Is assigned to that task or pipeline section. Like a host application, this pipeline section is actually a data structure within the allocated memory block 26b that contains a template for the allocated memory block 26b.
The allocated memory blocks define buffers for storing the data to be processed, various memory locations for defining the type of data, a procedure pointer indicating where this task will receive its data, and defining the state of the task. It includes various memory locations for storing data to be processed, and one or more data buffers for storing processed data received from the immediately upstream pipeline section.

【0072】割り当てられたメモリブロック26bはチ
ャネル1とチャネル2に対するデータ処理動作を定義す
るデータ構造も含む。或いは、割り当てられたメモリブ
ロック26b内のデータ構造は、データ処理を実行する
ためのルックアップテーブル、又は関数ライブラリ10
における他の関数へのポインタを含んでもよい。一般
に、各タスクは、それが初期化されてメモリブロック2
6a〜26fの内の一つに割り当てられると、データ入
力、データ出力、タスク状態、及びそのタスクによって
実行される種々のデータ処理手続きに充分なバッファを
自動的に割り当てる。
The allocated memory block 26b also includes a data structure defining data processing operations for channel 1 and channel 2. Alternatively, the data structure in the allocated memory block 26b may be a look-up table or a function library 10 for performing data processing.
May include pointers to other functions in. In general, each task is initialized when memory block 2
When assigned to one of 6a-26f, sufficient buffers are automatically allocated for data input, data output, task status, and various data processing procedures performed by the task.

【0073】図11〜図13は、この方法を実施する制
御ルーチンを一般化したフローチャートを示す。図11
に示されているように、スタートしてから、ステップS
10において、ホストアプリケーション120は単一処
理CPU21によって実行される。ステップS20で
は、一つのデータ処理パイプラインがコンピュータ10
0の現在の動作において必要であるか否かをコントロー
ラ21がチェックする。必要でない場合、制御ルーチン
はステップS10へ戻る。
FIGS. 11 to 13 show flowcharts that generalize a control routine for implementing this method. FIG.
As shown in the figure, after starting, step S
In 10, the single application CPU 21 executes the host application 120. In step S20, one data processing pipeline is connected to the computer 10
The controller 21 checks whether it is necessary in the current operation of 0. If not, the control routine returns to step S10.

【0074】しかし、パイプラインが必要である場合、
制御ルーチンはステップS30へ進み、関数ライブラリ
から関数を呼び出す。次に、ステップS40において、
呼び出された関数は第一タスク又は第一パイプラインを
形成するためにインスタンス生成される。次に、ステッ
プS50で、データ処理システム20は追加のパイプラ
インセクションが必要であるか否かをチェックする。必
要である場合、制御ルーチンはステップS30へ戻って
ライブラリから次の関数を呼び出す。従って、制御ルー
チンは、追加のタスクが必要でなくなるまで、ステップ
S30〜S50をルーピングする。追加のタスクが必要
でなくなった時点で、制御ルーチンはステップS60へ
進む。
However, if a pipeline is needed,
The control routine proceeds to step S30, and calls a function from the function library. Next, in step S40,
The called function is instantiated to form a first task or first pipeline. Next, in step S50, data processing system 20 checks whether additional pipeline sections are needed. If necessary, the control routine returns to step S30 to call the next function from the library. Thus, the control routine loops steps S30-S50 until no additional tasks are needed. When the additional task is no longer needed, the control routine proceeds to step S60.

【0075】ステップS60では、パイプラインが呼び
出される。ステップS70では、パイプラインは処理さ
れたデータ要素をホストアプリケーションへ戻す。次
に、ステップS80でデータ処理システム20は追加の
データが必要か否かを決定する。追加のデータが必要な
場合、制御ルーチンはステップ60に戻ってパイプライ
ンを再び呼び出す。
At step S60, the pipeline is called. In step S70, the pipeline returns the processed data element to the host application. Next, in step S80, the data processing system 20 determines whether additional data is needed. If additional data is needed, the control routine returns to step 60 to invoke the pipeline again.

【0076】しかし、更なるデータが必要とされない場
合、制御ルーチンはステップS90へ進み、様々なパイ
プラインセクションへ割り当てられたメモリの割り当て
解除することによって取り除かれる。ステップS100
では、ホストアプリケーションの次のコマンドが実行さ
れる。次に、ステップS110において、データ処理シ
ステム20は更なるパイプラインが必要であるかを決定
する。必要である場合、制御ルーチンはステップS30
へ戻る。
However, if no more data is needed, the control routine proceeds to step S90 and is removed by deallocating the memory allocated to the various pipeline sections. Step S100
Then, the next command of the host application is executed. Next, in step S110, data processing system 20 determines whether more pipelines are needed. If necessary, the control routine proceeds to step S30.
Return to

【0077】しかし、この時点でパイプラインが必要と
されない場合、制御ルーチンはステップS120へ進
み、データ処理システム20はホストアプリケーション
120が完了したか否かを決定する。完了した場合、制
御ルーチンはストップする。そうでない場合(完了して
いない場合)、制御ルーチンはステップS100へ戻
る。
However, if no pipeline is required at this point, the control routine continues to step S120, where data processing system 20 determines whether host application 120 has been completed. If completed, the control routine stops. Otherwise (if not completed), the control routine returns to step S100.

【0078】図12はインスタンス生成ステップS40
のためのフローチャートを示す。ステップS40のイン
スタンス生成ルーチンにエンターした後、制御ルーチン
はステップS200へ進み、ここでそのタスクのための
主要データ構造が生成される。次に、ステップS210
でこのタスクに独特のデータ構造の部分が生成される。
次に、ステップS220でチャネルデータ構造が作成さ
れ、ステップS230で逆方向リンクが作成される。順
方向リンクが必要であればそのデータ構造が定義される
が、順方向リンクがリンクする下流タスクがまだ作成さ
れていないので、それはパイプラインが呼び出されるま
で終了されない。リンクはリンクされたパイプラインセ
クションを呼び出すための手続きポインタを有する。次
に、ステップS240で制御ルーチンはステップS40
へ戻る。
FIG. 12 shows an instance generation step S40.
2 shows a flowchart for the following. After entering the instance creation routine of step S40, the control routine proceeds to step S200, where a primary data structure for the task is created. Next, step S210
Creates a part of the data structure that is unique to this task.
Next, a channel data structure is created in step S220, and a reverse link is created in step S230. If a forward link is required, its data structure is defined, but it is not terminated until the pipeline is called because the downstream task to which the forward link links has not yet been created. The link has a procedure pointer for calling the linked pipeline section. Next, in step S240, the control routine proceeds to step S40.
Return to

【0079】図13はステップS60の呼出しルーチン
のためのフローチャートを示す。ステップS60からス
タートして、制御ルーチンはステップS300へ進み、
ここでホストアプリケーション120は最終パイプライ
ンセクションからデータをリクエストする。次に、ステ
ップS310で現在のパイプラインセクションは次の上
流パイプラインセクションからデータをリクエストす
る。ステップS320では、データ処理システム20は
次のパイプラインセクションが第一パイプラインセクシ
ョンであるか否かを決定する。第一パイプラインセクシ
ョンでない場合、制御ルーチンはステップS310へ戻
る。
FIG. 13 shows a flowchart for the calling routine of step S60. Starting from step S60, the control routine proceeds to step S300,
Here, the host application 120 requests data from the last pipeline section. Next, in step S310, the current pipeline section requests data from the next upstream pipeline section. In step S320, the data processing system 20 determines whether the next pipeline section is the first pipeline section. If it is not the first pipeline section, the control routine returns to step S310.

【0080】しかし、次のパイプラインセクションが第
一パイプラインセクションであれば、制御ルーチンはス
テップS330へ進む。ステップS330において、デ
ータ処理システム20は第一パイプラインセクション
が”null”セクションであるか否かを決定する。”nul
l”セクションでない場合、制御ルーチンはステップS
340へ進み、ここで第一パイプラインセクションは外
部ソースからデータ要素を得る。第一パイプラインセク
ションが”null”セクションである場合、制御ルーチン
はステップS350へ進み、ここで第一パイプラインセ
クションはデータ要素を自己生成する。
However, if the next pipeline section is the first pipeline section, the control routine proceeds to step S330. In step S330, the data processing system 20 determines whether the first pipeline section is a “null” section. ”Nul
If not, the control routine proceeds to step S
Proceeding to 340, where the first pipeline section obtains data elements from an external source. If the first pipeline section is a "null" section, the control routine continues to step S350, where the first pipeline section self-creates the data element.

【0081】どちらのケースにおいても、制御ルーチン
はステップS340又はステップS350のどちらかを
経てステップS360へ進み、ここで第一パイプライン
セクションはデータを直ぐ下流のパイプラインセクショ
ンへ戻す。ステップS370では、次のパイプラインセ
クションがデータを処理する。次にステップS380に
おいて、次のパイプラインセクションが最終パイプライ
ンセクションである場合、処理されたデータはステップ
S390でホストアプリケーションへ戻される。しか
し、次のパイプラインセクションが最終パイプラインセ
クションでない場合、ステップS360へのループバッ
クにより示されるようにデータは新しい直ぐ下流のパイ
プラインセクションへ戻され、データ要素が処理され
る。この「ルーピング」は、最終パイプラインセクショ
ンに到達してステップS390でデータがホストアプリ
ケーションへ戻されるまで行なわれる。次いで制御ルー
チンはステップS60へ戻る。
In either case, the control routine proceeds to step S360 via either step S340 or step S350, where the first pipeline section returns data to the immediately downstream pipeline section. In step S370, the next pipeline section processes the data. Next, in step S380, if the next pipeline section is the last pipeline section, the processed data is returned to the host application in step S390. However, if the next pipeline section is not the last pipeline section, the data is returned to the new immediately downstream pipeline section as indicated by the loopback to step S360, and the data element is processed. This "looping" is performed until the final pipeline section is reached and the data is returned to the host application in step S390. Next, the control routine returns to step S60.

【0082】本発明のデータ処理パイプラインの第1の
実施例において、前もって定義された逆方向リンクに代
わって又はこの逆方向リンクに付け加えて順方向リンク
が提供される。この場合、現在の最下流タスクから逆方
向リンクが定義された後で、直ぐ上流のタスクから最下
流タスクへの順方向リンクが定義される。
In a first embodiment of the data processing pipeline of the present invention, a forward link is provided instead of or in addition to a predefined reverse link. In this case, after the reverse link is defined from the current lowest task, the forward link from the task immediately upstream to the lowest task is defined.

【0083】或いは、順方向リンクのみが提供されれば
よい。しかし、この場合において、パイプラインセクシ
ョンは、ホストアプリケーションから上流へ、データソ
ースへ向かって初期化される。次に、データソースから
下流へホストアプリケーションへとパイプラインが呼び
出される。
Alternatively, only the forward link need be provided. However, in this case, the pipeline section is initialized upstream from the host application towards the data source. Next, a pipeline is invoked downstream from the data source to the host application.

【0084】さらなる実施例において、単一の順方向リ
ンク又は単一の逆方向リンクをタスク間へ提供するので
はなく、各タスクが二つ又はそれより多くのデータ処理
チャネルを有する場合、これらのチャネル自体が順方向
及び/又は逆方向リンクによって共にリンクされる。こ
の場合、各チャネルは、タスクの中のどれかの対応する
他のチャネルに逆方向又は順方向にリンクされることが
できる。従って、第一パイプラインセクションのチャネ
ルの内の一つは第2のパイプラインセクションの対応す
るチャネルとリンクされ、第一パイプラインセクション
の他のチャネルは第3パイプラインセクションの対応チ
ャネルにリンクされる。
In a further embodiment, rather than providing a single forward link or a single reverse link between tasks, if each task has two or more data processing channels, The channels themselves are linked together by forward and / or reverse links. In this case, each channel can be linked backward or forward to any other corresponding channel in the task. Thus, one of the channels of the first pipeline section is linked to the corresponding channel of the second pipeline section, and the other channel of the first pipeline section is linked to the corresponding channel of the third pipeline section. You.

【0085】本発明の更に他の実施例において、特別な
「論理入力数(ファンイン”fan-in”)」及び「論理出
力数(ファンアウト”fan-out ”)」のパイプラインセ
クションが提供される。これらのパイプラインセクショ
ンでは、二つ以上の上流のパイプラインセクションがフ
ァンイン分岐パイプラインセクションを用いて1つの下
流パイプラインセクションとリンクされる。同様に、フ
ァンアウト分岐パイプラインセクションを用いて単一の
上流パイプラインセクションを二つ以上の下流パイプラ
インセクションに接続してもよい。
In yet another embodiment of the present invention, special "logical input (fan-in)" and "logical output (fan-out)" pipeline sections are provided. Is done. In these pipeline sections, two or more upstream pipeline sections are linked to one downstream pipeline section using a fan-in branch pipeline section. Similarly, a single upstream pipeline section may be connected to two or more downstream pipeline sections using a fan-out branch pipeline section.

【0086】図14〜図17に示されているように、こ
のシステムのアプリケーションでは、システムは、走査
ライン毎を基準に画像を非常に効率的に処理するストリ
ーム指向のユニックス(登録商標)パイプラインをエミ
ュレートするために作成される。このユニックス(登録
商標)パイプラインは、モジュール性や容易なメンテナ
ンスを含む多数の利点を有する。しかし、ユニックス
(登録商標)パイプラインは、多重処理プロセッサを必
要としたり、携帯性の欠如、それ自体の動的な再構成能
力の欠如、及びタスクスケジューリング及びデータフロ
ー処理においてシステムオーバーヘッドが必要であるな
どを含む、多くの欠点も有している。
As shown in FIGS. 14-17, in the application of this system, the system is a stream oriented Unix® pipeline that processes images very efficiently on a scan line by scan line basis. Created to emulate This Unix® pipeline has a number of advantages, including modularity and easy maintenance. However, the Unix pipeline requires multi-processors, lacks portability, lacks its own dynamic reconfiguration capabilities, and requires system overhead in task scheduling and data flow processing. It also has a number of drawbacks, including:

【0087】本発明の画像処理パイプラインにおいて、
画像は二つの主要部分、つまりヘッダと画像本体とに分
割される。ヘッダは、そこに表示されるカラースペース
(色空間)や向き等の画像の状態、及び走査ラインの長
さや走査ラインの数、インタレースファクタ、ピッチ等
のような画像の寸法を定義する。画像本体は、ラスタ出
力スキャナ形式等で実際の走査ラインデータを含み、こ
のとき各走査ラインはパイプラインを通過すべき一つの
データ要素である。このタイプの画像処理パイプライン
では、画像本体は同じ走査ライン構造を複数回繰り返し
たものを含む。
In the image processing pipeline of the present invention,
The image is divided into two main parts, a header and the image body. The header defines the state of the image, such as the color space (color space) and orientation displayed thereon, and the dimensions of the image, such as the length of the scan lines, the number of scan lines, the interlace factor, the pitch, and the like. The image body contains the actual scan line data, such as in the form of a raster output scanner, where each scan line is one data element that must pass through the pipeline. In this type of image processing pipeline, the image body includes the same scan line structure repeated multiple times.

【0088】パイプラインセクションはそれぞれ少なく
とも三つのチャネルを有する。第1のチャネルはヘッダ
情報を処理するために使用される。第2のチャネルは、
走査ライン毎を基準に画像本体を処理するために使用さ
れる。パイプラインによって提供される画像処理のタイ
プに従って一つ以上の第2のチャネルタイプのチャネル
が提供されることができる。第3のチャネルは、必要な
クリーンアップ(削除)動作を実行し、画像が完全に処
理されるとパイプラインセクションに割り当てられたメ
モリを解除するために使用される。画像処理はこの第3
のチャネルが呼び出される時までに完了するので、第3
チャネルを介したデータの流れのみがエラー処理情報と
なる。第3のチャネルは、各上流のパイプラインセクシ
ョンに、画像処理から生じたあらゆるエラーコードを戻
させ、この情報が一度戻されたら、受け取る下流パイプ
ラインセクションに、上流のパイプラインセクションを
動的に削除させる。さらに、あらゆる必要な外部ポート
手続きポインタはこの画像処理パイプラインのパイプラ
インセクションのデータ構造内に含まれる。
The pipeline sections each have at least three channels. The first channel is used to process header information. The second channel is
Used to process the image body on a per scan line basis. One or more channels of the second channel type may be provided according to the type of image processing provided by the pipeline. The third channel is used to perform any necessary cleanup (delete) operations and release the memory allocated to the pipeline section once the image has been completely processed. Image processing is the third
Channel 3 is completed by the time it is called,
Only the data flow through the channel is the error processing information. The third channel causes each upstream pipeline section to return any error codes resulting from the image processing, and once this information is returned, dynamically transfers the upstream pipeline section to the receiving downstream pipeline section. Let me delete it. In addition, any necessary external port procedure pointers are included in the data structure of the pipeline section of the image processing pipeline.

【0089】即ち、図14〜図17に示された画像処理
システムにおいて、図19の一般化されたタスク手段6
8は、ヘッダチャネルとして第1のチャネル手段を、画
像処理チャネルとして第2のチャネル手段84bを、及
びエンドチャネルとして第3のチャネル手段84cを備
える。
That is, in the image processing system shown in FIGS. 14 to 17, the generalized task means 6 shown in FIG.
8 includes a first channel unit as a header channel, a second channel unit 84b as an image processing channel, and a third channel unit 84c as an end channel.

【0090】上記のように、処理された画像データが必
要であるとホストアプリケーションが決定した時、デー
タ処理パイプラインが生成される。パイプラインは関数
ライブラリ10から様々なライブラリ関数をインスタン
ス生成することによって生成される。画像処理システム
において、これらの関数は、画像のカラーを反転する”
invert”、白黒画像をカラー化する”colorize”、例え
ば画像内のエッジをソフトにするために重畳フィルタか
ける”filter”、画像本体を拡大する”enlarge ”、及
び画像本体を縮小する”reduce”を含む。このリストは
例示を目的としており、全てを網羅してはいない。例え
ば、”invert”は黒のピクセルを白のピクセルへ、又は
その逆へ変換することができる。さらに、”invert”
は、カラー画素を、例えば赤からシアンへ、緑をマゼン
タへ、及び青を黄へ変換することもできる。
As described above, when the host application determines that processed image data is needed, a data processing pipeline is created. The pipeline is generated by instantiating various library functions from the function library 10. In image processing systems, these functions invert the color of the image. "
"invert", "colorize" to colorize black and white images, "filter" to apply a superposition filter to soften the edges in the image, "enlarge" to enlarge the image body, and "reduce" to reduce the image body This list is intended to be illustrative and not exhaustive: for example, "invert" can convert a black pixel to a white pixel and vice versa, and "invert"
Can convert color pixels, for example, from red to cyan, green to magenta, and blue to yellow.

【0091】データ処理パイプラインによって行われる
データ処理の例を図14を参照して以下に記載する。こ
の例は、カラー画像スキャナによって提供されるカラー
画像データブロックのデータ処理について述べている。
この例では、パイプラインはそれ自体を動的に再構成し
て検出されたエラーを克服することができる。
An example of data processing performed by the data processing pipeline will be described below with reference to FIG. This example describes the data processing of a color image data block provided by a color image scanner.
In this example, the pipeline can dynamically reconfigure itself to overcome detected errors.

【0092】この例では、ホストアプリケーションは関
数ライブラリからデータ処理関数をインスタンス生成し
て4色カラー画像を受け取って処理し、この画像は図1
4に表されたように4色プリンタでホストアプリケーシ
ョンにより印刷される。次にパイプラインは、カラース
キャナから画像のヘッダデータを入力するため、ホスト
アプリケーションによって呼び出される。ヘッダに対す
るリクエストは、第1パイプラインセクションに到達す
るまで、そのパイプラインのチャネル1まで移動する。
第一パイプラインセクションはスキャナからヘッダデー
タを得て、それをチャネル1の下流へ戻す。
In this example, the host application instantiates a data processing function from the function library and receives and processes the four-color image.
As shown in FIG. 4, printing is performed by a host application on a four-color printer. The pipeline is then called by the host application to input image header data from the color scanner. The request for the header travels to channel 1 of that pipeline until it reaches the first pipeline section.
The first pipeline section gets the header data from the scanner and returns it downstream of channel one.

【0093】各パイプラインセクションがヘッダを受け
取ると、各パイプラインセクションは、それが受け取る
べき画像本体を正確に処理することができるかを確かめ
るためにこのヘッダをチェックし、次にこのパイプライ
ンセクションが画像本体に対して行なうべきことを反映
するようにヘッダを変更する。このパイプラインセクシ
ョンは次にこの変更されたヘッダデータを隣接する下流
パイプラインセクションに送る。しかし、パイプライン
セクションが受け取るべき画像が適切に処理されること
が不可能であると決定した場合、このパイプラインセク
ションは、その問題を補正するため、そのパイプライン
を動的に再構成する。
When each pipeline section receives a header, each pipeline section checks this header to see if it can correctly process the image body to be received, and then checks this pipeline section. Changes the header to reflect what should be done for the image body. The pipeline section then sends the modified header data to an adjacent downstream pipeline section. However, if the pipeline section determines that the image to be received cannot be properly processed, the pipeline section dynamically reconfigures the pipeline to correct the problem.

【0094】カラースキャナが4色スキャナであると仮
定してパイプラインが生成されたのにそのカラースキャ
ナが4色スキャナではなく3色スキャナであった場合、
スキャナから受け取ったカラー画像のためのヘッダデー
タはその画像が3色カラー画像であることを示す。パイ
プラインは元々スキャナとプリンタが4色データを用い
ると仮定して設定されていたので、エラーが生じる。こ
の場合、潜在的なエラーはパイプラインセクションがヘ
ッダを処理する時に発見される。
If the pipeline is created assuming that the color scanner is a four-color scanner, but the color scanner is a three-color scanner instead of a four-color scanner,
The header data for the color image received from the scanner indicates that the image is a three-color image. An error occurs because the pipeline was originally set assuming that the scanner and the printer use four-color data. In this case, a potential error is found when the pipeline section processes the header.

【0095】エラーを検出したこのパイプラインセクシ
ョンは、そのパイプラインの直ぐ上流に新しいパイプラ
インセクションをインスタンス生成して追加することに
より、自動的にそのパイプラインを再構成する。この新
しいパイプラインセクションは、画像データのカラー空
間を3色から4色に変更する。同時に、エラーを検出し
たパイプラインセクションは新しいパイプラインセクシ
ョンの位置を反映するようにリンクを変更する。次い
で、ヘッダデータが戻される。これで、新しいパイプラ
インセクションがそれが画像のカラー空間を4色画像デ
ータに変えることを反映するようにヘッダを変更した
後、エラーを検出したパイプラインセクションは、それ
が画像データを正確に処理することができると決定す
る。
The pipeline section that detected the error automatically reconfigures the pipeline by instantiating and adding a new pipeline section immediately upstream of the pipeline. This new pipeline section changes the color space of the image data from three colors to four colors. At the same time, the pipeline section that detected the error changes the link to reflect the location of the new pipeline section. Then, the header data is returned. Now, after the new pipeline section changes the header to reflect that it changes the color space of the image to four-color image data, the pipeline section that detects the error will process the image data correctly. Decide that you can.

【0096】ヘッダが完全に処理されてホストアプリケ
ーションへ戻されると、ホストアプリケーションは画像
本体を入力するためにパイプラインを繰り返し呼び出
す。パイプラインが呼び出される度に、画像本体が得ら
れ、処理されて、処理済データセットとしてホストアプ
リケーションに戻される。このヘッダからホストアプリ
ケーションは画像本体内にいくつの走査ラインがあるか
を知り、これによって、画像本体全体を入力して処理す
るために呼出しサイクルがどれだけ必要かをも知ること
になる。他のすべての点において、パイプラインは概し
て上記のように動作する。全体の画像本体が得られ、処
理されて、且つホストアプリケーションへ戻されてしま
うと、ホストアプリケーションはパイプラインを停止
(シャットダウン)するために第3のチャネルを呼び出
す。図15は、このパイプラインの実行を示すフローチ
ャートを表す。
When the header has been completely processed and returned to the host application, the host application repeatedly calls the pipeline to enter the image body. Each time the pipeline is invoked, the image body is obtained, processed, and returned to the host application as a processed dataset. From this header, the host application knows how many scan lines are in the image body, and thus knows how many call cycles are required to input and process the entire image body. In all other respects, the pipeline operates generally as described above. Once the entire image body has been obtained, processed, and returned to the host application, the host application invokes a third channel to stop (shut down) the pipeline. FIG. 15 shows a flowchart showing the execution of this pipeline.

【0097】上記パイプラインシステムにおいて、タス
クはインスタンス生成されるとRAMメモリのセクショ
ン内に実際に配置され、幾つかの変数及びプロセスパラ
メータが事前セットされる。タスクはこのタスクがヘッ
ダデータを処理してしまうまで”インスタンス生成”さ
れない。上記のように、データパイプラインによって処
理された第一の情報はヘッダデータであり、ヘッダデー
タはパイプラインのチャネル1を下流にリップルする。
タスクが最初に直ぐ上流のタスクからヘッダデータを受
け取ったとき、このタスクはそれ自身のインスタンス生
成手続きを完了することができる。このとき全ての変数
値及びプロセスパラメータは最終的にセットされる。
In the above pipeline system, when a task is instantiated, it is actually placed in a section of RAM memory and some variables and process parameters are preset. A task is not "instantiated" until the task has processed the header data. As mentioned above, the first information processed by the data pipeline is the header data, which ripples down channel 1 of the pipeline downstream.
When a task first receives header data from the immediately upstream task, it can complete its own instantiation procedure. At this time, all variable values and process parameters are finally set.

【0098】上記の通り、パイプラインセクションがヘ
ッダデータを分析してそのデータを処理する必要がない
と判断した場合、パイプラインセクションはそのパイプ
ラインからそれ自身を短絡するステップをとることがで
きる。この短絡手続きは少なくとも2つの異なる方法で
発生することができる。第一の場合、パイプラインセク
ションはそのセクションがリンクされている上流のタス
クから画像データを受け取ってこの画像データを変更さ
れていない次の下流タスクに単に引き渡すことができ
る。第二の場合、逆方向リンクと順方向リンクが両方と
も提供された場合、不必要なタスクはそのパイプライン
のリンクを変更する外部手続きを用いることができ、こ
れにより、直ぐ上流のタスクはその画像データを直ぐ下
流のタスクに直接引き渡す。これは、不必要なタスクに
それがリンクされているすぐ下流のタスクのリンクポイ
ンタを変更させてそのリンクポインタがその不必要なタ
スクの直ぐ上流のタスクを指し示すようにすることによ
って、行われる。
As described above, if the pipeline section analyzes the header data and determines that it does not need to process the data, the pipeline section can take steps to short itself from the pipeline. This shorting procedure can occur in at least two different ways. In the first case, the pipeline section can receive image data from the upstream task to which the section is linked and simply pass this image data on to the next unmodified downstream task. In the second case, if both the reverse link and the forward link are provided, the unnecessary tasks can use an external procedure to change the link in the pipeline, so that the task immediately upstream can Deliver the image data directly to the task immediately downstream. This is done by causing the unnecessary task to change the link pointer of the task immediately downstream that it is linked to, so that the link pointer points to the task immediately upstream of the unnecessary task.

【0099】先述の短絡方法の両方において、不必要な
処理時間及びコンピュータリソースが、不必要なタスク
のインスタンス生成に注がれる。更に、第一の短絡方法
が使用される場合、不必要なタスクがメモリの中に残っ
て画像データを変更しないで単に引き渡すだけなので、
更に不必要な処理ステップが生じて更に処理時間がかか
ってしまう。これらの欠点を克服する本発明の他の実施
の形態について以下に述べる。
In both of the short circuits described above, unnecessary processing time and computer resources are devoted to instantiating unnecessary tasks. Further, when the first short circuit method is used, unnecessary tasks remain in memory and are simply delivered without altering the image data,
Unnecessary processing steps occur, and processing time is further increased. Other embodiments of the present invention that overcome these disadvantages will be described below.

【0100】本発明の他の実施の形態では、各タスク、
即ちパイプラインセクションは第二及び第三の処理チャ
ネルのみを含む。ヘッダデータはホストアプリケーショ
ンによって最初にインスタンス生成されるときに各タス
クにより読み込まれる。インスタンス生成の後、タスク
がそのデータを処理する必要がないと判断した場合、イ
ンスタンス生成手続きはキャンセルされ、ホストアプリ
ケーションは次のタスクに進む。この実施の形態におい
て、不必要なタスクはまずインスタンス生成されない。
その結果、不必要なタスクをインスタンス生成したり必
要のない処理ステップを行ったりしてシステムリソース
が浪費されることはない。
In another embodiment of the present invention, each task
That is, the pipeline section includes only the second and third processing channels. The header data is read by each task when it is first instantiated by the host application. If, after instance creation, the task determines that there is no need to process the data, the instance creation procedure is canceled and the host application proceeds to the next task. In this embodiment, unnecessary tasks are not instantiated first.
As a result, system resources are not wasted by instantiating unnecessary tasks or performing unnecessary processing steps.

【0101】この実施の形態のタスク手段を一般化した
もの83について、図20を参照して以下に述べる。一
般化されたタスク手段83はこの実施の形態に従ったパ
イプラインのどのタスク手段であってもよい。
A generalization 83 of the task means of this embodiment will be described below with reference to FIG. Generalized task means 83 may be any task means in the pipeline according to this embodiment.

【0102】この一般化されたタスク手段83はリンク
手段82、データチャネル手段85(複数の別々のデー
タチャネル85a、85b等を含むことができる)、デ
ータ処理手段86、データ分析手段88、エラーコード
生成手段92、タスク状態手段90、再構成手段96、
外部ポート手段94、及びデータ獲得/生成手段98を
含む。これらの手段の各々については、図19に表され
た一般化タスク手段を参照して先に記載した。この一般
化されたタスク手段83(図20に図示)は、データソ
ースからヘッダを獲得したり又はヘッダを生成したりす
るためのヘッダデータ獲得/生成手段87、獲得/生成
されたヘッダデータに基づいてタスクを初期化するため
の初期化手段89、獲得/生成されたヘッダデータを分
析してそのタスクが上流タスクからこれから受け取るデ
ータを処理することができるかどうかを判断するための
ヘッダデータ分析手段93、パイプラインを再構成する
ための再構成手段95、タスクが上流のタスクからこれ
から受け取るデータを処理する必要がないと判断したと
きにインスタンス生成プロセスをキャンセルするための
自己削除手段99、及び生成されたエラーコードを集め
てそのパイプラインをシャットダウン(停止)するため
のエンドチャネル手段97を含んでも良い。また、この
一般化されたタスク手段83は、そのパイプラインの再
構成を容易にするためにそのタスクの状態又はリンクに
アクセスできるようにするために、そのパイプラインの
他のタスクによって呼び出されることができる外部手続
きを生成するための外部手続き生成手段91も含んでも
良い。もちろん、特定のインスタンス生成されたタスク
はこれらの基本的特徴を組み合わせて含んでも良く、ま
た本発明を実施するために先述の特徴の全てが必要なわ
けではないことを理解されたい。
The generalized task means 83 includes link means 82, data channel means 85 (which may include a plurality of separate data channels 85a, 85b, etc.), data processing means 86, data analysis means 88, error codes Generating means 92, task status means 90, reconstructing means 96,
External port means 94 and data acquisition / generation means 98 are included. Each of these means has been described above with reference to the generalized task means represented in FIG. The generalized task means 83 (shown in FIG. 20) includes a header data acquisition / generation means 87 for acquiring a header from a data source or generating a header, based on the acquired / generated header data. Means 89 for initializing a task, and header data analyzing means for analyzing the acquired / generated header data to determine whether the task can process data to be received from an upstream task. 93, reconfiguration means 95 for reconfiguring the pipeline, self-deletion means 99 for canceling the instance generation process when the task determines that there is no need to process data received from the upstream task, and generation End to collect the error codes and shut down the pipeline It may include Yaneru means 97. Also, this generalized task means 83 may be called by other tasks in the pipeline to provide access to the state or links of the task to facilitate reconfiguration of the pipeline. An external procedure generation means 91 for generating an external procedure that can perform the above-mentioned operations may be included. Of course, it should be understood that a particular instantiated task may include a combination of these basic features, and not all of the foregoing features may be required to practice the present invention.

【0103】この実施の形態に従ったパイプラインにつ
いて、図16及び図20を参照して以下に述べる。ホス
トアプリケーションは、パイプラインの生成を開始する
とき、第一パイプラインセクション40aをインスタン
ス生成し、この第一パイプラインセクション40aはデ
ータソース12からヘッダデータを即座に読み出すか、
又は即座にヘッダデータを生成する。第一パイプライン
セクション40aはヘッダデータに従って、その変数及
びプロセスパラメータの全てを初期化する。また、第一
パイプラインセクション40aはその外部手続き生成手
段91を用いて外部手続きを生成し、これにより他のパ
イプラインセクションは第一パイプラインセクション4
0aから直接ヘッダデータを読みだすことができる。第
一パイプラインセクション40aがヘッダデータを処理
し、それ自身を初期化し、及び外部手続きを生成してし
まった後、ホストアプリケーションは第二パイプライン
セクション40bをインスタンス生成する。
A pipeline according to this embodiment will be described below with reference to FIGS. When the host application starts generating a pipeline, it instantiates a first pipeline section 40a, which reads header data from the data source 12 immediately or
Alternatively, header data is generated immediately. The first pipeline section 40a initializes all of its variables and process parameters according to the header data. Also, the first pipeline section 40a generates an external procedure using its external procedure generation means 91, whereby the other pipeline sections are separated from the first pipeline section 4a.
Header data can be read directly from 0a. After the first pipeline section 40a has processed the header data, initialized itself, and created the external procedure, the host application instantiates the second pipeline section 40b.

【0104】第二パイプラインセクション40bは第一
パイプラインセクション40aによりセットアップされ
た外部手続きを呼出し、第一パイプラインセクション4
0aからヘッダデータを獲得する。第二パイプラインセ
クション40bはヘッダデータを分析して、このデータ
がデータ処理パイプラインで必要かどうかを判断する。
第二パイプラインセクション40bはその画像処理が必
要であると判断すると、ヘッダデータに基づいてその変
数及びプロセスパラメータの全てを初期化し、ヘッダデ
ータを処理してこれから行うデータ処理を反映させる。
次に第二パイプラインセクション40bはその外部手続
き生成手段91を用いて新しい外部手続きを生成し、他
のパイプラインセクションにその処理済ヘッダデータを
読み込ませる。
The second pipeline section 40b calls an external procedure set up by the first pipeline section 40a, and calls the first pipeline section 4
Obtain header data from 0a. The second pipeline section 40b analyzes the header data to determine if this data is needed in the data processing pipeline.
When the second pipeline section 40b determines that the image processing is necessary, all the variables and process parameters are initialized based on the header data, and the header data is processed to reflect the data processing to be performed.
Next, the second pipeline section 40b generates a new external procedure using the external procedure generation means 91, and causes the other pipeline sections to read the processed header data.

【0105】この実施の形態では、パイプラインセクシ
ョンはその画像処理ステップがその画像処理パイプライ
ンに必要でないと判断した場合、そのパイプラインセク
ションはメモリから自分自身を削除してホストアプリケ
ーションに制御を送り返す。次に、ホストアプリケーシ
ョンは先に進んで次のパイプラインセクションをインス
タンス生成する。この結果、不要なパイプラインセクシ
ョンをインスタンス生成してメモリが浪費されることが
なくなり、データ処理ステップを行わないパイプライン
セクションを通して画像データを引き渡すような無駄な
処理時間がなくなる。
In this embodiment, if the pipeline section determines that the image processing step is not necessary for the image processing pipeline, the pipeline section deletes itself from memory and returns control to the host application. . Next, the host application proceeds to instantiate the next pipeline section. As a result, memory is not wasted by instantiating unnecessary pipeline sections, and unnecessary processing time such as passing image data through pipeline sections that do not perform data processing steps is eliminated.

【0106】例えば、上流パイプラインセクションから
画像データを受け取って1000×1000ピクセルの
画像を生成するためにこの受け取った画像を必要なだけ
縮小又は拡大するために、ホストアプリケーションによ
って縮小/拡大パイプラインセクションがインスタンス
生成されると仮定する。このパイプラインセクションの
インスタンス生成中、このセクションは隣接する上流パ
イプラインセクションにより生成された外部手続きを呼
び出すことにより、この隣接する上流パイプラインセク
ションからヘッダデータを獲得する。上流パイプライン
セクションによりこれから供給される画像データが既に
1000×1000ピクセルであるとヘッダデータが示
した場合、縮小/拡大パイプラインセクションは必要で
なくなる。従って、縮小/拡大パイプラインセクション
はメモリから自分自身を削除し、ホストアプリケーショ
ンは先に進んで次のパイプラインセクションをインスタ
ンス生成する。
For example, in order to receive image data from an upstream pipeline section and to reduce or enlarge this received image as needed to generate a 1000 × 1000 pixel image, a reduction / enlargement pipeline section is provided by the host application. Is instantiated. During instance creation of this pipeline section, this section obtains header data from the adjacent upstream pipeline section by calling an external procedure created by the adjacent upstream pipeline section. If the header data indicates that the image data to be supplied by the upstream pipeline section is already 1000 × 1000 pixels, the reduction / enlargement pipeline section is not needed. Thus, the shrink / expand pipeline section deletes itself from memory, and the host application proceeds to instantiate the next pipeline section.

【0107】最終パイプラインセクション40cがイン
スタンス生成されてしまうと、最終パイプラインセクシ
ョン40cは外部手続きを生成し、この外部手続きによ
り、ホストアプリケーションはこの最終パイプラインセ
クション40cから処理済のヘッダデータを読みだすこ
とができるようになる。ホストアプリケーションはこの
外部手続きを呼び出してヘッダデータを獲得し、次に最
終パイプラインセクション40cへの最初のデータ呼出
しを行ってデータ処理を開始する。本発明の他の実施の
形態について先に述べたように、データに対するリクエ
ストは第一パイプラインセクション40aまで上流にリ
ップルし、第一パイプラインセクション40aはデータ
ソース12から画像データの第一ラインを獲得し(又は
画像データのラインを生成し)、第一パイプラインセク
ション40aはその画像データを隣接する下流パイプラ
インセクションに戻し、処理された画像データはホスト
アプリケーションに達するまでそのパイプラインセクシ
ョンの各々を下流にリップルする。
When the final pipeline section 40c is instantiated, the final pipeline section 40c generates an external procedure, and the host application reads the processed header data from the final pipeline section 40c by the external procedure. Will be able to do so. The host application calls this external procedure to obtain the header data, and then makes the first data call to the final pipeline section 40c to start data processing. As described above for other embodiments of the invention, the request for data ripples upstream to the first pipeline section 40a, which routes the first line of image data from the data source 12 to the first pipeline section 40a. Acquiring (or generating a line of image data), the first pipeline section 40a returns the image data to an adjacent downstream pipeline section, and the processed image data is transferred to each of the pipeline sections until it reaches the host application. Ripple downstream.

【0108】特定の画像のための画像データの全てがホ
ストアプリケーションによって受け取られた後、ホスト
アプリケーションはエンドチャネル手段97を用いてあ
らゆるエラーコードを集め、そのパイプラインセクショ
ンの各々のための使用されたメモリの割当てを解除する
ことによりそのパイプラインをシャットダウン(停止)
する。
After all of the image data for a particular image has been received by the host application, the host application collects any error codes using end channel means 97 and uses the error code for each of its pipeline sections. Shut down (stop) the pipeline by deallocating memory
I do.

【0109】この実施の形態では、不要なパイプライン
セクションが全くインスタンス生成されないばかりでな
く、各パイプラインセクションはインスタンス生成の後
すぐに初期化される。これにより、パイプラインをセッ
トアップしてそのパイプラインを用いて画像データを処
理するするのに必要な時間を更に短くすることができ
る。
In this embodiment, not only unnecessary pipeline sections are not instantiated, but also each pipeline section is initialized immediately after instantiation. This can further reduce the time required to set up a pipeline and process image data using the pipeline.

【0110】更に、この実施の形態では、パイプライン
セクションが上流パイプラインセクションから受け取っ
たヘッダデータを分析し、これが上流パイプラインセク
ションから受け取ったヘッダデータを処理することがで
きないと判断した場合、このパイプラインセクションは
新しいパイプラインセクションをインスタンス生成して
この新しいパイプラインセクションをこのパイプライン
セクションと元々その上流にあったパイプラインセクシ
ョンとの間に挿入する。このプロセスは、他の実施の形
態について先に記載したプロセスに似ている。しかしこ
の実施の形態では、新しく挿入されたパイプラインセク
ションは、直ぐ上流のパイプラインセクションへの外部
手続き呼出しを介して直接直ぐ上流のパイプラインセク
ションから、又は新しいパイプラインセクションを生成
したパイプラインセクションから、ヘッダデータを受け
取らなければならない。どちらの場合でも、新しく生成
されたパイプラインセクションはヘッダデータを分析
し、その変数及びプロセスパラメータを初期化し、ヘッ
ダデータを処理し、他のパイプラインセクションにその
処理済ヘッダデータを獲得させる外部手続きをセットア
ップし、次にこれを生成したパイプラインセクションに
制御を戻す。新しいパイプラインセクションを生成した
パイプラインセクションは、新しいパイプラインセクシ
ョンから処理済ヘッダデータを獲得し、これに供給され
た画像データを今処理できるか確認する。もしできれ
ば、パイプラインセクションの構成は通常どおり進めら
れる。パイプラインセクションがその画像データをまだ
処理できない場合、更に新しいパイプラインセクション
を挿入する。
Further, in this embodiment, when the pipeline section analyzes the header data received from the upstream pipeline section and determines that it cannot process the header data received from the upstream pipeline section, The pipeline section instantiates a new pipeline section and inserts the new pipeline section between the pipeline section and the pipeline section that was originally upstream. This process is similar to the process described above for the other embodiments. However, in this embodiment, the newly inserted pipeline section is either directly from the immediately upstream pipeline section via an external procedure call to the immediately upstream pipeline section, or the pipeline section that created the new pipeline section. Must receive the header data. In either case, the newly created pipeline section analyzes the header data, initializes its variables and process parameters, processes the header data, and external procedures that allow other pipeline sections to obtain the processed header data. And then return control to the pipeline section that generated it. The pipeline section that created the new pipeline section obtains the processed header data from the new pipeline section and checks whether the image data supplied thereto can now be processed. If possible, the construction of the pipeline section proceeds as usual. If the pipeline section cannot process the image data yet, insert a newer pipeline section.

【0111】例えば、隣接する上流パイプラインセクシ
ョンから4色画像データを必要とする回転(循環)パイ
プラインセクションがインスタンス生成されると仮定す
る。インスタンス生成の間、回転パイプラインセクショ
ンは外部手続きを呼び出すことによって上流パイプライ
ンセクションからヘッダデータを得る。回転パイプライ
ンセクションに渡された画像データが3色画像データで
あるとヘッダデータが示した場合、回転パイプラインセ
クションはその画像データを処理することができないと
分かる。この問題を解決するために、回転パイプライン
セクションは、3色画像データを4色画像データに変え
る、新しい”カラー変更”パイプラインセクションをイ
ンスタンス生成させる。この新しいカラー変更パイプラ
インセクションは上流のパイプラインセクションにリン
クされ、この新しいカラー変更パイプラインセクション
は上流パイプラインセクションからヘッダデータを獲得
してそのインスタンス生成の一部として処理する。次
に、この新しいカラー変更パイプラインセクションは、
他のパイプラインセクションにこの新しいカラー変更パ
イプラインセクションから処理済ヘッダデータを獲得さ
せるための外部手続きを生成し、回転パイプラインセク
ションに制御を戻す。次に回転パイプラインセクション
は、新しいカラー変更パイプラインセクションからヘッ
ダデータを呼出し、それ自身の初期化を完了する。
For example, assume that a rotating (circulating) pipeline section that requires four-color image data is instantiated from an adjacent upstream pipeline section. During instantiation, the rotating pipeline section obtains header data from the upstream pipeline section by calling an external procedure. If the header data indicates that the image data passed to the rotating pipeline section is three-color image data, it is known that the rotating pipeline section cannot process the image data. To solve this problem, the rotating pipeline section causes a new "color change" pipeline section to be instantiated that changes the three color image data into four color image data. This new color change pipeline section is linked to the upstream pipeline section, which gets the header data from the upstream pipeline section and processes it as part of its instantiation. Next, this new color change pipeline section
Create an external procedure to cause the other pipeline section to obtain the processed header data from this new color change pipeline section and return control to the rotating pipeline section. The rotating pipeline section then calls the header data from the new color change pipeline section and completes its own initialization.

【0112】またインスタンス生成されているパイプラ
インセクションには、それ自身をもっと効率のよい他の
パイプラインセクションに置き換える能力が備えられて
いても良い。例えば、縮小/拡大パイプラインセクショ
ンは上流パイプラインセクションからあらゆるサイズの
画像データを受け取ってその画像データを1000×1
000ピクセルの画像データに変換するようにインスタ
ンス生成されると仮定する。縮小/拡大パイプラインセ
クションが上流パイプラインセクションからヘッダデー
タを得るとき、これから受け取る画像データが既に50
0×500ピクセルの画像データであることを発見する
かもしれない。縮小/拡大パイプラインセクションはま
た、関数ライブラリのなかの画像サイズに整数を乗じる
ように設計された別のデータ処理関数がその画像データ
をもっと効率的に処理して1000×1000ピクセル
の画像データを生成することができることが分かるかも
しれない。この場合、縮小/拡大パイプラインセクショ
ンは被乗数×整数の関数をインスタンス生成させて上流
パイプラインセクションにリンクさせ、それ自身をメモ
リから削除する。この結果、データ処理パイプラインは
高速且つより効率的になる。
The pipeline section that is being instantiated may have the ability to replace itself with another more efficient pipeline section. For example, the reduction / enlargement pipeline section receives image data of any size from the upstream pipeline section and stores the image data at 1000 × 1.
Assume that it is instantiated to convert to image data of 000 pixels. When the reduction / enlargement pipeline section gets header data from the upstream pipeline section, the image data to be received is already 50
You may find that it is image data of 0x500 pixels. The reduction / enlargement pipeline section also allows another data processing function in the function library, designed to multiply the image size by an integer, to process the image data more efficiently and process the image data of 1000 × 1000 pixels. You may find that it can be generated. In this case, the reduction / expansion pipeline section instantiates a multiplicand × integer function, links it to the upstream pipeline section, and deletes itself from memory. This results in a faster and more efficient data processing pipeline.

【0113】図21に記載されたように、本発明に従っ
たデータ処理システムの他のプッシュタイプの実施の形
態500は、ホストアプリケーション手段220、ライ
ブラリ手段10、メモリ管理手段56、及びデータ処理
パイプライン80を含む。データ処理パイプライン80
は、ホストアプリケーション手段220に接続される最
終タスク手段60、少なくとも1つの中間タスク手段6
2、及び第一タスク手段64を含む。また、データ処理
システム500はデータソース手段66も含む。またデ
ータ処理システム500は、出力装置166も含む。こ
の場合、ホストアプリケーション手段220はまた、デ
ータソース手段66の機能も果たす。複数のリンク70
は第一タスク手段64、少なくとも1つの中間タスク手
段62、及び最終タスク手段60を接続する。もちろ
ん、簡単なパイプライン80は第一タスク手段64のみ
しか含まなくても良い。データ入力リンク73はデータ
ソース手段66をホストアプリケーション手段220に
接続させる。第一タスク手段64は出力装置166への
ソフトウェアインターフェースである。第一タスク手段
64はデータ転送手段172、例えば電気ケーブルを介
して、データを出力装置166に提供する。
As shown in FIG. 21, another push-type embodiment 500 of the data processing system according to the present invention comprises a host application means 220, a library means 10, a memory management means 56, and a data processing pipe. Line 80 is included. Data processing pipeline 80
Is a final task means 60 connected to the host application means 220, at least one intermediate task means 6
2, and the first task means 64. Data processing system 500 also includes data source means 66. The data processing system 500 also includes an output device 166. In this case, the host application means 220 also performs the function of the data source means 66. Multiple links 70
Connects the first task means 64, at least one intermediate task means 62, and the final task means 60. Of course, the simple pipeline 80 may include only the first task means 64. Data input link 73 connects data source means 66 to host application means 220. The first task means 64 is a software interface to the output device 166. The first task means 64 provides data to the output device 166 via a data transfer means 172, for example, an electric cable.

【0114】ホストアプリケーション手段220は、デ
ータ処理パイプライン80に供給されたデータを前処理
するためのデータ処理手段58を含む。最初、データ処
理システム500はホストアプリケーション手段22
0、ライブラリ手段10、及びメモリ管理手段56のみ
を含む。ホストアプリケーション手段220はホストア
プリケーション手段220の中に保持されたインストラ
クションに従ってプロセスを操作する。このプロセッサ
は単一タスキング環境において動作する単一プロセッ
サ、多重タスキング環境において動作する単一プロセッ
サ、又は多重タスキング環境において動作する多重プロ
セッサであってもよい。この場合、ホストアプリケーシ
ョン手段220は単一タスキング環境にあるかの如く、
動作する。
The host application means 220 includes a data processing means 58 for pre-processing the data supplied to the data processing pipeline 80. Initially, the data processing system 500 is
0, only the library means 10, and the memory management means 56. The host application means 220 operates the process according to the instructions stored in the host application means 220. The processor may be a single processor operating in a single-tasking environment, a single processor operating in a multiple-tasking environment, or multiple processors operating in a multiple-tasking environment. In this case, the host application means 220 is as if in a single tasking environment,
Operate.

【0115】ホストアプリケーション手段220は、デ
ータを格納/出力装置に渡す必要があると判断すると、
データ処理パイプライン80を生成して呼び出す。従っ
てホストアプリケーション手段220はインスタンス生
成手段52及び呼出し手段54を含む。
When the host application means 220 determines that the data needs to be passed to the storage / output device,
Generate and call data processing pipeline 80. Therefore, the host application means 220 includes the instance generating means 52 and the calling means 54.

【0116】パイプライン80を生成するために、イン
スタンス生成手段52はライブラリ手段10にアクセス
して初期化されていない関数の内の1つを得、インスタ
ンス生成された関数又はタスクを生成してメモリのブロ
ック内に格納する。このインスタンス生成済関数、即ち
タスクは、ホストアプリケーション手段220又は以前
生成された他のタスクにリンクされる。タスクがホスト
アプリケーション手段にリンクされる場合、これは最終
タスク60である。タスクが他のタスクにリンクされて
他のタスクがそのタスクにリンクされる場合、これは中
間タスク62である。タスクが順方向リンクを持たず、
データを出力装置166に供給する場合、これは第一タ
スク64である。
To generate the pipeline 80, the instance generating means 52 accesses the library means 10 to obtain one of the uninitialized functions, generates an instantiated function or task, and Is stored in the block. This instantiated function, ie, the task, is linked to the host application means 220 or other previously created task. If the task is linked to a host application means, this is the final task 60. If a task is linked to another task and another task is linked to that task, this is an intermediate task 62. Task has no forward link,
This is the first task 64 when supplying data to the output device 166.

【0117】関数をインスタンス生成してタスクを生成
する際、インスタンス生成手段52はメモリ管理手段5
6と共に動作してRAMメモリ26(図1に図示)のメ
モリブロック26a〜26fのどれかに割り当て、その
タスクを格納する。全ての所望のタスクがインスタンス
生成されると、呼出し手段54はデータを最終タスク手
段60に供給してパイプライン80を呼び出す。最終タ
スク手段60はデータを処理してこれを中間タスク手段
62に渡す。中間タスク手段はデータを処理してこの処
理済みデータを第一タスク手段64に渡す。次に、ホス
トアプリケーション手段220によってデータが更に供
給される場合、呼出し手段54は再びパイプライン80
を呼び出す。
When generating a task by generating an instance of a function, the instance generating means 52
6 and is assigned to one of the memory blocks 26a to 26f of the RAM memory 26 (shown in FIG. 1) to store the task. When all desired tasks have been instantiated, the calling means 54 supplies the data to the final task means 60 and calls the pipeline 80. The final task means 60 processes the data and passes it to the intermediate task means 62. The intermediate task means processes the data and passes the processed data to the first task means 64. Then, if more data is provided by the host application means 220, the calling means 54 again returns to the pipeline 80
Call.

【0118】ホストアプリケーション220が所望のデ
ータを全て提供し終わると、呼出し手段54は再びパイ
プラインを呼び出してこれをシャットダウンし、パイプ
ライン80の操作により生じたエラーを全て削除する。
呼出し手段54はパイプラインからエラーコードをリク
エストする。このリクエストは先のように下流にリップ
ルする。各タスク手段は、エラーコードを生成したかど
うかを判断してこれらを戻す。エラーコードが戻される
と、呼出し手段54はメモリ管理手段56に信号を送
り、そのパイプライン80のタスク手段60〜64に割
り当てられていたメモリを解放する。
When the host application 220 has provided all the desired data, the calling means 54 calls the pipeline again, shuts it down, and deletes all errors caused by the operation of the pipeline 80.
The calling means 54 requests an error code from the pipeline. This request ripples down as before. Each task means determines whether an error code has been generated and returns them. When the error code is returned, the calling means 54 sends a signal to the memory management means 56 to release the memory allocated to the task means 60 to 64 of the pipeline 80.

【0119】図19は、本発明のプッシュシステムにも
使用されることができる一般化されたタスク手段68
(タスク手段60〜64のいずれかを表す)を表す。こ
のため、一般化されたタスク手段68は、特に以下の例
外を除き、プルシステムと同じような方法で、プッシュ
システムのために動作する。
FIG. 19 shows a generalized task means 68 that can also be used in the push system of the present invention.
(Represents one of the task means 60 to 64). Thus, the generalized task means 68 operates for a push system in a manner similar to a pull system, with the following exceptions.

【0120】順方向リンクが使用されるとき、リンク手
段82は、この一般化されたタスク手段68を次の即ち
下流のタスク手段68にリンクするか、又は逆方向リン
クが使用されるとき、この一般化されたタスク手段68
を先の即ち上流のタスク手段68にリンクする。もちろ
ん、両方のタイプのリンクを同時に使用することもでき
る。一般化されたタスク手段68はチャネル手段84a
〜84cの内の1つ以上を介して上流タスク手段から供
給されたデータを受け取る。次にこのデータはデータ処
理手段86を用いて処理され、その後、この処理済みデ
ータは下流タスク手段の対応するチャネル手段84a〜
84cに供給される。
When the forward link is used, link means 82 links this generalized task means 68 to the next or downstream task means 68, or when the reverse link is used, Generalized task means 68
Is linked to the preceding or upstream task means 68. Of course, both types of links can be used simultaneously. The generalized task means 68 comprises channel means 84a
Receive data supplied from upstream task means via one or more of .about.84c. The data is then processed using data processing means 86, after which the processed data is processed by the corresponding channel means 84a-84 of the downstream task means.
84c.

【0121】一般化されたタスク手段は、上流タスク手
段から受け取ったデータがそのデータ処理手段86に適
しているかを判断するデータ分析手段88を含んでもよ
い。そのデータが適切でない場合、データ分析手段は2
つの異なる可能な応答を有する。第一のタイプの応答で
は、簡略化されたタスク手段68は、エラーコード生成
手段92によって生成されたエラーコードを上流のタス
ク手段に返し、このエラーコードは最終的にはホストア
プリケーション手段220に到達する。ホストアプリケ
ーション手段220がエラーコードを受け取ると、アプ
リケーション手段220はエラー処理システムを用いて
そのエラーの性質(及び原因)を決定する。次にホスト
アプリケーション手段220は余裕を持って抜け出すこ
とができるか、又はそのパイプライン80を再構成及び
/又は再初期化することにより、エラーから回復しよう
とする。
The generalized task means may include a data analysis means 88 for determining whether the data received from the upstream task means is suitable for the data processing means 86. If the data is not appropriate, the data analysis means
With two different possible responses. In a first type of response, the simplified task means 68 returns the error code generated by the error code generation means 92 to the upstream task means, which eventually reaches the host application means 220 I do. When the host application means 220 receives the error code, the application means 220 uses an error handling system to determine the nature (and cause) of the error. The host application means 220 can then escape with a margin or attempt to recover from the error by reconfiguring and / or reinitializing its pipeline 80.

【0122】回復不可能な又はハードエラーが生じた場
合、タスク手段はエラーコード生成手段92を用いてエ
ラーコードを生成し、このエラーコードは上流のタスク
手段へと供給され、最終的にはホストアプリケーション
に到達する。
If an unrecoverable or hard error occurs, the task means generates an error code using the error code generation means 92, and this error code is supplied to the upstream task means, and finally the host means. Reach the application.

【0123】図22に表されたように、インスタンス生
成された各関数即ちタスクは、そのコンピュータ上で動
作するホストアプリケーション220と出力装置166
との間で動作しているパイプライン140のセクション
140a、140b、及び140cとしてビジュアル化
されることができる。ホストアプリケーション220は
CPU21により現在動作している(及びRAM26の
中に格納されている)アプリケーションである。パイプ
ライン140の各セクション140a、140b、及び
140cは、1つ以上のデータ処理チャネル42、パイ
プラインセクションの状態を定義するデータ構造44、
及び0個以上の外部ポート46を含む。また各パイプラ
インセクション140b及び140cは順方向リンク1
48も含み、この順方向リンク148はパイプラインセ
クション140b、140c、又はホストアプリケーシ
ョンを次の下流パイプラインセクション140a、14
0b、及び140cにそれぞれリンクする。更に、各パ
イプラインセクション140a、140b、及び140
cは直ぐ上流のパイプラインセクション140b及び1
40c又はホストアプリケーション220への逆方向リ
ンク148’を有しても良い。順方向リンク148及び
逆方向リンク148’の両方が1つのパイプラインの中
に同時に提供されることもできる。
As shown in FIG. 22, each of the instantiated functions or tasks is composed of a host application 220 running on the computer and an output device 166.
Can be visualized as sections 140a, 140b, and 140c of the pipeline 140 operating between. The host application 220 is an application currently being operated by the CPU 21 (and stored in the RAM 26). Each section 140a, 140b, and 140c of the pipeline 140 includes one or more data processing channels 42, a data structure 44 that defines the state of the pipeline section,
And zero or more external ports 46. Each of the pipeline sections 140b and 140c has a forward link 1
48, which forward link 148 connects the pipeline section 140b, 140c or the host application to the next downstream pipeline section 140a, 14c.
0b and 140c. Further, each pipeline section 140a, 140b, and 140
c is the immediately upstream pipeline section 140b and 1
40c or a reverse link 148 'to the host application 220. Both forward link 148 and reverse link 148 'can be provided simultaneously in one pipeline.

【0124】データ処理システムの好適な実施の形態に
おいて、パイプラインは”インテリジェント”パイプラ
インセクションを含む。これらのインテリジェントパイ
プラインセクションは、それがホストアプリケーション
から動作されるとき、ホストアプリケーションによって
介入されることなく、そのパイプラインを動的に再構成
することができる。
In the preferred embodiment of the data processing system, the pipeline includes "intelligent" pipeline sections. These intelligent pipeline sections can dynamically reconfigure the pipeline when it is run from the host application without intervention by the host application.

【0125】例えば、中間パイプラインセクション14
0bは、追加のタスクがホストアプリケーション220
によって供給されたデータ要素を完全に処理する必要が
あるかを判断することができる。図23に表されたよう
に、中間パイプラインセクション140bが新しい動作
(演算)を必要とするなら、中間パイプラインセクショ
ン140bは関数ライブラリ10を動的に呼び出して、
新しいパイプラインセクション140dをインスタンス
生成する。新しいパイプラインセクション140dはパ
イプラインセクション140bにリンク(追加)され
る。パイプラインセクション140bは次に、パイプラ
インセクション140cではなく新しいパイプラインセ
クション140dを指し示すようにその順方向リンクを
変更する。新しいパイプラインセクション140dはパ
イプラインセクション140aとの順方向リンクを確立
する。逆方向パイプラインリンクが存在する場合、パイ
プラインセクション140aはパイプラインセクション
140bから新しいパイプラインセクション140dに
逆方向リンクを変更し、この新しいパイプラインセクシ
ョン140dはパイプラインセクション140bとの逆
方向リンクを確立する。
For example, the intermediate pipeline section 14
0b indicates that the additional task is
It is possible to determine whether the data elements provided by the POS need to be completely processed. As shown in FIG. 23, if the intermediate pipeline section 140b needs a new operation (operation), the intermediate pipeline section 140b dynamically calls the function library 10 and
Instantiate a new pipeline section 140d. The new pipeline section 140d is linked (added) to the pipeline section 140b. Pipeline section 140b then changes its forward link to point to new pipeline section 140d instead of pipeline section 140c. New pipeline section 140d establishes a forward link with pipeline section 140a. If a reverse pipeline link exists, pipeline section 140a changes the reverse link from pipeline section 140b to a new pipeline section 140d, which replaces the reverse link with pipeline section 140b. Establish.

【0126】或いは、中間パイプラインセクション14
0bがそのデータを処理できないと判断した場合、(そ
のパイプラインを再構成する場合であっても)、この中
間パイプラインセクション140bはハードエラーを示
すエラーコードを上流パイプラインセクション140c
に戻す。パイプラインセクション140cはエラーコー
ドをホストアプリケーション220に供給する。ホスト
アプリケーション220の中のエラーコード処理システ
ムは、エラーコードライブラリからエラーの性質を決定
する。1つの実施の形態において、ホストアプリケーシ
ョン220はそのパイプラインを再構成するか又は再初
期化してエラーから回復することができるかどうか判断
する。もしできれば、そのパイプラインを再構成又は再
初期化する。しかし、ホストアプリケーションがそのエ
ラーから回復できない場合、この機能は与えられず、ホ
ストアプリケーションは余裕を持って抜け出る。
Alternatively, the intermediate pipeline section 14
0b determines that it cannot process the data (even when reconfiguring its pipeline), this intermediate pipeline section 140b sends an error code indicating a hard error to the upstream pipeline section 140c.
Return to The pipeline section 140c supplies the error code to the host application 220. The error code processing system in the host application 220 determines the nature of the error from the error code library. In one embodiment, the host application 220 determines whether its pipeline can be reconfigured or reinitialized to recover from the error. If possible, reconfigure or reinitialize the pipeline. However, if the host application cannot recover from the error, this function is not provided and the host application exits with a margin.

【0127】パイプラインが再構成されれば、パイプラ
インセクション140aは新しいパイプラインセクショ
ン140dからデータを受け取る。新しいパイプライン
セクション140dはパイプラインセクション140b
からデータを受け取る。或いは、パイプラインセクショ
ン140bは、関数ライブラリ10を呼び出すとき、パ
イプラインセクション140cから受け取ったデータ要
素を新しいパイプラインセクション140dに提供する
ことができるので、新しいパイプラインセクション14
0dは生成されるとすぐにデータ要素を有する。
When the pipeline is reconfigured, the pipeline section 140a receives data from the new pipeline section 140d. The new pipeline section 140d is replaced by the pipeline section 140b
Receive data from Alternatively, the pipeline section 140b can provide the data elements received from the pipeline section 140c to the new pipeline section 140d when calling the function library 10, so that the new pipeline section 140d can be provided.
0d has a data element as soon as it is generated.

【0128】更に、逆方向リンク148’が提供されれ
ば、各インテリジェントパイプラインセクションはその
データ構造の中に、そのデータ要素がそのパイプライン
セクションによって処理される必要があるかどうかを判
断するための手段を含むことができる。もし処理する必
要がなければ、パイプラインセクションはホストアプリ
ケーションの介入なしにそのパイプラインを動的に再構
成してそのパイプラインからそれ自身を取り除くことが
できる。インテリジェントパイプラインセクションは、
それがリンクされている上流タスクの順方向リンクを変
更させて、この上流タスクをインテリジェントパイプラ
インセクションの下流のタスクにリンクさせる。これ
は、パイプラインからインテリジェントパイプラインセ
クションを”短絡する”。インテリジェントパイプライ
ンセクションがどの上流パイプラインセクションを変更
するかを知り、その上流パイプラインセクションが適切
な下流パイプラインセクションにリンクされるために
は、逆方向リンクが必要である。インテリジェントパイ
プラインセクションは、次にそのパイプラインから全て
取り除かれても良い。
In addition, if a reverse link 148 'is provided, each intelligent pipeline section can determine in its data structure whether the data element needs to be processed by the pipeline section. Means can be included. If it does not need to be processed, the pipeline section can dynamically reconfigure the pipeline and remove itself from the pipeline without host application intervention. Intelligent pipeline section
Causes the forward link of the upstream task to which it is linked to change, linking this upstream task to a downstream task in the intelligent pipeline section. This "shorts" the intelligent pipeline section from the pipeline. A reverse link is required for the intelligent pipeline section to know which upstream pipeline section to modify, and for that upstream pipeline section to be linked to the appropriate downstream pipeline section. The intelligent pipeline section may then be entirely removed from the pipeline.

【0129】他の実施の形態において、例えばパイプラ
イン140が生成された後に、最終パイプラインセクシ
ョン140cとパイプラインセクション140bとの間
に新しいパイプラインセクション140dを加えること
が必要になれば、これは外部ポート46を用いて行われ
ても良い。この例では、パイプラインセクション140
aはそのデータ構造の一部として、チャネルの中のデー
タをテストするための構造を有する。パイプラインセク
ション140aによって受け取られたデータがパイプラ
インセクション140aの適切な動作に必要な形式に合
わず、中間パイプラインセクション140bがそのデー
タを処理する前にそのデータを変更しなければならない
場合、パイプラインセクション140aは新しいパイプ
ラインセクション140dを動的にインスタンス生成
し、これをパイプラインセクション140cとパイプラ
インセクション140bとの間に挿入する。逆方向リン
ク148’はこのプロセスを行う手段を提供する。好適
な実施の形態において、パイプラインセクション140
aは逆方向リンク148’を用いて、パイプラインセク
ション140bの外部ポート46を介してパイプライン
セクション140bのデータ構造44にアクセスするこ
とにより、これを行う。パイプラインセクション140
aはパイプラインセクション140cの順方向リンク1
48を変更し、順方向リンク148をパイプラインセク
ション140cから新しいパイプラインセクション14
0dに向ける。同様に、新しいパイプラインセクション
140dのデータ構造44にアクセスし、これを適切に
初期化させてパイプラインセクション140bにリンク
させる。順方向リンクのみが提供された実施の形態で
は、新しいパイプラインセクションがこのパイプライン
に挿入されても良く、これは以下の方法でデータを処理
するために追加のパイプラインセクションを必要とする
パイプラインセクションの上流にある。この新しいパイ
プラインセクションは図23を参照して先に述べたよう
に加えられる。次に、更なるパイプラインセクションを
必要とするパイプラインセクションが同じ方法でこの新
しいパイプラインセクションに加えられる。最後に、追
加のパイプラインセクションを必要とする元のパイプラ
インセクションが”no-op (ノーオペレーション)”状
態にセットされる。換言すると、元のパイプラインセク
ションはその上流にあるパイプラインセクションから新
しいパイプラインセクションへとデータを導く単なる導
管として機能する。
In other embodiments, for example, after the pipeline 140 has been created, if it becomes necessary to add a new pipeline section 140d between the final pipeline section 140c and the pipeline section 140b, This may be performed using the external port 46. In this example, the pipeline section 140
a has, as part of its data structure, a structure for testing the data in the channel. If the data received by the pipeline section 140a is not in the format required for the proper operation of the pipeline section 140a and the data must be modified before the intermediate pipeline section 140b processes the data, Line section 140a dynamically instantiates a new pipeline section 140d and inserts it between pipeline section 140c and pipeline section 140b. Reverse link 148 'provides a means to perform this process. In a preferred embodiment, the pipeline section 140
a does this by using the reverse link 148 'to access the data structure 44 of the pipeline section 140b via the external port 46 of the pipeline section 140b. Pipeline section 140
a is the forward link 1 of the pipeline section 140c
48 and change the forward link 148 from pipeline section 140c to the new pipeline section 14
Turn to 0d. Similarly, the data structure 44 of the new pipeline section 140d is accessed and properly initialized and linked to the pipeline section 140b. In embodiments where only the forward link is provided, a new pipeline section may be inserted into this pipeline, which may require additional pipeline sections to process data in the following manner. It is upstream of the line section. This new pipeline section is added as described above with reference to FIG. Next, pipeline sections that require additional pipeline sections are added to this new pipeline section in the same manner. Finally, the original pipeline section that needs the additional pipeline section is set to a "no-op" state. In other words, the original pipeline section functions as a mere conduit that directs data from the upstream pipeline section to the new pipeline section.

【0130】図24〜図26は、プッシュ方法を行う制
御ルーチンを一般化したフローチャートを表す。図24
に表されたように、開始後、ホストアプリケーション2
20が単一処理CPU21によって動作される(ステッ
プS510)。ステップS520ではコントローラ21
によって、データ処理パイプラインがコンピュター10
0のカレントの動作に必要であるかどうかがチェックさ
れる。必要でなければ、制御ルーチンはステップS51
0に戻る。
FIGS. 24 to 26 show flowcharts in which a control routine for performing the push method is generalized. FIG.
After the start, the host application 2
20 is operated by the single processing CPU 21 (step S510). In step S520, the controller 21
Allows the data processing pipeline to run on computer 10
It is checked whether it is necessary for the current operation of 0. If not, the control routine proceeds to step S51.
Return to 0.

【0131】しかし、パイプラインが必要な場合は制御
ルーチンはステップS530に進み、ここで関数ライブ
ラリから関数が呼び出される。次に、ステップS540
では、呼び出された関数がインスタンス生成されて第一
タスク即ち第一パイプラインセクションが形成される。
次に、ステップS550でデータ処理システム500は
追加のパイプラインセクションが必要かどうかをチェッ
クする。必要であれば、制御ルーチンはステップS53
0に戻ってライブラリから次の関数を呼び出す。こうし
て、制御ルーチンはタスクが必要でなくなるまでステッ
プS530〜S550を繰り返す。タスクが必要でなく
なった時点で、制御ルーチンはステップS560に進
む。
However, if a pipeline is required, the control routine proceeds to step S530, where a function is called from the function library. Next, step S540
In, the called function is instantiated to form a first task, a first pipeline section.
Next, in step S550, the data processing system 500 checks whether additional pipeline sections are needed. If necessary, the control routine proceeds to step S53.
Return to 0 and call the next function from the library. Thus, the control routine repeats steps S530 to S550 until the task is no longer needed. When the task is no longer needed, the control routine proceeds to step S560.

【0132】ステップS560では、パイプラインが呼
び出される。パイプラインはホストアプリケーションか
らデータを受け取り、そのパイプラインから呼び出され
たタスクの処理を続ける。処理されたデータは次に出力
装置166に供給される。次に、ステップS580で
は、データ処理システム500が更なるデータを処理す
る必要があるかどうかを判断する。処理する必要があれ
ば、制御ルーチンはステップS560に戻って再びパイ
プラインを呼び出す。
At step S560, the pipeline is called. The pipeline receives data from the host application and continues processing tasks called from the pipeline. The processed data is then provided to an output device 166. Next, in step S580, it is determined whether the data processing system 500 needs to process further data. If so, the control routine returns to step S560 to call the pipeline again.

【0133】しかし、更なるデータが必要でない場合、
制御ルーチンはステップS590に進み、ここで、様々
なパイプラインセクションに割り当てられていたメモリ
の割当てを解除することによって、そのパイプラインセ
クションが取り除かれる。ステップS600では、その
ホストアプリケーションの次のコマンドが動作する。次
に、ステップS610で、データ処理システム500
は、更なるパイプラインが必要かどうかを判断する。必
要であれば、制御ルーチンはステップS530に戻る。
However, if no further data is needed,
The control routine continues to step S590 where the various pipeline sections are removed by deallocating the memory that has been allocated to them. In step S600, the next command of the host application operates. Next, in step S610, the data processing system 500
Determines if more pipeline is needed. If necessary, the control routine returns to step S530.

【0134】しかし、この時点でパイプラインが必要で
なければ、制御ルーチンはステップS620に進み、こ
こでデータ処理システム500はホストアプリケーショ
ン220が終了したかどうかを判断する。終了したので
あれば、制御ルーチンは停止する。終了していなけれ
ば、制御ルーチンはステップS600に戻る。
However, if no pipeline is required at this point, the control routine continues to step S620, where data processing system 500 determines whether host application 220 has been terminated. If so, the control routine stops. If not, the control routine returns to step S600.

【0135】図25はインスタンス生成ステップS54
0のためのフローチャートを表す。ステップS540の
インスタンス生成ルーチンに入った後、制御ルーチンは
ステップS700に進み、ここで、そのタスクの主なデ
ータ構造が生成される。換言すると、メモリがそのタス
クに割り当てられ、結合されていないリンクが確立され
る。次に、ステップS710で、各タスクに独特のデー
タ構造の部分が生成される。言い換えると、メモリ位置
がゼロで埋められる。次に、ステップS720でチャネ
ルデータ構造が生成される。言い換えると、メモリ位置
がデフォルト設定される。次に、ステップS730にお
いて順方向リンクと(あれば)逆方向リンクが特定のタ
スクに連結される。逆方向リンクが必要な場合、そのデ
ータ構造は定義されるが、逆方向リンクが連結される上
流タスクがまだ生成されていないので、そのパイプライ
ンが呼び出されるまで、これは完成しない。このリンク
は手続きの集まりを指し示すポインタである。次に、ス
テップS740で、制御ルーチンはステップS540に
戻る。
FIG. 25 shows an instance generation step S54.
5 shows a flowchart for 0. After entering the instance creation routine of step S540, the control routine proceeds to step S700, where the main data structure of the task is created. In other words, memory is allocated to the task and an uncoupled link is established. Next, in step S710, a portion of the data structure unique to each task is generated. In other words, memory locations are filled with zeros. Next, a channel data structure is generated in step S720. In other words, the memory location is defaulted. Next, in step S730, the forward link and the reverse link (if any) are linked to a particular task. If a reverse link is required, its data structure is defined, but this is not completed until the pipeline is called, since the upstream task to which the reverse link is linked has not yet been created. This link is a pointer to a collection of procedures. Next, in step S740, the control routine returns to step S540.

【0136】図26は、ステップS560の呼出しルー
チンのためのフローチャートを表す。ステップS560
から始まって、制御ルーチンはステップS800へと進
み、ここでホストアプリケーション220は最終パイプ
ラインセクションにデータを供給する。次に、ステップ
S810で、このデータは現在のパイプラインセクショ
ンによって処理される。ステップS820では、データ
処理システム20は現在のタスクが順方向リンクを有す
るかどうかを判断する。リンクを有する場合、ステップ
S830でその次の下流パイプラインセクションにデー
タが供給され、このデータはステップS810で再び処
理される。このループはリンクを持たないパイプライン
セクション(第一パイプラインセクション)にデータが
供給されて処理されるまで続く。データが第一パイプラ
インセクションに供給されて処理されると、この処理さ
れたデータは出力装置に供給される(ステップS84
0)。次に制御ルーチンはステップS560に戻る。
FIG. 26 shows a flowchart for the calling routine of step S560. Step S560
, The control routine continues to step S800, where the host application 220 supplies data to the final pipeline section. Next, in step S810, the data is processed by the current pipeline section. In step S820, data processing system 20 determines whether the current task has a forward link. If so, data is provided to the next downstream pipeline section in step S830, which is processed again in step S810. This loop continues until data is supplied to the pipeline section having no link (first pipeline section) and processed. When the data is supplied to the first pipeline section and processed, the processed data is supplied to the output device (step S84).
0). Next, the control routine returns to step S560.

【0137】このシステムの他の応用において、図2
7、図28に表されたように、走査ライン毎を基準に画
像を非常に効率的に処理するストリーム指向UNIX
(登録商標)パイプラインをエミュレートするためのシ
ステムが生成される。このUNIX(登録商標)パイプ
ラインは先述のような多くの利点を有する。
In another application of this system, FIG.
7, a stream-oriented UNIX that processes images very efficiently on a scan line-by-scan line basis, as shown in FIG.
A system is created for emulating a pipeline. This UNIX pipeline has many advantages, as described above.

【0138】本発明に従って画像処理パイプラインにお
いて、画像は2つの主要部分(ヘッダ及び画像本体)に
分割される。ヘッダはそこに表示されるカラースペース
等の画像の状態、画像の向き、及び走査ラインの長さや
走査ラインの数、インタレースファクタ、ピッチ等のよ
うな画像の寸法を定義する。画像本体は、ラスタ出力ス
キャナ形式等で実際の走査ラインデータを含み、このと
き各走査ラインはそのパイプラインを通過すべき1つの
データ要素である。このタイプの画像処理パイプライン
では、画像本体は同じ走査ライン構造を複数回繰り返し
たものを含む。
In the image processing pipeline according to the present invention, an image is divided into two main parts (header and image body). The header defines the state of the image, such as the color space displayed therein, the orientation of the image, and the dimensions of the image, such as the length of the scan lines, the number of scan lines, the interlace factor, the pitch, etc. The image body contains the actual scan line data, such as in the form of a raster output scanner, where each scan line is one data element that must pass through that pipeline. In this type of image processing pipeline, the image body includes the same scan line structure repeated multiple times.

【0139】パイプラインセクションはそれぞれ少なく
とも三つのチャネルを有する。第1のチャネルはヘッダ
情報を処理するために使用される。第2のチャネルは、
走査ライン毎を基準に画像本体を処理するために使用さ
れる。パイプラインによって提供される画像処理のタイ
プに従って1つ以上の第2のチャネルタイプのチャネル
が提供されることができる。第3のチャネルは、要求さ
れたクリアーアップ(消去)動作を実行し、画像が完全
に処理されたらパイプラインセクションに割り当てられ
たメモリを解放するために使用される。画像処理はこの
第3のチャネルが呼び出される時までに完了するので、
第3チャネルを通るデータのみがエラー処理情報とな
る。第3のチャネルによって、各上流パイプラインセク
ションは画像処理から生じたあらゆるエラーコードを戻
し、この情報が一度戻されると、受け取り側の上流パイ
プラインセクションは下流のパイプラインセクションを
動的に削除する。さらに、あらゆる必要な外部ポート手
続きポインタがこの画像処理パイプラインのパイプライ
ンセクションのデータ構造内に含まれる。
Each pipeline section has at least three channels. The first channel is used to process header information. The second channel is
Used to process the image body on a per scan line basis. One or more channels of the second channel type may be provided according to the type of image processing provided by the pipeline. The third channel is used to perform the requested clear-up (erase) operation and release the memory allocated to the pipeline section once the image has been completely processed. Since the image processing is completed by the time this third channel is called,
Only data passing through the third channel becomes error processing information. With the third channel, each upstream pipeline section returns any error codes resulting from the image processing, and once this information is returned, the receiving upstream pipeline section dynamically deletes the downstream pipeline section. . In addition, any necessary external port procedure pointers are included in the data structure of the pipeline section of the image processing pipeline.

【0140】図27、図28に示された画像処理システ
ムにおいて、図19の一般化されたタスク手段68は、
ヘッダチャネルとして第1のチャネル手段84aを、画
像処理チャネルとして第2のチャネル手段84bを、及
びエンドチャネルとして第3のチャネル手段84cを備
える。上記のように、データを処理しなければならない
とホストアプリケーションが判断した時、データ処理パ
イプラインが生成される。パイプラインは関数ライブラ
リ10から様々なライブラリ関数をインスタンス生成す
ることによって生成される。画像処理システムにおい
て、これらの関数は、画像のカラーを反転する”inver
t”、白黒画像をカラー化する”colorize”、例えば画
像内のエッジをソフトにするために重畳フィルタかけ
る”filter”、画像本体を拡大する”enlarge ”、及び
画像本体を縮小する”reduce”を含む。このリストは単
に例示を目的としており、全てを網羅してはいない。例
えば、”invert”は黒のピクセルを白のピクセルへ、又
はその逆へ変換する。さらに、”invert”は、カラーピ
クセルを、例えば赤からシアンへ、緑をマゼンタへ、及
び青を黄へ変換する。
In the image processing system shown in FIGS. 27 and 28, the generalized task means 68 in FIG.
A first channel unit 84a is provided as a header channel, a second channel unit 84b is provided as an image processing channel, and a third channel unit 84c is provided as an end channel. As described above, a data processing pipeline is created when the host application determines that data must be processed. The pipeline is generated by instantiating various library functions from the function library 10. In image processing systems, these functions invert the color of the image.
t ”,“ colorize ”to colorize a black and white image, eg“ filter ”to apply a superposition filter to soften the edges in the image,“ enlarge ”to enlarge the image body, and“ reduce ”to reduce the image body This list is for illustrative purposes only and is not exhaustive: for example, "invert" converts black pixels to white pixels and vice versa, and "invert" uses color Convert pixels, for example, from red to cyan, green to magenta, and blue to yellow.

【0141】データ処理パイプラインによって行われる
データ処理の例を図27を参照して以下に記載する。こ
の例は、カラー画像スキャナによって提供されるカラー
画像データブロックのデータ処理について述べている。
この例では、パイプラインは検出されたエラーを克服す
るためにそれ自体を動的に再構成することができる。
An example of data processing performed by the data processing pipeline will be described below with reference to FIG. This example describes the data processing of a color image data block provided by a color image scanner.
In this example, the pipeline can dynamically reconfigure itself to overcome detected errors.

【0142】この例では、ホストアプリケーションは関
数ライブラリからデータ処理関数をインスタンス生成し
て、4色カラー画像を受け取って処理するためのデータ
処理パイプラインを生成し、次にこの画像は図27に表
されたように4色プリンタ221で印刷される。次にパ
イプラインは、画像のヘッダデータを入力するため、ホ
ストアプリケーションによって呼び出される。ヘッダデ
ータは、第1パイプラインセクションに到達するまで、
そのパイプラインのチャネル1を移動する。各パイプラ
インセクションがヘッダを受け取ると、各パイプライン
セクションは、これから受け取る画像データを正確に処
理することができるかを確かめるためにこのヘッダをチ
ェックし、このパイプラインセクションが画像データに
対して行なうべきことを反映するようにヘッダを変更す
る。このパイプラインセクションは次にこの変更された
ヘッダデータを隣接する下流パイプラインセクションに
送る。しかし、パイプラインセクションは、受け取るべ
き画像が適切に処理されることが不可能であると判断し
た場合、このパイプラインセクションは、その問題を克
服するため、そのパイプラインを動的に再構成する。
In this example, the host application instantiates a data processing function from the function library to generate a data processing pipeline for receiving and processing the four-color image, which is then represented in FIG. The image is printed by the four-color printer 221 as described above. The pipeline is then called by the host application to enter image header data. Until the header data reaches the first pipeline section,
Move through channel 1 of the pipeline. When each pipeline section receives a header, each pipeline section checks this header to see if it can correctly process the image data it will receive, and this pipeline section does on the image data Modify the header to reflect what should be done. The pipeline section then sends the modified header data to an adjacent downstream pipeline section. However, if the pipeline section determines that the image to be received cannot be properly processed, it dynamically reconfigures the pipeline to overcome the problem .

【0143】処理すべきカラー画像が4色画像であると
仮定してパイプラインが生成されたのにそのカラー画像
が4色画像ではなく3色画像であった場合、ホストアプ
リケーションから受け取ったカラー画像のためのヘッダ
データはその画像が3色画像であることを示す。プリン
タが4色データを用いると仮定されていたので、エラー
が生じる。この場合、潜在的なエラーはパイプラインセ
クションがヘッダデータを処理する時に発見される。
If a pipeline is generated on the assumption that the color image to be processed is a four-color image, but the color image is not a four-color image but a three-color image, the color image received from the host application Indicates that the image is a three-color image. An error occurs because the printer was assumed to use 4-color data. In this case, a potential error is found when the pipeline section processes the header data.

【0144】エラーを検出するパイプラインセクション
は、そのパイプラインの直ぐ上流に新しいパイプライン
セクションをインスタンス生成して追加することによ
り、自動的にそのパイプラインを再構成する。パイプラ
インはリンクのタイプ及びエラーを検出するパイプライ
ンセクションに関連してその新しいパイプラインセクシ
ョンの必要な位置に基づいて上記のようにそのパイプラ
イン自身を再構成する。この新しいパイプラインセクシ
ョンは、画像データのカラー空間を3色から4色に変更
する。同時に、エラーを検出するパイプラインセクショ
ンは、新しいパイプラインセクションの位置を反映する
ようにリンクを変更する。次にヘッダデータが戻され
る。これで、新しいパイプラインセクションがヘッダを
変更して画像のカラー空間を4色画像データに変えるこ
とを反映させた後、エラーを検出したパイプラインセク
ションは、それが画像データを正確に処理することがで
きると判断する。
The pipeline section that detects an error automatically reconfigures the pipeline by instantiating and adding a new pipeline section immediately upstream of the pipeline. The pipeline reconfigures itself as described above based on the type of link and the required location of the new pipeline section in relation to the pipeline section detecting the error. This new pipeline section changes the color space of the image data from three colors to four colors. At the same time, the pipeline section that detects the error changes the link to reflect the location of the new pipeline section. Next, the header data is returned. Now, after the new pipeline section has changed the header to reflect changing the color space of the image to four-color image data, the pipeline section that detected the error will be able to process the image data correctly. Judge that you can do.

【0145】ヘッダが完全に処理されて第一パイプライ
ンセクションへ到達すると、ホストアプリケーションは
画像本体を入力するためにパイプラインを繰り返し呼び
出す。パイプラインが呼び出される度に、ホストアプリ
ケーションはそのパイプラインを通して画像の走査ライ
ンを1本ずつ供給し、パイプラインはその走査ラインを
処理してこれをプリンタに供給する。このヘッダからホ
ストアプリケーションは画像本体内にいくつの走査ライ
ンがあるかを知り、これによって、画像本体全体を入力
して処理するために呼出しサイクルがどれだけ必要かを
も知ることになる。他のすべての点において、パイプラ
インは概して上記のように動作する。全体の画像本体が
得られ、処理されて、且つプリンタに送られてしまえ
ば、ホストアプリケーションはそのパイプラインをシャ
ットダウンするために第3のチャネルを呼び出す。図2
8は、このパイプラインの実行を示すフローチャートを
表す。
When the header is completely processed and reaches the first pipeline section, the host application repeatedly calls the pipeline to enter the image body. Each time the pipeline is invoked, the host application supplies one scan line of the image through the pipeline, one pipeline processing the scan line and supplying it to the printer. From this header, the host application knows how many scan lines are in the image body, and thus knows how many call cycles are required to input and process the entire image body. In all other respects, the pipeline operates generally as described above. Once the entire image body has been obtained, processed, and sent to the printer, the host application calls a third channel to shut down the pipeline. FIG.
FIG. 8 shows a flowchart showing the execution of this pipeline.

【0146】本発明は、好適な実施の形態に則して記載
されたが、本明細書に記載された実施の形態に本発明が
限定される訳ではない。本発明の精神から逸脱すること
なく、且つ請求の範囲に記載された本発明の範囲を超え
ることなく、様々な変更品、修正品、又は改良品が創作
され得る。
Although the present invention has been described with reference to the preferred embodiments, the present invention is not limited to the embodiments described in this specification. Various changes, modifications, or improvements may be made without departing from the spirit of the invention and without exceeding the scope of the invention as set forth in the claims.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明のシステムのブロック図を示す図であ
る。
FIG. 1 shows a block diagram of the system of the present invention.

【図2】本発明のパイプラインのブロック図を示す図で
ある。
FIG. 2 is a diagram showing a block diagram of a pipeline of the present invention.

【図3】本発明のパイプライン内のデータの流れを示す
ブロック図である。
FIG. 3 is a block diagram showing the flow of data in the pipeline of the present invention.

【図4】例となるデータ処理プログラムのためのリンク
されたパイプラインを示す図である。
FIG. 4 illustrates a linked pipeline for an exemplary data processing program.

【図5】サンプルタスクのための例となるコードリスト
を示す図である。
FIG. 5 illustrates an example code list for a sample task.

【図6】サンプルタスクのための例となるコードリスト
を示す図である。
FIG. 6 illustrates an example code list for a sample task.

【図7】サンプルタスクのための例となるコードリスト
を示す図である。
FIG. 7 illustrates an example code list for a sample task.

【図8】サンプルタスクのための例となるコードリスト
を示す図である。
FIG. 8 illustrates an example code list for a sample task.

【図9】パイプラインを形成するためにライブラリから
タスクを呼び出す例示的なホストアプリケーションにた
めのコードリストを示す図である。
FIG. 9 illustrates a code listing for an exemplary host application that calls tasks from a library to form a pipeline.

【図10】図4に示され且つ図5、図6、図7、図8並
びに図9にリストされているパイプラインの出力リスト
を示す図である。
FIG. 10 shows the output list of the pipeline shown in FIG. 4 and listed in FIGS. 5, 6, 7, 8 and 9;

【図11】本発明を実施するためのルーチンのフローチ
ャートを示す図である。
FIG. 11 is a diagram showing a flowchart of a routine for carrying out the present invention.

【図12】関数初期化ルーチンのフローチャートを示す
図である。
FIG. 12 is a diagram showing a flowchart of a function initialization routine.

【図13】呼出し及び処理ルーチンのフローチャートを
示す図である。
FIG. 13 is a diagram showing a flowchart of a calling and processing routine.

【図14】データ処理パイプラインを示す図である。FIG. 14 is a diagram showing a data processing pipeline.

【図15】図14のパイプラインを形成し且つ実行する
ためのフローチャートを示す図である。
FIG. 15 illustrates a flowchart for forming and executing the pipeline of FIG. 14;

【図16】データ処理パイプラインの第二の実施の形態
を示す図である。
FIG. 16 is a diagram showing a second embodiment of the data processing pipeline.

【図17】図16のデータ処理パイプラインを形成し且
つ実行するためのフローチャートを示す図である。
FIG. 17 shows a flowchart for forming and executing the data processing pipeline of FIG. 16;

【図18】本発明のデータ処理システムのブロック図を
表す。
FIG. 18 shows a block diagram of a data processing system of the present invention.

【図19】本発明の一般化されたタスクを表すブロック
図である。
FIG. 19 is a block diagram illustrating a generalized task of the present invention.

【図20】本発明の第二の一般化されたタスクを示すブ
ロック図である。
FIG. 20 is a block diagram illustrating a second generalized task of the present invention.

【図21】本発明のデータ処理システムの他の実施の形
態を表すブロック図である。
FIG. 21 is a block diagram illustrating another embodiment of the data processing system of the present invention.

【図22】本発明のパイプラインの他の実施の形態を表
すブロック図である。
FIG. 22 is a block diagram illustrating another embodiment of the pipeline of the present invention.

【図23】本発明のパイプラインの他の実施の形態を表
すブロック図である。
FIG. 23 is a block diagram showing another embodiment of the pipeline of the present invention.

【図24】本発明の他の実施の形態を実施するためのル
ーチンをフローチャートで表した図である。
FIG. 24 is a flowchart showing a routine for carrying out another embodiment of the present invention.

【図25】本発明の他の実施の形態の関数初期化ルーチ
ンをフローチャートで表した図である。
FIG. 25 is a flowchart showing a function initialization routine according to another embodiment of the present invention.

【図26】本発明の他の実施の形態の呼出し及び処理ル
ーチンをフローチャートで表した図である。
FIG. 26 is a flowchart showing a calling and processing routine according to another embodiment of the present invention.

【図27】本発明の他の実施の形態のデータ処理パイプ
ラインを表す。
FIG. 27 shows a data processing pipeline according to another embodiment of the present invention.

【図28】図27のパイプラインを形成して実行するた
めのフローチャートを表す図である。
FIG. 28 is a diagram illustrating a flowchart for forming and executing the pipeline of FIG. 27;

【符号の説明】[Explanation of symbols]

28 制御ライン 30 データバス 40a、40b、40c、40d パイプラインセ
クション 42 データ処理チャネル 44 データ構造 46 外部ポート 48 逆方向リンク 48’ 順方向リンク 84a、84b、84c、84d チャネル手段 100 コンピュータ 140a、140b、140c、140d パイプライ
ンセクション 148 順方向リンク 148’ 逆方向リンク 172 データ転送手段
28 control line 30 data bus 40a, 40b, 40c, 40d pipeline section 42 data processing channel 44 data structure 46 external port 48 reverse link 48 'forward link 84a, 84b, 84c, 84d channel means 100 computer 140a, 140b, 140c, 140d Pipeline section 148 Forward link 148 'Reverse link 172 Data transfer means

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 データ単位のパイプラインデータ処理の
ためのデータ処理システムであって、前記データ処理シ
ステムが、 単一タスキングプロセッサと、 メモリと、 前記メモリのブロックを割り当てるためのメモリ管理手
段と、 データ処理関数を格納するためのライブラリ手段と、 データ処理パイプラインを生成してこのパイプラインに
データを供給するためのホストアプリケーション手段
と、を含み、 前記ホストアプリケーション手段が、 少なくとも1つのデータ処理タスクからなるデータ処理
パイプラインを生成するためのインスタンス生成手段を
含み、前記各少なくとも1つのタスクは前記メモリのメ
モリブロック内に格納され、前記各少なくとも1つのタ
スクはライブラリ手段からのデータ処理関数のインスタ
ンス生成であり、及び前記データ処理パイプラインにデ
ータを供給するための呼出し手段を含み、 前記データ処理パイプラインの各少なくとも1つのタス
クが、 そのパイプラインの中の他のタスク、出力装置、及びホ
ストアプリケーション手段の少なくとも1つに前記タス
クをリンクするためのリンク手段を含み、 前記少なくとも1つのタスクと、そのパイプラインの中
の他のタスク、出力装置、及びホストアプリケーション
手段のうちの少なくとも1つとの間でデータセットを受
け渡すためのデータチャネル手段を含み、 前記少なくとも1つのタスクを初期化するための初期化
手段を含み、 ホストアプリケーション手段及び他のタスクのうちの一
方からデータセットを得るためのデータ獲得手段を含
む、 データ処理システム。
1. A data processing system for pipelined data processing on a data basis, the data processing system comprising: a single tasking processor; a memory; and a memory management means for allocating blocks of the memory. Library means for storing a data processing function, and host application means for generating a data processing pipeline and supplying data to the pipeline, wherein the host application means comprises at least one data processing An instance generating means for generating a data processing pipeline consisting of tasks, wherein each of the at least one tasks is stored in a memory block of the memory, and wherein each of the at least one tasks is a function of a data processing function from a library means. Instantiation, And calling means for supplying data to the data processing pipeline, wherein at least one task of the data processing pipeline comprises at least one of another task in the pipeline, an output device, and a host application means. Linking means for linking the tasks into one; a data set between the at least one task and at least one of other tasks, output devices, and host application means in the pipeline. And data acquisition means for obtaining a data set from one of the host application means and one of the other tasks. Including, data processing system.
JP1719798A 1997-01-30 1998-01-29 Data processing system Pending JPH10222381A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US790417 1997-01-30
US08/790,417 US5995996A (en) 1993-06-15 1997-01-30 Pipelined image processing system for a single application environment

Publications (1)

Publication Number Publication Date
JPH10222381A true JPH10222381A (en) 1998-08-21

Family

ID=25150616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1719798A Pending JPH10222381A (en) 1997-01-30 1998-01-29 Data processing system

Country Status (1)

Country Link
JP (1) JPH10222381A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102405886B1 (en) 2022-03-17 2022-06-08 주식회사 넷아스 Apparatus and method of providing solution of source transformation for architectural changes

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102405886B1 (en) 2022-03-17 2022-06-08 주식회사 넷아스 Apparatus and method of providing solution of source transformation for architectural changes
KR20220082787A (en) 2022-03-17 2022-06-17 주식회사 넷아스 device for architectural changes
KR20220082788A (en) 2022-03-17 2022-06-17 주식회사 넷아스 method for changing architecture and its systems

Similar Documents

Publication Publication Date Title
JP3617851B2 (en) Pipelined data processing method
JP3617852B2 (en) Multi-processing pipeline data processing emulation method
US5995996A (en) Pipelined image processing system for a single application environment
WO2020108303A1 (en) Heterogeneous computing-based task processing method and software-hardware framework system
US9086924B2 (en) Executing a distributed java application on a plurality of compute nodes
US8117615B2 (en) Facilitating intra-node data transfer in collective communications, and methods therefor
US8595742B2 (en) Executing a distributed java application on a plurality of compute nodes in accordance with a just-in-time compilation history
US6154765A (en) Distributed digital rule processor for single system image on a clustered network and method
US7730121B2 (en) Parallel processing systems and method
Fluet et al. Manticore: A heterogeneous parallel language
Singh et al. A template-based approach to the generation of distributed applications using a network of workstations
US5701479A (en) Pipelined image processing system for a single application environment
US6470346B2 (en) Remote computation framework
Webb et al. Process networks as a high-level notation for metacomputing
Huss-Lederman et al. MPI-2: Extensions to the message passing interface
Chan et al. High-level abstractions for message-passing parallel programming
JPH10222381A (en) Data processing system
JPH08263306A (en) Data-processing system for pipeline data processing and pipeline data-processing method
KR100272094B1 (en) Object migration system and method
Orlando et al. COLTHPF, a Coordination Layer for HPF Tasks
Saridogan et al. A Real-Time and Distributed System with Programming Language Abstraction.
Salama et al. Software experience with concurrent c and lisp in a distributed system
KOSE et al. PARALLEL HOUGH TRANSFORM ON DCOM ARCHITECTURE
Patel Parallel edge detector on cluster of workstations using message passing interfaces
Kedem et al. The Milan Project: A New Method for High-Assurance and High-Performance Computing on Large-Scale Distributed Platforms

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20050128

Free format text: JAPANESE INTERMEDIATE CODE: A621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060606

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060814

A131 Notification of reasons for refusal

Effective date: 20060905

Free format text: JAPANESE INTERMEDIATE CODE: A131

A601 Written request for extension of time

Effective date: 20061205

Free format text: JAPANESE INTERMEDIATE CODE: A601

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061211

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070529