(57)【要約】共有のメモリ（１０）を介して互いにデータストリームを通信する、複数のプロセッサ（１２ａ、１２ｂ、１２ｃ）を有するデータ処理システムが説明されている。各々のプロセッサは、管理ユニット（１８ａ）及び計算ユニット（１２ａ）を有する。データ処理システムは、データオブジェクトのストリームを通過するとき、プロセッサ（１２ａ−ｃ）を同期するためのプロセッサ同期手段（１８）を有する。この目的のため、プロセッサは、同期手段（１８）への同期命令（Ｃａ−ｃ）を発することができる。少なくともプロセッサの一つ（１２ａ）は、キャッシュメモリ（１８４ａ）を有し、同期手段（１８）は、同期命令（Ｃａ）に応じてキャッシュ動作（ＣＣａ）を開始する。
2005521124.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-475により紹介し、Kahn及びMacQueenにより１９７７年に”Co-routines and Networks of Parallel Programming”, Information Processing 77, B. Gilchhirst (Ed.), North-Holland publ., 1977, pp993-998で動作説明された。この正式なモデルは、Kahn Process Networkと一般に呼ばれている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
同時に実行できるタスクのセットとしてのアプリケーションが知られている。情報は、データの単一方向の流れによりタスク間で交換できるだけである。タスクは、既定のデータストリームに関する読取及び書き込みプロセスにより決定論的にのみ通信するべきである。データストリームは、ＦＩＦＯの振る舞いを基にしてバッファされる。バッファのおかげで、ストリームを通じての２つのタスクの通信は個別の読取及び書き込みプロセスで同期をとる必要はない。
【０００４】
ストリーム処理において、データのストリーム上での連続する動作は、異なるプロセッサにより実施される。例えば、第１のストリームはイメージのピクセル値からなってもよく、第１プロセッサによりピクセルの８ｘ８ブロックのＤＣＴ（離散余弦変換）係数のブロックの第２のストリームを作るために処理されてもよい。第２プロセッサは、ＤＣＴ係数の各ブロックに対して選択され圧縮された係数のブロックのストリームを作るためにＤＣＴ係数のブロックを処理する。
【０００５】
図１は、従来から既知のプロセッサにアプリケーションをマッピングした図を示す。データストリーム処理を実現するために、多くのプロセッサが提供され、各々は繰返し特定の動作を実施でき、毎回データオブジェクトのストリームからの次のデータオブジェクトからのデータを使用及び／又は斯様なストリームに次のデータオブジェクトを作っている。ストリームはあるプロセッサから次のプロセッサへ通り、第１プロセッサにより作られたストリームは第２プロセッサにより処理される、以下同様である。第１プロセッサから第２プロセッサへデータを通す一つの機構は、第１プロセッサにより作られたデータブロックをメモリに書き込むことである。
【０００６】
ネットワーク内のデータストリームはバッファされる。各バッファは、正確に一つの書き込み器及び一つ以上の読出し器を伴ってＦＩＦＯとして実現される。このバッファリングのため、これら書き込み器及び読出し器は、チャネル上で個別の読出し及び書き込み動作で相互に同期を取る必要はない。利用可能だが不充分なデータを持つチャネルからの読み出しは、読出しタスクを立ち往生させてしまう。コプロセッサは、プアなプログラム可能なだけであるハードウェア機能ユニットに専念できる。全てのコプロセッサはパラレルに走り、コントロールのこれら自身のスレッドを実行する。これらコプロセッサはKahnスタイルのアプリケーションを実行し、各タスクは単一のコプロセッサへマッピングされる。コプロセッサはマルチタスクを許容し、すなわちマルチのKahnタスクが単一のコプロセッサへマッピングできる。斯様なシステムにおけるプロセッサは、共通のメモリへ試みかけようとするプロセッサ間の衝突を低減するために、キャッシュを具備する。しかしながら、プロセッサにより共有されるメモリの内容とコヒーレントなキャッシュの内容を維持することは必要である。
【０００７】
キャッシュのコヒーレンス性を維持するための既知の方法は、バススヌーピング及びキャッシュライトスルーである。
【０００８】
第１の方法によると、各キャッシュは、メモリへの取り扱いを観察し、それに従って状態を更新する制御器を持つ。
【０００９】
前記キャッシュライトスルー方法によると、メモリの内容の各変更は、これらキャッシュ各々に報知される。
【００１０】
これら両方法は、大量のオーバヘッドを要求する。
【課題を解決するための手段】
【００１１】
したがって、本発明の目的は、Kahnスタイルのデータ処理システムの動作を改善することである。本発明によるデータ処理システムが請求項１に記載されている。本発明によるデータ処理システムにおいては、キャッシュのコヒーレンス性は、同期手段により維持される。キャッシュコヒーレンス性を維持するために、前記同期手段は、プロセッサにより発せられた同期命令に応じてキャッシュ動作を実施する。これは、キャッシュコヒーレンス性が同期メカニズムの側面的な効果として簡単に維持されるという利益を持つ。
【００１２】
前記同期手段は、種々の態様で実現される。これらは、中央同期プロセッサとして、例えばプログラムが走っているマイクロプロセッサの形式で又は専用ハードウェアの形式で実現できるだろう。さもなければ、同期プロセッサは、同期ユニットのセットとして実施され、それぞれの同期ユニットは各プロセッサに割当てられ、これら同期ユニットはトークンリング又はバスを介して互いに通信し合う。
【００１３】
請求項２の実施例によると、同期手段は読出しプロセッサの問い合わせに応じて無効動作を開始する。前記読出しプロセッサが、問い合わせを発する、すなわち書き込みプロセッサにより生成された新しいデータオブジェクトを読もうとしているメモリの部分へのアクセスを要求するならば、キャッシュメモリの対応する部分が前記メモリとまだコヒーレントでないということが、起こり得る。キャッシュ内の対応する部分を無効にすることは、ペシミスティックではあるが安全な動作である。
【００１４】
請求項３の実施例によると、同期手段は書き込みプロセッサのコミットに応じてフラッシュ動作を開始する。前記書き込みプロセッサがコミットを発するならば、読出しプロセッサにより他の処理のための多くのデータオブジェクトを開放する。このコミットの際に、フラッシュ動作を実行することにより、前記同期手段は、読出しプロセッサがデータオブジェクトの他の処理をしようとするときにメモリが書き込みプロセッサのキャッシュとコヒーレントであることを達成する。
【００１５】
請求項４の実施例によると、同期手段は、読出しプロセッサの問い合わせに応じて、プリフェッチ動作を開始する。前記読出しプロセッサの問い合わせは、メモリ内のデータオブジェクトを処理しようとすることを示す。前記プリフェッチ動作により、読出しプロセッサのキャッシュは、読出しプロセッサがそこからデータオブジェクトを本当に読み出し始める時に、既にコヒーレントである。
【００１６】
請求項５の実施例によると、同期手段は、書き込みプロセッサのコミットに応じて、読み出しプロセッサのキャッシュのプリフェッチ動作を開始する。この実施例は、新しいデータオブジェクトが利用可能になるとすぐ読み出しプロセッサのキャッシュのコヒーレンス性を整えるという利点を持つ。
【００１７】
本発明のこれら及び他の特徴は、図を参照して詳細に説明される。
【発明を実施するための最良の形態】
【００１８】
図２は、本発明による処理システムを示す。当該システムは、メモリ１０、複数のプロセッサ１１ａ、１１ｂ、１１ｃ及びアービタ１６を含む。各プロセッサ１１ａ、１１ｂ、１１ｃは、計算ユニット１２ａ、１２ｂ、１２ｃ及び管理ユニット１８ａ、１８ｂ、１８ｃを有する。これら３つのプロセッサ１１ａ、１１ｂ、１１ｃは例示として示されただけであり、実際にはいろんな数のプロセッサが用いられてよい。プロセッサ１１ａ、１１ｂ、１１ｃは、アドレスバス１４及びデータバス１３を介してメモリ１０へ接続されている。プロセッサ１１ａ、１１ｂ、１１ｃは、アービタ１６に接続され、トークンリングのような通信ネットワーク１９を介して互いに結合された管理ユニット１８ａ−ｃを有する同期チャネルを介して互いに接続されている。
【００１９】
好ましくは、プロセッサ１１ａ、１１ｂ、１１ｃは、ストリーム処理タスクの限られた範囲を効果的に実施するように各々特定化された専用プロセッサであろう。すなわち、各プロセッサは、データバス１３を介して受信した連続するデータオブジェクトへ繰返し同じ処理動作を付与する。プロセッサ１１ａ、１１ｂ、１１ｃは、可変長復号化、ランレングス復号化、動き補償、イメージスケーリング又はＤＣＴ変換を実施するような種々のタスク又は機能を各々実施してもよい。また、トライメディア(TriMedia)又はMIPSプロセッサのようなプログラム可能なプロセッサも含んでもよい。
【００２０】
動作時、各プロセッサ１１ａ、１１ｂ、１１ｃは、１つ又はそれ以上のデータストリームでの動作を実施する。動作は、例えばストリームを受信して他のストリームを生成したり、新しいストリームを生成することなくストリームを受信したり、ストリームを受信することなくストリームを生成したり、又は受信ストリームを変形することを含む。プロセッサ１１ａ、１１ｂ、１１ｃは、これらプロセッサの中の他のプロセッサにより生成されたデータストリーム、又は当該プロセッサ自身で生成したストリームをさえ処理できる。ストリームは、メモリ１０を介してプロセッサ１１ａ、１１ｂ、１１ｃから転送された又はプロセッサ１１ａ、１１ｂ、１１ｃへ転送されるデータオブジェクトの連続を有する。
【００２１】
データオブジェクトからのデータを読み出したり又は書き込むために、プロセッサ１１ａ、１１ｂ、１１ｃはストリームに割当てられたメモリ１０の一部をアクセスする。
【００２２】
図３は、読出し、書き込み及びこれらに関連した同期動作の処理を表したものである。コプロセッサの観点から、データストリームは、アクセスの現在のポイントを持つデータの無限のテープのように見える。コプロセッサ（計算ユニット）から発せられるｇｅｔｓｐａｃｅコールは、図３ａ内の小さな矢印により示されるようにアクセスの現在のポイントに先んじたあるデータスペースへのアクセスのための許可を求める。この許可が認められたら、コプロセッサは要求されたスペース、すなわち図３ｂのフレーム窓内の読出し動作及び書き込み動作を、n_bytes引数により示されるような可変長データを使用して、offset引数により示されるような任意のアクセス位置で実施できる。
【００２３】
許可が認められない場合、コールは失敗（false）をリターンする。１つ又はそれ以上のgetspaceがコールした後で、また時には幾つかの読出し／書き込み動作の後で、コプロセッサは、データスペースのいくらかの部分で処理が終了したかどうかを決定し、putspaceコールを発する。このコールはアクセスのポイントをある数のバイト、すなわち図３ｄではn_bytes2前に進め、当該サイズは以前に認められたスペース（スペース）により束縛される。
【００２４】
図４は、論理的に連続なアドレスを持つ一連のメモリ位置を含むメモリ１０の論理メモリスペース２０を示す。図５は、２つのプロセッサ１１ａと１１ｂとがメモリ１０を介してどのようにデータオブジェクトを交換するかを示す。メモリスペース２０は、異なるストリームに割当てられた副スペース２１、２２、２３を含む。例示として、低い境界アドレスＬＢと高い境界アドレスＨＢとにより境界付けられる副スペース２２が、図４に詳細に示されている。この副スペース２２では、セクションＡ２−Ａ１によっても示されたアドレスＡ２とアドレスＡ１との間のメモリ位置は、読出しプロセッサ１１ｂに利用可能な、有効なデータを含む。副スペースの高い境界ＨＢとアドレスＡ１との間のメモリ位置、同様にアドレスＡ２と副スペースの低い境界ＬＢとの間のメモリ位置は、セクションＡ１−Ａ２により示され、新しいデータを書き込むために書き込みプロセッサ１１ａに利用可能である。例示として、プロセッサ１１ｂは、プロセッサ１１ａにより生成されたストリームへ割当てられたメモリ位置に記憶されたデータオブジェクトをアクセスするとする。
【００２５】
上述の例では、ストリームのためのデータは、論理的に最高のアドレスＨＢに到達する度論理的に最低のアドレスＬＢで始まり、サイクリックに一連のメモリ位置に書き込まれる。このことが、低めの境界ＬＢと高めの境界ＨＢとが互いに隣接している図５のメモリ副スペースの周期的表示により示されている。
【００２６】
管理ユニット１８ｂは、処理されたストリームに対する有効なデータがメモリ位置２２へ書き込まれてしまう前に、プロセッサ１１ｂがメモリ位置２２にアクセスしないことを保証する。同様に、管理ユニット１８ａは、プロセッサ１１ａがメモリ１０の有益なデータを重ね書きしないことを保証するためにここでは使用される。図２に示される実施例では、管理ユニット１８ａ及び１８ｂは、リング１８ａ、ｂ、ｃの一部を形成し、ここにおいて同期信号がプロセッサ１１ａ−ｃの一つから次のプロセッサへ通されるか、これらの同期信号がどの次のプロセッサ１１ａ−ｃでも必要とされないときブロックされるか重ね書きされる。管理ユニット１８ａ、１８ｂ、１８ｃは一緒に同期チャネルを形成する。管理ユニット１８ａは、プロセッサ１１ａからプロセッサ１１ｂへのデータオブジェクトのストリームを転送するために用いられるメモリスペースについての情報を維持する。示された実施例では、管理ユニット１８ａは、プロセッサ１１ａにより書き込まれることができるセクションＡ１−Ａ２のアドレス範囲の始まりのＡ１を表す値Ａ１を記憶する。そのセクションのサイズを表す値Ｓ１も記憶する。しかしながら、前記アドレス範囲は、それらの境界により示されてもよく、又は上限境界Ａ２と値Ｓ１とにより示されてもよい。同様にして、管理ユニット１８ｂは、プロセッサ１１ｂに対して有効なデータを含むセクションＡ２−Ａ１の始まりＡ２を表す値Ａ２を記憶する。そのセクションのサイズを表す値Ｓ２も記憶する。プロセッサ１１ａがプロセッサ１１ｂに対するデータを生成し始めるとき、後のプロセッサ１１ｂに対して有効なデータはまだ利用可能ではないので、セクションＡ２−Ａ１のサイズＳ２はゼロに初期化されるべきである。プロセッサ１１ａがメモリ副スペース２２へのデータ書き込みを始める前に、第１命令Ｃ１（getspace）によりこのスペース内にセクションを要求する。この命令のパラメータは、クレームされているサイズｎである。複数のメモリ副スペースが利用可能ならば、副スペースを識別するためのパラメータも含む。副スペースは、この副スペースを介して転送されるストリームの識別子により識別されてもよい。クレームされたサイズｎがセクションに対して管理ユニット１８ａにより記憶されたサイズＳ１以下である限り、管理ユニット１８ａはこの要求を認める。このときプロセッサ１１ａは、アクセスを要求されたメモリ副スペースのセクションＡ１−Ａ２のサイズｎで部分Ａ１−Ａ２‘へデータオブジェクトを書くことができる。
【００２７】
要求された数ｎが示された数Ｓ１を超えてしまうならば、生成プロセッサ１１ａは示されたストリームの処理を中断する。このとき生成プロセッサ１１ａは生成中の他のストリームに対する処理を採用してもよいし、生成プロセッサ１１ａは、一緒に処理を休止してもよい。要求された数が示された数を超えたならば、生成プロセッサ１１ａは、後で再び新しいデータを持つメモリ位置の要求された数を示す命令を、生成プロセッサ１１ａが、要求された数が受信しているプロセッサ１１ａにより示された位置を越えない事象を検出するまで、実行するだろう。この事象の検出後、生成プロセッサ１１ａは処理を継続する。
【００２８】
同期をとるために、データストリームを生成する生成プロセッサ１１ａ−ｃは、データストリームの内容が有効になった後で、その位置のデータストリームの内容が有効になるメモリ１０内の位置の数の指標を送信する。この例では、プロセッサ１１ａがスペースｍを占有するデータオブジェクトを書き込んだならば、第２プロセッサ１１ｂにより他の処理に利用可能なデータオブジェクトを示す第２命令Ｃ２(putspace)を与える。この命令のパラメータｍは、開放されたメモリ副スペース２２内のセクションの対応するサイズを示す。他のパラメータがメモリ副スペースを示すために含まれてもよい。この命令を受信すると、管理ユニット１８ａは、利用可能なサイズＳ１をｍだけ減少し、アドレスＡ１をｍだけ増やす。
【数１】
2005521124.tif 000003
ここで、
2005521124.tif 000004
は加算モジュロＨＢ−ＬＢである。
【００２９】
管理ユニット１８ａは、更にメッセージＭをプロセッサ１１ｂの管理ユニット１８ｂへ送信する。このメッセージを受信すると、管理ユニット１８ｂはＡ２−Ａ１のサイズＳ２をｍだけ増やす。受信プロセッサ、ここでは１１ｂが新しいデータが必要とされるストリームの処理の段に到達するとき、新しいデータを持ったメモリ位置ｋの要求された数を示す命令Ｃ１（ｋ）を送信する。命令の後、受信プロセッサ１１ｂの計算ユニット１２ｂは、この要求された数が生成プロセッサ１１ａにより示された位置を越えて達しないことを管理ユニット１８ｂからの応答が示すならば、処理を継続する。
【００３０】
要求された数ｋが示された数Ｓ２を超えて到達するならば、受信プロセッサ１１ｂは、示されたストリームの処理を中断する。受信プロセッサ１１ｂは、処理している他のストリームの処理に取りかかるか、又は受信プロセッサは完全に処理を休止する。要求された数ｋが示された数Ｓ２を超えて到達する場合、要求された数ｋが生成プロセッサ１１ａにより示された位置Ａ１を超えて到達しない事象が受信プロセッサ１１ｂに記録されてしまうまで、受信プロセッサ１１ｂは、後で再び新しいデータを持つメモリ位置の要求された数を示す命令を実行するだろう。この事象を記録すると、受信プロセッサ１１ｂは、ストリーム処理を再び始める。
【００３１】
上述の例では、論理的に最高のアドレスＨＢに到達する度に論理的に最低のアドレスＬＢで始めて、ストリームに対するデータがサイクリックに一連のメモリ位置に書き込まれる。このことは、生成プロセッサ１１ａが受信プロセッサに追いつき、受信プロセッサによりまだ必要とされるデータを重ね書きする可能性を生じさせる。生成プロセッサ１１ａ−ｃが斯様なデータを重ね書きすることを防止することを所望するとき、受信プロセッサ１１ａ−ｃがメモリの位置からの内容を処理することを止めた後で、毎回もはや必要はないメモリ内のメモリ位置の数の指標を送信する。このことは、生成プロセッサ１１ａにより用いられる同じ命令Ｃ２(putdata)により実現できる。この命令は、もはや必要ではないメモリ位置ｍ‘の数を含む。加えて、ストリームの識別子、及び又は一つより多いストリームが処理されるならばメモリ副スペースを含む。この命令を受信すると、管理ユニット１８ｂはｍ’でサイズＳ２を減少させ、ｍ‘のメモリ副スペースのサイズに対するモジュロでアドレスＡ２を増大させる。管理ユニット１８ｂもまた、生成プロセッサ１１ａの管理ユニット１８ａへメッセージＭ’を送信する。このメッセージを受信すると、生成プロセッサ１１ａの管理ユニット１８ａはサイズＳ１を増大させる。
【００３２】
このことは、ストリームからのデータが、多数の種々のストリームに対して図４で示された現在の初期位置２４ａ−ｃまで重ね書きできることを意味する。指標が、生成プロセッサ１１ａ−ｃに記録される。生成プロセッサ１１ａ−ｃは、生成されたストリームからメモリ内の多くの新しい位置へデータを書き込むために必要である処理の段へ到達するとき、生成プロセッサ１１ａ−ｃは、新しいデータに対して必要とされるメモリ位置の要求される数を示す命令を実行する。命令の後、生成プロセッサ１１ａ−ｃにより記録された指標が、受信プロセッサ１１ａ−ｃにより示された位置を超えてこの要求された数が到達しないことを示すならば、生成プロセッサ１１ａ−ｃは処理を続ける。
【００３３】
好ましくは、重ね書きされてもよい位置の数と有効な内容を持つ位置の数とが、多くの標準位置に関して示されていて、ストリーム内の多くのデータオブジェクトに関して示されているわけではない。このことは、データストリームを生成したり受信したりするプロセッサが、同じブロックサイズを持つ位置の再利用性又は有効性を示す必要がないという効果を持つ。利点は、生成プロセッサ及び受信プロセッサ１１ａ−ｃ各々が他のプロセッサ１１ａ−ｃのブロックサイズを知ることなく設計できるということである。小さなブロックサイズで動作するプロセッサ１１ａ−ｃは、大きなブロックサイズで動作するプロセッサを待つ必要はない。
【００３４】
メモリ位置の指標は、幾つかの態様で実施される。一つの態様は、有効である又は重ね書きされてもよい追加のメモリ位置の数を示すことである。他の解決の仕方は、最後の有効な又は重ね書きできる位置のアドレスを送信することである。
【００３５】
好ましくは、プロセッサ１１ａ−ｃの少なくとも一つは、種々のストリームで交替的に動作できる。各受信したストリームに対して、プロセッサ１１ａ−ｃはメモリ内の位置についての情報をローカルに保持し、その位置までデータは有効であり、各生成されたストリームに対して、メモリ内の位置についての情報を保持し、その位置まで新しいデータは書き込まれる。
【００３６】
管理ユニット１８ａ、ｂ、ｃの動作及び実施は、特別なインスタンス化がこれらの区別を作るかもしれないが、読み出しポートと書き込みポートとの間の区別を作る必要はない。管理ユニット１８ａ、１８ｂ、１８ｃにより実行された動作は、ＦＩＦＯバッファ２２のサイズ、メモリ２０内の位置、メモリバウンドサイクリックＦＩＦＯに対するアドレスについてのラップアラウンド（wrap-around）メカニズム、キャッシングストラテジ、キャッシュコヒーレンス性、汎用Ｉ／Ｏアライメント制限、データバス幅、メモリアライメント制限、通信ネットワーク構造及びメモリオーガナイゼーションのような実施の態様を効果的に隠す。
【００３７】
好ましくは、管理ユニット１８ａ−ｃは、フォーマットされていないシーケンスのバイトで動作する。データのストリームを通信させる書き込み器１１ａ及び読出し器１１ｂにより用いられる同期パケットサイズ間の相関は必要ない。データ内容の意味解釈は、コプロセッサ、すなわち計算ユニット１２ａ、１２ｂにまかされる。タスクは、通信している他のタスク及びこれらのタスクがマッピングされているコプロセッサ又は同じコプロセッサでマッピングされる他のタスクのような、アプリケーショングラフインデンス構造を知る必要はない。
【００３８】
管理ユニット１８ａ−ｃの高いパフォーマンスの実施において、読出しコール、書き込みコール、getspaceコール、putspaceコールが、管理ユニット１８ａ−ｃに含まれる同期ユニット及び読出し／書き込みユニットを介してパラレルに発することができる。管理ユニット１８ａ−ｃの異なる部分でのコール動作は、相互のオーダー束縛を持たず、一方で管理ユニット１８ａ−ｃの同一の部分でのコール動作は、コーラータスク又はコプロセッサにしたがってオーダーされなければならない。斯様な場合に対して、ファンクションコールからのリターンによるソフトウェアの実施で、アクノリッジ信号を供給することによりハードウェアの実施で、以前のコールがリターンされたとき、コプロセッサからの次のコールが起動できる。
【００３９】
読出しコールにおけるサイズ引数、即ちn_bytesのゼロ値が、メモリから管理ユニットのキャッシュへport_ID引数及びoffset引数により示される位置でデータのプリフェッチを実施するためにリザーブできる。斯様な動作は、管理ユニットにより実施された自動プリフェッチのために使用できる。同様に、書き込みコールのゼロ値は、自動キャッシュフラッシュが管理ユニットの責任であるけれども、キャッシュフラッシュ要求のためにリザーブできる。
【００４０】
オプション的に、全ての五つの動作は追加の最後のlast_ID引数を受ける。これは通常、より早めのgettaskコールからの結果値として得られる小さな正の数である。Gettaskコールで、コプロセッサ（計算ユニット）は、例えば不充分なデータオブジェクトしか利用可能でないので計算ユニットが現在のタスクで処理できない場合、その管理ユニットに新しいタスクを割当てることを要求できる。このgettaskコールの際、管理ユニットは、新しいタスクの識別子をリターンする。読出し、書き込み、putspace及びgetspace動作におけるこの引数に対するゼロ値は、タスクに特定されないがコプロセッサ制御に関係するコールに対してリザーブされる。
【００４１】
好ましい実施例において、データストリームと通信するためのセットアップ（set-up）は、有限サイズ(finite-size)のＦＩＦＯバッファに接続された一つの読出し器及び一つの書き込み器でのストリームのことである。斯様なストリームは、有限且つ一定のサイズを持つＦＩＦＯバッファを必要とする。サイクリックなアドレス機構が適当なＦＩＦＯの振る舞いに対して適用されるということが、メモリにおいて及びそのリニアアドレスレンジにおいて予備的に割当てられるだろう。
【００４２】
しかしながら、図２及び図６に基づいた他の実施例においては、一つのタスクにより作られるデータストリームは、異なる入力ポートを持つ二つ又はそれ以上の異なる消費者により消費されるべきものである。斯様な状況は、タームフォーキングにより記述できる。しかしながら、マルチタスク処理のハードウェアコプロセッサと同様にＣＰＵで動作するソフトウェアタスクの両方に対してタスクの実行を再使用することを我々は望んでいる。これは、基本機能に対応して、固定数のポートを持つタスクを通じて実行される。アプリケーションコンフィギュレーションにより生じるフォーキングのための必要性は、管理ユニットにより解決されるべきである。
【００４３】
明らかにフォーキングは、ただ二つの別個の通常のストリームバッファを保持することにより、書き込み及びputspace動作全てを２回繰り返すことにより、及び２回繰り返されたgetspaceチェックの結果値でＡＮＤ演算を実施することにより、管理ユニット１８ａ−ｃにより実施できる。好ましくは、ダブルの書き込み帯域幅及びおそらく更なるバッファスペースを含んでコストがかかるので、これは実行されない。その代わり、好ましくは同じＦＩＦＯバッファを共有する１つの書き込み器及び二つ又はそれ以上の読出し器で実行される。
【００４４】
図６は、単一の書き込み器及び複数の読出し器を持つＦＩＦＯバッファの図を示す。同期機構は、ＢとＣとが互いの束縛を持たない、例えばこれらが純粋に読出し器と仮定すると、ＡとＣとの間の対の順の次に、ＡとＢとの間の通常の対の順を保証しなければならない。このことは、各読出し器に対して別個に利用可能なスペースのトラックを保持することにより（ＡからＢ及びＡからＣ）、書き込み動作を実施するコプロセッサに関連して管理ユニットで実行される。書き込み器が、ローカルgetspaceコールを実施するとき、そのn_bytes引数は、これらのスペース値の各々と比較される。これは、次のラインへの変更を示す列又は一つのエクストラのフィールドにより接続されたフォーキングのための前記ストリームテーブルにエクストラのラインを使用することにより実施される。
【００４５】
これは、フォーキングがほとんど使用されず、同時に二方向のみのフォーキングに限定されない、主要な場合においてほんの僅かのオーバヘッドを提供することになる。好ましくは、フォーキングは、書き込み器により実施されるのみである。読出し器は、この状況を知る必要はない。
【００４６】
図２及び図７に基づく他の実施例において、データストリームはテープモデルによると、三つのステーションストリームとして実現される。各ステーションは、通過するデータストリームの幾つかの更新を実施する。三つのステーションストリームのアプリケーション例は、一つの書き込み器であり、中間（intermediate）のウォッチドッグ及びファイナルの読出し器である。このような例において、第２タスクは好ましくは通過するデータを監視し、しばらく検査して多くの場合データが変形なしに通過することを許可する。相対的にはめったにないことであるが、ストリーム内の２、３の項目を変更することを決定できるだろう。これは、あるバッファから他のバッファへ全ストリーム内容をコピーすることを避けるために、プロセッサによりある地点でのバッファの更新によって効果的に達成できる。実際、このことは、ハードウェアコプロセッサが通信し、メインのＣＰＵが、若干異なるストリームフォーマットへの適応をなすか又は単にデバッグの理由のためにハードウェアの不備を補正するようにストリームを修正するために介在するときに便利であろう。斯様なセットアップは、メモリトラフィック及びプロセッサのワークロードを低減するために、メモリの単一ストリームバッファを共有する全ての三つのプロセッサで達成できたであろう。タスクＢは、全てのデータストリームを実際には読み出したり、又は書き込んだりしないだろう。
【００４７】
図７は、三つのステーションストリームに対する有限メモリバッファ実行を表す。この三方向バッファの適切なセマンティックスは、互いに関してＡ、Ｂ及びＣの厳格なオーダーを維持しウィンドウが重ならないことを保証することを含む。このようにして、三方向バッファは、図４及び図５に示された二方向バッファからの拡張である。斯様な多方向のサイクリックＦＩＦＯは、上述の管理ユニットの動作によって、同様に好ましい実施例の中で説明されたputspaceメッセージで分配された実行スタイルにより、直接的にサポートされる。単一のＦＩＦＯの三つのステーションにだけ限定はされない。一つのステーションが有効なデータを消費し作るIn-place処理は、たった二つのステーションでも適用可能である。この場合、互いにデータを交換するためにin-place処理をどちらのタスクも実施するので、空きのスペースはバッファに残っていない。
【００４８】
図２に基づく他の実施例では、バッファへの単一のアクセスが説明される。斯様な単一アクセスバッファは、単一ポートだけを有する。この実施例では、タスク間又はプロセッサ間のデータ交換は実施されないだろう。代わりに、これはローカルな使用のための管理ユニットの標準通信動作の単なるアプリケーションである。管理ユニットのセットアップは、メモリに付けられた単一のアクセスポイントを持つ標準バッファメモリからなる。タスクは今、ローカルなスクラッチパッド(scratchpad)又はキャッシュとしてバッファを使用できる。構成上の観点から、これは、幾つかの目的及びタスク、例えばソフトウェア構成可能なメモリサイズの使用のための比較的大きなメモリの組み合わされた使用のような利点を持つことができる。とりわけ、このセットアップのタスクに特別なアルゴリズムに役立つスクラッチパッドメモリとしての使用は、マルチのタスクを行うコプロセッサでのタスク状態を記憶し、取り出すために良く適用できる。この場合、状態スワッピングのための読出し／書き込み動作を実施することは、タスク機能コード自身の一部ではなく、コプロセッサ制御コードの一部である。バッファが他のタスクと通信するために使用されないので、このバッファについてput space及びgetspace動作を実施する必要は通常ない。
【００４９】
図２及び図８に基づく他の実施例では、好ましい実施例による管理ユニット１８ａ−ｃは更に、データ送信、すなわちコプロセッサ１２とメモリ２０との間の読出し動作及び書き込み動作のためのデータキャッシュを有する。管理ユニット１８ａ−ｃのデータキャッシュの実施は、データバス幅のトランスペアレント変換、グローバルな相互接続すなわちデータバス１３上の整列制限の解決策、グローバルな相互接続上のＩ／Ｏ動作の数の減少を提供する。
【００５０】
好ましくは、管理ユニット１８ａ−ｃは、キャッシュをそれぞれ持つ別個の読出し書き込みインタフェースを有するが、これらのキャッシュはアプリケーション機能の観点から見えることはない。ここで、put space及びgetspace動作のメカニズムは、明らかにキャッシュコヒーレンスを制御するために使用される。キャッシュは、通信ネットワーク（データバス）１３のグローバルな相互接続から、コプロセッサの読出し及び書き込みポートを分断する重要な役割を演じる。これらのキャッシュは、スピード、パワー及びエリアに関するシステムパフォーマンスに大きな影響を持つ。
【００５１】
タスクポートに認容されたストリームデータのウィンドウのアクセスは、プライベートであることを保証する。結果として、このエリアの読出し及び書き込み動作はセーブされ、第１段階では、中間イントラプロセッサ通信を必要としない。アクセスウィンドウは、サイクリックＦＩＦＯの前のものから新しいメモリスペースを得るローカルgetspaceリクエストにより拡張される。キャッシュの幾らかの部分がこのような拡張に対応するためにタグを付けられ、タスクが当該拡張内のデータを読み出すことに興味を持つならば、そのときキャッシュのこのような部分は無効化を必要とする。それから後で読出し動作がこの位置で起こるならば、キャッシュミスが起こり、新鮮な有効データがキャッシュにロードされる。管理ユニットの丹念な実施は、キャッシュミスの制裁を低減するために予備フェッチリクエストを発するようにgetspaceを使用できた。アクセスウィンドウは、サイクリックＦＩＦＯの後継器へ新しいメモリスペースを残すローカルputspaceリクエストにより縮む。このような縮みの幾つかの部分がたまたまキャッシュ内にあり、その部分が書き込まれてしまったならば、そのときキャッシュのそのような部分は、他のプロセッサへ利用可能なローカルデータを作るために、フラッシュされる必要がある。Putspaceメッセージを他のコプロセッサへ送り出すことは、キャッシュのフラッシュが完了し、メモリ位置の安全なオーダーが保証できるまで延期されなければならない。
【００５２】
明瞭なキャッシュコヒーレンス制御のためのローカルなgetspace及びputspace事象だけを使用することは、バススヌーピングのような他の一般的キャッシュコヒーレントメカニズムと比較して大きなシステムアーキテクチャにおける実施を相対的に容易にする。また、例えばキャッシュライトスルーアーキテクチャのような通信オーバヘッドを提供しない。
【００５３】
getspace及びputspace動作は、バイトグラニュラリティで動作するように規定される。キャッシュの主要な責任は、コプロセッサに対するデータ転送整列制限及びグローバルな相互接続データ転送サイズを隠すことである。好ましくは、データ転送サイズは、同じ整列で１６バイトに設定され、一方２バイトと同じ小ささの同期のとれたデータ量は動的に用いられてもよい。したがって、同一のメモリワード又は転送されたユニットは、異なるコプロセッサのキャッシュに同時に記憶されることができ、無効な情報がバイトグラニュラリティで各キャッシュで扱われる。
【００５４】
図８は、図２に示された処理システムでの使用のための管理ユニット１８及びプロセッサ１２の組合せを示す。詳細に示された管理ユニット１８は、制御器１８１、ストリーム情報を有する第１テーブル（ストリームテーブル）１８２、及びタスク情報を有する第２テーブル（タスクテーブル）１８３を有する。管理ユニット１８はまた、プロセッサ１２のためのキャッシュ１８４を有する。同期インタフェース１８におけるキャッシュ１８４の存在は簡便なデザインのキャッシュを考慮し、キャッシュ制御を単純にしている。加えて、指令キャッシュのような一つ又はそれ以上のキャッシュがプロセッサ１２にあってもよい。
【００５５】
制御器１８１は、タイプＣ１、Ｃ２の命令を受けるために対応するプロセッサ、すなわちプロセッサ１２ａと命令バスＩｉｎを介して結合される。フィードバックラインＦＢは、例えばバッファスペースのためのリクエストを認容してもらうために、前記プロセッサへのフィードバックを与えるのに役立つ。前記制御器は、リング内の先行する管理ユニットからのメッセージを受けるためにメッセージ入力ラインMinを持ち、また、後続の管理ユニットへメッセージを送るためにメッセージ出力ラインMoutを持つ。管理ユニットがその後続の管理ユニットへ送ってもよいメッセージの例は、バッファメモリの一部が開放されたということである。制御器１８１は、ストリームテーブル１８２のアドレス及びタスクテーブル１８３のアドレスを選択するためにアドレスバスＳＴＡ及びＴＴＡをそれぞれ持つ。更に、これらのテーブルからの読出し、テーブルへの書き込みのためにデータバスＳＴＤ及びＴＴＤをそれぞれ持つ。
【００５６】
管理ユニット１８は、他のプロセッサ（図３には示されていない）からの同期情報を送受信し、少なくとも受信した情報を記憶する。管理ユニット１８は更に、ローカルにプロセッサ１２においてデータストリームからのデータの写しを記憶するのに役立つキャッシュメモリ１８４を有する。キャッシュメモリ１８４は、ローカルアドレスバス１８５及びローカルデータバス１８６を介してプロセッサ１２と結合されている。原則として、プロセッサ１２は、図１の処理システムのメモリ１０での位置への参照となるアドレスでもってキャッシュメモリ１８４をアドレスする。キャッシュメモリ１８４がアドレスされたデータの内容の有効な写しを含むならば、プロセッサ１２は前記写しを含むキャッシュメモリ１８４での位置をアクセスし、メモリ１０（図１）はアクセスされない。好ましくは、プロセッサ１２は、あるタイプの動作、例えばＭＰＥＧデコーディングを非常に効率よく実施するように設計された特別なプロセッサコアである。システム内の種々のプロセッサのプロセッサコアは、種々の特別な部分を持つ。同期インタフェース１８及びそのキャッシュメモリ１８４は、全ての種々のプロセッサに対して同一でもよく、ただキャッシュメモリサイズがプロセッサ１２の要求に応じておそらく適応するようになっているだろう。
【００５７】
本発明によるデータ処理システムでは、同期手段は、同期命令に応じてキャッシュ動作を開始する。このようにして、キャッシュコヒーレンス性が最小量の追加のキャッシュ制御手法で維持できる。本発明の幾つかの実施例が可能である。
【００５８】
第１の実施例では、少なくとも一つのプロセッサは、第１プロセッサ（書き込みプロセッサ）により生成されたデータオブジェクトを有するスペースを要求する同期命令（問い合わせ）を発する第２プロセッサ（読み出しプロセッサ）であり、キャッシュ動作は無効動作である。
【００５９】
図９に概略的に示されるように、読み出しプロセッサは、要求命令getspaceを発する。同期手段１８、ここではプロセッサ１１の一部を形成する管理ユニット１８は、要求されたスペースが書き込みプロセッサによりコミットされたスペース１０の中にあるかどうかを示すフィードバック信号ＦＢをリターンする。更に、この実施例では、管理ユニットは、前記要求されたスペースと重なるキャッシュメモリ１８４のメモリ転送ユニットを無効にするだろう。結果として、キャッシュからデータを読み出そうとし、このデータが無効であることを検出したならば、制御器１８１は即座にメモリからの有効なデータをプリフェッチするだろう。
【００６０】
図１１に示されているように、三つの異なる状況が起こり得る。この図において、各々の状況は、読出しリクエストが空のキャッシュ１８４で起こり、キャッシュミスとなるとする。概略的に図の左半分では、プロセッサ１１のキャッシュ１８４及び計算ユニット１２が示されている。右半分は、概略的に読出しリクエストＲが起こったときに関わるキャッシュの部分１８４を示す。キャッシュのためのデータがフェッチされるメモリ１０の部分も示される。
【００６１】
図１１Ａは、認められたウィンドウＷ内に完全に含まれるワードである、キャッシュ１８４内のメモリ転送ユニットＭＴＵをフェッチすることを導く読出しリクエストＲを示す。明らかにこの全体のワードＭＴＵはメモリで有効であり、一旦キャッシュにロードされると有効と宣言できる。
【００６２】
図１１Ｂでは、読出しリクエストＲは、コプロセッサにより得られたスペースＷを部分的に越えて延在し、それ以外は利用可能なものとして管理ユニット１８内でローカルに管理される、ワードＭＴＵがメモリ１０からキャッシュ１８４へフェッチされるという結果を持つ。Getspace引数だけが使用されるならば、このワードＭＴＵは部分的に無効であると宣言されるようになるだろうし、getspaceウィンドウＷが一旦拡張されると、再読み出しされる必要があるだろう。しかしながら、利用可能なスペースＷ２の実際の値がチェックされるならば、全ワードが有効としてマークできる。
【００６３】
図１１Ｃでは、読出しリクエストＲは、メモリ１０からキャッシュ１８４へフェッチされるワードＭＴＵが、セーブされるべきと知られていない、幾つかの他のプロセッサにより依然書き込まれるようになるかもしれないスペースＳへ部分的に拡張されるという効果を持っている。キャッシュ１８４へロードされるとき、無効なものとしてワードＭＴＵの対応するエリアＳ‘をマークすることは、必須である。ワードのこの部分Ｓ’が後でアクセスされるならば、ワードＭＴＵは再読み出しされる必要がある。
【００６４】
更に、信号読出しリクエスト（図１１ＣのＲ‘参照）は１より多いメモリワードをカバーできる。なぜならば、２つの連続するワード間の境界を交差するからである。これは、コプロセッサ１２の読出しインタフェースがメモリワードより広い場合も、起こるであろう。図１１Ａ−Ｃは、要求されたバッファスペースＷと比較して相対的に大きなメモリワードを示す。実際、要求されたウィンドウＷは、ときにはかなり大きいが、極端な場合、全サイクリックな通信バッファは、単一のメモリワードと同じくらい小さくできるだろう。
【００６５】
前の実施例では、読み出しの試みがキャッシュ１８４で起こる時に、データがメモリからキャッシュへフェッチされ、キャッシュ内のデータが無効であるとわかる。第２実施例では、読み出しプロセッサがスペースを要求する命令を発するやいなやデータは読み出しプロセッサのキャッシュにプリフェッチされる。このとき、キャッシュ内のデータを最初に無効にする必要はない。
【００６６】
第３実施例では、書き込みプロセッサが、新しいデータオブジェクトを書いたスペースを開放するという命令を発するやいなやデータが読み出しプロセッサのキャッシュにフェッチされる。
【００６７】
本発明の第４実施例は、書き込みプロセッサのキャッシュにキャッシュコヒーレンス性を維持するのに適している。これは、そのプロセッサがコミット動作を与えた後で当該キャッシュのフラッシュ動作を実施することにより達成される。これが図１０に示されている。この中で、メモリの一部１０Ａは、書き込みプロセッサにより既にコミットされたスペースである。Putspace命令は、プロセッサ１２がそれに割当てられたスペースであって、新しいデータオブジェクトが書き込まれた当該スペースを開放するということを示す。キャッシュコヒーレンス性は、putspace命令により開放されるスペースと重なるキャッシュ１８４の部分１８４Ａ、１８４Ｂをフラッシュすることにより、維持される。Putspace命令により示されたスペースが開放されたという読み出しプロセッサへのメッセージは、フラッシュ動作が完了するまで遅延される。コプロセッサは、バイトグラニュアリティでデータを書き込み、キャッシュは当該キャッシュ内のバイト当りのダーティ（汚染された）ビットを管理する。Putspace要求の際、キャッシュは、この要求により示されたアドレス範囲で重なる、前記キャッシュから共有のメモリへのワードをフラッシュする。前記ダーティビットは、メモリがアクセスウィンドウの外のバイト位置で決して書き込まれないことを保証するために、バス書き込み要求の書き込みマスクのために用いられるべきである。
【００６８】
’Kahn’スタイルのアプリケーションにおいてポートは、専用の方向、すなわち入力又は出力の何れかを持つ。好ましくは、幾つかの実施発行を簡略化する別個の読出しキャッシュ及び書き込みキャッシュが用いられる。多くのストリームに対して、コプロセッサはサイクリックなアドレススペースを通じてリニアに働き、読出しキャッシュはオプション的にプリフェッチをサポートし、書き込みキャッシュはオプション的にプリフラッシュをサポートし、次のワードへの二つの読出しアクセス動き内で、以前のワードのキャッシュ位置が期待される将来の使用に利用できる。読出しデータパス及び書き込みデータパスの別個の実施が、例えばパイプライン形式のプロセッサの実施で、パラレルに発生するコプロセッサからの読出しリクエスト及び書き込みリクエストを更に容易にサポートする。
【００６９】
このように、データオブジェクトのストリームに対するメモリへのアクセスの予測が、キャッシュ管理を改善するために用いられる。
【００７０】
示されている実施例では、同期インタフェース間の同期メッセージネットワークは、トークンリングネットワークである。このことは、相対的に少ない数の接続でコンパイルできるという利点を持つ。更に、トークンリング自体の構造はスケーラブルなので、ノードがインタフェースデザイン上ほとんど影響を及ぼすことなく付加又は削除できる。しかしながら、他の実施例では、通信ネットワークは、同期の待ち時間を最小にするために、例えばバスをベースにしたネットワーク又はスイッチされるマトリクスネットワークのように異なる態様で実施されてもよい。
【００７１】
実施例においては、第１テーブル１８２はプロセッサにより処理される複数のストリームに対する以下の情報を有する：データが書き込まれるか読み出されるべきメモリ１０の位置をポイントするアドレス、通信しているプロセッサ間のデータのストリームをバッファするために利用可能なメモリ内のメモリセクションのサイズを示すバリューサイズ、管理ユニットに結合されたプロセッサへ結合されたプロセッサに利用可能なそのセクションの部分のサイズを示すバリュースペース、このストリームを読出し又は書き込むプロセッサ及びストリームを識別するグローバル識別子gsid。
【００７２】
実施例では、第２テーブル１８３は、実施されるタスクについての下記の情報を有する：前記タスクのために処理される一つ又はそれ以上のストリームの識別子、各タスクに対して利用可能なバジェット、タスクがイネーブル又はディスイネーブルであることを示すタスクイネーブルフラグ、タスクが走る用意をしているか否かを示すタスクランニングフラグである。好ましくは、テーブル１８３は各タスクに対して、ストリームの、例えばタスクの第１ストリームの一つの識別子だけを有する。好ましくは、識別子はストリームテーブルへのインデックスである。管理ユニット１８は、前記インデックス及びポート番号ｐを加えることにより、他のストリームに対して対応するidを容易に計算する。ポート番号は、管理ユニットに結合されたプロセッサにより与えられる命令のパラメータとして通過できる。
【００７３】
図１２は、他の実施例を示す。この実施例では、プロセッサ同期手段は、プロセッサ１２ａ、１２ｂ、１２ｃにより発せられたコミット及び問い合わせ命令を処理する中心ユニットである。前記プロセッサ同期手段は、専用のハードウェアで実現されてもよいが、さもなければプログラムされた汎用プロセッサでも可能である。プロセッサ１２ａ−ｃは、同期ユニット１８へ同期命令Ｃａ、Ｃｂ、Ｃｃを発し、フィードバックＦＢａ、ＦＢｂ、ＦＢｃを得る。同期ユニット１８はまた、キャッシュ制御命令ＣＣａ、ＣＣｂ及びＣＣｃによりキャッシュ１８４ａ、１８４ｂ、１８４ｃもそれぞれ制御する。プロセッサ１２ａ、１２ｂ、１２ｃは、これらキャッシュ１８４ａ、１８４ｂ、１８４ｃ、データバス１３及びアドレスバス１４を介して共有メモリ１０に結合される。
【００７４】
例として、プロセッサ１２ａが書き込みプロセッサであり、プロセッサ１２ｃが前記書き込みプロセッサにより書き込まれたデータを読み出すプロセッサであるとする。しかしながら、各プロセッサの役割は、利用可能なタスクに依存して動的にスケジュールされてよい。
【００７５】
この例では、プロセッサ１２ａは書き込みプロセッサであり、同期ユニットは、書き込みプロセッサ１２ａによりputspace命令を受信した後で、フラッシュ命令をキャッシュ１８４ａへ発することにより、キャッシュ１８４ａのコヒーレンス性を維持する。この実施例の更なる実施例では、同期ユニットは、プロセッサ１２ａのデータストリームを読み出すプロセッサ１２ｃのキャッシュへプリフェッチ命令を発してもよい。このプリフェッチ命令は、キャッシュ１８４ａへの前記フラッシュ命令の後で与えられるべきである。
【００７６】
しかしながら、他の実施例においては、読み出しプロセッサ１２ｃのキャッシュ１８４ｃのキャッシュコヒーレンス性が、書き込みプロセッサ１２ａの動作とは独立に達成される。これは、プロセッサ１２ｃからgetspace命令を受信した際に、読み出しプロセッサ１２ｃのキャッシュ１８４ｃへ無効命令を同期ユニット１８が発するとき、達成できる。この命令の結果として、getspace命令により請求された領域と重なる前記キャッシュ１８４ｃの部分は、無効化される。前記部分は、読み出しの試みが読み出しプロセッサ１２ｃにより起こるやいなやメモリ１０からフェッチされる。同期ユニット１８は、読み出しプロセッサ１２ｃのキャッシュ１８４ｃへのプリフェッチ命令を発することもできるので、読み出しプロセッサ１２ｃが実際に読み始めるならばデータは既に利用可能である。
【図面の簡単な説明】
【００７７】
【図１】図１は、アプリケーションを従来のプロセッサへマッピングしている図である。
【図２】図２は、ストリームに基づいた処理システムのアーキテクチャの概略的ブロック図である。
【図３】図３は、図２のシステムにおけるＩ／Ｏ動作及び同期動作を示す。
【図４】図４は、共有メモリの概略図である。
【図５】図５は、図４のメモリを使用する図２の書く管理ユニットにおけるローカルスペース値を更新する仕組みを示す。
【図６】図６は、複数の読出し器と単一の書き込み器を持つＦＩＦＯバッファの概略図である。
【図７】図７は、３つのステーションストリームに対する有限メモリバッファの実行を示す。
【図８】図８は、処理システムの一部を形成するプロセッサを詳細に示す。
【図９】図９は、読み出しプロセッサが要求命令getspaceを発している図である。
【図１０】図１０は、プロセッサがコミット動作を与えた後でキャッシュのフラッシュ動作を実施する図である。
【図１１Ａ】図１１Ａは、キャッシュにおけるデータの有効性を読み出して管理する説明図の一つである。
【図１１Ｂ】図１１Ｂは、キャッシュにおけるデータの有効性を読み出して管理する説明図の一つである。
【図１１Ｃ】図１１Ｃは、キャッシュにおけるデータの有効性を読み出して管理する説明図の一つである。
【図１２】図１２は、本発明による処理システムの第２実施例である。
【図１】
2005521124.tif 000005
【図２】
2005521124.tif 000006
【図３】
2005521124.tif 000007
2005521124.tif 000008
2005521124.tif 000009
2005521124.tif 000010
【図４】
2005521124.tif 000011
【図５】
2005521124.tif 000012
【図６】
2005521124.tif 000013
【図７】
2005521124.tif 000014
【図８】
2005521124.tif 000015
【図９】
2005521124.tif 000016
【図１０】
2005521124.tif 000017
【図１１Ａ】
2005521124.tif 000018
【図１１Ｂ】
2005521124.tif 000019
【図１１Ｃ】
2005521124.tif 000020
【図１２】
2005521124.tif 000021
【国際調査報告】
2005521124.tif 000022
2005521124.tif 000023
2005521124.tif 000024