(57)【要約】  本発明は、データ処理システムにおいて、各プロセッサ毎に通信手段を導入することにより、通信ハードウェア、例えばバスおよびメモリと、演算ハードウェア、例えばプロセッサとを効果的に分離するという考えに基づいている。このような分離を導入することにより、プロセッサは、通信手段が各プロセッサのための通信サポートを行なっている間、その特定の機能のタスクを行なうことに集中することができる。したがって、データ処理システムには、演算層と、通信サポート層と、通信ネットワーク層とが設けられている。演算層は、データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを備えている。第１のプロセッサは、多くのデータオブジェクトを１つのストリームから第２のプロセッサへと送り、その後、第２のプロセッサは、データオブジェクトを処理することができる。通信ネットワーク層は、メモリと、第１のプロセッサおよび第２のプロセッサをメモリに接続するための通信ネットワークとを有している。通信サポート層は、演算層と通信ネットワーク層との間に設けられ、演算層の各第２のプロセッサ毎に１つの通信手段を備えている。第２のプロセッサのそれぞれの通信手段は、通信ネットワーク層の通信ネットワークを介した前記第２のプロセッサとメモリとの間の通信を制御する。
2005513610.tif 000002
【特許請求の範囲】
【請求項１】
データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを有する演算層であって、データオブジェクトをデータオブジェクトのストリームから前記第２のプロセッサへと送るために前記第１のプロセッサが設けられている演算層と、
通信ネットワークとメモリとを有する通信ネットワーク層と、
前記第２の各プロセッサ毎に１つの通信手段を有する通信サポート層であって、前記演算層と前記通信ネットワーク層との間に設けられている通信サポート層と、
を備え、
前記第２のプロセッサのそれぞれの通信手段は、通信ネットワーク層の前記通信ネットワークを介した前記第２のプロセッサと前記メモリとの間の通信を制御する、データ処理システム。
【請求項２】
前記第２のプロセッサは、第１および第２のタスクのインターリーブ処理が可能なマルチタスクを行うプロセッサであり、前記第１および第２のタスクは、データオブジェクトの第１および第２のストリームをそれぞれ処理する、請求項１に記載のデータ処理システム。
【請求項３】
前記通信ユニットは、複数の流入ストリームおよび流出ストリームを扱うように、および／または、タスク毎に複数のストリームを扱うように設けられている、請求項２に記載のデータ処理システム。
【請求項４】
前記各通信手段は、
通信ネットワーク層の前記メモリからの対応する前記第２のプロセッサの読み取りおよび前記メモリ内への対応する前記第２のプロセッサの書き込みを可能にする読み取り／書き込みユニットと、
関連する前記第２のプロセッサの読み取り／書き込みの同期をとり、および／または、メモリアクセスのプロセッサ間同期を行なう同期ユニットと、および／または、
付加されたプロセッサに関連するタスクのスケジュールを組んで、前記第２のプロセッサによって扱われる一組のタスクを管理しおよび／またはタスク間通信チャンネルを管理するタスクスケジューリングユニットと、
を備えている、請求項１に記載のデータ処理システム。
【請求項５】
前記通信手段は、同じ機能を実施して、前記付加されたプロセッサから独立して、前記付加された第２のプロセッサと前記メモリとの間の通信を制御するために設けられている、請求項１に記載のデータ処理システム。
【請求項６】
前記通信手段は、メモリレンジ内に伝送されたデータをマッピングするための機能を提供する、請求項１に記載のデータ処理システム。
【請求項７】
前記第２のプロセッサとこれらに関連する通信手段との間の通信がマスター／スレーブ通信であり、前記第２のプロセッサがマスターとして機能する、請求項１に記載のデータ処理システム。
【請求項８】
前記第２のプロセッサは、所定の範囲のストリーム処理タスクを行なう特定の機能の専用プロセッサである、請求項１に記載のデータ処理システム。
【請求項９】
前記通信サポート層内の前記通信手段は、前記演算層内の前記関連する第２のプロセッサへと向かう適合可能な第１のタスクレベルインタフェースと、前記通信ネットワークおよび前記メモリへと向かう第２のシステムレベルインタフェースとを備え、
前記第１および第２のインタフェースが同時に或いは非同時に動作する、請求項１に記載のデータ処理システム。
【請求項１０】
前記第２のプロセッサのうちの少なくとも１つのプロセッサがプログラム可能であり、
前記第２のプロセッサのうちの少なくとも１つの前記プロセッサの通信手段の第１のタスクレベルインタフェースが少なくとも部分的にプログラム可能であり、
前記通信手段の機能の一部がプログラム可能である、請求項１に記載のデータ処理システム。
【請求項１１】
前記通信手段は、前記データ処理システム内の他の通信手段を直接用いて制御情報および／または同期情報を交換するための付加的なインタフェースを備えている、請求項１または９に記載のデータ処理システム。
【請求項１２】
前記通信手段は、トークンリング構造内のそれらの付加的なインタフェースを介して接続されている、請求項１１に記載のデータ処理システム。
【請求項１３】
前記通信手段は、送信する前記第２のプロセッサに知らせることなく、受信する複数の第２のプロセッサへの出力ストリームのマルチキャスティングを扱うために設けられている、請求項１に記載のデータ処理システム。
【請求項１４】
前記通信手段は、通信ネットワークの実施態様を、関連する第２のプロセッサに対して隠すために設けられている、請求項１に記載のデータ処理システム。
【請求項１５】
データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを有する演算層であって、データオブジェクトをデータオブジェクトのストリームから第２のプロセッサへと送るために前記第１のプロセッサが設けられている演算層と、通信ネットワークとメモリとを有する通信ネットワーク層と、前記演算層と前記通信ネットワーク層との間に設けられた通信サポート層とを備えたデータ処理システムの通信手段であって、
第２のプロセッサに関連付けられるとともに、通信ネットワーク層内の前記通信ネットワークを介した前記第２のプロセッサと前記メモリとの間の通信を制御する、通信手段。
【請求項１６】
前記通信ユニットは、複数の流入ストリームおよび流出ストリームを扱うように、および／または、タスク毎に複数のストリームを扱うように設けられている、請求項１５に記載の通信手段。
【請求項１７】
通信ネットワーク層内の前記メモリからの関連する前記第２のプロセッサの読み取りおよび前記メモリ内への関連する前記第２のプロセッサの書き込みを可能にする読み取り／書き込みユニットと、
関連する前記第２のプロセッサの読み取り／書き込みの同期をとり、および／または、メモリアクセスのプロセッサ間同期を行なう同期ユニットと、および／または、
付加されたプロセッサに関連するタスクのスケジュールを組んで、前記第２のプロセッサによって扱われる一組のタスクを管理しおよび／またはタスク間通信チャンネルを管理するタスクスケジューリングユニットと、
を更に備えている、請求項１５に記載の通信手段。
【請求項１８】
前記通信手段と前記第２のプロセッサとの間の通信がマスター／スレーブ通信であり、前記第２のプロセッサがマスターとして機能する、請求項１５に記載の通信手段。
【請求項１９】
前記演算層の前記関連する第２のプロセッサへと向かう適合可能な第１のタスクレベルインタフェースと、前記通信ネットワークおよび前記メモリへと向かう第２のシステムレベルインタフェースとを更に備え、
前記第１および第２のインタフェースが同時に或いは非同時に動作する、請求項１５に記載の通信手段。
【請求項２０】
第１のタスクレベルインタフェースが少なくとも部分的にプログラム可能であり、
前記通信手段の機能の一部がプログラム可能である、請求項１５に記載の通信手段。
【請求項２１】
前記データ処理システムの他の通信手段を直接用いて制御情報および／または同期情報を交換するための付加的なインタフェースを更に備えている、請求項１５に記載の通信手段。
【請求項２２】
前記通信手段は、送信するその第２のプロセッサに知らせることなく、受信する複数の第２のプロセッサへの出力ストリームのマルチキャスティングを扱うために設けられている、請求項１５に記載の通信手段。
【請求項２３】
前記通信手段は、通信ネットワークの実施態様を、関連する第２のプロセッサに対して隠すために設けられている、請求項１５に記載の通信手段。
【請求項２４】
データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを備え、データオブジェクトをデータオブジェクトのストリームから第２のプロセッサへと送るために前記第１のプロセッサが設けられ、データオブジェクトを記憶して検索するための少なくとも１つのメモリと、前記各第２のプロセッサ毎に設けられた１つの通信手段とを備えたデータ処理システムでデータを処理する方法であって、前記第１および前記第２のプロセッサへの共有アクセスが与えられる方法において、
前記第２のプロセッサのそれぞれの通信手段が、前記第２のプロセッサと前記メモリとの間の通信を制御するステップを含んでいる、方法。
【請求項２５】
前記通信ユニットは、複数の流入ストリームおよび流出ストリームを扱い、および／または、タスク毎に複数のストリームを扱う、請求項２４に記載のデータを処理する方法。
【請求項２６】
通信を制御する前記ステップは、
通信ネットワーク層の前記メモリからの関連する前記第２のプロセッサの読み取りおよび前記メモリ内への関連する前記第２のプロセッサの書き込みを可能にするステップと、
関連する前記第２のプロセッサの読み取り／書き込みの同期をとり、および／または、メモリアクセスのプロセッサ間同期を行なうステップと、および／または、
付加されたプロセッサに関連するタスクのスケジュールを組んで、前記第２のプロセッサによって扱われる一組のタスクを管理しおよび／またはタスク間通信チャンネルを管理するステップと、
を含んでいる、請求項２４に記載のデータを処理する方法。
【請求項２７】
前記第２のプロセッサとこれらに関連する通信手段との間の通信がマスター／スレーブ通信であり、前記第２のプロセッサがマスターとして機能する、請求項２４に記載のデータを処理する方法。
【請求項２８】
前記通信手段は、送信するその第２のプロセッサに知らせることなく、受信する複数の第２のプロセッサへの出力ストリームのマルチキャスティングを扱う、請求項２４に記載のデータを処理する方法。
【請求項２９】
前記通信手段は、通信ネットワークの実施態様を、関連する第２のプロセッサに対して隠す、請求項２４に記載のデータを処理する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するデータ処理システムおよび複数のプロセッサを有するデータ処理システムの通信手段に関する。
【背景技術】
【０００２】
高性能のための異種マルチプロセッサアーキテクチャ、例えば高精細度ＭＰＥＧデコーディングのためのデータ依存媒体処理は知られている。一方向のデータストリームによってのみ情報を交換する一組の同時実行タスクとして媒体処理アプリケーションを指定することができる。Ｇ．Ｋａｈｎは、スエーデンのストックホルムで１９７４年８月５日から１０日に行なわれたＩＦＩＰ会議７４の議事録「パラレルプログラミングのための簡単な言語のセマンティック」（北オランダ社、１９７４、４７１頁から４７５頁）で、既にそのようなアプリケーションの形式モデルを１９７４年に導入し、その後、１９７７年、情報処理７７、Ｂ．Ｇｉｌｃｈｈｉｒｓｔ（Ｅｄ．）、「パラレルプログラミングのコルーチンおよびネットワーク」（北オランダ社、１９７７、９９３頁から９９８頁）で、ＫａｈｎおよびＭａｃＱｕｅｅｎによって動作説明がなされた。この形式モデルは現在、Ｋａｈｎ  Ｐｒｏｃｅｓｓ  Ｎｅｔｗｏｒｋと、一般に呼ばれている。
【０００３】
アプリケーションは、同時に実行可能な一組のタスクとして知られている。一方向のデータストリームによりタスク間で情報を変更できるだけである。タスクは、所定のデータストリームに関する読み取りおよび書き込み処理により、確定的にのみ通信しなければならない。データストリームは、ＦＩＦＯ動作に基づいてバッファリングされる。バッファリングにより、１つのストリームで通信する２つのタスクは、個々の読み取りプロセスまたは書き込みプロセスに関して同期する必要がない。
【０００４】
ストリーム処理においては、異なるプロセッサにより、データストリームに関して連続的に操作が行なわれる。例えば、第１のストリームは、８×８ピクセルブロックのＤＣＴ（離散コサイン変換）係数のブロックの第２のストリームを形成するために第１のプロセッサによって処理される画像のピクセル値から成っていても良い。第２のプロセッサは、各ＤＣＴ係数ブロック毎に選択され且つ圧縮された係数のブロックのストリームを形成するために、ＤＣＴ係数のブロックを処理しても良い。
【０００５】
図１は、従来から周知のプロセッサに対するアプリケーションのマッピングの図を示している。データストリーム処理を実現するために、多数のプロセッサが設けられており、各プロセッサは、データオブジェクトストリームから次のデータオブジェクトからのデータを使用する度に、および／または、そのようなストリーム内の次のデータオブジェクトを形成する度に、特定の操作を繰り返して行なうことができる。ストリームが一方のプロセッサから他方のプロセッサへと送られ、これにより、第１のプロセッサによって形成されたストリームを第２のプロセッサ等により処理することができる。データを第１のプロセッサから第２のプロセッサへと送る１つの機構は、第１のプロセッサによって形成されたデータブロックをメモリ内に書き込むことによって成される。
【０００６】
ネットワーク内のデータストリームはバッファリングされる。各バッファは、たった１つのライターおよび１または複数のリーダを伴うＦＩＦＯとして実現される。このバッファリングにより、ライターおよびリーダは、個々の読み取り動作および書き込み動作をチャンネル上で互いに同期させる必要がなくなる。利用できるデータが不十分なチャンネルからの読み取りにより、読み取りタスクが行き詰まる。プロセッサは、単に低度にプログラム可能な専用のハードウェア機能ユニットであっても良い。全てのプロセッサは、並行に実行するとともに、それら自身の制御スレッドを実行する。同時に、これらのプロセッサは、各タスクが１つのプロセッサに対してマッピングされるＫａｈｎ型アプリケーションを実行する。プロセッサはマルチタスクを可能にする。すなわち、複数のＫａｈｎタスクを１つのプロセッサ上にマッピングすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明の目的は、Ｋａｈｎ型データ処理システムの動作を向上させることである。
【課題を解決するための手段】
【０００８】
この目的は、請求項１に係るデータ処理システムおよび、請求項２４に係るデータ処理方法によって解決される。
【０００９】
本発明は、データ処理システムにおいて、各プロセッサ毎に通信手段を導入することにより、通信ハードウェア、例えばバスおよびメモリと、演算ハードウェア、例えばプロセッサとを効果的に分離するという考えに基づいている。このような分離を導入することにより、プロセッサは、通信手段が各プロセッサのための通信サポートを行なっている間、その特定の機能のタスクを行なうことに集中することができる。
【００１０】
したがって、データ処理システムには、演算層と、通信サポート層と、通信ネットワーク層とが設けられている。演算層は、データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを備えている。第１のプロセッサは、多くのデータオブジェクトを１つのストリームから第２のプロセッサへと送り、その後、第２のプロセッサは、データオブジェクトを処理することができる。通信ネットワーク層は、メモリと、第１のプロセッサおよび第２のプロセッサを前記メモリに接続するための通信ネットワークとを有している。通信サポート層は、演算層と通信ネットワーク層との間に設けられ、演算層の各第２のプロセッサ毎に１つの通信手段を備えている。第２のプロセッサのそれぞれの通信手段は、通信ネットワーク層内の通信ネットワークを介した第２のプロセッサとメモリとの間の通信を制御する。
【００１１】
第２のプロセッサのうちの１つと通信ネットワーク層との間の通信手段の導入は、通信実施態様およびメモリ実施態様の抽出を行なうことにより、明確に規定されたシステムレベル抽出層を与える。また、局所的な義務を伴う分散組織が実現されることにより、システムの拡張性が高まる。
【００１２】
本発明の更なる実施形態において、通信手段は、通信ネットワーク層のメモリからの関連する第２のプロセッサの読み取りおよびメモリ内への関連する第２のプロセッサの書き込みを可能にする読み取り／書き込みユニットと、関連する第２のプロセッサの読み取り／書き込みの同期をとり、および／または、メモリアクセスのプロセッサ間同期を行なう同期ユニットと、および／または、付加されたプロセッサに関連するタスクのスケジュールを組んで、第２のプロセッサによって扱われる一組のタスクを管理しおよび／またはタスク間通信チャンネルを管理するタスクスケジューリングユニットとを備えている。したがって、別個のユニットを設けることにより、通信手段によって、読み取り／書き込み、読み取り／書き込みの同期、タスク切換えを独立に制御することができ、大きな自由度をもって異なるアプリケーションを実施することができる。
【００１３】
本発明の更なる実施形態において、通信ユニットは、複数の流入ストリームおよび流出ストリームを扱うことができ、および／または、タスク毎に複数のストリームを扱うことができる。これは、更なる処理のために、第２のプロセッサによって処理される１つのタスクによって形成されるデータストリームを幾つかの他のタスクへと転送でき、あるいは、その逆を行なうことができるというポジティブな効果をもたらす。
【００１４】
本発明の他の実施形態において、通信手段は、同じ機能を実施して、付加されたプロセッサとは関係なく、付加された第２のプロセッサとメモリとの間の通信を制御することができる。したがって、主に、第２のプロセッサの構成の強い影響を避ける通信手段によって実施されるその特定の機能に関して、通信手段の設計を最適化することができる。
【００１５】
本発明の更なる実施形態において、第２のプロセッサとこれらに関連する通信手段との間の通信がマスター／スレーブ通信であり、第２のプロセッサがマスターとして機能する。
【００１６】
本発明の更なる実施形態において、通信サポート層の通信手段は、関連する第２のプロセッサへと向かう適合可能な第１のタスクレベルインタフェースと、通信ネットワークおよびメモリへと向かう第２のシステムレベルインタフェースとを備えている。この場合、第１および第２のインタフェースは、同時に或いは非同時に動作する。適合可能な第１のタスクレベルインタフェースを設けると、システムアーキテクチャ全体で通信手段を簡単に再利用できるとともに、特定の第２のプロセッサのための特定のアプリケーションにおける選定およびパラメータ化が可能になる。
【００１７】
本発明の更なる実施形態において、第２のプロセッサのうちの少なくとも１つのプロセッサがプログラム可能であり、第２のプロセッサのうちの少なくとも１つのプロセッサの通信手段の第１のタスクレベルインタフェースが少なくとも部分的にプログラム可能であり、通信手段の機能の一部がプログラム可能である。
【００１８】
また、本発明は、データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを備え、データオブジェクトをデータオブジェクトのストリームから第２のプロセッサへと送るために第１のプロセッサが設けられ、データオブジェクトを記憶して検索するための少なくとも１つのメモリと、各第２のプロセッサ毎に設けられた１つの通信手段とを備えたデータ処理システムでデータを処理する方法であって、第１および前記第２のプロセッサへの共有アクセスが与えられる方法において、第２のプロセッサのそれぞれの通信手段が、第２のプロセッサとメモリとの間の通信を制御するステップを含んでいる方法に関する。
【００１９】
更に、本発明は、データオブジェクトのストリームを処理するための第１のプロセッサと少なくとも１つの第２のプロセッサとを有する演算層であって、データオブジェクトをデータオブジェクトのストリームから第２のプロセッサへと送るために第１のプロセッサが設けられている演算層と、通信ネットワークとメモリとを有する通信ネットワーク層と、演算層と通信ネットワーク層との間に設けられた通信サポート層とを備えたデータ処理システムの通信手段に関する。通信手段は、第２のプロセッサと通信ネットワークとの間で動作可能に実施されるようになっており、第２のプロセッサに関連付けられるとともに、通信ネットワーク層の通信ネットワークを介した第２のプロセッサとメモリとの間の通信を制御する。
【００２０】
本発明の更なる実施形態は、従属請求項に記載されている。
【００２１】
図面を参照しながら、本発明のこれらの態様および他の態様について詳細に説明する。
【発明を実施するための最良の形態】
【００２２】
図２は、データオブジェクトのストリームを処理するための本発明の好ましい実施形態に係る処理システムを示している。このシステムは、異なる層、すなわち、演算層１と、通信サポート層２と、通信ネットワーク層３とに分割することができる。演算層１は、ＣＰＵ１１と、２つのプロセッサ１２ａ、１２ｂとを有している。これは、単なる一例であり、これ以上の数のプロセッサがシステム中に含まれていても良いことは言うまでもない。通信サポート層２は、ＣＰＵ１１に対応付けられたシェル２１と、プロセッサ１２ａ、１２ｂに対応付けられたシェル２２ａ、２２ｂとをそれぞれ備えている。通信ネットワーク層３は、通信ネットワーク３１とメモリ３２とを備えている。
【００２３】
プロセッサ１２ａ、１２ｂは、それぞれが限られた範囲のストリーム処理を行なうように専門化された専用のプロセッサであることが好ましい。各プロセッサは、ストリームの連続するデータオブジェクトに対して同じ処理操作を繰り返して適用するべく設けられている。プロセッサ１２ａ、１２ｂはそれぞれ、異なるタスクまたは機能、例えば可変長デコーディング、ランレングスデコーディング、動き補償、画像スケーリングを実行しても良く、あるいは、ＤＣＴ変換を実行しても良い。各プロセッサ１２ａ、１２ｂは、動作時、１または複数のデータストリーム上で操作を実行する。操作は、例えば、ストリームの受信、他のストリームの形成、または、新たなストリームを形成することなくストリームを受信すること、あるいは、ストリームを受信することなくストリームを形成すること、または、受信したストリームを変更すること、を含んでいても良い。プロセッサ１２ａ、１２ｂは、他のプロセッサ１２ｂ、１２ａまたはＣＰＵ１１によって形成されたデータストリームを処理することができ、あるいは、それ自身で形成したストリームであっても処理することができる。ストリームは、メモリ３２を介してプロセッサ１２ａ、１２ｂ間で転送される一連のデータオブジェクトを含んでいる。
【００２４】
シェル２２ａ、２２ｂは、通信層である通信ネットワーク層へと向かう第１のインタフェースを備えている。この層は、全てのシェルにおいて一様であり、すなわち包括的である。また、シェル２２ａ、２２ｂは、シェル２２ａ、２２ｂがそれぞれ対応付けられたプロセッサ１２ａ、１２ｂへと向かう第２のインタフェースを備えている。第２のインタフェースは、タスクレベルインタフェースであり、プロセッサ１２ａ、１２ｂの特定の要求を扱うことができるように、対応するプロセッサ１２ａ、１２ｂに向けてカスタマイズされる。したがって、シェル２２ａ、２２ｂは、プロセッサ固有のインタフェースを第２のインタフェースとして有しているが、シェルの全体のアーキテクチャは、全てのプロセッサにおいて包括的であり且つ一様である。これにより、システムアーキテクチャ全体においてシェルの再利用が容易になるとともに、特定のアプリケーションにおける選定およびパラメータ化が可能になる。
【００２５】
シェル２２ａ、２２ｂは、データ伝送用の読み取り／書き込みユニットと、同期ユニットと、タスク切換えユニットとを備えている。これらの３つのユニットは、マスター／スレーブを基本として、関連するプロセッサと通信を行なう。この場合、プロセッサがマスターとして機能する。したがって、３つの各ユニットは、プロセッサからの要求によって初期化される。プロセッサと３つのユニットとの間の通信は、引数値を渡し且つ要求された値を待って戻すために、要求−応答ハンドシェイク機構によって行なわれることが好ましい。したがって、通信はブロック化しており、すなわち、制御の各スレッドはその終了を待つ。
【００２６】
読み取り／書き込みユニットは、２つの異なる操作、すなわち、プロセッサ１２ａ、１２ｂがメモリからデータオブジェクトを読み取ることができるようにする読み取り操作と、プロセッサ１２ａ、１２ｂがメモリにデータオブジェクトを書き込むことができるようにする書き込み操作とを実行することが好ましい。各タスクは、データストリームのための添付ポイントに対応する所定の一組のポートを有している。これらの操作における引数は、ポート「ｐｏｒｔ＿ｉｄ」、読み取り／書き込みが行なわれるべきオフセット「ｏｆｆｓｅｔ」、データオブジェクトの可変長「ｎ＿ｂｙｔｅｓ」のそれぞれのＩＤである。ポートは、「ｐｏｒｔ＿ｉｄ」引数によって選択される。この引数は、現在のタスクだけのための局所範囲を有する負でない小さい数である。
【００２７】
同期ユニットは、空のＦＩＦＯからの読み取り時または満杯のＦＩＦＯへの書き込み時の局部的なブロック化状態を取り扱うために同期する２つの操作を実行する。第１の操作、すなわち、ゲットスペース操作は、ＦＩＦＯとして実行されるメモリ内のスペースを要求することであり、第２の操作、すなわち、プットスペース操作は、ＦＩＦＯ内のスペースを解放するための要求である。これらの操作の引数は、「ｐｏｒｔ＿ｉｄ」および「ｎ＿ｂｙｔｅｓ」可変長である。
【００２８】
ゲットスペース操作およびプットスペース操作は、線形テープまたは同期化のＦＩＦＯ命令上で行なわれる。一方、操作によって取得されたウインドウの内側では、ランダムアクセス読み取り／書き込き動作がサポートされる。
【００２９】
タスク切換えユニットは、ゲットタスク操作として、プロセッサのタスク切換えを実行する。これらの操作における引数は、「ｂｌｏｃｋｅｄ」、「ｅｒｒｏｒ」、「ｔａｓｋ＿ｉｎｆｏ」である。
【００３０】
引数「ｂｌｏｃｋｅｄ」は、入力ポートまたは出力ポートでのゲットスペース呼び出しが「偽（フォールス）」を戻したために、最後の処理ステップをうまく終了できなかった場合に、「真（トゥルー）」に設定されるブール値である。したがって、タスクスケジューリングユニットは、ブロックされたポートにおいて新たな「ｓｐａｃｅ」メッセージが到達しなければこのタスクのスケジュールを組み直さない方が良いことを直ちに知らされる。この引数値は、スケジューリングの向上をもたらす唯一のアドバイスになると考えられるが、決して機能性に影響を与えるものではない。引数「ｅｒｒｏｒ」は、最後の処理ステップ中に致命的なエラーがコプロセッサ内で生じた場合に「真」に設定されるブール値である。ＭＰＥＧデコードからの例は、例えば、未知の可変長コードまたは不正なモーションベクトルの出現である。もしそうであれば、シェルは、タスクテーブルイネーブルフラグをクリアして、更なるスケジューリングを防止するとともに、システム状態を修復するためにメインＣＰＵに対して割込みが送られる。ＣＰＵがソフトウェアを通じてやりとりするまで、現在のタスクのスケジュールを組むことは全くない。
【００３１】
前述した操作は、プロセッサからの読み取り呼び出し(read calls)、書き込み呼び出し(write calls)、ゲットスペース呼び出し(getspace calls)、プットスペース呼び出し(putspace calls)、あるいは、ゲットタスク呼び出し(gettask calls)によって開始される。
【００３２】
図３は、読み取り処理、書き込み処理、および、その対応する同期操作の説明図を示している。プロセッサの観点からは、データストリームは、現在のアクセスポイントを有するデータの無限のテープのように見える。プロセッサから発行されるゲットスペース呼び出しは、図３ａに小さい矢印で示されるように、現在のアクセスポイントよりも前の特定のデータスペースへのアクセスのための許可を求める。この許可が認められると、プロセッサは、要求されたスペース内すなわち図３ｂの枠で囲まれたウインドウ内で、ｎ＿ｂｙｔｅｓ引数によって示される可変長データおよびｏｆｆｓｅｔ引数によって示されるランダムアクセス位置を使用して、読み取りおよび書き込み作業を行なうことができる。
【００３３】
許可が認められない場合、読み出しは、「偽」を戻す。１または複数のゲットスペース読み出し  −及び随意的に、幾つかの読み取り／書き込み作業  −この後、プロセッサは、処理すなわちデータスペースのある部分で終了するか否かを決定し、プットスペース呼び出しを発行することができる。この呼び出しは、アクセスポイントを、所定のバイト数だけ、すなわち、図３ｄのｎ＿ｂｙｔｅｓ２だけ、先に進める。この場合、サイズは、前回認められたスペースに制約される。
【００３４】
図４は、循環ＦＩＦＯメモリを示している。データストリームを通信するには、好ましくは限られた一定のサイズを有しているＦＩＦＯバッファが必要である。好ましくは、ＦＩＦＯバッファが予めメモリ内に割り当てられ、ＦＩＦＯがリニアなメモリアドレス範囲（アドレスレンジ）で適切に作動するように、循環アドレッシング機構が適用される。
【００３５】
図４の中心の回転矢印５０は、プロセッサからのゲットスペース呼び出しが、読み取り／書き込みのために認められたウインドウを確認する方向を示している。この方向は、プットスペース呼び出しがアクセスポイントを前方に移動させる方向と同じ方向である。小さな矢印５１、５２は、タスクＡ、Ｂの現在のアクセスポイントを示している。この例において、Ａは、ライターであり、したがって、適当なデータを後に残す。これに対し、Ｂは、リーダであり、空きスペース（または、無意味ながらくた）を後に残す。各アクセスポイントの前方にある斜線領域（Ａ１、Ｂ１）は、ゲットスペース操作によって取得されたアクセスウインドウを示している。
【００３６】
タスクＡ、Ｂは、異なる速度で進んでも良く、および／または、マルチタスクに起因して、ある時間の間だけサービスされなくても良い。シェル２２ａ、２２ｂは、Ａ、Ｂが実行されているプロセッサ１２ａ、１２ｂに対し、Ａ、Ｂのアクセスポイントがその各々の順序付けを維持し得るような情報、更に厳密には、認められたアクセスウインドウが決して重なり合わないようにする情報を提供する。シェル２２ａ、２２ｂによって提供された情報を使用して、全体的な機能が正確になされるようにすることは、プロセッサ１２ａ、１２ｂの役割である。例えば、シェル２２ａ、２２ｂは、時として、例えばバッファ内で利用できるスペースが不足していることに起因するプロセッサ「偽」からのゲットスペース要求に応答しても良い。この場合、プロセッサは、拒絶されたアクセス要求に基づいて、バッファへのアクセスを止めなければならない。
【００３７】
シェル２２ａ、２２ｂは、それぞれが関連するプロセッサ１２ａ、１２ｂに近接して実行され得るように分配される。各シェルは、そのプロセッサ上にマッピングされたタスクと共に入り込むストリームのためのコンフィギュレーションデータを局所的に含んでいるとともに、全ての制御論理を局所的に実行して、このデータを適切に取り扱う。したがって、各ストリーム毎すなわち各アクセスポイント毎にフィールドの列を含む局所ストリームテーブルがシェル２２ａ、２２ｂで実行される。
【００３８】
図４の配置を取り扱うため、タスクＡ、Ｂのそれぞれのプロセッサシェル２２ａ、２２ｂのストリームテーブルは、それ自身のアクセスポイントからこのバッファ内の他のアクセスポイントへの（おそらく、ペシミスティックな）距離と、このバッファ内の他のアクセスポイトのポートおよびタスクと共に遠隔シェルを示すＩＤとを含む「ｓｐａｃｅ」フィールドを保持するそのようなラインの１つを含んでいる。また、局所ストリームテーブルは、前述のアドレスインクリメントをサポートするために、現在のアクセスポイントに対応するメモリアドレスと、バッファベースアドレスおよびバッファサイズのためのコーディングとを含んでいても良い。
【００３９】
これらのストリームテーブルは、各シェル２２内のレジスタファイルのような、小さな複数のメモリ中にマッピングされたメモリであることが好ましい。したがって、ゲットスペース呼び出しは、要求されたサイズと局所的に記憶された利用可能なスペースとを比較することにより、直ちに且つ局所的に応答され得る。プットスペース呼び出し時、この局所スペースフィールドが、指示された大きさだけ減少されるとともに、前回のアクセスポイントを保持してそのスペース値を増加する他のシェルに対して、プットスペースメッセージが送信される。それに伴って、遠隔ソースからのそのようなプットメッセージの受信時、シェル２２は、局所フィールドを増加させる。シェル間でのメッセージの送信には時間がかかるため、両方のスペースフィールドが全体のバッファサイズまで合計する必要はないがペシミスティックな値を一時的に含んでいても良い場合も生じ得る。しかしながら、これは、同期化の安全性を妨害しない。例外的な状況下では、複数のメッセージが現在のところ送信先への途中にあり、それらのメッセージが不適切にサービスされるが、その場合であっても、同期化が正確さを保っているような場合も起こり得る。
【００４０】
図５は、各シェルで局所スペース値を更新し且つ「プットスペース」メッセージを送信する機構を示している。この構成において、プロセッサ１２ａ、１２ｂからのゲットスペース要求、すなわち、ゲットスペース呼び出しは、要求されたサイズと局所的に記憶されたスペース情報とを比較することにより、対応するシェル２２ａ、２２ｂ内で直ちに且つ局所的に応答され得る。プットスペース呼び出し時、局所シェル２２ａ、２２ｂは、指示された大きさだけそのスペースフィールドを減少させるとともに、プットスペースメッセージを遠隔シェルに対して送る。遠隔シェル、すなわち、他のプロセッサのシェルは、他のアクセスポイントを保持するとともに、そこでスペース値を増加させる。それに伴って、局所シェルは、そのようなプットスペースメッセージを遠隔ソースから受信する時に、そのスペースフィールドを増加させる。
【００４１】
アクセスポイントに属するスペースフィールドは、２つのソースによって変更される。すなわち、スペースフィールドは、局所的なプットスペース呼び出し時に減少し、プットスペースメッセージ受信時に増加する。そのような増加または減少が原子動作として実行されない場合には、それにより、誤った結果がもたらされる可能性がある。そのような場合には、別個の局所スペースフィールドおよび遠隔スペースフィールドが使用されても良い。この場合、これらの各スペースフィールドは、１つのソースだけによって更新される。これらの値は、局所的なゲットスペース呼び出し時に差し引きされる。シェル２２は、常に、それ自身の局所テーブルの更新を管理するとともに、これらを原子的な方法で行なう。これは、明らかに、その外的な機能性に現われない単なるシェルの実行の問題である。
【００４２】
ゲットスペース呼び出しが「偽」を戻す場合には、プロセッサは、対応方法を自由に決定する。可能性としては、ａ）プロセッサは、より小さなｎ＿ｂｙｔｅｓ引数を用いてゲットスペース呼び出しを発行しても良く、ｂ）プロセッサは、一瞬待った後、再び試みても良く、ｃ）プロセッサは、現在のタスクを中止し、このプロセッサの他のタスクが進行できるようにしても良い。
【００４３】
これにより、タスク切換えの決定を、より多くのデータの期待到達時間と、内部累積状態および対応する状態節約コストの大きさとに依存させることができる。プログラム不可能な専用のハードウェアプロセッサの場合、この決定は、アーキテクチャ設計プロセスの一部である。
【００４４】
シェル２２の実行および操作は、読み取りポートと書き込みポートとの間に違いを生じさせないが、特定の具体化によってこれらの違いが生じる場合がある。シェル２２によって実行される操作は、ＦＩＦＯバッファのサイズ、メモリ内でのその位置、メモリバウンド循環ＦＩＦＯにおけるアドレス上の任意のラップアラウンド機構、キャッシュ方法、キャッシュコヒーレンス、グローバルＩ／Ｏアライメント規制、データバス幅、メモリアライメント規制、通信ネットワーク構造、メモリ編成等の実行態様を効果的に隠す。
【００４５】
シェル２２ａ、２２ｂは、未フォーマットの一連のバイトで操作する。ライターによって使用される同期パケットサイズと、データのストリームを通信するリーダとの間で任意の相関をとる必要はない。データ内容の意味解釈は、プロセッサに委ねられる。タスクは、それが他のタスクのいずれに対して通信しているか、また、これらのタスクがいずれのプロセッサ上にマッピングされているのかといったようなアプリケーショングラフ発生構造を認識していない。
【００４６】
シェル２２の高性能な実行において、読み取り呼び出し、書き込み呼び出し、ゲットスペース呼び出し、プットスペース呼び出しは、シェル２２ａ、２２ｂの読み取り／書き込みユニットおよび同期ユニットにより、同時に発行されても良い。シェル２２の異なるポートに作用する呼び出しは、互いの順序付けに関する制約を全く有しておらず、一方、シェル２２の同じポートに作用する呼び出しは、呼び出し側タスクまたはプロセッサにしたがって順序付けられなければならない。そのような場合、ソフトウェアの実行においてはファンクションコールから戻すことにより、また、ハードウェアの実行においては、承認信号を与えることにより、前回の呼び出しが戻った時に、プロセッサからの次の呼び出しを開始することができる。
【００４７】
読み取り呼び出しにおけるサイズ引数(size argument)すなわちｎ＿ｂｙｔｅｓのゼロ値は、メモリからシェルキャッシュへのデータの先取りを行なうため、ｐｏｒｔ＿ＩＤ−およびｏｆｆｓｅｔ−引数によって示される記憶場所に蓄えることができる。そのような操作は、シェルによって行なわれる自動先取りのために使用できる。同様に、書き込み呼び出しにおけるゼロ値は、自動キャッシュフラッシュ要求のために蓄えることができるが、自動キャッシュフラッシングは、シェルの責務である。
【００４８】
随意的に、５つの全ての操作は、付加的な最後のｔａｓｋ＿ＩＤ引数を受け入れる。これは、通常、先のゲットタスク呼び出しからの結果値として得られる小さい正の数である。この引数におけるゼロ値は、タスク固有ではないがプロセッサ制御に関連する呼び出しのために蓄えられる。
【００４９】
好ましい実施形態において、データストリームを通信するためのセットアップは、１つのライターおよび１つのリーダが限られたサイズのＦＩＦＯバッファに接続されるストリームである。そのようなストリームは、限られた一定のサイズを有するＦＩＦＯバッファを必要とする。このＦＩＦＯバッファは、メモリ内に予め割り当てられており、そのリニアなアドレスレンジでＦＩＦＯが適切に作動するように、循環アドレッシング機構が適用される。
【００５０】
しかしながら、図２および図６に基づく更なる実施形態において、１つのタスクによって形成されるデータストリームは、異なる入力ポートを有する２つ以上の異なる消費者によって消費される。そのような状況は、タームフォーキングによって説明することができる。しかしながら、我々は、マルチタスクハードウェアプロセッサおよびＣＰＵ上で実行するソフトウェアタスクの両方において、タスクの実施を再利用したい。これは、その基本的な機能に対応して所定数のポートを有するタスクによって実施され、アプリケーション構成によって生じるフォーキングのその任意の必要性は、シェルによって決定される。
【００５１】
ストリームフォーキングは、２つの別個の正常なストリームバッファを維持することにより、また、全ての書き込み操作およびプットスペース操作を２倍にすることにより、また、２倍にされたゲットスペースチェックの結果値に関してＡＮＤ−演算を行なうことにより、シェル２２により明らかに実施することができる。これは、２倍の書き込み帯域幅とおそらく更に多くのバッファスペースとをコストが含んでいるため、実施されないことが好ましい。その代わり、２つ以上のリーダおよび１つのライターが同じＦＩＦＯバッファを共有するような実施を行なうことが好ましい。
【００５２】
図６は、１つのライターおよび複数のリーダを伴うＦＩＦＯバッファの例図を示している。同期機構は、ＡとＣとの間の一対の賢明な順序付けの次に、ＡとＢとの間で正常な一対の賢明な順序付けを確保しなければならない。しかしながら、この場合、ＢおよびＣは、例えばこれらが純粋なリーダであるとすると、互いの制約を有していない。これは、利用可能なスペースのトラックを各リーダ毎に個別に維持する（ＡからＢ、ＡからＣ）ことによって書き込み操作を行なうプロセッサに関連付けられたシェルで行なわれる。ライターが局所的なゲットスペース呼び出しを行なうと、そのｎ＿ｂｙｔｅｓ引数は、これらのスペース値のそれぞれと比較される。これは、次のラインへの変更を示すために１つの余分なフィールドまたは列によって接続されるフォーキング(forking)のため前記ストリームテーブルの余分なラインを使用することによって実施される。
【００５３】
これにより、フォーキングが使用されない場合の大部分において、オーバーヘッドが非常に僅かになるとともに、２方向へのフォーキングだけが制限されない。フォーキングがライターによってのみ実施され、リーダがこの状況を認識しないことが好ましい。
【００５４】
図２および図７に基づく更なる実施形態において、データストリームは、テープモデルにしたがって３つのステーションストリームとして実現される。各ステーションは、通過するデータストリームの幾つかの更新を行なう。３つのステーションストリームの１つの適用例は、１つがライターであり、中間がウォッチドッグであり、最後がリーダである。そのような例において、第２のタスクは、データが殆ど変更無く通過できるようにしつつ、通過するデータを見て、おそらく、その幾つかを検査することが好ましい。比較的稀に、ストリーム中の幾つかの項目を変更することを決定することができる。これは、プロセッサによる配置済みバッファ更新によって効果的に行なうことができ、これにより、一方のバッファから他方のバッファへとストリーム内容全体をコピーすることを避けることができる。実際には、これは、ハードウェアプロセッサ１２が通信を行なうとともに、僅かに異なるストリームフォーマットへと適応するように、あるいは、デバッギングのため、ストリームを修正してハードウェアの欠陥を補正するためにメインＣＰＵ１１が介入する場合に有用となる場合がある。そのようなセットアップは、メモリのトラフィックおよびプロセッサの負担を減らすために、メモリ中の１つのストリームバッファを共有する３つの全てのプロセッサを用いて達成することができる。タスクＢは、実際には、フルデータストリームを読み取ったり或いは書き込んだりしない。
【００５５】
図７は、３つのステーションストリームのための限られたメモリバッファの実施例を示している。この三方バッファの適切な意味論は、Ａ、Ｂ、Ｃの互いの厳格な順序付けを維持し且つウインドウを重なり合わせないことを含んでいる。このようにして、三方バッファは、図４に示される二方バッファから拡張される。そのような多方循環ＦＩＦＯは、前述したシェルの操作により、また、好ましい実施形態で説明したプットスペースメッセージを用いた分散実施スタイルにより、直接にサポートされる。１つのＦＩＦＯにおいて、３つのステーションに制限はない。１つのステーションが有用なデータを消費し且つ生成するインプレース処置は、たった２つのステーションを用いて適用できる。この場合、両方のタスクがインプレース処理を行なって互いにデータを交換し、バッファ内に空きスペースは残らない。
【００５６】
図２に基づく更なる実施形態においては、バッファへの１つのアクセスについて説明する。そのような１つのアクセスバッファは、たった１つのポートを備えている。この例において、タスク間またはプロセッサ間でのデータ交換は行なわれない。その代わり、局所的に使用するためのシェルの標準的な通信操作が単に適用される。シェルのセットアップは、１つのアクセスポイントが付加された標準的なバッファメモリから成る。ここで、タスクは、ローカルスクラッチパッドまたはキャッシュとしてバッファを使用することができる。アーキテクチャの観点から、これは、幾つかの目的のための大きなメモリとタスクとを組み合わせて使用できるなどといった利点、例えば、ソフトウェア構造化可能なメモリサイズを使用できるといった利点を有することができる。スクラッチパッドとしての使用以外に、このセットアップのタスク固有のアルゴリズムに役立つメモリは、マルチタスクプロセッサでのタスク状態を記憶して検索するために適用できる。この場合、状態スワッピングのための読み取り／書き込み操作を行なうことは、タスク機能コードそれ自体の一部ではないが、プロセッサ制御コードの一部である。バッファは他のタスクと通信するために使用されないため、通常、このバッファでプットスペース操作およびゲットスペース操作を行なう必要はない。
【００５７】
図２および図８に基づく更なる実施形態において、好ましい実施形態に係るシェル２２は、データ伝送、すなわち、プロセッサ１２と通信ネットワーク３１とメモリ３２との間での読み取り操作および書き込み操作のためのデータキャッシュを更に備えている。シェル２２内でデータキャッシュを実施することにより、データバス幅のトランスペアレントな変換を行なうことができ、また、グローバルな相互接続すなわち通信ネットワーク３１でのアライメント制限の解決、グローバルな相互接続におけるＩ／Ｏ操作の数の減少を図ることができる。
【００５８】
シェル２２は、読み取り・書き込みインタフェースにキャッシュを備えていることが好ましいが、これらのキャッシュは、アプリケーション機能の観点からは分からない。ここで、プットスペース操作およびゲットスペース操作の使用のメカニズムは、キャッシュコヒーレンスを明確に制御するために使用される。キャッシュは、プロセッサ読み取り・書き込みポートを通信ネットワーク３のグローバルな相互接続から切り離す際に重要な役割を担っている。これらのキャッシュは、速度、出力、領域に関するシステム性能に対して重大な影響を及ぼす。
【００５９】
タスクポートに認められるストリームデータのアクセスウインドウは、秘密に保たれる。その結果、この領域での読み取り・書き込み操作が保存され、第１の側では、この操作は、中間のプロセッサ間通信を必要としない。アクセスウインドウは、循環ＦＩＦＯ内の前任者から新たな記憶空間を得るローカルゲットスペース要求により拡張される。そのような拡張に対応するために、キャッシュのある部分にタグが付けられる場合には、キャッシュのそのような部分以外の拡張が無効を必要とするという点で、データ読み取り時にタスクが挿入されても良い。その後、読み取り操作がこの場所で起こると、キャッシュミスが生じ、新しい有効なデータがキャッシュ内にロードされる。精巧なシェルの実施形態では、ゲットスペースを使用して、先取り要求を発し、キャッシュミスによる不利益を減らすことができる。アクセスウインドウは、循環ＦＩＦＯ内の後継者に新たな記憶空間を残すローカルプットスペース要求によって縮小される。そのような縮小の特定の部分がたまたまキャッシュ内にあって、その部分が書き込まれると、すなわち、この部分が汚れて役に立たないと、キャッシュのそのような部分は、ローカルデータを他のプロセッサに利用可能にするために一気に消去される。キャッシュ消去が完了し且つメモリ操作の安全な順序付けを確保できるまで、他のプロセッサに対するプットスペースメッセージの送出が先送りにされる。
【００６０】
大きなシステムアーキテクチャでの実施において、ローカルゲットスペースイベントおよびプットスペースイベントだけを使用して、キャッシュコヒーレンスを明確に制御することは、バススヌーピング等の他の一般のキャッシュコヒーレンス機構と比較して、比較的簡単である。また、それは、例えばキャッシュライトスルーアーキテクチャのように通信オーバーヘッドを与えない。
【００６１】
ゲットスペース操作およびプットスペース操作は、バイト粒度を操作するために規定される。キャッシュの主な役割は、プロセッサにおけるデータ転送アライメント制限およびグローバルな相互接続データ転送サイズを隠すことである。データ転送サイズは、前記アライメントで１６バイトに設定されることが好ましい。これに対し、２バイト程度の僅かな同期データ量が積極的に使用されても良い。したがって、異なるプロセッサのキャッシュ内に同じメモリワードまたは転送単位を同時に記憶することができ、各キャッシュ内においてバイト粒度(granularity)で無効な情報が扱われる。
【００６２】
図８は、３つの異なる状況におけるキャッシュ内データの有効性の読み取りおよび管理を示している。この図において、各状況は、読み取り要求が空きキャッシュで起きることによりキャッシュミスが生じることを前提としている。図８ａは、認められたウインドウ８１０内に完全に含まれるメモリ転送単位８００すなわちワードのフェッチを引き起こす読み取り要求を示している。このワード全体は、メモリ内で明らかに有効であり、有効（無効）測定は必要とされない。
【００６３】
図８ｂにおいて、フェッチされたワード８０１は、プロセッサによって取得されたスペース８１１を部分的に超えて延びているが、利用可能であるとしてシェル内で局所的に管理されているスペース内にとどまっている。ゲットスペース引数だけが使用される場合、このワードは、部分的に公然と無効になり、ゲットスペースウインドウが拡張されると、再読み取りされる必要がある。しかしながら、利用可能なスペースの実際の値がチェックされると、ワード全体を有効としてマークすることができる。
【００６４】
図８ｃにおいて、フェッチされたワード８０２は、保存されることが知られていないスペース８２０内へと部分的に延びているとともに、幾つかの他のプロセッサによって書き込まれるようになる。ここで、ワードのこの領域がキャッシュにロードされる際には、この領域を無効として必ずマークしなければならない。ワードのこの部分がその後にアクセスされる場合には、一般に未知の部分もこのワードにおいて現在のアクセスポイントの左側で延びている可能性があるため、ワードを再読み取りする必要がある。
【００６５】
また、１つの読み取り要求は、２つの連続するワード間の境界を横切るため、あるいは、プロセッサの読み取りインタフェースがメモリワードよりも幅広いため、複数のメモリワードをカバーし得る。図８は、要求されたバッファスペースに比べて比較的大きいメモリワードを示している。実際に、要求されたウインドウは、多くの場合、非常に大きいが、極端な場合には、循環通信バッファ全体も１つのメモリワード程度に小さくなり得る。
【００６６】
キャッシュコヒーレンス制御においては、ゲットスペースすなわち読み取り操作と無効（有効）マークとの間、および、プットスペースすなわち書き込み操作と汚れたマークおよびキャッシュフラッシュとの間に、厳密な関係がある。「Ｋａｈｎ」型において、ポートの適用は、入力または出力の専用の方向を有していた。幾つかの実施の問題を単純化する分離された読み取りキャッシュおよび書き込みキャッシュが使用されることが好ましい。多くのストリームに関して、プロセッサは、循環アドレス空間を通じてリニアに機能し、読み取りキャッシュが随意的に先取りをサポートし、書き込みキャッシュが随意的にプレフラッシングをサポートし、次のワードへの２つの読み取りアクセス移動内で、予期される今後の使用のために先のワードのキャッシュ場所を利用可能にすることができる。読み取りおよび書き込みデータ経路の別個の実施では、例えばパイプライン型プロセッサの実施形態において並行に生じるプロセッサからの読み取りおよび書き込み要求が更に簡単にサポートされる。
【００６７】
また、プロセッサは、バイト粒度でデータを書き込むとともに、キャッシュは、キャッシュ内のビット毎に汚れたビットを管理する。キャッシュフラッシュのプットスペース要求時、キャッシュからその共有メモリへのこれらのワードは、この要求によって示されるアドレスレンジと重なり合う。アクセスウインドウの外側のバイト位置にメモリが決して書き込まれないようにするため、バス書き込み要求において、書き込みマスクのため、汚れた(dirty)ビットが使用される。
【００６８】
図２に基づく他の実施形態において、シェル２２ａ内の同期ユニットは、他のシェル２２ｂ内の他の同期ユニットに接続される。同期ユニットにより、１つのプロセッサは、処理されたストリームにおける有効なデータがメモリの記憶場所に書き込まれる前に、この記憶場所にアクセスしない。同様に、プロセッサ１２ａがメモリ３２内の有用なデータを上書きしないように、同期インタフェースが使用される。同期ユニットは、同期メッセージネットワークを介して通信を行なう。これらのユニットは、同期信号が１つのプロセッサから次のプロセッサへと通り過ぎ或いはこれらの信号が任意の次のプロセッサで必要とされない場合にブロックされて上書きされるリングの一部を形成する。同時に、これらの同期ユニットは、同期チャンネルも形成する。同期ユニットは、データオブジェクトの１２ａからプロセッサ１２ｂへと転送するために使用される記憶空間についての情報を維持する。
【図面の簡単な説明】
【００６９】
【図１】従来技術に係るプロセッサに対するアプリケーションのマッピングを示す図である。
【図２】ストリームに基づく処理システムのアーキテクチャの概略ブロック図である。
【図３】図２のシステムの同期操作およびＩ／Ｏ操作を示す図である。
【図４】循環ＦＩＦＯメモリを示す図である。
【図５】図２に係る各シェルの局所スペース値を更新する機構を示す図である。
【図６】１つのライターおよび複数のリーダを伴うＦＩＦＯバッファを示す図である。
【図７】３つのステーションストリームにおける有限メモリバッファの実施態様を示す図である。
【図８】キャッシュ内の有効データ読み取って管理する図である。
【符号の説明】
【００７０】
１１  ＣＰＵ
１２ａ、１２ｂ  プロセッサ
２２ａ、２２ｂ  シェル
３１  通信ネットワーク
３２  メモリ
８００  メモリ転送単位
８０１、８０２  ワード
８１０  ウインドウ
８１１、８２０  スペース
【図１】
2005513610.tif 000003
【図２】
2005513610.tif 000004
【図３】
2005513610.tif 000005
【図４】
2005513610.tif 000006
【図５】
2005513610.tif 000007
【図６】
2005513610.tif 000008
【図７】
2005513610.tif 000009
【図８】
2005513610.tif 000010
2005513610.tif 000011
2005513610.tif 000012
【国際調査報告】
2005513610.tif 000013
2005513610.tif 000014
2005513610.tif 000015