(57)【要約】本発明は、読出及び書込動作から同期動作を分離する思想に基づく。したがって、データ処理システムにおけるデータ処理の方法が提供され、ここでは、データ処理システムが、データオブジェクトのストリームを処理する第１及び第２の処理器を有し、第１の処理器がデータオブジェクトのストリームから第２の処理器へデータオブジェクトを転送する。このデータ処理システムはさらに、データオブジェクトを記憶し取り出す少なくとも１つのメモリを有し、第１及び第２の処理器に対し分配されたアクセスが行われる。これら処理器は、そのメモリにより、データオブジェクトを交換するために読出及び／又は書込動作をなす。これら処理器はさらに、処理器により実行されるタスク間のデータオブジェクト転送の同期をとるために照会動作及び／又はコミット動作を行う。照会動作及びコミット動作は、処理器によって読出動作及び書込動作とは独立して行われる。
2005528671.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおけるデータ処理方法であって、前記システムは、データオブジェクトのストリームを処理する第１の処理器及び少なくとも１つの第２の処理器を有し、前記第１の処理器は、データオブジェクトのストリームから前記第２の処理器にデータオブジェクトを転送するように構成され、前記システムは、データオブジェクトを記憶し取り出すための少なくとも１つのメモリを有し、前記第１及び第２の処理器に対し分配されるアクセスが行われる方法であって、
・前記処理器が前記メモリを用いデータオブジェクトを交換するよう読出動作及び／又は書込動作を行うステップと、
・前記処理器が当該処理器により実行されるタスク間におけるデータオブジェクト転送を同期化するよう照会動作及び／又はコミット動作を行うステップと、
を有し、
前記照会動作及び前記コミット動作は、前記読出動作及び前記書込動作とは独立して前記処理器により行われる、
方法。
【請求項２】
請求項１に記載の方法であって、前記照会動作は、前記メモリにおいてデータオブジェクトのグループをアクセスする権利を要求するよう前記第２の処理器の１つにより実行され、前記データオブジェクトのグループは、前記処理器により一連の読出／書込動作により前記メモリにより生成され消費され、前記コミット動作は、前記データオブジェクトのグループをアクセスする権利を前記第２の処理器の他方に転送するよう前記第２の処理器の一方により実行される、方法。
【請求項３】
請求項１又は２に記載の方法であって、前記メモリはＦＩＦＯバッファであり、前記照会及びコミット動作は、前記共有メモリバッファを介して前記第１の処理器と前記第２の処理器との間においてデータオブジェクトのストリームを転送するために前記メモリバッファのＦＩＦＯ動作を制御するために用いられる、方法。
【請求項４】
請求項１，２又は３に記載の方法であって、第３の処理器は、前記第１の処理器からデータオブジェクトのグループをアクセスする権利を受け、前記データオブジェクトのグループに対する読出及び／又は書込動作を行い、前記データオブジェクトのグループを前記共有メモリにおける別の位置にコピーすることなく当該アクセス権を前記第２の処理器に転送する、方法。
【請求項５】
請求項１に記載の方法であって、前記第２の処理器は、少なくとも第１及び第２のタスクのインターリーブ化された処理を可能とするマルチタスクプロセッサであり、前記少なくとも第１及び第２のタスクは、データオブジェクトのストリームを処理する、方法。
【請求項６】
請求項１ないし５のうちいずれか１つに記載の方法であって、前記第２の処理器は、所定範囲のストリーム処理タスクを行う機能特化専用プロセッサである、方法。
【請求項７】
請求項２に記載の方法であって、前記読出／書込動作は、前記第２の処理器が前記メモリにおける前記データオブジェクトのグループの１つにおける位置にランダムにアクセスすることを可能とする、方法。
【請求項８】
請求項１に記載の方法であって、前記データオブジェクトのグループの処理が中断したときに第１タスクのデータオブジェクトのグループの他の処理が一時的に回避され、第２タスクのデータオブジェクトの処理は、前記第１タスクのデータ要素のグループの処理が中断されたときに実行される、方法。
【請求項９】
請求項８に記載の方法であって、当該タスクの中断後に前記データオブジェクトのグループの一部の処理の実際のタスク状態が破棄され、当該一部のグループのデータオブジェクトのコミット動作が回避される、方法。
【請求項１０】
請求項７に記載の方法であって、当該中断されたタスクの再開の後に、前記処理器は、前記データオブジェクトのグループの処理を再開させ、前記グループについての前の処理が破棄される、方法。
【請求項１１】
データ処理システムであって、
・データオブジェクトのストリームを処理する第１の処理器及び少なくとも１つの第２の処理器を有し、前記第１の処理器がデータオブジェクトのストリームから前記第２の処理器にデータオブジェクトを転送するよう構成されたものと、
・データオブジェクトを記憶し取り出すものであって前記第１及び第２の処理器に対し分配されたアクセスがなされるようにした少なくとも１つのメモリと、
を有し、
前記処理器は、前記メモリによりデータオブジェクトを交換するよう読出動作及び／又は書込動作を行うよう構成され、
前記処理器は、前記処理器により実行されるタスク間におけるデータオブジェクト転送を同期化するよう照会動作及び／又はコミット動作を行うよう構成され、
前記処理器は、前記読出動作及び前記書込動作とは独立して前記照会動作及び前記コミット動作を行うよう構成される、
システム。
【請求項１２】
請求項１１に記載のデータ処理システムであって、前記第２処理器は、前記メモリにおけるデータオブジェクトのグループをアクセスする権利を要求するよう前記照会動作を実行するよう構成され、前記データオブジェクトのグループは、前記処理器により一連の読出／書込動作により前記メモリにおいて生成又は消費され、前記第２の処理器は、前記データオブジェクトのグループをアクセスする権利を前記第２の処理器の他方に転送するよう前記コミット動作を実行するよう構成される、システム。
【請求項１３】
請求項１１又は１２に記載のデータ処理システムであって、
前記メモリは、ＦＩＦＯバッファであり、
前記処理器は、前記共有メモリバッファを介して前記第１の処理器と前記第２の処理器との間においてデータオブジェクトのストリームを転送するよう前記メモリバッファのＦＩＦＯ動作を制御するために前記照会及びコミット動作を行うよう構成される、システム。
【請求項１４】
請求項１１，１２又は１３に記載のデータ処理システムであって、
前記第１の処理器からデータオブジェクトのグループをアクセスする権利を受け、前記データオブジェクトのグループに対して読出及び／又は書込動作を行い、当該共有メモリにおける別の位置に前記データオブジェクトのグループをコピーすることなく前記第２の処理器に前記アクセス権を転送する第３の処理器を有する、システム。
【請求項１５】
請求項１１に記載のデータ処理システムであって、前記第２の処理器は、少なくとも第１及び第２のタスクのインターリーブ化された処理の可能なマルチタスクプロセッサであり、前記少なくとも第１及び第２のタスクがデータオブジェクトのストリームを処理する、システム。
【請求項１６】
請求項１１又は１６に記載のデータ処理システムであって、前記第２の処理器は、所定範囲のストリーム処理タスクを行うための機能特化専用プロセッサである、システム。
【請求項１７】
請求項１２に記載のデータ処理システムであって、前記第２の処理器は、前記メモリにおける前記データオブジェクトのグループの１つの内における位置にランダムにアクセスすることを可能とする読出及び／又は書込動作を行うよう構成される、システム。
【請求項１８】
請求項１１に記載のデータ処理システムであって、
第１タスクのデータオブジェクトのグループのさらなる処理は、前記データオブジェクトのグループの処理が中断したときに一時的に回避され、
第２タスクのデータオブジェクトの処理は、前記第１タスクに係る前記グループのデータ要素の処理が中断したときに行われる、システム。
【請求項１９】
請求項１８に記載のデータ処理システムであって、前記タスクの中断の後に前記データオブジェクトのグループの一部処理の実際のタスク状態が破棄され、当該データオブジェクトの一部のグループのコミット動作が回避される、システム。
【請求項２０】
請求項１９に記載のデータ処理システムであって、
当該中断タスクの再開の後に、前記処理器は、前記データオブジェクトのグループの処理を再開させ、当該グループについての前の処理が破棄される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重プロセッサデータ処理システムにおけるデータ処理方法及び複数のプロセッサを有する対応のデータ処理システムに関する。
【背景技術】
【０００２】
例えば高品位ＭＰＥＧ復号などのための高性能データ依存型メディア処理をなす異種混成多重プロセッサアーキテクチャが知られている。メディア処理アプリケーションは、単方向性のデータストリームによって単独で情報を交換する同時実行タスクのセットとして規定することができる。G.Kahn氏は、１９７４にこのようなアプリケーションの正式なモデルを紹介しており（´The Semantics of a Simple Language for Parallel Programming`, Proc. of the IFIP congress 74, August 5-10, Stockholm, Sweden, North-Holland publ. Co, 1974, pp. 471 &#8211; 475）、その後１９７７年にKahn氏及びMacQueen氏により動作の説明を示している（`Co-routines and Networks of Parallel Programming`, Information Processing 77, B. Gilchhirst (Ed.), North-Holland publ., 1977, pp 993-998）。この正式なモデルは、現在カーンプロセスネットワーク（Kahn  Process Network）と一般的に呼ばれている。 
【０００３】
アプリケーションは、同時実行可能なタスクのセットとして知られている。情報は、単方向性のデータストリームによりタスク間でのみ交換可能である。タスクは、予め規定されたデータストリームに関する読出及び書込動作によって決定論的にのみ交信すべきである。データストリームは、ＦＩＦＯ動作に基づいてバッファ処理される。このバッファリングのため、ストリームによる交信をなす２つのタスクは、個々の読出又は書込動作について同期化する必要がない。
【０００４】
ストリーム処理において、データストリームの連続的動作が種々のプロセッサによって行われる。例えば、第１のストリームは画像の画素値からなる可能性があり、かかる値は、８×８ブロックの画素のＤＣＴ（離散コサイン変換）係数のブロックの第２のストリームを生成するよう第１のプロセッサによって処理される。第２のプロセッサは、ＤＣＴ係数の各ブロックにつき選択され圧縮された係数のブロックストリームを生成するようＤＣＴ係数のブロックを処理することになる。
【０００５】
図１は、従来技術から知られているようなプロセッサへの応用を図化したものを示している。データストリーム処理を実現するため、多数のプロセッサが設けられ、各々が特定の動作を繰り返して行うことが可能であり、毎回データオブジェクトのストリームから次のデータオブジェクトからのデータを用い、及び／又は当該ストリームにおける次のデータオブジェクトを生成する。当該ストリームは１のプロセッサから他のプロセッサへ送られるので、第１のプロセッサにより生成されたストリームは、第２のプロセッサ等により処理されることができる。第１のプロセッサから第２のプロセッサへのデータ伝送メカニズムの１つは、第１のプロセッサにより生成されたデータブロックをメモリに書き込むことによるものである。
【０００６】
当該ネットワークにおけるデータストリームは、バッファ処理される。各バッファは、ＦＩＦＯ、正確には１つのライタ（writer）及び１つ又はそれより多い数のリーダ（reader）を伴うものとして実現される。このバッファリングにより、ライタ及びリーダは当該チャネルについての個別の読出及び書込動作を相互に同期化する必要がない。利用可能なデータが不十分であるチャネルからの読み出しにより、当該読出タスクの動作が停まる。これらプロセッサは、弱目のプログラムが可能なだけの専用ハードウェア機能ユニットとすることができる。全てのプロセッサが並列に実行し各自の制御スレッドを実行する。それらは共にカーン（Kahn）式アプリケーションを実行し、各タスクが単一プロセッサにマップ化される。これらプロセッサは、多重タスキングを可能とする。すなわち、多数のカーンタスクが単一プロセッサにマップ化可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、カーン式データ処理システムの動作を改善することである。
【課題を解決するための手段】
【０００８】
この目的は、請求項１に記載のデータ処理システムにおけるデータ処理方法及び請求項１１に記載の対応するデータ処理システムにより達成される。
【０００９】
本発明は、読出及び書込動作から同期動作を分離する思想に基づいている。したがって、データ処理システムにおけるデータ処理方法が提供されるものであり、このデータ処理システムは、データオブジェクトのストリームを処理する第１の処理器（プロセッサ）及び少なくとも１つの第２の処理器（プロセッサ）を有し、前記第１の処理器は、データオブジェクトのストリームから前記第２の処理器にデータオブジェクトを転送する。このデータ処理システムは、データオブジェクトを記憶し取り出すための少なくとも１つのメモリをさらに有し、前記第１及び第２の処理器についての分配アクセスが行われる。当該処理器は、そのメモリを用いデータオブジェクトを交換するよう読出動作及び／又は書込動作を行う。さらに、前記処理器は、当該処理器により実行されるタスク間におけるデータオブジェクト転送を同期化するよう照会動作及び／又はコミット動作を行う。前記照会動作及び前記コミット動作は、前記読出動作及び前記書込動作とは独立して前記処理器により行われる。
【００１０】
これにより、同期動作と読出及び／又は書込動作との分離は、通常行われるそれらの組み合わせよりも効率的な実現形態を導く、という効果が奏される。さらに、単一の同期動作が一連の読出又は書込動作を１度にカバーすることができ、同期動作の周波数を低下させる。
【００１１】
本発明の他の態様においては、前記照会動作は、前記メモリにおいてデータオブジェクトのグループをアクセスする権利を要求するよう前記第２の処理器の１つにより実行され、前記データオブジェクトのグループは、前記処理器により一連の読出／書込動作により前記メモリにおいて生成又は消費される。さらに、前記コミット動作は、前記データオブジェクトのグループをアクセスする権利を前記第２の処理器の他方に転送するよう前記第２の処理器の一方により実行される。
【００１２】
本発明の好ましい態様においては、前記読出／書込動作は、前記第２の処理器が前記メモリにおける前記データエレメントのグループの１つにおける位置にランダムにアクセスすることを可能とする。当該メモリにおけるデータオブジェクトの１グループにおけるランダムアクセスをなすことにより、読出及び書込メモリアクセスによってデータの順序崩し処理及び／又は中間データの一時記憶などの幾つかの有益な機会が作られる。
【００１３】
本発明のさらに好ましい態様においては、前記タスクの中断の後に、前記データオブジェクトのグループの一部処理の実際のタスク状態が破棄され、当該データオブジェクトの一部のグループのコミット動作が回避される。これにより、当該タスクの実際の状態をセーブするコストを回避しつつタスクを中断することができる。
【００１４】
本発明のまたさらに他の好適態様においては、当該中断タスクの再開の後に、前記処理器は、前記データオブジェクトのグループの処理を再開させ、当該データオブジェクトグループについての前の処理結果が破棄される。これにより、状態再記憶コストを回避しつつ、当該中断タスクのデータオブジェクトの完全なグループの処理を再開させることができる。  
【００１５】
本発明の別の態様においては、第３の処理器は、前記第１の処理器からデータオブジェクトのグループをアクセスする権利を受けとる。その後、前記データオブジェクトのグループに対する読出及び／又は書込動作を行い、前記データオブジェクトのグループを共有メモリにおける別の位置にコピーすることなく当該アクセス権を前記第２の処理器に転送する。これにより、単一データオブジェクトを訂正又は置換することができる。
【００１６】
本発明はまた、データ処理システムであって、データオブジェクトのストリームを処理する第１の処理器及び少なくとも１つの第２の処理器を有し、前記第１の処理器がデータオブジェクトのストリームから前記第２の処理器にデータオブジェクトを転送するよう構成されたものと、データオブジェクトを記憶し取り出すものであって前記第１及び第２の処理器に対し分配されたアクセスがなされるようにした少なくとも１つのメモリと、を有し、前記処理器は、前記メモリによりデータオブジェクトを交換するよう読出動作及び／又は書込動作を行うよう構成され、前記処理器は、前記処理器により実行されるタスク間におけるデータオブジェクト転送を同期化するよう照会動作及び／又はコミット動作を行うよう構成され、前記処理器は、前記読出動作及び前記書込動作とは独立して前記照会動作及び前記コミット動作を行うよう構成される、システムに関する。
【００１７】
本発明の他の実施例は、従属請求項に記載されている。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して上記態様その他の本発明の態様を詳しく説明する。
【００１９】
本発明の好適実施例は、好ましくはＣＰＵ及び複数のプロセッサ又はコプロセッサを有する多重プロセッサストリームベースデータ処理システムに該当する。ＣＰＵは、データオブジェクトのストリームからデータオブジェクトを当該プロセッサのうちの１つに転送する。このＣＰＵ及びプロセッサは、バスを介して少なくとも１つのメモリに結合される。このメモリは、データオブジェクトを記憶し検索して取り出すためにＣＰＵ及びプロセッサによって用いられ、ＣＰＵとプロセッサは、当該メモリへの配分されたアクセスを有する。
【００２０】
プロセッサは、当該メモリとともにデータオブジェクトを交換するために読出動作及び／又は書込動作を行う。このプロセッサはさらに、当該プロセッサによって行われるタスク間のデータオブジェクト伝送を同期化するために照会動作及び／又はコミット動作を行う。この照会動作及びコミット動作は、当該プロセッサによりその読出動作及び書込動作とは独立して行われる。
【００２１】
上述したような同期動作は、照会動作とコミット動作とに分離することができる。照会動作は、後の読出動作についてのデータオブジェクトの可用性（アベイラビリティ）又は後の書込動作についての空間の可用性についてプロセッサに知らせる。すなわちこれは、それぞれデータ取得動作及び空間取得動作によっても実現可能である。プロセッサは、可用なウィンドウ又は可用なグループのデータについて知らされた後、当該バッファにおけるその可用ウィンドウ又はグループのデータオブジェクトを自由自在にアクセスすることができる。プロセッサが当該グループのデータオブジェクト又は当該グループのデータオブジェクト又は当該アクセスウィンドウにおける当該データオブジェクトの少なくとも一部に関して必要な処理がなされると、プロセッサは、コミット信号を、それぞれデータ配置又は空間配置動作を用いて、メモリにおいてデータ又は空間が新たに使用可能であることを示す他のプロセッサに発生する。
【００２２】
但し、この好適実施例においては、これら４つの同期動作は、データ処理と空間動作との間に違いをつけない。したがって、同期のためのただ２つの動作、すなわち照会及びコミットそれぞれについての空間取得及び空間配置を残す単一の空間動作に集約させることは有利となる。
【００２３】
プロセッサは、ある実行タスク中における当該実行タスクの中断可能な時点を明確に決定する。プロセッサは、十分な入力データのような、バッファメモリなどにおける十分可用な空間などの処理リソースが当該プロセッサに対し全く利用不可能か又は相当限られた量しか利用可能でないようなポイントまで持続することができる。これらのポイントは、プロセッサがタスク切換を開始する最適な機会を表す。タスク切換の開始は、次に処理すべきタスクの呼び出しを発生することによりプロセッサによって行われる。プロセッサからの次のタスクのこのような呼び出しどうしの間の間隔は、処理ステップとして規定することができる。処理ステップは、１つ以上のパケット又はグループのデータを読み出し、取得したデータに対する幾つかの動作を行い、１以上のパケット又はグループのデータを書き込むことを含みうる。
【００２４】
パケット又はグループのデータを読み出し書き込むという概念は、全体のシステムアーキテクチャにより規定又は強制されない。パケット又はグループのデータの概念は、システムアーキテクチャの包括的な基盤（インフラストラクチャ）のレベルでは認識することはできない。データ伝送動作すなわちバッファメモリに対する読み出し及び書き込み並びに同期動作すなわちバッファ管理の目的でリーダとライタとの間における実際のデータ消費についての信号授受は、フォーマット化されていないバイトストリームについて動作するよう構成される。パケット又はグループのデータ概念は、当該システムアーキテクチャにおける次のレイヤの機能すなわち当該メディア処理を実際に行うプロセッサの内部においてのみ現れる。
【００２５】
プロセッサにおいて実行する各タスクは、処理ステップの繰り返しとしてモデル化することができ、かかる場合において、各処理ステップは、パケット又はグループのデータを処理することを試みる。このような処理ステップを行う前に、プロセッサがどのタスクを続けるものとするかを決め明確なタスク切換時点を与えるために当該タスクがデータ処理システムにおけるタスクスケジューラと相互動作する。
【００２６】
図２には、プロセッサの概略処理のフローチャートが示されている。ステップＳ１において、どのタスクを続けるかを決めるためにプロセッサはタスクスケジューラに差し向けられる次のタスクの呼び出しを行う。ステップＳ２において、プロセッサは、処理すべき次のタスクについてのそれぞれの情報をタスクスケジューラから受け取る。その後、ステップＳ３において、処理は、要求された処理を行うのに十分なデータ又は他の処理リソースが利用可能であるかどうかを決めるために次に処理すべき該当のタスクに属する入力ストリームをチェックすることを続ける。この初期の確認は、何らかの部分的入力を読み出しパケットヘッダのデコードもする試みの動作を含んでもよい。ステップＳ４において必要な全ての処理リソースが使えるので当該処理が続行可能であることが判定された場合、フローはステップＳ５へジャンプし、各プロセッサは現タスクの処理を続ける。プロセッサがステップＳ６においてこの処理を完了した後は、フローは次の処理ステップへとジャンプすることになり、上述したステップを繰り返すことになる。
【００２７】
これに対し、ステップＳ４においてプロセッサが現タスクの処理を続けられないこと、すなわち入力ストリームの１つにおけるデータ欠落の如き不十分な処理リソースのために現処理ステップを完了することができないことが判定された場合は、フローはステップＳ７に移り、それまでなされた部分的処理の全結果は何らの状態セーブを伴うことなく、すなわちこの処理ステップにおけるそれまで処理された部分的処理結果のセーブをなすことなく破棄されることになる。かかる部分的処理は、何らかの同期呼び出し、データ読出動作又は取得データに関する何らかの処理を含んでもよい。その後、ステップＳ８において後の段階でその未完了の処理ステップを再開させ全部再実行するように差し向けられることになる。なお、現タスクを放棄し部分的処理結果を破棄することは、現タスクが当該同期メッセージを送ることによりそのストリーム動作のいずれかをコミットしなかった場合にのみ可能となる。
【００２８】
中間状態のセーブ及び再記憶をサポートする必要性を排除する機能特化ハードウェアプロセッサにおいては特に、その構成を簡素化し必要なシリコン領域を減らすことができる。
【００２９】
図３は、本発明の第２の実施例によるデータオブジェクトのストリームを処理する処理システムを示している。このシステムは、種々のレイヤに分割することが可能であり、それらは計算レイヤ１、通信サポートレイヤ２及び通信ネットワークレイヤ３である。計算レイヤ１は、ＣＰＵ１１及び２つのプロセッサ１２ａ，１２ｂを含む。これは例示に過ぎないものであり、それより多いプロセッサが当該システムに含まれてもよいことは明らかである。通信サポートレイヤ２は、ＣＰＵ１１に関連付けられるシェル２１と、プロセッサ１２ａ，１２ｂにそれぞれ関連付けられるシェル２１ａ，２１ｂとを有する。通信ネットワークレイヤ３は、通信ネットワーク３１及びメモリ３２を有する。
【００３０】
プロセッサ１２ａ，１２ｂは専用プロセッサであることが好ましく、各々が限定された範囲のストリーム処理を行うことに特化されたものとするのが良い。各プロセッサは、同じ処理動作をストリームの連続的データオブジェクトに対し繰り返し行うよう構成される。プロセッサ１２ａ，１２ｂは、各々が例えば、可変長復号、ラン長（ランレングス）復号、動き補償、画像スケーリング又はＤＣＴ変換の実行といった異なるタスク又は機能を実行するようにしてもよい。動作において、各プロセッサ１２ａ，１２ｂは、１つ以上のデータストリームについての動作を行う。この動作は、例えば、ストリームを受信し他のストリームを発生すること、新しいストリームを発生することなくストリームを受信すること、ストリームを受信することなくストリームを発生すること、又は受信ストリームを変更することを含みうる。プロセッサ１２ａ，１２ｂは、他のプロセッサ１２ｂ，１２ａによって又はＣＰＵ１１によって発生したデータストリームを、或いは当該プロセッサ自ら発生したストリームをも処理することが可能である。ストリームは、上記メモリ３２を介してプロセッサ１２ａ，１２ｂを転送元又は転送先として転送された一連のデータオブジェクトを有する。
【００３１】
シェル２２ａ，２２ｂは、通信レイヤである通信ネットワークレイヤに対する第１のインターフェースを有する。このレイヤは、当該シェルの全てについて均等又は包括的なものである。さらに、シェル２２ａ，２２ｂは、シェル２２ａ，２２ｂがそれぞれ関連付けられるプロセッサ１２ａ，１２ｂに対する第２のインターフェースを有する。この第２のインターフェースは、タスクレベルのインターフェースであり、当該プロセッサ１２ａ，１２ｂの特定の必要性を扱うことを可能とするために当該のプロセッサ１２ａ，１２ｂに対してカスタマイズされる。したがって、シェル２２ａ，２２ｂは、当該第２のインターフェースとしてプロセッサ特化型のインターフェースを有するが、当該シェルの全体のアーキテクチャは、当該システムアーキテクチャ全体の再使用を容易にするために全てのプロセッサに対して包括的で均等なものであり、特定のアプリケーションのパラメータ特定及び採用を可能とする。
【００３２】
シェル２２ａ，２２ｂは、データ伝送のための読出／書込ユニットと、同期ユニットと、タスク切換ユニットとを有する。これら３つのユニットは、マスタ／スレーブベースで関連のプロセッサと通信する。ここではプロセッサがマスタとして機能する。したがって、それぞれ３つのユニットは、プロセッサからの要求によって初期化される。プロセッサと３つのユニットとの間の通信は、引数値を引き渡し返答するための要求値を待つために要求確認（リクエストアクノリッジ）ハンドシェイクメカニズムによって実行されるのが好ましい。したがって、当該通信はブロッキングし、すなわち制御の各スレッドはそれらの終了を待つ。
【００３３】
読出／書込ユニットは、２つの異なる動作、すなわちプロセッサ１２ａ，１２ｂがメモリからデータオブジェクトを読み出すことを可能とする読出動作と、プロセッサ１２ａ，１２ｂがメモリ３２にデータオブジェクトを書き込むことを可能とする書込動作を実施することが好ましい。各タスクは、データストリームの連結ポイントに対応する予め規定されたセットのポートを有する。これらの動作の引数は、各ポートのＩＤ「port_id」、読出／書込が行われるべきオフセット「offset」及び当該データオブジェクトの可変長「n_bytes」である。かかるポートは、「port_id」引数によって選択される。この引数は、現タスクの局部的範囲を有する負ではない小さな数である。
【００３４】
同期ユニットは、エンプティなＦＩＦＯからの読み出し又はフル状態のＦＩＦＯへの書き込みに関する局部的ブロッキング条件を扱うよう同期のための２つの動作を行う。第１の動作すなわち空間取得動作は、ＦＩＦＯとして実現されたメモリにおける空間を要求するものであり、第２の動作すなわち空間配置動作は、ＦＩＦＯにおける空間の解放を要求するものである。これらの動作の引数は、「port_id」及び「n_bytes」可変長である。
【００３５】
空間取得動作及び空間配置動作は、リニアなテープ又はＦＩＦＯの同期の順で行われる一方、当該動作により要求されるウィンドウの内でランダムアクセス読出／書込動作がサポートされる。
【００３６】
タスク切換ユニットは、タスク取得動作としてプロセッサのタスク切換を実現する。これらの動作の引数は、「blocked」、「error」及び「task_info」である。
【００３７】
引数「blocked」は、ブール（代数）値であって、入力ポート又は出力ポートの空間取得呼び出しが誤って戻ったので最後の処理ステップが正常に終わることができなかった場合に「真」に設定されるものである。したがって、タスクスケジューリングユニットは、ブロックされたポートに新しい「空間」メッセージが届かない限り、このタスクが再スケジュール化されない方がよいことを速やかに知らされる。この引数値は、改善されたスケジューリングを導くだけのアドバイスとみなされるが機能に影響を与えることはない。引数「エラー」は、最後の処理ステップにおいて致命的エラーがコプロセッサ内に生じた場合に「真」とされるブール（代数）値である。ＭＰＥＧ復号からの例として、例えば未知の可変長コード又は不当な動きベクトルの出現が挙げられる。その場合、シェルは、タスクテーブルイネーブルフラグをクリアしてさらなるスケジューリングを回避し、メインＣＰＵに割り込みが送られシステム状態を修復する。現タスクは、ＣＰＵがソフトウェアを介して相互動作するまで確実にスケジュールされなくなる。
【００３８】
上述した動作は、プロセッサからの読出呼出、書込呼出、空間取得呼出、空間配置呼出又はタスク取得呼出によって開始される。
【００３９】
図４は、読出及び書込の処理並びにそれに関連する同期動作の図を示している。プロセッサの立場から見ると、データストリームは、現アクセスポイントを有するデータの無限テープとして想定される。プロセッサから発せられた空間取得呼出は、図４ａにおいて小さな矢印により示される現アクセスポイントの前のデータ空間へのアクセスの許可を求める。この許可が認められると、プロセッサは、要求された空間内すなわち図４ｂにおける縁どられたウィンドウ内で、当該n_bytes引数により表されるような可変長データを用いて、かつオフセット引数により表されるようなランダムアクセス位置に読出及び書込動作を行うことができる。
【００４０】
当該許可が認められなかった場合、その呼び出しは「偽」に戻る。１以上の空間取得呼出及びオプションとしての読出／書込動作の後、プロセッサは、データ空間の処理又は所定の一部を終えるかどうかを決め空間配置呼び出しを発することができる。この呼び出しは、アクセスポイントを所定のバイト数すなわち図４ｄにおけるn_byte2前に進め、そのサイズは、前に付与された空間によって拘束される。
【００４１】
図２に示されるような好適実施例による概略的処理ステップの方法も、図３によるデータ処理システムに基づいて行うことができる。主な違いは、図３におけるそれぞれのプロセッサ１２のシェル２２がプロセッサとメモリとの通信の制御を引き受けるところである。
【００４２】
したがって、図２のフローチャートでは、プロセッサ１２ａ，１２ｂの主たる処理が示される。ステップＳ１では、プロセッサは、どのタスクを続けることにするかを判定するために、当該プロセッサ１２のシェル２２におけるタスクスケジューリングユニットへ差し向けられるタスク取得呼び出しを行う。ステップＳ２では、プロセッサは、その関連するシェル２２或いはもっと厳密にはシェル２２のタスクスケジューリングユニットから、処理すべき次のタスクに関する各情報を受け取る。その後、ステップＳ３においては、要求された処理を行うために十分なデータその他の処理リソースが利用可能かどうかを決めるために、次に処理すべき関連タスクに属する入力ストリームをチェックする処理が継続する。この初期の確認には、何らかの部分的入力を読み出す試行動作の他、パケットヘッダの復号が含まれるものとすることができる。ステップＳ４において、必要な全ての処理リソースが使えるので処理が継続可能であると判定されると、フローはステップＳ５にジャンプし、それぞれのプロセッサ１２は、現タスクの処理を続ける。プロセッサ１２がステップＳ６においてこの処理を終了させた後、フローは次の処理ステップへとジャンプすることになり、上述したステップが繰り返されることになる。
【００４３】
但し、ステップＳ４においてプロセッサ１２が現タスクの処理を続けることができず、すなわち入力ストリームの１つにおいてデータの欠落のような不十分な処理リソースのために現在の処理ステップを完了することができないと判定された場合は、ステップＳ７にフローが進むことになり、それまでなされた部分的処理の全ての結果は、何の状態セーブもなく、すなわちこの処理ステップにおいてそれまで処理された一部の処理結果のセーブがなされることなく破棄されることになる。部分的処理は、幾つかの空間取得呼び出し、データ読出動作又は取得データの何らかの処理を含みうる。その後、ステップＳ８では、後の段階で未完了の処理ステップを再開させ再度全部を行うようにフローが差し向けられることになる。但し、現タスクの放棄及び一部の処理結果の破棄は、同期メッセージを送ることによって現タスクがそのストリーム動作のいずれかをコミットしなかった場合に限り可能となる。
【００４４】
図５は、循環ＦＩＦＯメモリの図を示している。データのストリームを通信には、ＦＩＦＯバッファが必要とされ、好ましくは有限でかつ一定サイズのものがよい。これはメモリに予め割り当てられるのがよく、当該リニアなメモリアドレス範囲において適正なＦＩＦＯ動作をなすために循環アドレス指定メカニズムが適用される。
【００４５】
図５の中央における回転矢印５０は、プロセッサからの空間取得呼び出しが読出／書込用の認められたウィンドウを確認する方向を示しており、これは、空間配置呼び出しがアクセスポイントを前に動かす方向と同じ方向である。小さな矢印５１，５２は、タスクＡ及びＢの現アクセスポイントを示している。本例において、Ａはライタ（writer）であり後ろに適正なデータを残すのに対し、Ｂはリーダ（reader）であり後ろにエンプティ空間（又は無意味なごみ）を残す。各アクセスポイントの前の共有領域（Ａ１，Ｂ１）は、空間取得動作により得られるアクセスウィンドウを示す。
【００４６】
タスクＡ及びＢは、異なる速度で進行可能であり、及び／又はマルチタスク処理のために幾つかの時間的期間において行われないものである。シェル２２ａ，２２ｂは、Ａ及びＢのアクセスポイントがそれぞれの順序づけ（オーダリング）を維持することを、或いはもっと厳密に言えば、与えられたアクセスウィンドウが重ならないことを確実にするよう、Ａ及びＢが実行するプロセッサ１２ａ，１２ｂに情報を供給する。全体の機能的適正さが達せられるようシェル２２ａ，２２ｂにより供給された情報を用いるのがシェル２２ａ，１２ｂの役目である。例えば、シェル２２ａ，２２ｂは、例えばバッファにおいて可用な空間が不十分であるためにプロセッサエラーからの空間取得要求に時として答えるかもしれない。そのとき、プロセッサは、拒否されたアクセス要求に応じてバッファにアクセスすることを控えるのがよい。
【００４７】
シェル２２ａ，２２ｂは、各々がそれに関連するプロセッサ１２ａ，１２ｂに近接して実現されることが可能なように配される。各シェル２２ａ，２２ｂは、そのプロセッサに割り当てられたタスクに付帯するストリームの構成データを局部的に含み、このデータを適正に扱うよう当該制御ロジックの全てを局部的に実施する。したがって、局部ストリームテーブルは、シェル２２ａ，２２ｂにおいて各ストリームにつき換言すれば各アクセスポイントにつき１行のフィールドを含んで実現される。
【００４８】
図５の構成を扱うため、タスクＡ及びＢのプロセッサシェル２２ａ，２２ｂのストリームテーブルは、このバッファにおけるその現有アクセスポイントから他のアクセスポイントへの（恐らく悲観的な）距離を含む「空間」フィールドと、このバッファにおける他のアクセスポイントのタスク及びポートを持つ遠隔のシェルを表すＩＤとを保持するこのような１つのラインを各々含んでいる。これに加え、上記局部ストリームテーブルは、呈されるアドレスインクリメントをサポートするため、現アクセスポイントに対応するメモリアドレスと、バッファベースアドレス及びバッファサイズのコーディングとを含んでもよい。
【００４９】
これらストリームテーブルは、当該シェル２２の各々において、レジスタファイルのような小さなメモリにおいてメモリマップ化（メモリ割り当て）がされるのが好ましい。したがって、空間取得呼び出しは、要求されたサイズを局部的に記憶された可用な空間と比較することによって直ちにかつ局部的に応答されることが可能である。空間配置呼び出しにより、この局部的空間フィールドは示された量だけデクリメントされ、空間配置メッセージは、その空間値をインクリメントするよう前のアクセスポイントを持つ他のシェルに送られる。これに対応して、遠隔なソースからこのような配置メッセージの受信がなされると、シェル２２は局部的フィールドをインクリメントする。シェル間のメッセージの伝送は時間が掛かるので、両方の空間フィールドが合わせて全バッファサイズとなる必要がなく瞬間的に当該悲観的な値を含むかもしれない。しかし、これは同期安全性を侵すものではない。これは、現に多数のメッセージがそれらの行く先の途中にあるときや、それらがアウトオブオーダーで処理されているよきのような例外的状況においても起こりうるが、このような場合でもその同期化が適正に維持される。
【００５０】
図６は、各シェルにおける局部空間値を更新し「空間配置」メッセージを送るメカニズムを示している。この構成において、空間取得要求すなわちプロセッサ１２ａ，１２ｂからの空間取得呼出が、要求されたサイズを局部的に記憶された空間情報と比較することにより、関連のシェル２２ａ，２２ｂにおいて直ちにかつ局部的に応答されることができる。空間配置呼び出しで、局部シェル２２ａ，２２ｂは、その空間フィールドを示された量だけデクリメントし、当該遠隔シェルに空間配置メッセージを送る。この遠隔シェルすなわち他のプロセッサのシェルは、他のアクセスポイントを持ち、空間値をそこでインクリメントする。これに対応して、当該局部シェルは、遠隔ソースからこのような空間配置メッセージを受けるとその空間フィールドをインクリメントする。
【００５１】
アクセスポイントに属する空間フィールドは、２つのソースによって変更される。すなわち、局部的空間配置呼出でのデクリメントと、受け取った空間配置メッセージでのインクリメントである。このようなインクリメント又はデクリメントが自動動作として実現されない場合、誤りのある結果となる。かかる場合、分離した局部空間及び遠隔空間フィールドが用いられる可能性があり、それらの各々は、単一ソースだけで更新される。そして、局部的空間取得呼出でこれらの値が減算される。シェル２２は、その自らの局部テーブルの更新の制御の下に常におかれこれらを自動的に行う。これは、シェルの実現問題に相当するに過ぎないものであり、その外部機能には見えないものである。
【００５２】
空間取得呼出が「偽」を返すと、プロセッサはどのように反応するかを自由に決める。可能性のあるものは、ａ）プロセッサが小さ目のn_bytes引数を伴う新しい空間取得呼出を発する、ｂ）プロセッサが少しの間待機した後に再び試行する、又はｃ）プロセッサが現タスクを中止し続行するようこのプロセッサにつき他のタスクを許容する、というものである。
【００５３】
これにより、タスクスイッチングの決定を、より多くのデータの想定到来時間と関連の状態セーブコストを伴う内部で累積された状態の量とに依存させることが可能となる。プログラマブル不可能な専用ハードウェアプロセッサにとっては、この決定はアーキテキチャの設計過程の一部である。
【００５４】
シェル２２の実現及び動作は、読出と書込ポートとの識別をしないが、特定の実例はこうした識別を行うことがある。シェル２２により実現される動作は、ＦＩＦＯバッファのサイズ、メモリにおけるその位置、メモリ限定の循環ＦＩＦＯのアドレスについての折り返しメカニズム、キャッシュ方式、キャッシュ一貫性（コヒーレンシー）、包括的Ｉ／Ｏ整合条件、データバス幅、メモリ構成条件、通信ネットワーク構成及びメモリ構成などの実現態様を効果的に隠す。
【００５５】
好ましくは、シェル２２ａ，２２ｂは、フォーマット化されていないバイト系列について動作する。データストリームを通信するライタ及びリーダにより用いられる同期パケットサイズ間における相関は必要ない。データ内容の意味上の翻訳（判読）はプロセッサに任される。このタスクは、他のどのタスクに通信するのかそしてどのプロセッサにこれらタスクが割り当てられるのか又は他のどのタスクが同じプロセッサに割り当てられるのかといったようなアプリケーショングラフ発生率構造を認識しない。
【００５６】
シェル２２の高性能な実現例において、読出呼出、書込呼出、空間取得呼出、空間配置呼出は、読出／書込ユニット及びシェル２２ａ，２２ｂの同期ユニットを介して並列に発生させることができる。シェル２２の種々のポートにおいて動作する呼び出しは、相互のオーダリングの制約を持たないが、シェル２２の同一ポートにおいて動作する呼び出しは、呼出元タスク又はプロセッサに応じてオーダされなければならない。このようなケースに対し、プロセッサからの次の呼び出しは、機能呼出（ファンクションコール）から戻ることによりソフトウェアの実現形態で、また承認（アクノリッジ）信号を設けることによりハードウェアの形態で前の呼び出しが戻ったときに開始されることができる。
【００５７】
読出呼出におけるサイズ引数すなわちn_bytesのゼロ値は、port_ID及びoffset引数により示される位置において当該メモリからシェルキャッシュへデータの事前取込を行うために確保されることができる。このような動作は、シェルにより行われる自動的な事前取込のために用いることができる。同様に、書込呼出におけるゼロ値は、キャッシュフラッシュ要求のために確保可能であるが、自動的キャッシュフラッシングはシェルの担当である。
【００５８】
オプションとして、５つ全ての動作が、追加の最新task_ID引数を受けつける。これは、早期のタスク取得呼出からの結果の値として得られる正の小さな数であるのが普通である。この引数のゼロ値は、タスク特有のものではないがプロセッサコントロールに関する呼び出しのために確保される。
【００５９】
通信のセットアップに係る好適実施例において、データストリームは、ＦＩＦＯバッファの有限サイズに関係する１つのライタ及び１つのリーダを有するストリームである。このようなストリームは、有限かつ一定のサイズを有するＦＩＦＯバッファを要する。これはメモリに、そしてそのリニアなアドレス範囲において予め割り当てられることになり、適正なＦＩＦＯ動作のために循環的アドレス指定メカニズムが適用される。
【００６０】
一方、図３及び図７に基づく他の実施例においては、１つのタスクにより生成されるデータストリームは、種々の入力ポートを有する、異なる２つ以上の消費手段によって消費されるべきものである。このような状況は、タームフォーク（term forking）により規定することができる。但し、マルチタスクハードウェアプロセッサのためにも、またＣＰＵ上で実行するソフトウェアタスクのためにもタスクの実施を再利用することが望まれる。これは、それらの基本的機能に対応する一定数のポートを有するタスクにより実現され、しかもアプリケーション構成により引き起こされるフォーキングの必要性は、シェルによって解決されるべきものである。
【００６１】
ストリームフォーキングは、シェル２２により、単に２つの分離した通常ストリームバッファを維持し、全ての書込及び空間配置動作を２倍にし、２倍にされた空間取得チェックの結果の値についてＡＮＤ演算を行うことによって実現することができる。これは、２倍の書込帯域幅と起こりうるより大なるバッファ空間とをコストに含んでしまうので実現しないのが好ましい。これに代えて、同じＦＩＦＯバッファを共有する２以上のリーダ及び１つのライタにより実現されるのが好ましい。
【００６２】
図７は、単一のライタ及び複数のリーダを備えるＦＩＦＯバッファの概要を示している。同期メカニズムは、ＡとＣとの２つ１組のオーダリングの次に係るＡとＢとの通常の２つ１組のオーダリングを確実にしなければならないとともに、ＢとＣは相互の制約（例えばそれらが純然たるリーダである場合）を何ら持たない。これは、各リーダについて個々に可用空間を追跡すること（ＡからＢ及びＡからＣ）によって書込動作を実行するプロセッサに関連付けられたシェルにおいて達成される。ライタが局部的空間取得呼出を実行するとき、そのn_bytes引数がこれら空間値の各々と比較される。これは、次のラインへの変更を示すために１つの追加のフィールド又は列（カラム）によってつながるフォーキングのために当該ストリームテーブルにおいて追加のラインを用いることによって実現される。
【００６３】
これにより、フォーキングが用いられず同時に２方向だけにフォーキングを限定しない場合の多くのものについて非常に少ない費用で済むことになる。フォーキングは、ライタによってのみ実現され、リーダはこの状況を認識しないことが好ましい。
【００６４】
図３及び図８に基づく他の実地例において、データストリームは、テープモデルによる３局ストリームとして実現される。各局は、通過するデータストリームの幾つかの更新を行う。３局ストリームのアプリケーションの例として、１つのライタと、中間ウォッチドッグ及び末尾リーダがある。２つ目の例として、タスクは、通過するデータを監視し、変更なしでデータが通過することをほぼ可能としつつ幾つかを検査するのが好ましい。比較的稀に、当該ストリームにおける少数のアイテム又はデータオブジェクトを変更することを決めることができた。これは、１つのバッファからもう１つのバッファへ全ストリーム内容をコピーすることを回避するようプロセッサによってインプレース（in_place）バッファの更新によって効率的に達成可能である。実際、ハードウェアプロセッサ１２が通信を行いメインＣＰＵ１１が仲介動作を行ってハードウェアの欠陥を修正するよう当該ストリームを変更する場合、若干異なるストリームフォーマットに対し又は単にデバッグのために適合をなすのに有益となる。このようなセットアップは、メモリトラフィック及びプロセッサの負荷を減らすために、メモリにおけるその単一のストリームバッファを共有する３つのプロセッサ全部によって達成ができた。タスクＢは、フルのデータストリームを実際に読み出したり又は書き込んだりすることはない。
【００６５】
図８は、３局ストリームの有限メモリバッファ実現例を示している。この３点バッファの正しい意味は、互いにＡ，Ｂ及びＣを厳格にオーダリングすることを維持することと、重なるウィンドウを持たないことを保証することとを含む。これによれば、３点バッファは、図５に示される２点バッファからの拡張である。このような多系統循環型ＦＩＦＯは、上述したようなシェルの動作によっても、上記好適実施例において説明したような空間配置メッセージを伴う分配実施形式によっても直接サポートされる。単一のＦＩＦＯにおいて３局とすることに限定されない。１つの局が有効データの消費及び生成の双方を行うインプレース処理（in_place processing）も、２つしか局を持たないものとして適用可能である。この場合両タスクは、互いにデータを交換するようインプレース処理を行い、エンプティ空間がバッファに残される。
【００６６】
図２の好適実施例に基づく他の実施例において、読出／書込動作及び同期動作の論理的分離の概念は、データ伝送の物理的分離として、すなわち読出及び書込動作と同期として実現される。伝送用すなわちデータの読出／書込動作のために高い帯域幅を許容するワイドバスが実現されるのが好ましい。独立した通信ネットワークは、同期用の同じワイドバスを用いるのに好ましいとは思われなかったので、同期動作のために実現される。この構成は、両ネットワークがそれぞれの用途につき最適化することができる、という利点を有する。したがって、データ伝送ネットワークは、メモリＩ／Ｏすなわち読出及び書込動作につき最適化され、同期ネットワークは、インタープロセッサメッセージに対し最適化される。
【００６７】
かかる同期ネットワークは、この目的のために特に調整され最適化されるメッセージ転送リングネットワークとして実現するのが好ましい。このようなリングネットワークは、小さく、スケーラブルなアーキテクチャの凡用性の要件を非常にスケーラブルにサポートするものである。リングネットワークの長い待ち時間は、同期遅延がデータストリームバッファ及びメモリによって吸収されるので、ネットワークの性能に悪い影響を与えない。リングネットワークの全スループットは非常に高く、当該リングにおける各リンクは、プロセッサの存在と同様にたくさんのメッセージがやりとりされるのを可能としつつ同期メッセージを同時に転送することができる。
【００６８】
図３に基づくさらに他の実施例においては、データ伝送と同期の物理的分離の思想が実現される。シェル２２ａにおける同期ユニットは、他のシェル２２ｂにおける他の同期ユニットに接続される。かかる同期ユニットは、処理されたストリームの有効データが当該メモリ位置に書き込まれる前に１つのプロセッサがこれらメモリ位置にアクセスしないことを保証する。同様に、同期インターフェースは、プロセッサ１２ａがメモリ３２に有効データを上書きしないことを保証するのに用いられる。同期ユニットは、同期メッセージネットワークを介して通信する。好ましくは、かかるユニットはリングの一部を形成し、同期信号が後段プロセッサにおいて不要であるときに１のプロセッサから次のプロセッサへ伝送され又はブロック及び上書きされる。これら同期ユニットは共に同期チャネルを形成する。同期ユニットは、プロセッサ１２ａからプロセッサ１２ｂへデータオブジェクトのストリームを伝送するために用いられるメモリ空間についての情報を維持する。
【図面の簡単な説明】
【００６９】
【図１】従来技術によるプロセッサへのアプリケーション割り当て（マッピング）の概要図。
【図２】プロセッサの主な処理を示すフローチャート。
【図３】第２の実施例によるストリームベース処理システムのアーキテクチャの概略ブロック図。
【図４】図３のシステムにおける同期動作及びＩ／Ｏ動作を示す図。
【図５】循環式ＦＩＦＯメモリを示す図。
【図６】図３による各シェルにおける局部空間値を更新するメカニズムを示す図。
【図７】単一ライタ及び複数リーダを備えるＦＩＦＯバッファを示す図。
【図８】３局ストリームの有限メモリバッファ実現形態を示す図。
【図１】
2005528671.tif 000003
【図２】
2005528671.tif 000004
【図３】
2005528671.tif 000005
【図４】
2005528671.tif 000006
【図５】
2005528671.tif 000007
【図６】
2005528671.tif 000008
【図７】
2005528671.tif 000009
【図８】
2005528671.tif 000010
【国際調査報告】
2005528671.tif 000011
2005528671.tif 000012
2005528671.tif 000013