(57)【要約】【課題】複数のプロセッサの共有データの同期化処理は複雑でエラーも多い。【解決手段】マルチプロセッサシステムにおいて同期化のスキームを提供する。具体的には、プロセッサはバッファ同期化コントローラ８００を含む。バッファ同期化コントローラ８００は、ＤＲＡＭ２１４における共有データに対する、サブ処理ユニット２０８のアクセスを許可または拒否するように動作する。そしてあるサブ処理ユニット２０８がＤＲＡＭ２１４に対して書き込みまたは読み出しを要求する場合は、バッファ同期化コントローラ８００が管理する共有パラメータデータを参照するようにする。【選択図】図９
2006202287.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムにおいて複数のプロセッサの共有データへのアクセスを同期化する方法であって、
複数のプロセッサによって共有されるデータへのアクセスに係る一以上の状態を含む共有パラメータデータを格納するステップと、
前記プロセッサの前記共有データへのアクセスに対応して、前記共有パラメータデータを更新するステップと、
前記共有パラメータデータに基づき、前記プロセッサの前記共有データへのアクセスを防止および許諾するステップと、
を含むことを特徴とする同期化方法。
【請求項２】
請求項１に記載の同期化方法であって、前記一以上の状態は、
前記共有データへアクセスを行っているプロセッサの数を示す第１の状態と、
前記共有データへの書き込みにより、当該共有データへのアクセスが拒否されているかどうかを示す第２の状態と、
を含むことを特徴とする同期化方法。
【請求項３】
請求項２に記載の同期化方法であって、前記共有データの読み出しを行うアクセスは、前記共有データへの書き込みを行っているプロセッサがないことを前記第２の状態が示す場合に許諾されることを特徴とする同期化方法。
【請求項４】
請求項２または３に記載の同期化方法であって、前記プロセッサの一つが前記共有データへの書き込みを行うアクセスは、前記共有データへ書き込みを行っているプロセッサがないことを前記第２の状態が示した後に、他の全てのプロセッサによる前記共有データへのアクセスを拒否するように前記第２の状態を設定したうえで許諾されることを特徴とする同期化方法。
【請求項５】
複数のプロセッサの共有データへのアクセスを同期化する機能を有するシステムであって、
複数のプロセッサを含み、各プロセッサは、共有パラメータデータを処理し前記共有パラメータデータの状態に応じて前記複数のプロセッサによって共有される共有データのアクセスを制御する、バッファ同期化コントローラを含むことを特徴とする情報処理システム。
【請求項６】
請求項５に記載の情報処理システムであって、前記共有パラメータデータは前記共有データの読み出しを行っているプロセッサの数を示すことを特徴とする情報処理システム。
【請求項７】
請求項５または６に記載の情報処理システムであって、前記共有パラメータデータは前記プロセッサの一つが前記共有データへの書き込みを行っているかどうかを示すことを特徴とする情報処理システム。
【請求項８】
請求項５から７のいずれかに記載の情報処理システムであって、前記複数のプロセッサは少なくとも二以上のサブプロセッサを含むことを特徴とする情報処理システム。
【請求項９】
請求項５から８のいずれかに記載の情報処理システムであって、前記複数のプロセッサの前記共有データへのアクセスを制御するダイレクトメモリアクセスコントローラをさらに含むことを特徴とする情報処理システム。
【請求項１０】
請求項５、８または９のいずれかに記載の情報処理システムであって、前記共有パラメータデータは、
前記共有データへアクセスを行っているプロセッサの数を示す第１の状態と、
前記共有データへの書き込みにより、当該共有データへのアクセスが拒否されているかどうかを示す第２の状態と、
を含むことを特徴とする情報処理システム。
【請求項１１】
請求項５、８または９のいずれかに記載の情報処理システムであって、前記共有パラメータデータは、
前記共有データへの書き込みに係る書き込みロックパラメータと、
前記共有データの読み出しを行っているプロセッサの数に係る読み出しカウントパラメータと、
を含むことを特徴とする情報処理システム。
【請求項１２】
請求項５から１１のいずれかに記載の情報処理システムであって、前記共有パラメータデータおよび前記共有データを格納する共有メモリをさらに含むことを特徴とする情報処理システム。
【請求項１３】
請求項５から１２のいずれかに記載の情報処理システムであって、前記バッファ同期化コントローラは前記プロセッサと一体化していることを特徴とする情報処理システム。
【請求項１４】
マルチプロセッサシステムにおいて共有データのアクセスを同期化する方法であって、
複数のプロセッサがアクセス可能な共有パラメータデータが提供する一以上の状態に対応して、前記複数のプロセッサでデータを共有するステップと、
前記一以上の状態に基づき、一以上の前記プロセッサによる前記共有データへのアクセスを防止および許諾するステップと、
を含むことを特徴とする同期化方法。  
【請求項１５】
マルチプロセッサシステムにおいて複数のプロセッサによる共有メモリへのアクセスを同期化するバッファ同期化コントローラであって、
共有データを読み出しているプロセッサの数を示す第１のパラメータと、前記プロセッサの一つが前記共有データへの書き込みを行っているかどうかを示す第２のパラメータとを準備する初期化ユニットと、
コントロールユニットと、
前記コントロールユニットの、前記共有データへのアクセス要求を受け付け、前記第１および第２のパラメータの状態に基づき、前記アクセス要求を許諾する同期化ユニットと、
前記コントロールユニットの、前記共有メモリからのデータ転送要求を受け付け、前記第１および第２のパラメータが所定の値であるときに前記データ転送要求を許諾するデータ転送ユニットと、
を含むことを特徴とするバッファ同期化コントローラ。
【請求項１６】
マルチプロセッサシステムにおいて共有メモリへの書き込み動作に従いメモリアクセスの同期化を行う同期化方法であって、
選択されたプロセッサからの共有メモリの領域への書き込み要求を受け付けるステップと、
前記共有メモリの領域のデータを読み出しているプロセッサがないこと示す読み出しカウント表示を取得するステップと、
前記共有メモリの領域への読み出しが可能であることを示す書き込みアクセス状態を取得するステップと、
前記書き込みアクセス状態を、他のプロセッサが前記共有メモリの領域へアクセスできない状態に設定するステップと、
前記書き込みアクセス状態を、他のプロセッサがアクセスできない状態に設定した後、前記共有メモリへデータの書き込みを行うステップと、
前記データの書き込みを行った後、前記書き込みアクセス状態を、他のプロセッサが前記共有メモリの領域へアクセスできる状態とするステップと、
を含むことを特徴とする同期化方法。
【請求項１７】
請求項１６に記載の同期化方法であって、前記書き込みアクセス状態と前記読み出しカウント表示とを前記プロセッサがアクセス可能な共有パラメータデータメモリ領域に格納するステップをさらに含むことを特徴とする同期化方法。
【請求項１８】
マルチプロセッサシステムにおいて共有メモリの領域の読み出し動作に従いメモリアクセスの同期化を行う同期化方法であって、
共有メモリの領域のデータの読み出し要求を行うステップと、
前記共有メモリの領域へのアクセスが可能であることを示すアクセスフラグを取得するステップと、
前記共有メモリの領域を読み出しているプロセッサの数を示すＲＥＡＤ変数をインクリメントするステップと、
前記共有メモリの領域のデータを読み出すステップと、
前記データを読み出した後、前記ＲＥＡＤ変数をデクリメントするステップと、
を含むことを特徴とする同期化方法。
【請求項１９】
複数のプロセッサの共有データへのアクセスを同期化する装置であって、
バスで接続した二以上の処理ユニット含むプロセッサ要素を含み、前記処理ユニットの少なくともいずれかがメモリへ接続可能かつ命令発行可能であり、
前記処理ユニットは、前記処理ユニットがアクセス可能な共有パラメータデータが示す一以上の状態に対応してデータを共有し、前記一以上の状態に基づき前記処理ユニットによる前記共有データへのアクセスを防止および許諾するようにプログラムされていることを特徴とする同期化装置。
【請求項２０】
複数のプロセッサによる共有データへのアクセスの同期化を、一以上のプロセッサに実現させるコンピュータプログラムであって、
複数のプロセッサがアクセス可能な共有パラメータデータが提供する一以上の状態に対応して、前記複数のプロセッサでデータを共有する機能と、
前記一以上の状態に基づき、一以上の前記プロセッサによる前記共有データへのアクセスを防止および許諾する機能と、
を前記一以上のプロセッサに実現させるコンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムを格納した、コンピュータにて読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理技術に関し、特に複数のプロセッサの共有データの同期化方法、およびそれを適用したバッファ同期化コントローラ、同期化装置、および情報処理システムに関する。
【背景技術】
【０００２】
マルチプロセッサシステムにおいて、データの整合性をとることは常に重要な問題である。例えば、複数のサブ処理ユニットを備えたマルチプロセッサシステムにおいてサブ処理ユニットには通常、ランダムアクセスメモリ（ＲＡＭ）等で構成されるメインメモリ以外の記憶領域であるキャッシュシステムが備えられていない。従って、複数のサブプロセッサが共通のデータを共有するためには、その共有データの一貫性を保証するためにサブプロセッサ間で同期化を行う必要がある。
【０００３】
同期化を実現するための従来の技術では、オブジェクト指向のソフトウェアプログラムにおいて「バリアオブジェクト」とされる同期化変数を導入し、共有データの読み出しおよび書き込みのアクセスを制御する。例えば必要に応じて共有メモリへのアクセスを禁止する典型的なバリアオブジェクトは、バリアオブジェクトを生成して同期化処理を初期化することのできるプロセッサによって、ソフトウェア上で生成させることができる。例えば、マルチプロセッサシステムにおいて実行されているメインブログラムの連続ループにおいて、複数のプロセッサによって共有されるインデックス付きのデータをメモリまたはバッファエリアに書き込む場合、バリア処理を実行するための擬似コードは以下のとおりである。
【０００４】
同期化の初期化：バリアオブジェクト（ｏｂｊＢ）の生成：
Main loop:
Wait on objB
Create data Dm
Write Dm to shared area
m = m+1
【０００５】
バリアオブジェクトｏｂｊＢには、複数のプロセッサによって共有される記憶領域へのアクセスの許可、不許可を示す変数が含まれる。バリアオブジェクトが生成されると、メインプロセッサまたはサブ処理ユニットは、そのバリアオブジェクトが利用可能となるまで、共有メモリにあるデータを読み出したり書き込みを行ったりするのを待たなければならない。
【０００６】
各プロセッサはバリアオブジェクトｏｂｊＢを要求すると同時に、共有記憶領域の読み出し時、または共有記憶領域への書き込み時に、データを格納するためのバッファを生成することができる。バッファオブジェクトを加えた、この要求処理の擬似コードは以下のとおりである。
【０００７】
同期化の初期化：
get barrier object (objB)
create buffer to get data (buf)
wait on objB
【０００８】
従ってプロセッサは、この処理に従いデータの要求を行うと、ｏｂｊＢに係る変数が利用可能となり、その共有記憶領域が読み出しまたは書き込みを行えることが示されるまで待たなければならない。共有データの読み出し要求を行ったプロセッサは、バリアオブジェクトを取得すると、共有メモリ内のデータを、共有メモリ内の位置に対応したバッファへ格納することができる。この処理の擬似コードは以下のとおりとできる。
Main loop:
Wait on objB
Sub loop:
get place of data...i
get Dmi to buf and calculate loop while  (i＜num)
【０００９】
または、ｏｂｊＢを示す変数が利用可能で、かつ共有メモリが書き込み可能であることを示した場合、バッファ内のデータは共有メモリ内の対応する位置へ格納される。
【００１０】
このように、上述のマルチプロセッサシステムの各処理要素が互いに同期化を行うためには、バリアオブジェクトを監視する必要がある。共有データを生成する処理要素は、そのデータを共有メモリへ書き込む間も、バリアオブジェクトを監視する。さらにメモリから共有データの読み出しを行う処理要素は、読み出し処理中もバリアオブジェクトを監視する。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
マルチプロセッサ環境において同期化変数を使用するこの従来のアプローチは、一般的には、バリアオブジェクトによって生成される処理要素間の相互関係をコード化する際に、ソフトウェアプログラマーがもたらす機能である。ソフトウェアのコードにバリアオブジェクトの相互関係を正確に反映させるのは比較的複雑で困難な作業であるため、プログラミングのエラーがしばしば発生する。同期化変数に関連したコーディングエラーを含むソフトウェアプログラムはデバッグが困難なため、問題は深刻である。またソフトウェアが提供するバリアは、多くの最適化の作業を必要とするのが一般的である。従って、同期化の方法および同期化システムの改善が必要である。
【００１２】
本発明はこのような課題に鑑みてなされたものでありその目的は、共有データの同期化を正確に行うことのできる技術を提供することにある。
【課題を解決するための手段】
【００１３】
本発明のある態様は同期化方法に関する。この同期化方法は、マルチプロセッサシステムにおいて複数のプロセッサの共有データのアクセスを同期化する方法を提供する。この方法は、複数のプロセッサによって共有されるデータへのアクセスに係る一以上の状態を含む共有パラメータデータを格納するステップと、プロセッサの共有データへのアクセスに対応して、共有パラメータデータを更新するステップと、その共有パラメータデータに基づき、プロセッサの共有データへのアクセスを防止または許諾するステップと、を含むことを特徴とする。
【００１４】
好適には、一以上の状態には共有データへアクセスを行っているプロセッサの数を示す第１の状態と、共有データへの書き込みにより、当該共有データへのアクセスが拒否されているかどうかを示す第２の状態を含む。さらに好適には、共有データの読み出しを行うアクセスは、共有データへの書き込みを行っているプロセッサがないことを第２の状態が示す場合に許諾され、プロセッサの一つが共有データへの書き込みを行うアクセスは、共有データへ書き込みを行っているプロセッサがないことを第２の状態が示した後に、他の全てのプロセッサによるその共有データへのアクセスを拒否するように第２の状態を設定したうえで許諾される。
【００１５】
本発明の別の態様は同期化装置に関する。この同期化装置は、複数のプロセッサの共有データへのアクセスを同期化する。この装置は、複数のプロセッサを含み、各プロセッサは、共有パラメータデータを処理し、その共有パラメータデータの状態に応じて複数のプロセッサによって共有される共有データのアクセスを制御する、バッファ同期化コントローラを含むことを特徴とする。
【００１６】
好適には、共有パラメータデータは共有データを読み出しを行っているプロセッサの数と、プロセッサの一つが共有データへの書き込みを行っているかどうかを示す。複数のプロセッサは、好適には、少なくとも二以上のサブプロセッサを含む。情報処理装置はさらに、複数のプロセッサの共有データへのアクセスを制御するダイレクトメモリアクセスコントローラと、共有パラメータデータおよび共有メモリを格納する共有メモリを含んでよい。バッファ同期化コントローラはプロセッサと一体化していてもよい。
【００１７】
共有パラメータデータは、共有データへアクセスを行っているプロセッサの数を示す第１の状態と、共有データへの書き込みにより、当該共有データへのアクセスが拒否されているかどうかを示す第２の状態とを含んでよい。共有パラメータデータはさらに、共有データへの書き込みに係る書き込みロックパラメータと、共有データの読み出しを行っているプロセッサの数に係る読み出しカウントパラメータとを含んでよい。
【００１８】
本発明のさらに別の態様は同期化方法に関する。この同期化方法は、マルチプロセッサシステムにおいて共有データのアクセスを同期化する方法を提供する。この方法は、複数のプロセッサがアクセス可能な共有パラメータデータが提供する一以上の状態に対応して、複数のプロセッサでデータを共有するステップと、共有パラメータデータが提供する一以上の状態に基づき、一以上のプロセッサによる共有データのアクセスを防止または許諾するステップと、を含むことを特徴とする。
【００１９】
本発明のさらに別の態様はバッファ同期化コントローラに関する。このバッファ同期化コントローラは、マルチプロセッサシステムにおいて複数のプロセッサによる共有メモリへのアクセスを同期化し、共有データを読み出しているプロセッサの数を示す第１のパラメータと、プロセッサの一つが共有データへの書き込みを行っているかどうかをを示す第２のパラメータとを準備する初期化ユニットと、コントロールユニットと、コントロールユニットの共有データへのアクセス要求を受け付け、第１および第２のパラメータの状態に基づきアクセス要求を許諾する同期化ユニットと、コントロールユニットの、共有メモリからのデータ転送要求を受け付け、第１および第２のパラメータが所定の値であるときにデータ転送要求を許諾するデータ転送ユニットと、を含むことを特徴とする。
【００２０】
本発明のさらに別の態様は同期化方法に関する。この同期化方法は、マルチプロセッサシステムにおいて共有メモリへの書き込み動作に従いメモリアクセスの同期化を行う方法であり、選択されたプロセッサから共有メモリの領域への書き込み要求を受け付けるステップと、その共有メモリの領域のデータを読み出しているプロセッサがないことを示す読み出しカウント表示を取得するステップと、共有メモリの領域への読み出しが可能であることを示す書き込みアクセス状態を取得するステップと、その書き込みアクセス状態を、他のプロセッサがその共有メモリの領域へアクセスできない状態に設定するステップと、書き込みアクセス状態を、他のプロセッサがアクセスできない状態に設定した後、共有メモリへデータの書き込みを行うステップと、データの書き込みを行った後、書き込みアクセス状態を、他のプロセッサが前記共有メモリの領域へアクセスできる状態とするステップと、を含む。好適には、この方法は、書き込みアクセス状態と読み出しカウント状態を、プロセッサがアクセス可能な共有パラメータデータのメモリ領域へ格納するステップを含むことを特徴とする。
【００２１】
本発明のさらに別の態様は同期化方法に関する。この同期化方法は、マルチプロセッサシステムにおいて共有メモリの領域の読み出し動作に従いメモリアクセスの同期化を行う方法であり、共有メモリの領域のデータの読み出し要求を行うステップと、その共有メモリの領域へのアクセスが可能であることを示すアクセスフラグを取得するステップと、その共有メモリの領域を読み出しているプロセッサの数を示すＲＥＡＤ変数をインクリメントするステップと、共有メモリの領域のデータを読み出すステップと、データを読み出した後、その変数をデクリメントするステップと、を含むことを特徴とする。
【００２２】
本発明のさらに別の態様は同期化装置に関する。この同期化装置は、複数のプロセッサの共有データへのアクセスを同期化する装置であり、バスで接続した二以上のプロセッサユニット含むプロセッサ要素を含み、処理ユニットの少なくともいずれかがメモリへ接続可能で命令発行可能であり、その処理ユニットは、処理ユニットがアクセス可能な共有パラメータデータが示す一以上の状態に対応してデータを共有し、一以上の状態に基づき処理ユニットによる共有データへのアクセスを防止および許諾するようにプログラムされていることを特徴とする。
【００２３】
本発明のさらに別の態様はコンピュータプログラムに関する。このコンピュータプログラムは、複数のプロセッサによる共有データへのアクセスの同期化を、一以上のプロセッサに実現させるコンピュータプログラムであって、複数のプロセッサがアクセス可能な共有パラメータデータが提供する一以上の状態に対応して、複数のプロセッサでデータを共有する機能と、共有パラメータデータが示す一以上の状態に基づき一以上のプロセッサによる共有データへのアクセスを防止および許諾する機能と、を前記一以上のプロセッサに実現させることを特徴とする。
【発明の効果】
【００２４】
本発明によれば、複数のプロセッサからの共有データに対する読み出しや書き込みに際して、正確な処理の同期化を達成することができる。
【発明を実施するための最良の形態】
【００２５】
本実施の形態では、マルチプロセッサシステムにおける同期化システムと同期化方法が提供される。本実施の形態は好適には、全てのプロセッサが、セルとして知られるソフトウェア単位の処理を行うように設計された、コンピュータアーキテクチャにおいて実現することができる。従って本実施の形態は、例えば米国特許第６５２６４９１号公報において開示されるような、セルアーキテクチャとして知られるコンピュータアーキテクチャに用いることができる。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のプロセッサ要素を含め、さらに、このプロセッサ要素に、処理ユニット、ＤＭＡＣおよび８個のサブ処理ユニットを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ（ＶＳ）の構造を有してもよく、この場合、ＶＳに、ＰＵ、ＤＭＡＣおよび４つのＡＰＵを含めてもよい。セルアーキテクチャに用いられるアプリケーションには、同様の構造を有し、同じ命令セット構造をサポートする共通の演算モジュールが記載されている。セルアーキテクチャを用いるマルチプロセッサのコンピュータシステムは、例えば一以上のクライアント、サーバ、ＰＣ（Personal Computer）、携帯端末、ゲーム機、ＰＤＡ（Personal Digital Assistant）、セットトップボックス、電気製品、デジタルテレビ、コンピュータプロセッサを用いるその他の機器など、多くの異なるタイプのコンピュータの形状をなすことができる。
【００２６】
必要に応じて、これら複数のコンピュータまたはコンピュータシステムをそれぞれネットワークのメンバーとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となる。さらにネットワークを利用すれば、ネットワークを介したアプリケーションやデータの迅速な伝送が可能となる。またこの構造により、様々なサイズおよび処理能力を有するネットワークメンバーの形成、ならびにこれらのメンバーによって処理されるアプリケーションの準備を簡略化できる。
【００２７】
本実施の形態における基本的なプロセシングモジュールはプロセッサ要素（ＰＥ；Processor Element）である。図１は、基本的なプロセスモジュールまたはプロセッサ要素（ＰＥ）２００のブロック図を示している。同図のとおり、ＰＥ２００はＩ／Ｏインターフェース２０２、処理ユニット（ＰＵ；Processing Unit）２０４、ＤＭＡＣ（Direct Memory Access Controller）２０６、複数のサブ処理ユニット（ＳＰＵ）２０８、すなわちサブ処理ユニット２０８Ａ、サブ処理ユニット２０８Ｂ、サブ処理ユニット２０８Ｃ、およびサブ処理ユニット２０８Ｄ、およびメモリインターフェース２１０を含む。ローカル（すなわち内部）ＰＥバス２１２はＰＵ２０４、サブ処理ユニット２０８、ＤＭＡＣ２０６、およびメモリインターフェース２１０間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス２１２は例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装すると、より多くのハードウェアが必要となるが、利用可能な帯域が広がる。
【００２８】
ＰＥ２００はデジタルロジック回路を実装する各種方法を用いて構成できる。好適には、ＰＥ２００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII-V族化合物が含まれる。ＰＥ２００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路として実装することもできる。
【００２９】
ＰＥ２００は、広帯域メモリ接続２１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）２１４と密接に連携している。ＤＲＡＭ２１４はＰＥ２００のメインメモリとして機能する。ＤＲＡＭ２１４は好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。ＤＭＡＣ２０６とメモリインターフェース２１０は、ＤＲＡＭ２１４、ＰＥ２００におけるサブ処理ユニット（あるいはサブプロセッサ）２０８、ＰＵ２０４間のデータの転送に用いられる。ここでＤＭＡＣ２０６および／またはメモリインターフェース２１０はサブ処理ユニット２０８とＰＵ２０４とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際には、ＤＭＡＣ２０６および／またはメモリインターフェース２１０は、図のように別の構成とせず、ＰＵ２０４および一以上、望ましくは全てのサブ処理ユニット（ＳＰＵ）２０８と一体化してよい。そのためＤＭＡＣ２０６は点線で表されている。
【００３０】
ＰＵ２０４は、例えばデータおよびアプリケーション処理が可能なスタンドアロン式の標準的なプロセッサでもよい。動作時には、ＰＵ２０４はサブ処理ユニット群２０８によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群２０８は一命令複数データ（ＳＩＭＤ）プロセッサであることが望ましい。ＰＵ２０４の制御下で、サブ処理ユニット群２０８はデータおよびアプリケーションの処理を並列に、かつ独立して実行する。ＤＭＡＣ２０６はＤＲＡＭ２１４に格納されたデータおよびアプリケーションへのＰＵ２０４およびサブ処理ユニット２０８のアクセスを制御する。ここでＰＵ２０４は、サブ処理ユニット２０８のうち一つとして実装されてもよい。この場合、このサブ処理ユニット２０８は、メイン処理ユニットによる処理、すなわち各々のサブ処理ユニット２０８によるデータとアプリケーション処理のスケジューリングと統合処理を行うものとすればよい。
【００３１】
このモジュール構造では、あるコンピュータシステムで使用されるプロセッサ要素２００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのプロセッサ要素を、ワークステーションは２つのプロセッサ要素を、ＰＤＡは１つのプロセッサ要素を使用しうる。あるソフトウェアセルの処理に割り当てられるプロセッサ要素２００のサブ処理ユニット２０８の数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００３２】
図２はサブ処理ユニット２０８の好適な構造および機能を示している。サブ処理ユニット２０８は、ローカルメモリ５０、レジスタ５２、一以上の浮動小終点ユニット３４、および一以上の整数ユニット５６を含む。ここで浮動小終点ユニット３４および整数ユニット５６の数は要求される処理能力によって増減させてよい。ローカルメモリ５０の容量は２５６キロバイト、レジスタ５２の容量は１２８×１２８ビットが望ましい。浮動小終点ユニット３４は毎秒３２０億の速度で浮動小数点演算を行い（３２ＧＦＬＯＰＳ）、整数ユニット５６は毎秒３２０億の速度で整数演算を行う（３２ＧＯＰＳ）ことが望ましい。
【００３３】
ローカルメモリ５０はキャッシュメモリであっても、キャッシュメモリでなくてもよい。ローカルメモリ５０はＳＲＡＭ（Static Random Access Memory）で構成することが望ましい。図１のＰＵ２０４は、ダイレクトメモリアクセスを行う際に、キャッシュ共通のサポートを要求できる。しかしながらサブ処理ユニット２０８がダイレクトメモリアクセスを行うときや、外部機器とアクセスを行うときは、キャッシュ共通のサポートは必要でない。
【００３４】
サブ処理ユニット２０８はさらに、サブ処理ユニット２０８からの、またはサブ処理ユニット２０８へのアプリケーションおよびデータの伝送のためのバスインターフェース（バスＩ／Ｆ）５８を含む。バスＩ／Ｆ５８はＤＭＡＣ２０６と接続していることが望ましく、図２で破線で示したとおり、サブ処理ユニット２０８の内部に一体化して配置されてもよいし、外部に配置されていてもよい。一対のバス６８Ａおよび６８Ｂはそれぞれ、ＤＭＡＣ２０６と、ローカルメモリ５０およびバスＩ／Ｆ５８とを相互に接続する。バス６８Ａ、６８Ｂは５６ビットの幅を有することが望ましい。
【００３５】
サブ処理ユニット２０８はさらに、内部バス６０、６２、および６４を含む。内部バス６０は５６ビットの幅を有することが望ましく、ローカルメモリ５０とレジスタ５２の間の通信を提供する。内部バス６２および内部バス６４はそれぞれ、レジスタ５２と浮動小終点ユニット３４との間、およびレジスタ５２と整数ユニット５６との間の通信を提供する。レジスタ５２から浮動小終点ユニット３４または整数ユニット５６への内部バス６２、６４の幅は、３８４ビットが望ましく、浮動小終点ユニット３４または整数ユニット５６からレジスタ５２への内部バス６２、６４の幅は１２８ビットが望ましい。レジスタ５２から浮動小終点ユニット３４または整数ユニット５６へのバスの幅が、浮動小終点ユニット３４または整数ユニット５６からレジスタ５２へのバスの幅より大きいことは、動作時に、レジスタ５２からのデータの流れの方がより大きいことに対応している。すなわち各演算においては最大３ワードが必要とされるが、一方、各演算の結果は、通常１ワードのみである。
【００３６】
図３から図６は、処理能力を上げるために、図１に示したプロセッサ要素を多数、結合またはパッケージ化したマルチプロセッサシステムを示している。例えば図３では、一以上のプロセッサ要素１Ａ、１Ｂが、一以上のチップパッケージにパッケージ化または結合され、マルチプロセッサユニットのセットを構成している。この構造は、広帯域エンジン（ＢＥ）とも呼ばれる。図３に示すように、広帯域エンジン８０は、２つのプロセッサ要素１Ａ、１Ｂを含み、それらはバス１２Ａ、１２Ｂを介してデータ通信を行うように接続されている。さらに好適には、データバス１６が、プロセッサ要素１Ａ、１Ｂと、共有ＤＲＡＭ１４との通信を実現するために備えられる。一以上の入力／出力（Ｉ／Ｏ）インターフェース２０２Ａ、２０２Ｂ、および、図示しない外部バスが、広帯域エンジン８０と外部素子との通信を提供する。広帯域エンジン８０における各プロセッサ要素１Ａ、１Ｂは、図１において説明したサブ処理ユニット２０８がアプリケーションおよびデータの処理を並列かつ独立的に行うのと同様に、データおよびアプリケーションの処理を並列かつ独立的に行う。
【００３７】
図４は、複数のプロセッサ要素により構築されるマルチプロセッサシステムのブロック図を示しており、ここでマルチプロセッサシステム１００はＤＲＡＭ１０６などのメモリと接続した複数のプロセッサ１０２、すなわち１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄを含む。ここでＤＲＡＭ１０６は絶対的に必要なものではないため、点線で示されている。実際には一以上のプロセッサ１０２は図示しない個々のメモリを有していてよく、この場合、ＤＲＡＭ１０６は必要でなくなる。
【００３８】
プロセッサ１０２の１つ、例えばプロセッサ１０２Ａは、メイン処理ユニットであることが望ましい。プロセッサ１０２Ｂ、１０２Ｃ、１０２Ｄなど、他のプロセッサ１０２はサブ処理ユニット（ＳＰＵ）であることが望ましい。プロセッサ１０２が全て同じ内部構成を有する必要はなく、実際には異種の構造でも同種の構造でもよい。動作中は、メイン処理ユニットであるプロセッサ１０２Ａはサブ処理ユニットであるプロセッサ１０２Ｂ〜１０２Ｄが行うデータおよびアプリケーションの処理のスケジューリングおよび調整を行うことが望ましい。これにより、サブ処理ユニットであるプロセッサ１０２Ｂ〜１０２Ｄはそれらのデータおよびアプリケーションの処理を並列かつ独立的に行う。
【００３９】
ここでメイン処理ユニットであるプロセッサ１０２Ａは、同一チップ、同一パッケージ、同一回路基板、同一製品等において、サブ処理ユニットであるプロセッサ１０２Ｂ〜１０２Ｄに対し局所的に配置してよい。あるいは、メイン処理ユニットであるプロセッサ１０２Ａは、バスを介して接続された異なる製品、インターネットのような通信ネットワーク等において、サブ処理ユニットであるプロセッサ１０２Ｂ〜１０２Ｄから隔離して配置してもよい。同様に、サブ処理ユニットであるプロセッサ１０２Ｂ〜１０２Ｄを互いに局所的に、または隔離して配置してもよい。
【００４０】
導入されるサブ処理ユニットには、図４のマルチプロセッサシステム１００、図１のプロセッサ要素２００、および／または図３の広帯域エンジン８０のようなマルチプロセッサシステム、およびその中のサブ処理ユニットが、さらに１つ以上含まれていてよい。上述の説明から明らかなように、導入されるサブ処理ユニットは、それぞれがメイン処理ユニットと対応した、サブ処理ユニットのグループを１つ以上含んでいてよい。図４のマルチプロセッサシステム１００では、メイン処理ユニットはプロセッサ１０２Ａであり、サブ処理ユニットのグループにはプロセッサ１０２Ｂ〜１０２Ｄが含まれ、それらはメイン処理ユニットであるプロセッサ１０２Ａと対応している。同様に、図１のプロセッサ要素２００を採用した場合、そこに含まれるサブ処理ユニットがサブ処理ユニット２０８Ａ〜２０８Ｄをさらに含み、それらがさらなるメイン処理ユニット２０４に対応していてもよい。さらに、図３の広帯域エンジン８０を採用した場合、そこに含まれるサブ処理ユニットが、サブ処理ユニット２０８Ａ１〜２０８Ｄ１およびサブ処理ユニット２０８Ａ２〜２０８Ｄ２の２つ（またはそれ以上）のグループを含んでよく、それぞれメイン処理ユニット２０４Ａおよびメイン処理ユニット２０４Ｂに対応していてよい。
【００４１】
ここで、導入されるサブ処理ユニットのグループ（および対応するメイン処理ユニット）は、図３で示したように、マルチプロセッサユニットのセットの一部であってよく、このときサブ処理ユニットの各グループは、共通のデータバス１２Ａおよび１２Ｂを共有する。あるいは、導入されるサブ処理ユニットの各グループはそのうち１つ以上が、図１または図２に示すようにスタンドアロン式のマルチプロセッサユニットであってもよく、この場合はサブ処理ユニットの各グループ間で共通のデータバスは存在しない。さらに、導入されるサブ処理ユニットの各グループはそのうち１つ以上が、分散型のマルチプロセッサユニットの少なくとも一部をなし、そのグループに含まれるサブ処理ユニットのうちの少なくともいずれかのサブ処理ユニットが他のサブ処理ユニットと隔離して設置されてよい。
【００４２】
図５は、セット構造またはスタンドアロン構造の一部であり、同一または別の製品、かつ／または同一または別の場所における、同一または別の回路基板に配置された、マルチプロセッサユニットを示している。図５に示すとおり、例えば一対のプロセッサ要素２００Ａおよび２００Ｂは、同一の回路基板４０上に載置されている。この例ではプロセッサ要素２００Ａおよび２００Ｂが示されているが、図１のプロセッサ要素２００のセットを含む、一対の広帯域エンジン８０を搭載するなどでもよい。プロセッサ要素２００Ａおよび２００Ｂは、広帯域インターフェース（ＢＩＦ）４２によって相互に接続されている。
【００４３】
図６は、単一の製品４４の、異なる回路基板４０Ａ、４０Ｂ上に載置された複数のプロセッサ要素２００Ａ〜２００Ｄを示している。詳細には、プロセッサ要素２００Ａおよび２００Ｂは同一の回路基板４０Ａ上に載置され、プロセッサ要素２００Ｃおよび２００Ｄはそれと異なる回路基板４０Ｂ上に載置されている。しかし回路基板４０Ａおよび４０Ｂは、単一の製品４４内に搭載される。従ってプロセッサ要素２００Ａ〜２００Ｄ間のデータ通信は、回路基板内部および回路基板外部に渡る広帯域インターフェース（ＢＩＦ）５２により行われる。この構成においても、プロセッサ要素２００Ａ〜２００Ｄは広帯域エンジン８０としてよい。
【００４４】
上述のとおり、各マルチプロセッサユニットを構成するサブ処理ユニット（例えば１０２Ｂ〜１０２Ｄおよび／または２０８Ａ〜２０８Ｄ）は、異なる製品に配置されてもよい。その場合、それらの製品（およびサブ処理ユニット）どうしのデータ通信には、単一の製品と比べ、より多くのバスインターフェースおよび／または広帯域インターフェースが必要である。この点を図７を参照して説明する。図７において、スタンドアロン式のプロセッサ要素２００または、プロセッサ要素のセットである広帯域エンジン８０はマルチプロセッサシステム５００を構成する複数の製品に配されている。コンピュータおよび／または演算機器である、マルチプロセッサシステム５００の要素またはメンバーは、ネットワーク５０４を介してそれぞれ通信を行う。ネットワーク５０４はＬＡＮ（Local Area Network）、インターネットなどのグローバルネットワーク、またはその他のコンピュータネットワークでよい。
【００４５】
ネットワーク５０４に接続するメンバーは例えば、クライアントコンピュータ（以下、クライアントと呼ぶ）５０６、サーバコンピュータ（以下、サーバと呼ぶ）５０８、個人携帯端末（ＰＤＡ）５１０、デジタルテレビ（ＤＴＶ）５１２、およびその他の有線、または無線のコンピュータおよび演算機器を含む。例えばクライアント５０６Ａは、一以上のプロセッサ要素２００または他の好適なマルチプロセッサシステムで構成されるラップトップコンピュータでよい。クライアント５０６Ｂは、一以上のプロセッサ要素２００または他の好適なマルチプロセッサシステムで構成されるデスクトップコンピュータ、またはセットトップボックスでよい。さらにサーバ５０８Ａは、一以上のプロセッサ要素２００で構成される、データベース機能を有する管理機器であってもよい。
【００４６】
マルチプロセッサシステム５００の処理機能は、例えば１つの製品にまとめてに載置された複数のプロセッサ要素２００、または複数の製品に離れて載置された複数のプロセッサ要素２００に依存する。この点を図８を参照して説明する。図８は、一以上の実施の形態に関連するコンピュータネットワーク全体のブロック図を示している。プロセッサ要素２００および／または、複数のプロセッサ要素２００で構成される広帯域エンジン８０は、マルチプロセッサシステム５００全体に分散するアーキテクチャの実現に用いられる。
【００４７】
マルチプロセッサシステム５００のサーバ５０８はクライアント５０６より多くのデータおよびアプリケーションの処理を行うため、サーバ５０８はクライアント５０６より多くのコンピュータモジュール、例えばプロセッサ要素２００、を備える。一方、この例においてＰＤＡ５１０は処理量が最も少ない。従ってＰＤＡ５１０が備えるプロセッサ要素２００は最も少なく、例えば単一のプロセッサ要素２００でよい。ＤＴＶ５１２は概ねクライアント５０６およびサーバ５０８の中間の処理量を有する。従ってＤＴＶ５１２が備えるプロセッサ要素の数は、クライアント５０６およびサーバ５０８の中間となる。
【００４８】
図９は本実施の形態におけるマルチプロセッサシステムを示しており、メイン処理ユニット（ＰＵ）２０４、複数のサブ処理ユニット（ＳＰＵ）２０８Ａ〜２０８Ｄ（以後、それらをまとめてサブ処理ユニット２０８ともよぶ）、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）２０６、メモリインターフェース２１０を含む。さらにＤＲＡＭ２１４が備えられ、ＰＵ２０４およびサブ処理ユニット２０８の間で共通のメモリとして共有される。本実施の形態におけるＤＭＡＣ２０６はオン・チップデバイスであることが望ましく、これが２つの場所の間のデータ転送を制御することにより、演算システムのメインプロセッサ、この例ではメイン処理ユニット２０４がデータ転送を司る必要がなくなる。ＤＲＡＭ２１４は複数のダイナミックランダムアクセスメモリで構成することが望ましい。しかしながら、ＤＲＡＭ２１４はスタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、ホログラフィックメモリなどの異なる種類のメモリを含んでもよい。
【００４９】
以下に詳述する如く、サブ処理ユニット２０８はそれぞれ、ＤＲＡＭ２１４における共有データへのアクセスを制御するバッファ同期化コントローラ８００Ａ〜８００Ｄを含む。サブ処理ユニット２０８のひとつが通常のソフトウェアプログラム制御の結果、またはプログラムの割り込みにより、ＤＲＡＭ２１４からの情報を要求した際、ＤＲＡＭ２１４におけるアクセス先のメモリ領域には最新のデータが格納されていなければならない。したがって、サブプロセッサ間で共有されるメモリにおいて、正確なデータに確実にアクセスするためには、サブプロセッサによる読み出しや書き込み処理を同期化する必要がある。本実施の形態によれば、以下に説明するように、例えばＤＲＡＭ２１４に対する読み出しや書き込みに際して、正確な処理の同期化を達成することができる。
【００５０】
本実施の形態では、サブ処理ユニット２０８Ａ〜２０８Ｄはそれぞれ、プロセッサ間で共有されるデータに対する読み出しおよび書き込みを制御するためのバッファ同期化コントローラ８００Ａ〜８００Ｄを有する。すなわち各バッファ同期化コントローラ８００Ａ〜８００Ｄは、ＤＲＡＭ２１４内の共有データに対して読み出しまたは書き込みが行われているかどうかをチェックする機能を有し、その読み出しおよび書き込みを記録するための共有パラメータデータの設定および保存を行い、サブ処理ユニット２０８間の同期化を実行することができる。共有パラメータデータは、ＤＲＡＭ２１４のような共有メモリのうち、共有パラメータデータメモリバッファ８０２のような記憶領域に格納することができる。
【００５１】
図１０はバッファ同期化コントローラ８００の構成を示している。バッファ同期化コントローラ８００はソフトウェアまたは各サブ処理ユニット２０８内のハードウェアによって実現される。
【００５２】
バッファ同期化コントローラ８００は、コントロールユニット８１２、初期化ユニット８１４、同期化ユニット８１６、およびデータ転送ユニット８１８を含む。初期化ユニット８１４は共有パラメータデータメモリバッファ８０２内に同期化バッファのエントリー（例えば同期化バッファ８０２）を生成する。これは、サブ処理ユニット２０８間の同期化において用いる共有パラメータデータ、または共有パラメータデータへのポインタを格納する領域である。もしある共有データを処理するサブ処理ユニット２０８が最初のサブ処理ユニット２０８であった場合、そのサブ処理ユニット２０８の初期化ユニット８１４は共有パラメータを生成し、その共有パラメータ、またはそのポインタを共有パラメータデータメモリバッファ８０２へ格納する。そして、その共有パラメータデータへのポインタを返す。もしその共有データを処理するサブ処理ユニット２０８が最初のプロセッサでない場合は、そのサブ処理ユニット２０８の初期化ユニット８１４は共有パラメータへのポインタを取得し、その共有パラメータへのポインタをバッファ同期化コントローラ８００へ返す。
【００５３】
共有パラメータデータとしては、書き込みロック（ＷＬ；Writer Lock）および読み出しカウント（ＲＣ；Reader Count）の２つの変数を含むことが望ましい。ＷＬおよびＲＣは、共有パラメータデータメモリバッファ８０２へ格納することが望ましい。または、それらの変数を指すインデックスポインタを共有パラメータデータメモリバッファ８０２へ格納してもよい。変数ＷＬにはフラグが設定され、例えばあるサブ処理ユニット２０８が共有メモリであるＤＲＡＭ２１４へデータの書き込みを行っている、通常、ＷＲＩＴＥと呼ばれる状態をＷＬ＝１とする。ＷＬフラグがＷＬ＝１など所定の値に設定されると、他のサブ処理ユニット２０８はその共有データへアクセスできないこととする。
【００５４】
変数ＲＣは共有メモリであるＤＲＡＭ２１４における共有データを読み出している、通常、ＲＥＡＤと呼ばれる状態のサブ処理ユニット２０８の数を記録する。本実施の形態において共有メモリであるＤＲＡＭ２１４へのＷＲＩＴＥ状態を発生させるためには、他のプロセッサがその共有データを読み出そうとしないことが望ましい。例えば、この「読み出そうとされない」状態は、ＲＣがゼロなど、所定の値となることによって確定することができる。新たなデータが書き込まれ、さらなる書き込みがなされずに、ＷＬがゼロに設定されると、サブ処理ユニット２０８は読み出し動作により共有メモリであるＤＲＡＭ２１４のデータを読み出すことができ、変数ＲＣにはその共有データへアクセスしているサブ処理ユニット２０８の数に対応した値を設定することができる。本実施の形態では、あるサブ処理ユニット２０８が共有メモリであるＤＲＡＭ２１４に対し読み出しまたは書き込みを行おうとした際に、そのデータを他のサブ処理ユニット２０８がアクセスし更新していた場合は、そのデータがＤＲＡＭ２１４内で共有として開放されるまで、先のサブ処理ユニット２０８はそのデータに対する読み出しまたは書き込みを開始できない。このことは、マルチプロセッサシステムにおいて、フレームの表示時間内に処理すべき画像フレームの処理の一部を各プロセッサに割り当てる、画像処理アプリケーションのようなアプリケーションにおいては特に重要である。プロセッサ動作の同期化は、このようなことから必要とされる。
【００５５】
書き込み動作においてコントロールユニット８１２は、共有パラメータへのポインタおよび、書き込みを行う共有データへのポインタを受け付ける。そしてコントロールユニット８１２はデータの書き込みの準備ができているかどうかを判定する。次に同期化ユニット８１６は変数ＷＬおよび変数ＲＣをチェックするなど、共有パラメータデータをチェックし、書き込みが可能であるかどうかを判定する。同期化ユニット８１６から許諾信号を受信すると、コントロールユニット８１２はデータ転送ユニット８１８に対しデータの転送を要求する。最後に、データ転送ユニット８１８は次のサブ処理ユニット２０８がアクセスできるように、共有データを共有メモリであるＤＲＡＭ２１４の領域へ転送する。
【００５６】
共有パラメータには例えばメモリの先頭アドレスやサイズなど他のメモリの情報、パラメータセットの種類やそれに係るパラメータなど同期化の種別、同期化の状態、およびバッファの種類、データ精度、サイズなどデータバッファの種別を、さらに含めてもよい。ただしそれらに限定されない。加えて共有パラメータデータには前述した変数ＷＬおよび変数ＲＣが含まれる。共有パラメータデータは複数のサブ処理ユニット２０８で共有され、それに含まれる情報によって、各サブ処理ユニット２０８がアクセスしている共有データが最新のものであることが保証される。
【００５７】
図１１は例えば画像フレームを処理する画像処理アプリケーションにおいて、パケットなど、情報のデータストリームを処理する際の、プロセッサと共有データの相互関係を示している。ＰＵ２０４またはサブ処理ユニット２０８は、システムメモリであるＤＲＡＭ２１４にある共有パラメータデータまたは共有パラメータデータへのポインタを格納する共有パラメータデータバッファメモリ（同期化バッファ）を初期化することができる。従って同図で示すように、ＰＵ２０４はフレーム０のために共有されるデータＤ０を共有メモリであるＤＲＡＭ２１４に書き込む（矢印９０２）。共有データＤｍを格納するための共有メモリであるＤＲＡＭ２１４内のメモリ領域である、同期化オブジェクトバッファsyncBを生成するための擬似コードは以下のとおりである。
Initialize synchronization
create buffer (syncB)
Main loop:
Create data Dm
Write Dm to syncB
m = m+1
【００５８】
データＤ０の処理として、サブ処理ユニット２０８はそのデータに対する読み出しおよび書き込みの処理を行う必要がある。図１１では共有メモリ、すなわちＤＲＡＭ２１４にデータＤ０が書き込まれると、共有データｄ０ｉおよびｄ０ｊがサブ処理ユニット２０８Ａ、２２０８Ｂにより読み出され、処理がなされている。フレーム０のためのデータの処理が完了すると、ＰＵ２０４が次のフレームであるフレーム１を取得でき、フレーム０と同様に処理を行うことができる。サブ処理ユニット（ＳＰＵ）が共有データに対する読み出しを実行するための擬似コードは以下のとおりである。
Initialize synchronization:
Get data from sync buffer (syncB)
Main loop:
Sub loop:
get place of data...i
get data from and calculate loop while (i ＜ num)
【００５９】
つまり図１１に示すとおり、ＰＵ２０４はＤ０を準備し、サブ処理ユニット２０８Ａおよび２０８ＢはＤ０を使用する。サブ処理ユニット２０８がＤ０の一部を読み出そうとした際、ＰＵ２０４によってＤ０が書き込まれていなかった場合は、サブ処理ユニット２０８は待ち状態となる。ＰＵ２０４がＤ０の書き込みを終えた際、サブ処理ユニット２０８は読み出しを開始する。同期化バッファはそのようなデータの同期化を利用する。同期化バッファにはさらにバッファの領域をもたせてもよい。例えば同期化バッファＡがＡ１、Ａ２、Ａ３、・・・、ＡＮなる区画を有していてもよい。例えばあるプロセッサ（消費者）がＡ３を読み出したい場合、他のプロセッサ（生産者）がＡ３を生成することにより、消費者は直ちに読み出しを行うことができる。
【００６０】
共有メモリへの情報の書き込みは、サブ処理ユニット２０８によるＷＲＩＴＥコマンドに対応して発生する。あるサブ処理ユニット２０８が共有メモリ、すなわちＤＲＡＭ２１４のデータにアクセスし、そのデータを更新するのに対応して、バッファ同期化コントローラ８００が動作するとともにＷＲＩＴＥ状態が発生する。あるサブ処理ユニット２０８が書き込み要求を行った際はまず、アンロック、例えばＷＬ＝０の状態となるまで待機状態となる。次にＷＬをロック、例えばＷＬ＝１の状態とする。そしていずれのプロセッサも読み出しを行っていないことを示す状態、例えばＲＣ＝０の状態となるまで待機する。そして共有メモリであるＤＲＡＭ２１４への書き込みが行われる。次にアンロック、例えばＷＬをゼロにリセットするなどの状態への設定を行う。以上の手順は図１２のフローチャートに示されている。
【００６１】
読み出しはＰＵ２０４、サブ処理ユニット２０８が共有メモリであるＤＲＡＭ２１４のデータにアクセスし、そのデータを更新しない場合に発生する。すなわち単にメモリ領域が読み出される。コントロールユニット８１２またはバッファ同期化コントローラ８００において、コントロールユニット８１２はあるサブ処理ユニット２０８からの共有データの読み出し要求を受け付けると、読み出し要求を同期化ユニット８１６に対して発行する。同期化ユニット８１６は共有パラメータデータに基づき読み出し要求を許諾するかどうかを判定する。共有パラメータデータが適切な状態であった場合、同期化ユニット８１６はコントロールユニット８１２に対し許諾信号を発行する。これに対応し、コントロールユニット８１２はサブ処理ユニット２０８が読み出すデータの転送許可の要求をデータ転送ユニット８１８へ発行する。データ転送ユニット８１８が発行した許諾信号に対応して、コントロールユニット８１２は、共有データの読み出し要求を行ったサブ処理ユニット２０８の、共有メモリであるＤＲＡＭ２１４へのアクセス許可の信号を発行して、共有データの読み出しを承認する。この読み出し要求に際してはまず、アンロック、例えばＷＬ＝０の状態となるまで待機し、リーダカウント変数をインクリメント、例えばＲＣ＝ＲＣ＋１とする。次に共有メモリからのデータの読み出しが行われる。そして読み出しが完了するとリーダカウント変数ＲＣをデクリメントする。以上の手順は図１３のフローチャートに示されている。
【００６２】
本実施の形態は特にＪＰＥＧやＭＰＥＧの符号化および複合化において用いられる符号化／複合化コードなどを含む画像化アプリケーションに特に有用である。さらには互いに通信を行うＰＵおよびＳＰＵなどを有するマルチプロセッサを利用するいかなるアプリケーションにも有用である。
【００６３】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
【図面の簡単な説明】
【００６４】
【図１】基本的なプロセスモジュールまたはプロセッサ要素のブロック図である。
【図２】サブ処理ユニットの好適な構造および機能を示す図である。
【図３】一以上のチップパッケージ内でパッケージ化または接続し、マルチプロセッサユニットのセットを構成することのできる、２つのプロセッサ要素を示す図である。
【図４】マルチプロセッサシステムの好適な実施形態のブロック図である。
【図５】セット構造の一部、およびスタンドアロン構造の一部としてのマルチプロセッサユニットを示す図である。
【図６】単一の製品内の異なる回路基板に載置することのできる複数のマルチプロセッサユニットを示す図である。
【図７】スタンドアロン式のマルチプロセッサ要素または、マルチプロセッサシステムを構成する複数の製品に分散させることのできる、広帯域エンジン（マルチプロセッサ要素のセット）を示す図である。
【図８】一以上の実施の形態におけるコンピュータネットワーク全体のブロック図である。
【図９】好適な実施の形態において、バッファ同期化コントローラをそれぞれ有するサブプロセッサを含むマルチプロセッサシステムを示す図である。
【図１０】本実施の形態におけるバッファ同期化コントローラの好適な配置を示す図である。
【図１１】マルチプロセッサシステムにおいてプロセッサにより共有されるデータの処理を示す図である。
【図１２】本実施の形態において共有メモリへの書き込みを行うフローチャートである。
【図１３】本実施の形態において共有メモリからの読み出しを行うフローチャートである。
【符号の説明】
【００６５】
８０  広帯域エンジン、  ２００  プロセッサ要素、  ２０２  Ｉ／Ｏインターフェース、  ２０４  ＰＵ、  ２０６  ＤＭＡＣ、  ２０８  サブ処理ユニット、  ２１０  メモリインターフェース、  ２１４  共有メモリ、  ８００  バッファ同期化コントローラ、  ８０２  共有パラメータデータメモリバッファ、  ８１２  コントロールユニット、  ８１４  初期化ユニット、  ８１６  同期化ユニット、  ８１８  データ転送ユニット。
【図１】
2006202287.tif 000003
【図２】
2006202287.tif 000004
【図３】
2006202287.tif 000005
【図４】
2006202287.tif 000006
【図５】
2006202287.tif 000007
【図６】
2006202287.tif 000008
【図８】
2006202287.tif 000009
【図９】
2006202287.tif 000010
【図１０】
2006202287.tif 000011
【図１１】
2006202287.tif 000012
【図１２】
2006202287.tif 000013
【図１３】
2006202287.tif 000014
【図７】
2006202287.tif 000015