(57)【要約】【課題】データアクセスの処理に対する高速化が求められている。【解決手段】まず管理プロセッサ１０２Ｂは、一以上のプログラムを実行するためにローカルメモリ１０４Ａへのデータ転送を起動する起動デバイス１１６からの要求を受け付ける。ローカルメモリ１０４Ａは、共有メモリと通信することのできる複数の並列プロセッサの１つと連動する。ローカルメモリ１０４Ａへのデータ転送が遂行されると、ローカルメモリ１０４Ａへのデータ転送が完了したことを示す同期信号が生成される。【選択図】図５
2006221645.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリと通信を行うことができる複数の並列プロセッサと、
前記並列プロセッサのうち第１のプロセッサと連動し、前記第１のプロセッサにおいて１つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
前記第１のプロセッサとそれに対応する前記ローカルメモリとに連結され、（１）前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および（２）前記第１のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行うプロセッサインターフェース回路と、
を備え、
前記プロセッサインターフェース回路は前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
【請求項２】
請求項１に記載の装置であって、前記第１のプロセッサは前記同期信号に応じて、転送されたデータを前記ローカルメモリから読み出すことを特徴とする装置。
【請求項３】
請求項１または２に記載の装置であって、前記第１のプロセッサは前記同期信号に応じて、転送されたデータの、前記ローカルメモリから前記共有メモリへの転送を起動することを特徴とする装置。
【請求項４】
請求項１から３のいずれかに記載の装置であって、前記プロセッサインターフェース回路は、（１）前記第１のプロセッサによる同期再生要求、および（２）前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了に応じて、前記同期信号を生成することを特徴とする装置。
【請求項５】
請求項４に記載の装置であって、
前記プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、
前記同期再生要求は、前記プロセッサが読み出し可能な値が前記同期再生要求がなされたことを示すように、前記第１のプロセッサが前記チャンネルインターフェース回路に同期命令を書き込むことによって発行されることを特徴とする装置。
【請求項６】
請求項５に記載の装置であって、前記プロセッサインターフェース回路は、前記プロセッサが読み出し可能な値が、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示すように、前記チャンネルインターフェース回路に同期命令を書き込むことによって、前記同期信号を生成することを特徴とする装置。
【請求項７】
請求項１から６のいずれかに記載の装置であって、
前記プロセッサインターフェース回路は、前記ローカルメモリへ、および前記ローカルメモリからのデータ転送を遂行するメモリインターフェース回路を含み、
前記メモリインターフェース回路は、少なくとも、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した時点をモニタすることによって前記同期信号の生成を開始することを特徴とする装置。
【請求項８】
請求項６に記載の装置であって、前記第１のプロセッサは、前記チャンネルインターフェース回路へ読み出し命令を発行し、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す前記プロセッサが読み出し可能な値を取得することにより、前記同期信号を受信することを特徴とする装置。
【請求項９】
請求項１から３のいずれかに記載の装置であって、前記第１のプロセッサは、前記並列プロセッサのうち第２のプロセッサが発行した、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号に応じて、前記同期信号を求める同期再生要求を前記プロセッサインターフェース回路に発行することを特徴とする装置。
【請求項１０】
請求項９に記載の装置であって、前記第２のプロセッサは、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を起動することを特徴とする装置。
【請求項１１】
請求項９または１０に記載の装置であって、
前記プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、
前記通知信号は、前記プロセッサが読み出し可能な値が前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示すように、前記第２のプロセッサが前記チャンネルインターフェース回路に同期命令を書き込むことによって発行され、
前記第１のプロセッサは、前記チャンネルインターフェース回路へ読み出し命令を発行し、前記プロセッサが読み出し可能な値を取得することにより、前記通知信号を受信することを特徴とする装置。
【請求項１２】
共有メモリと通信を行うことができる複数の並列プロセッサと、
前記並列プロセッサのそれぞれと連動し、各プロセッサにおいて１つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行う複数のローカルメモリと、
各プロセッサとそれに対応する各ローカルメモリとに連結され、（１）前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および（２）対応するプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行う複数のプロセッサインターフェース回路と、
を備え、
前記プロセッサインターフェース回路はそれぞれ、対応する前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
【請求項１３】
共有メモリと通信を行うことができる複数の並列プロセッサと、
前記並列プロセッサのうち第１のプロセッサと連動し、前記第１のプロセッサにおいて１つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
前記第１のプロセッサとそれに対応する前記ローカルメモリとに連結され、（１）前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および（２）前記第１のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行うプロセッサインターフェース回路と、
を備え、
前記プロセッサインターフェース回路は、（１）前記並列プロセッサのうち第２のプロセッサによる同期再生要求、および（２）前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了に応じて、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
【請求項１４】
請求項１３に記載の装置であって、
前記プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、
前記同期再生要求は、前記プロセッサが読み出し可能な値が前記同期再生要求がなされたことを示すように、前記第２のプロセッサが前記チャンネルインターフェース回路に同期命令を書き込むことによって発行されることを特徴とする装置。
【請求項１５】
請求項１４に記載の装置であって、
前記プロセッサインターフェース回路は、前記ローカルメモリへ、および前記ローカルメモリからのデータ転送を遂行するメモリインターフェース回路を含み、
前記メモリインターフェース回路は、少なくとも、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した時点をモニタすることによって前記同期信号の生成を開始し、
前記プロセッサインターフェース回路は、前記プロセッサが読み出し可能な値が前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示すように、前記チャンネルインターフェース回路に同期命令を書き込むことにより、前記同期信号を生成することを特徴とする装置。
【請求項１６】
請求項１３から１５のいずれかに記載の装置であって、前記第１のプロセッサは、前記第２のプロセッサが発行した、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す通知信号に応じて、（１）転送されたデータの前記ローカルメモリからの読み出し、および（２）転送されたデータの前記ローカルメモリから前記共有メモリへの転送の起動、の少なくとも一方を行うことを特徴とする装置。
【請求項１７】
請求項９または１３から１６のいずれかに記載の装置であって、
他の並列プロセッサ以外のデバイスが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を起動し、
前記デバイスは、前記第２のプロセッサへ、前記データ転送が起動したことを示す割り込みを行うことを特徴とする装置。
【請求項１８】
請求項１３から１７のいずれかに記載の装置であって、
前記並列プロセッサのそれぞれと連動し、各プロセッサにおいて１つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行う複数のローカルメモリと、
各プロセッサとそれに対応する各ローカルメモリとに連結され、（１）前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および（２）対応するプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行う複数のプロセッサインターフェース回路と、
を備え、
前記プロセッサインターフェース回路はそれぞれ、（１）対応するプロセッサ以外のプロセッサのうちの１つによる同期再生要求、および（２）対応する前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了に応じて、対応する前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
【請求項１９】
共有メモリと通信を行うことができる複数の並列プロセッサと、
前記並列プロセッサのうち第１のプロセッサと連動し、前記第１のプロセッサにおいて１つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
前記第１のプロセッサとそれに対応する前記ローカルメモリとに連結され、（１）前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および（２）前記第１のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して動作可能なプロセッサインターフェース回路と、
を備え、
前記プロセッサインターフェース回路は前記ローカルメモリへ、または前記ローカルメモリからの複数のデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
【請求項２０】
請求項１９に記載の装置であって、前記プロセッサインターフェース回路は、起動した、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送のそれぞれに対応する同期フラグを有する同期キューを含むことを特徴とする装置。
【請求項２１】
請求項２０に記載の装置であって、前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの各データ転送が完了したかどうかに応じて、対応する同期フラグの値を変更することを特徴とする装置。
【請求項２２】
請求項２１に記載の装置であって、前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの前記複数のデータ転送が完了したことを、それぞれに対応する同期フラグの値が示したとき、前記同期信号を生成することを特徴とする装置。
【請求項２３】
請求項２０に記載の装置であって、
前記ローカルメモリへ、または前記ローカルメモリからの複数のデータ転送は、第１のデータ転送セットを含み、
前記プロセッサインターフェース回路は記憶回路を含み、第１の同期再生要求に応じて、前記第１のデータ転送セットにそれぞれ対応した同期フラグの値である第１の同期フラグ値セットを前記記憶回路にコピーし、
前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの各データ転送の完了に応じて、前記記憶回路内の前記第１の同期フラグ値セットの値を変更し、
前記プロセッサインターフェース回路は、前記第１の同期フラグ値セットが、前記ローカルメモリへ、または前記ローカルメモリからの前記第１のデータ転送セットが完了したことを示したとき、第１の同期信号を生成することを特徴とする装置。
【請求項２４】
請求項２３に記載の装置であって、
前記複数のデータ転送は少なくとも第２のデータ転送セットを含み、
前記プロセッサインターフェース回路は、第２の同期再生要求に応じて、前記第２のデータ転送セットにそれぞれ対応した同期フラグの値である第２の同期フラグ値セットを前記記憶回路にコピーし、
前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの、前記第２のデータ転送セットの各データ転送の完了に応じて、前記記憶回路内の前記第２の同期フラグ値セットの値を変更し、
前記プロセッサインターフェース回路は、前記第２の同期フラグ値セットが、前記ローカルメモリへ、または前記ローカルメモリからの前記第２のデータ転送セットが完了したことを示したとき、第２の同期信号を生成することを特徴とする装置。
【請求項２５】
共有メモリと通信を行うことができる複数の並列プロセッサと、
前記並列プロセッサのうち第１のプロセッサと連動し、前記第１のプロセッサにおいて１つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
前記第１のプロセッサとそれに対応する前記ローカルメモリとに連結され、（１）前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および（２）前記第１のプロセッサとその他のプロセッサとの間の通信の遂行、（３）（ａ）少なくとも前記第１のプロセッサおよび前記並列プロセッサのうち第２のプロセッサのいずれかによる同期再生要求、および（ｂ）前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了、に応じた、前記ローカルメモリへ、または前記ローカルメモリからの前記データ転送が完了したことを示す同期信号の生成、を行うプロセッサインターフェース回路と、
を備え、
少なくとも前記第１のプロセッサおよび前記第２のプロセッサの一方は、前記装置と通信ネットワークを介して通信している外部機器による、前記ローカルメモリへのデータ転送の起動に応じて、前記同期再生要求を発行することを特徴とする装置。
【請求項２６】
請求項２５に記載の装置であって、前記外部機器は前記第２のプロセッサに対し、前記データ転送を起動したことを示す割り込み信号を発行することを特徴とする装置。
【請求項２７】
請求項２６に記載の装置であって、前記第２のプロセッサは、前記データ転送が起動したことを前記第１のプロセッサに対して示す通知信号を生成することを特徴とする装置。
【請求項２８】
請求項１から１１および２５から２７のいずれかに記載の装置であって、前記第１のプロセッサは、前記同期信号に応じて、（１）転送されたデータの前記ローカルメモリからの読み出し、および（２）転送されたデータの前記ローカルメモリから前記共有メモリへの転送の起動、の少なくとも一方を行うことを特徴とする装置。
【請求項２９】
請求項１から２８のいずれかに記載の装置であって、前記ローカルメモリはハードウェア・キャッシュメモリでないことを特徴とする装置。
【請求項３０】
共有メモリと通信を行うことができる複数の並列プロセッサのうち第１のプロセッサにおいて１つ以上のプログラムを実行するために前記第１のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する起動デバイスからの要求を受け付けるステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を遂行するステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成するステップと、
を含むことを特徴とする方法。  
【請求項３１】
請求項３０に記載の方法であって、前記同期信号に応じて、転送されたデータを前記ローカルメモリから前記第１のプロセッサに読み出すステップをさらに含むことを特徴とする方法。
【請求項３２】
請求項３０または３１に記載の方法であって、前記同期信号に応じて、転送されたデータの前記ローカルメモリから前記共有メモリへの転送を、前記第１のプロセッサが起動するステップをさらに含むことを特徴とする方法。
【請求項３３】
請求項３０から３２のいずれかに記載の方法であって、（１）前記第１のプロセッサによる同期再生要求、および（２）前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了、に応じて、前記同期信号を生成するステップをさらに含むことを特徴とする方法。
【請求項３４】
請求項３０から３３のいずれかに記載の方法であって、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号を、前記第１のプロセッサが前記並列プロセッサのうち第２のプロセッサから受信するステップと、
前記第１のプロセッサが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、前記同期信号を求める同期再生要求を前記第１のプロセッサが発行するステップと、
をさらに含むことを特徴とする方法。
【請求項３５】
請求項３０から３４のいずれかに記載の方法であって、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を起動する起動デバイスは前記第２のプロセッサであることを特徴とする方法。
【請求項３６】
請求項３０から３４のいずれかに記載の方法であって、
前記起動デバイスは前記並列プロセッサのうちの１つでなく、
前記起動デバイスは、前記第２のプロセッサに対し、前記データ転送を起動したことを示す割り込みを行うことを特徴とする方法。
【請求項３７】
共有メモリと通信を行うことができる複数の並列プロセッサのうち第１のプロセッサにおいて１つ以上のプログラムを実行するために前記第１のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する起動デバイスからの要求を受け付けるステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を遂行するステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す、前記起動デバイスからの通知信号を、前記並列プロセッサのうち第２のプロセッサが受信するステップと、
前記第２のプロセッサが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、同期信号を求める同期再生要求を前記第２のプロセッサが発行するステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したときに、前記同期信号を生成するステップと、
を含むことを特徴とする方法。  
【請求項３８】
請求項３７に記載の方法であって、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す前記第２のプロセッサからの通知信号に応じて、（１）転送されたデータを前記ローカルメモリから読み出すステップ、および（２）転送されたデータの前記ローカルメモリから前記共有メモリへの転送を起動するステップ、の少なくとも一方をさらに含むことを特徴とする方法。
【請求項３９】
共有メモリと通信を行うことができる複数の並列プロセッサのうち第１のプロセッサにおいて１つ以上のプログラムを実行するために前記第１のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する、前記並列プロセッサと通信ネットワークを介して通信している外部機器からの要求を受け付けるステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号を、前記第１のプロセッサおよび、前記複数の並列プロセッサのうち第２のプロセッサ、のいずれかが、前記外部機器から受信するステップと、
前記第１のプロセッサおよび第２のプロセッサのいずれかが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、同期信号を求める同期再生要求を、前記第１のプロセッサおよび第２のプロセッサのいずれかが発行するステップと、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したときに前記同期信号を生成するステップと、
を含むことを特徴とする方法。
【請求項４０】
請求項３９に記載の方法であって、前記外部機器は前記第２のプロセッサに対し、前記データ転送を起動したことを示す割り込み信号を発行することを特徴とする方法。
【請求項４１】
請求項４０に記載の方法であって、前記データ転送が起動したことを示す通知信号を、前記第２のプロセッサから前記第１のプロセッサへ発行するステップをさらに含むことを特徴とする方法。
【請求項４２】
共有メモリと通信を行うことができる複数の並列プロセッサのうち第１のプロセッサにおいて１つ以上のプログラムを実行するために前記第１のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送をそれぞれ起動する複数の要求を、１つ以上の起動デバイスから受け付けるステップと、
前記ローカルメモリへ、または前記ローカルメモリからの、少なくともあるグループのデータ転送が完了したことを示す同期信号を生成するステップと、
を含むことを特徴とする方法。
【請求項４３】
共有メモリと通信を行うことができる複数の並列プロセッサのうち第１のプロセッサにおいて１つ以上のプログラムを実行するために前記第１のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する起動デバイスからの要求を受け付ける機能と、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を遂行する機能と、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成する機能と、
をプロセッサに実現させることを特徴とするコンピュータプログラム。
【請求項４４】
共有メモリと通信を行うことができる複数の並列プロセッサのうち第１のプロセッサにおいて１つ以上のプログラムを実行するために前記第１のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する、前記並列プロセッサと通信ネットワークを介して通信している外部機器からの要求を受け付ける機能と、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号を、前記第１のプロセッサおよび、前記複数の並列プロセッサのうち第２のプロセッサ、のいずれかが、前記外部機器から受信する機能と、
前記第１のプロセッサおよび第２のプロセッサのいずれかが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、同期信号を求める同期再生要求を、前記第１のプロセッサおよび第２のプロセッサのいずれかが発行する機能と、
前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したときに前記同期信号を生成する機能と、
をプロセッサに実現させることを特徴とするコンピュータプログラム。
【請求項４５】
請求項４３または４４に記載のコンピュータプログラムを格納した、コンピュータにて読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおいてローカルメモリへのデータアクセスを同期化する方法および装置に関する。
【背景技術】
【０００２】
リアルタイムでマルチメディアのアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、１秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速の処理速度を達成するために単一のプロセッサを用いる処理システムがある一方、マルチプロセッサ構成によって実装された処理システムもある。マルチプロセッサシステムにおいて複数のサブプロセッサは、望まれる処理結果を達成するために、並列に（または少なくとも協働して）動作することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
最先端のコンピュータアプリケーションは益々複雑さを増し、処理システムへの要求が高まっているため、コンピュータ処理のより高速なデータスループットへの欲求は留まるところを知らない。なかでもグラフィックアプリケーションは、所望の視覚的結果を得るために、比較的短い期間における膨大な数のデータアクセス、データ演算、およびデータ操作を必要とするため、処理システムへの要求が最も高い。
【０００４】
本発明はこのような課題に鑑みてなされたものでありその目的は、ローカルメモリへのアクセスを正確に行うことのできる技術を提供することにある。
【課題を解決するための手段】
【０００５】
広帯域エンジン（ＢＥ）マルチプロセッサシステムにおいて、メインプロセッサ（ＰＵ）と複数のサブプロセッサ（ＳＰＵ）は共通のシステムメモリを共有している。各ＳＰＵは、命令を実行するローカルメモリと、ローカルメモリへのデータ転送の機能的パスを複数備えたプロセッサインターフェース回路と、を有する。あるＳＰＵのローカルメモリの与えられたメモリ領域へデータ書き込みを行い、同じ機能的パスを通じて同じ領域から読み出しを行う場合は、同期化することによりデータが読み出される前に新たなデータが書き込まれていることを保証することができる。ところが、１つの機能的パスを通じてＳＰＵのローカルメモリへのデータ書き込みを行い、別の機能的パスを通じて同一の領域のデータ読み出しを起動する（例えばＰＵからＳＰＵへ通知することにより）場合は、そのような同期化ができなかった。実際に、システムのレイテンシに依存して、ローカルメモリの領域に新しいデータが書き込まれる前に、そこにある古いデータが読み出される可能性があった。
【０００６】
本発明のある態様によれば、機能的パスの一つを通じてＳＰＵのローカルメモリにデータが書き込まれ、その後に、別の機能的パスを通じて起動された、同一の領域に対するデータ読み出しを行う際、ＳＰＵによって同期化を制御することができる。データ書き込みの（例えばＰＵによる）通知に応じて、ＳＰＵはＳＰＵチャンネルインターフェースへ書き込みを行う同期再生コマンドを発行する。これにより、データ転送のトラッキングと、データ書き込みをＳＰＵが認識したときのチャンネルカウントの変更がなされる。チャンネルカウントがリセットされるまでＳＰＵはローカルメモリ領域からのデータの読み出しを待つ。
【０００７】
本発明の別の態様によれば、機能的パスの一つを通じてＳＰＵのローカルメモリにデータが書き込まれ、その後に、別の機能的パスを介して、同一の領域から共有メモリへのデータ転送を行う際、ＰＵによって同期化を制御することができる。例えば、Ｉ／Ｏデバイスがローカルメモリ内の領域へのデータ書き込みの起動を割り込みによりＰＵへ通知する。それに応じてＰＵは、ＳＰＵの専用目的レジスタに、同期再生コマンドを発行する。このレジスタはプロセッサインターフェースがアクセス可能であり、プロセッサインターフェースは、データ転送のトラッキングを開始し、データ書き込みがＤＴＥに認識されたときに、レジスタの値を固有の値（例えばゼロ）に設定する。レジスタの値がゼロになるまで、ＰＵは、ローカルメモリ領域から共有メモリへデータを転送するデータ転送コマンドの発行を待つ。
【０００８】
ここで述べる一以上の態様による装置は、共有メモリと通信を行うことができる複数の並列プロセッサと、プロセッサのうち第１のプロセッサと連動し、第１のプロセッサにおいて１つ以上のプログラムを実行するために共有メモリとの間でデータの転送を行うローカルメモリと、第１のプロセッサとそれに対応するローカルメモリとに連結され、（１）ローカルメモリへ、およびローカルメモリからのデータ転送の遂行、および（２）第１のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行うプロセッサインターフェース回路と、を備える。プロセッサインターフェース回路はローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示す同期信号を生成する。
【０００９】
第１のプロセッサは好適には、同期信号に応じて、転送されたデータをローカルメモリから読み出す。あるいは、第１のプロセッサは同期信号に応じて、転送されたデータの、ローカルメモリから共有メモリへの転送を起動してもよい。
【００１０】
プロセッサインターフェース回路は、（１）第１のプロセッサによる同期再生要求、および（２）ローカルメモリへ、またはローカルメモリからのデータ転送の完了に応じて、同期信号を生成してよい。一例として、プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、同期再生要求は、第１のプロセッサが、プロセッサが読み出し可能な値が同期再生要求がなされたことを示すように、チャンネルインターフェース回路に同期命令を書き込むことによって発行されてよい。
【００１１】
プロセッサインターフェース回路は、プロセッサが読み出し可能な値が、ローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示すように、チャンネルインターフェース回路に同期命令を書き込むことによって、同期信号を生成してよい。プロセッサインターフェース回路は、ローカルメモリへ、およびローカルメモリからのデータ転送を遂行するメモリインターフェース回路を含み、メモリインターフェース回路は、少なくとも、ローカルメモリへ、またはローカルメモリからのデータ転送が完了した時点をモニタすることによって同期信号の生成を開始してよい。
【００１２】
第１のプロセッサは好適には、チャンネルインターフェース回路へ読み出し命令を発行し、ローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示すプロセッサが読み出し可能な値を取得することにより、同期信号を受信する。第１のプロセッサは、同期信号に応じて、（１）転送されたデータのローカルメモリからの読み出し、および（２）転送されたデータのローカルメモリから共有メモリへの転送の起動、の少なくとも一方を行ってよい。
【００１３】
第１のプロセッサは好適には、プロセッサのうち第２のプロセッサが発行した、ローカルメモリへ、またはローカルメモリからのデータ転送が起動したことを示す通知信号に応じて、同期信号を求める同期再生要求をプロセッサインターフェース回路に発行する。
【００１４】
第２のプロセッサは、ローカルメモリへ、またはローカルメモリからのデータ転送を起動してよい。あるいは、他の並列プロセッサ以外のデバイスが、ローカルメモリへ、またはローカルメモリからのデータ転送を起動してもよい。
【００１５】
さらなる一以上の実施形態によれば、プロセッサインターフェース回路は、（１）プロセッサのうち第２のプロセッサによる同期再生要求、および（２）ローカルメモリへ、またはローカルメモリからのデータ転送の完了に応じて、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成してよい。この実施の形態において、第１のプロセッサは好適には、第２のプロセッサが発行した、ローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示す通知信号に応じて、（１）転送されたデータのローカルメモリからの読み出し、および（２）転送されたデータのローカルメモリから共有メモリへの転送の起動、の少なくとも一方を行う。
【００１６】
さらなる一以上の実施形態によれば、第１のプロセッサまたは前記第２のプロセッサは、装置と通信ネットワークを介して通信している外部機器による、ローカルメモリへのデータ転送の起動に応じて、同期再生要求を発行してよい。
【００１７】
なお、以上の構成要素の任意の組合せや、本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１８】
本発明によれば、ローカルメモリに対する読み出しや書き込みに際して、正確な処理の同期化を達成することができる。
【発明を実施するための最良の形態】
【００１９】
同等の構成要素に同一の符号を付したいくつかの図面を参照しながら、実施の形態について説明する。図１は、本発明の少なくとも１つの特徴を具現化するための演算処理システム１００（単にシステム１００とも呼ぶ）を示す。説明の簡略化、明確化のため、対応する方法の態様についても、装置として記述される図１のブロック図に関する説明を適応することができる。
【００２０】
システム１００は、ローカルメモリ１０４Ａ〜１０４Ｄを連結した複数のプロセッサ１０２Ａ〜１０２Ｄと、それらとバス１０８により相互接続された共有メモリ１０６（システムメモリ１０６とも呼ぶ）を含む。ここで共有メモリは、メインメモリまたはシステムメモリと呼んでもよい。ここでは例として４つのプロセッサ１０２が図示されているが、いかなる数のプロセッサでも本発明の主旨および範囲を逸脱しない。
【００２１】
プロセッサ１０２のそれぞれの構成は同一であってもよいし、異なってもよい。そのプロセッサは、またはシステムメモリ１０６からのデータを要求するとともにそのデータを操作することで所望の結果を得ることを可能にする任意の既知の技術を用いて実装されてもよい。例えば、プロセッサ１０２はソフトウエアおよび／またはファームウエアを実行可能な、標準的なマイクロプロセッサや分散型のマイクロプロセッサなどの任意の既知のマイクロプロセッサを用いることで実装されてもよい。例として、一つ以上のプロセッサ１０２は、ピクセルデータなどのデータを要求するとともにそのデータを操作可能なグラフィックプロセッサであってもよい。なお、そのピクセルデータには、グレースケール情報や、カラー情報や、テクスチャデータや、ポリゴン情報や、ビデオフレーム情報などが含まれる。
【００２２】
システムメモリ１０６は、高いバンド幅のメモリ接続（図示せず）を通じてプロセッサ１０２に接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるのが好ましい。そのシステムメモリ１０６は、好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００２３】
システム１００の一つ以上のプロセッサ１０２は、メイン（または管理）プロセッサとして機能してよい。そのメインプロセッサは他のプロセッサ１０２によるデータの処理のスケジューリングと調整を行ってよい。メインプロセッサの機能の例は、以下にさらに詳細に説明する。
【００２４】
次にシステム１００の一つ以上のプロセッサ１０２をより詳細に示した図２を参照する。それぞれのプロセッサ１０２はプロセッサコア１０２Ａ、ローカルメモリ１０４Ａ、およびプロセッサインターフェース回路１０９（単にプロセッサインターフェース１０９とも呼ぶ）を含んでいてよく、これらの構成要素は共通の半導体基板上に一体的に設けられてもよいし、あるいは、設計者の意図により分離されて設けられてもよい。
【００２５】
プロセッサコア１０２Ａは好適には、パイプライン処理を用いて実行される。なお、パイプライン処理においては、パイプライン型の方法で論理命令が処理される。そのパイプラインは、命令が処理される任意の数のステージに分割されてよいが、一般的には、一つ以上の命令をフェッチするステージ、その命令をデコードするステージ、命令間の依存性をチェックするステージ、その命令を出力するステージ、その命令を実行するステージを有する。この点に関連して、そのプロセッサコア１０２Ａには、命令バッファ、命令デコード回路、依存性チェック回路、命令出力回路、および実行段階を含んでよい。
【００２６】
ローカルメモリ１０４Ａは、プロセッサコア１０２Ａにバス１１４を介して接続される。ローカルメモリ１０４Ａはプロセッサコア１０２Ａと同一チップ（同一の半導体基板）上に設けられるのが好ましい。しかしながら、ローカルメモリ１０４Ａは、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に設けられたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどを備えない、従来のハードウェアキャッシュメモリではないことが好ましい。チップ上の実装面積が限られているので、ローカルメモリ１０４Ａのサイズは、共有メモリ１０６のサイズよりはるかに小さい。
【００２７】
プロセッサ１０２は、プログラムの実行とデータの操作のために、バス１０８を介してシステムメモリ１０６からそれぞれのローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするためのデータアクセス要求を行うことが好ましい。データアクセスを遂行するメカニズムとして、後述するダイレクト・メモリ・アクセス（ＤＭＡ）技術などの任意の既知の技術を用いてもよい。
【００２８】
プロセッサインターフェース回路１０９はメモリインターフェース回路１１０（単にメモリインターフェース１１０とも呼ぶ）およびチャンネルインターフェース回路１１２（単にチャンネルインターフェース１１２とも呼ぶ）を含むことが望ましい。メモリインターフェース回路１１０はローカルメモリ１０４Ａへの、またはローカルメモリ１０４Ａからのデータ転送を遂行するように動作する。例えばメモリインターフェース回路１１０はローカルメモリ１０４Ａへの、またはローカルメモリ１０４Ａからのデータブロックを転送するためのダイレクト・メモリ・アクセス（ＤＭＡ）を行えるようにしてもよい。そのようなデータ転送は共有メモリ１０６とローカルメモリ１０４Ａとの間、プロセッサ１０２Ｂ（以後、管理プロセッサ１０２Ｂとも呼ぶ）のような他のプロセッサとローカルメモリ１０４Ａとの間、および／または他の起動デバイス１１６間で行われる。ここで起動デバイス１１６は、システム１００内部の入力／出力デバイス、システム１００と通信ネットワークを介して接続された外部機器などでよい。この点において、システム１００を既知のネットワークインターフェース技術によって他の処理システムと接続し、それらのシステムでデータを共有できるようにして、分散型コンピュータシステムを実現するようにしてもよい。
【００２９】
チャンネルインターフェース回路１１２は、プロセッサ１０２Ａと、プロセッサ１０２Ｂ、１０２Ｃ、および１０２Ｄのような他のプロセッサとの間の通信を遂行する。メモリインターフェース回路１１０とチャンネルインターフェース回路１１２の個々の機能は非常に有用であるうえ、ローカルメモリ１０４Ａへのデータ転送と、その後にプロセッサコア１０２Ａ、システム１００に含まれるその他の機器、または、広域に分散したコンピュータシステムにおける機器が、そのデータへアクセスを行うのを管理するうえで、特徴的な役割を果たす。システム１００のこれらの態様は、図３〜６を参照してより詳細に説明する。
【００３０】
図３はプロセッサコア１０２Ａ、ローカルメモリ１０４Ａ、管理プロセッサ１０２Ｂ、および起動デバイス１１６においてなすことのできるデータアクセスのシナリオを示すフローチャートである。アクション２００において、起動デバイス１１６は、メモリインターフェース回路１１０にデータ転送命令を送信することにより、ローカルメモリ１０４Ａへのデータ転送を起動する。これによりメモリインターフェース回路１１０はデータの転送を待機する状態となる。次に起動デバイス１１６は管理プロセッサ１０２Ｂと通信し、ローカルメモリ１０４Ａへのデータ転送の起動について通知する（アクション２０２）。この通知は管理プロセッサ１０２Ｂへの割り込みの形式をとってよい。管理プロセッサ１０２Ｂはその管理機能として、その割り込みに応じ、プロセッサコア１０２Ａへチャンネルインターフェース回路１１２を介して通知を行う（アクション２０４）。
【００３１】
起動デバイス１１６は、アクション２００でデータ転送の起動を行った後、メモリインターフェース回路１１０へデータを転送してもよい（アクション２０６）。これは、データ転送が起動された時点（アクション２００）に対して、アクション２０６でメモリインターフェース回路１１０がデータを取得する時点の時間的遅れが発生することを意味している。メモリインターフェース回路１１０がデータを取得したかどうかに関わらず、そのデータが実際にローカルメモリ１０４Ａへ格納される前に、プロセッサコア１０２Ａは、チャンネルインターフェース回路１１２を介した管理プロセッサ１０２Ｂからの通知に応答して、ローカルメモリ１０４Ａからのデータの読み出しを完了する（アクション２０８）。
【００３２】
ここでローカルメモリ１０４Ａからのデータの読み出しが行われる（アクション２０８）のは、データがメモリインターフェース回路１１０によりローカルメモリ１０４Ａに実際に格納される（アクション２１０）前である点に留意すべきである。これは、ローカルメモリ１０４Ａへの複数の機能的パス、すなわちメモリインターフェース回路１１０およびチャンネルインターフェース回路１１２が存在することによる。したがって、アクション２１０でメモリインターフェース回路１１０がローカルメモリ１０４Ａに格納する新しいデータの代わりに、プロセッサコア１０２Ａがバス１１４を介してローカルメモリ１０４Ａから古いデータを取り出すことができる。
【００３３】
図４は別のシナリオを示している。アクション２００において、起動デバイス１１６は、メモリインターフェース回路１１０にデータ転送命令を送信することにより、ローカルメモリ１０４Ａへのデータ転送を起動する。次に起動デバイス１１６は管理プロセッサ１０２Ｂと通信し、ローカルメモリ１０４Ａへのデータ転送の起動を、管理プロセッサ１０２Ｂへの割り込みなどによって通知する（アクション２０２）。管理プロセッサ１０２Ｂはその管理機能として、チャンネルインターフェース回路１１２を介してプロセッサコア１０２Ａと通信し、ローカルメモリ１０４Ａから共有メモリ１０６へのデータ転送を起動する（アクション２１２）。それに応じて、プロセッサコア１０２Ａはローカルメモリ１０４Ａから共有メモリ１０６へのデータ転送を、ＤＭＡコマンドにより命令する（アクション２１４）。
【００３４】
起動デバイス１１６は、アクション２００でデータ転送の起動を行った後、メモリインターフェース回路１１０へデータを転送してもよい（アクション２０６）。この場合も、データ転送が起動された時点（アクション２００）に対して、メモリインターフェース回路１１０がアクション２０６でデータを取得した時点、または実際にデータがローカルメモリ１０４Ａに格納された時点（アクション２１０）に時間的遅れが発生する。メモリインターフェース回路１１０がデータを取得したかどうかに関わらず、そのデータが実際にローカルメモリ１０４Ａへ格納される前に、アクション２１６において、ローカルメモリ１０４Ａから共有メモリ１０６へのデータ転送が完了する。したがって、共有メモリ１０６は、プロセッサインターフェース回路１０９が提供する、ローカルメモリ１０４Ａへの複数の機能的パスにより、要求された新しいデータに代わり古いデータを受け取ることができる。
【００３５】
ここで、図３、４で示した例が意図するところでは、起動デバイス１１６は、システム１００内部のその他のプロセッサ（プロセッサ１０２Ｂ〜１０２Ｄなど）のうちの１つでもよいし、システム１００とネットワーク（インターネットのようなパケットスイッチデータネットワークなど）を介して通信を行っている、システム１００外部の外部機器でもよい。さらに、管理プロセッサ１０２Ｂは事象シーケンスにおいて用いられることが望ましいが、起動デバイス１１６は図３および／または図４において図示された、管理プロセッサ１０２Ｂおよび起動デバイス１１６双方のアクションを処理してよい。
【００３６】
図５はローカルメモリ１０４Ａへのデータ転送および、それに続くローカルメモリ１０４Ａからのデータ転送の同期化を、プロセッサインターフェース回路１０９によって制御するメカニズムを示している。アクション２００、２０２、および２０４は図３を参照して上述したとおりである。管理プロセッサ１０２Ｂからの通知に対する応答として、プロセッサコア１０２Ａはチャンネルインターフェース回路１１２に対し同期再生要求を発行可能であることが望ましい（アクション２２０）。メモリインターフェース回路１１０はその同期再生要求に応じて、ローカルメモリ１０４Ａへのデータの格納の監視を行い、ローカルメモリ１０４Ａへのデータ転送が完了した際、同期信号の生成処理が可能であることが望ましい（アクション２２２）。好適には、同期信号はチャンネルインターフェース回路１１２を経てプロセッサコア１０２Ａへ送信される（アクション２２４）。同期信号への応答として、プロセッサコア１０２Ａは、新たなデータがローカルメモリ１０４Ａ内に格納されたことが確認された時点で、ローカルメモリ１０４Ａに対するデータ読み出しを完了させる。
【００３７】
図６は、望ましい同期化を確実に行うために、ローカルメモリ１０４Ａへの、およびローカルメモリ１０４Ａからのデータ転送を管理する、別のメカニズムを示している。図５は、プロセッサコア１０２Ａが同期再生要求を発生させるメカニズムを示しているのに対し、図６は、管理プロセッサ１０２Ｂ（またはシステム１００内のその他のプロセッサ）が同期再生要求を発生させる手法について示している。アクション２００および２０２は図３〜５を参照して詳述したとおりである。起動デバイス１１６からの割り込みに対する応答として、管理プロセッサ１０２Ｂは同期再生要求をプロセッサインターフェース回路１０９の専用レジスタ１１８に発行可能であることが望ましく（アクション２３０）、メモリインターフェース回路１１０はその専用レジスタ１１８に応じて、ローカルメモリ１０４Ａへのデータ転送（アクション２１０）を監視し、データ転送が完了した際に同期信号を発行する（アクション２３２）。一例として、同期信号を専用レジスタ１１８に書き込むことにより発生させ、管理プロセッサ１０２Ｂはそれを読み込むことにより、同期が得られたことを認識する（アクション２３４）。その後、管理プロセッサ１０２Ｂは、チャンネルインターフェース回路１１２へ書き込むことにより、ローカルメモリ１０４Ａからのデータ転送を起動する（アクション２１２）。これにより、その後のＤＭＡコマンド（アクション２１４）およびローカルメモリ１０４Ａからのデータ転送の完了（アクション２１６）が、新たなデータがローカルメモリ１０４Ａに格納された後になされることが保証される。
【００３８】
チャンネルインターフェース回路１１２と専用レジスタ１１８はいかなる方法で実装されてもよいが、一方または双方が、プロセッサが書き込み可能な命令に応答してプロセッサが読み出し可能な値を変更できることが望ましい。したがって、例えばプロセッサコア１０２Ａの、チャンネルインターフェース回路１１２への同期再生要求の発行（図５のアクション２２０）は、同期命令をチャンネルインターフェース回路１１２へ書き込み、同期要求がなされたことをプロセッサが読み出し可能な値が示すようにすることによって行ってよい。
【００３９】
チャンネルインターフェース回路１１２がローカルメモリ１０４Ａへのデータ転送の監視および同期信号の発行を適切に開始できるように、メモリインターフェース回路１１０は、チャンネルインターフェース回路１１２のプロセッサが読み出し可能な値の読み出しを行えることが望ましい。データ転送の監視および同期信号の発行は、同期要求に応じて生成された仲介信号を介して開始するようにしてもよい。メモリインターフェース回路１１０は好適には、同期命令をチャンネルインターフェース回路１１２へ書き込み、プロセッサが読み出し可能な値が、ローカルメモリ１０４Ａへのデータ転送が完了したことを示すようにすることにより、同期信号を発行する（アクション２２２）。
【００４０】
同期信号への応答としてプロセッサコア１０２Ａは、チャンネルインターフェース回路１１２に対し、ローカルメモリ１０４Ａへのデータ転送が完了したことを示すプロセッサが読み出し可能な値を取得するための読み出し命令を発行してよい（アクション２２４）。ここでプロセッサコア１０２Ａは、同期信号を取得するためにチャンネルインターフェース回路１１２をポールし、さらに／または割り込みによって同期信号を取得してもよい。
【００４１】
さらなる例として、チャンネルインターフェース回路１１２について上述したのと同様の方法で専用レジスタ１１８を動作させ、レジスタの１つ以上のビットが同期再生信号の発行および／または同期信号の発行を示すようにしてもよい。
【００４２】
ここで図５、６に示された例の意図するところでは、起動デバイス１１６はプロセッサ１０２Ｂ〜１０２Ｄのような、システム１００内の他のプロセッサの１つでもよい。さらに管理プロセッサは事象シーケンスにおいて用いられることが望ましいが、起動デバイス１１６は図５、６に示された管理プロセッサ１０２Ｂおよび起動デバイス１１６双方のアクションを処理してよい。例えば起動デバイス１１６は、図５に示したデータ転送の起動（アクション２００）、およびデータ転送の起動のプロセッサコア１０２Ａへの通知（アクション２０４）を行ってよい。同様に図６では、起動デバイス１１６はデータ転送の起動（アクション２００）、同期再生要求の発行（アクション２３０）、同期表示の取得（アクション２３４）、同期表示を受けてのローカルメモリ１０４Ａからのデータ転送の起動（アクション２１２）を行ってよい。
【００４３】
一以上の別の実施の形態において、起動デバイス１１６は、システム１００の外部にあり、インターネットのようなパケットスイッチデータネットワークのようなネットワークを介してシステム１００と通信している外部機器であってもよい。この実施形態において起動デバイスである外部機器１１６は、ローカルメモリ１０４Ａへのデータ転送の起動（アクション２００）、および、プロセッサ１０２Ｂなど他のプロセッサへの割り込みによるデータ転送起動の通知（アクション２０２）を行ってよい。その後プロセッサ１０２Ｂは図５および／または図６に示した他の処理を実行する管理プロセッサとして動作してもよい。
【００４４】
図７は本発明の一以上の実施の形態において、単独でおよび／または集合的に導入することのできる態様を示したフローチャートである。図７のフローチャートは概して、プロセッサインターフェース回路１０９が、システム１００内の同一の機器、および／またはシステム１００内、かつ／またはシステム１００外部の異なる機器によって起動される、ローカルメモリ１０４Ａへの複数のデータ転送を監視することができる点が図示されている。したがってプロセッサインターフェース回路１０９は、ローカルメモリ１０４Ａへの複数のデータ転送が完了したことを示す同期信号を生成できることが望ましい。
【００４５】
アクション３００においてプロセッサインターフェース回路１０９はローカルメモリ１０４Ａへの書き込み要求を複数、受け付けてよい。好適には、プロセッサインターフェース回路１０９は、ローカルメモリ１０４Ａへの起動されたデータ転送のそれぞれに対する同期フラグを有する同期キュー（図示せず）を含む。各同期フラグは、対応するデータ転送が起動され、かつ、完了していないときに「セット」されることが望ましい。同期キューにおける同期フラグの数は、ローカルメモリ１０４Ａへの起動されたデータ転送の数の増加とともに増加することが望ましい。
【００４６】
プロセッサインターフェース回路１０９が１つの同期再生要求を受け付けたとしても、同期フラグの値はグループまたはセットで記憶回路（図示せず）に記憶されることが望ましい。ここでは、複数の起動されたデータ転送のうち一つのみに対応する単一の同期要求であったとしても、複数のデータ転送に対する同期フラグの値のセットを記憶回路に記憶させてよい。このことは同期回路の実装および制御を平易にする点で有効である。
【００４７】
ローカルメモリ１０４Ａへのデータ転送が完了すると、記憶回路に記憶された同期フラグの値はリセットされる（アクション３０６〜３０８）。セットに含まれる同期フラグの値が全てリセットされると（アクション３１０）、プロセッサインターフェース回路１０９は同期信号を発行することが望ましい（アクション３１２）。
【００４８】
ある期間にわたってプロセッサインターフェース回路１０９が複数の同期再生要求を受け付けると（アクション３０４）、同期フラグの値の複数のセットが記憶回路に記憶され、ローカルメモリ１０４Ａへのデータ転送がそれぞれ完了するのに応じて区別して扱われる。したがってプロセッサインターフェース回路１０９は、同期フラグの値の各セットがリセットされるのに従い、複数の同期信号を発行してよい。
【００４９】
ここで、上述した一つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。一つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、ＰＣシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および／または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、３Ｄコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
【００５０】
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール（またはセル）から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、１以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【００５１】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
【００５２】
図８は、基本的な処理モジュールであるプロセッサ要素（ＰＥ）５００を示す。ＰＥ５００は、Ｉ／Ｏインタフェース５０２と、処理ユニット（ＰＵ）５０４と、複数のサブ処理ユニット５０８、すなわち、サブ処理ユニット５０８Ａと、サブ処理ユニット５０８Ｂと、サブ処理ユニット５０８Ｃと、サブ処理ユニット５０８Ｄとを含む。ローカル（すなわち内部）ＰＥバス５１２（単にバス５１２とも呼ぶ）は、ＰＵ５０４、ＳＰＵ（またはサブ処理ユニット）群５０８、およびメモリインタフェース５１１間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス５１２は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００５３】
ＰＥ５００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ５００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ５００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００５４】
ＰＥ５００は、広帯域メモリ接続５１６を介して共有（メイン）メモリ５１４に密接に関連付けられる。共有メモリ５１４は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）だが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００５５】
ＰＵ５０４およびサブ処理ユニット５０８は、それぞれ、ダイレクトメモリアクセス（ＤＭＡ）機能を有するメモリフローコントローラ（ＭＦＣ）と接続されることが望ましい。ＭＦＣは、メモリインタフェース５１１と協働して、共有メモリ（またはＤＲＡＭ）５１４、ＰＥ５００におけるサブ処理ユニット５０８、ＰＵ５０４間のデータの転送を円滑にするものである。ここで、ＤＭＡＣおよび／またはメモリインタフェース５１１は、サブ処理ユニット５０８とＰＵ５０４とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、ＤＭＡＣの機能および／またはメモリインタフェース５１１の機能は、サブ処理ユニット５０８およびＰＵ５０４の一つ以上（好ましくはすべて）に一体化できる。ここで、共有メモリ（またはＤＲＡＭ）５１４もまた、ＰＥ５００から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、共有メモリ（またはＤＲＡＭ）５１４は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
【００５６】
ＰＵ５０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ５０４はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群５０８は、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ５０４の制御下で、サブ処理ユニット群５０８はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＰＵ５０４としては、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ  ｃｏｍｐｕｔｉｎｇ）技術を用いるマイクロプロセッサアーキテクチャとなるＰｏｗｅｒＰＣ（登録商標）コアを用いることが好ましい。ＲＩＳＣは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
【００５７】
ここで、ＰＵ５０４は、サブ処理ユニット５０８のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット５０８は、メイン処理ユニットＰＵによる処理、すなわち各々のサブ処理ユニット５０８によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、ＰＥ５００内において、複数のＰＵを実装してもよい。
【００５８】
このモジュール構造では、あるコンピュータシステムで使用されるＰＥ５００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのＰＥ群５００、ワークステーションは２つのＰＥ群５００、ＰＤＡは１つのＰＥ５００を使用しうる。あるソフトウェアセルの処理に割り当てられるＰＥ５００のサブ処理ユニット５０８の数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００５９】
図９は、サブ処理ユニット（ＳＰＵ）５０８の好適な構造と機能を示す図である。サブ処理ユニット５０８のアーキテクチャは、汎用プロセッサ（多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの）と特殊用途のプロセッサ（一つのアプリケーションにおいて高い性能を実現するように設計されている）との間に位置するものであることが望ましい。サブ処理ユニット５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット５０８の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧエンコード／デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【００６０】
サブ処理ユニット５０８は、すなわちＳＰＵコア５１０Ａとメモリフローコントローラ（ＭＦＣ）５１０Ｂという二つの基本機能ユニットを有する。ＳＰＵコア５１０Ａは、プログラムの実行、データの操作などを担うものであり、一方、ＭＦＣ５１０Ｂは、ＳＰＵコア５１０Ａと、システムの共有メモリ５１４との間のデータ転送に関連する機能を担うものである。
【００６１】
ＳＰＵコア５１０Ａはローカルメモリ５５０と、命令（インストラクション）ユニット（ＩＵ）５５２と、レジスタ５５４と、一つ以上の浮動小数点処理ステージ５５６と、一つ以上の固定小数点処理ステージ５５８とを有する。ローカルメモリ５５０は、ＳＲＡＭのようなシングルポートのＲＡＭを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、ＳＰＵコア５１０Ａは、キャッシュよりも、比較的小さいローカルメモリ５５０を用いる。実際には、リアルタイムのアプリケーション（およびここで言及したほかのアプリケーション）のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット５０８Ａ内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット／ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うＤＭＡ転送をオーバーラップすることで、ローカルメモリＳＲＡＭ５５０内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。ＤＭＡ転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、ＳＲＡＭローカルメモリアプローチは、ＤＭＡ転送サイズが十分大きいかつ十分予測可能なとき（例えばデータが要求される前にＤＭＡコマンドを発行することができるとき）において優位性を提供する。
【００６２】
サブ処理ユニット５０８のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ５５０を参照する。なお、ローカルメモリ５５０の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス（ＲＡ）が付与されている。これは、特権レベルのソフトウェアがローカルメモリ５５０を一つの処理における実効アドレス（ＥＡ）にマッピングすることを可能とし、それによって二つのローカルメモリ５５０間のＤＭＡ転送が容易になる。ＰＵ５０４は、実効アドレスを用いてローカルメモリ５５０に直接アクセスすることもできる。ローカルメモリ５５０は、３５６キロバイトの容量を有し、レジスタ３５４の容量は１２８×１２８ビットであることが望ましい。
【００６３】
ＳＰＵコア５１０Ａは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット５５２は、命令バッファと、命令デコード回路と、従属関係チェック回路と、命令発行回路とを含む。
【００６４】
命令バッファは、ローカルメモリ５５０と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして（すなわち実質上同時に）レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ２または３以下となるようにするサイズであることが好ましい。
【００６５】
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ５５０へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび／または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび／またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【００６６】
従属関係チェック回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに従属するか否かを判定するためのチェックを行うデジタルロジックを含む。従属するならば、チェック対象となる命令は、これらの他のオペランドが（例えば、これらの他の命令の実行の完了を許可することによって）更新されるまで、実行されるべきではない。従属関係チェック回路は、デコード回路から同時に送信されてきた複数の命令の従属関係を判定することが好ましい。
【００６７】
命令発行回路は、浮動小数点処理ステージ５５６および／または固定小数点処理ステージ５５８に命令を発行することができる。
【００６８】
レジスタ５５４は、１２８―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
【００６９】
ＳＰＵコア５１０Ａは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。ＳＰＵコア５１０Ａは、命令バッファから同時に送信される命令の数、例えば２と３の間（クロックサイクル毎に二つまたは３つの命令が発行されることを意味する）に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点処理ステージ５５６と固定小数点処理ステージ５５８を用いることができる。好適な実施の形態では、浮動小数点処理ステージ５５６と固定小数点処理ステージ５５８の望ましいスピードは、それぞれ、毎秒３２ギガ浮動小数点オペレーション（３２  ＧＦＬＯＰＳ）と毎秒３２ギガオペレーション（３２  ＧＯＰＳ）である。
【００７０】
ＭＦＣ５１０Ｂは、バスインターフェースユニット（ＢＩＵ）５６４と、メモリマネジメントユニット（ＭＭＵ）５６２と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）５６０とを有することが望ましい。低電力消費の設計目的を達成するために、ＭＦＣ５１０Ｂは、ＤＭＡＣ５６０を除いて、ＳＰＵコア５１０Ａおよびバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。ＭＦＣ５１０Ｂは、バス５１２からサブ処理ユニット５０８に入るデータと命令を操作することができ、ＤＭＡＣのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。ＢＩＵ５６４は、バス５１２とＭＭＵ５６２とＤＭＡＣ５６０との間のインターフェースを提供する。したがって、サブ処理ユニット５０８（ＳＰＵコア５１０ＡとＭＦＣ５１０Ｂを含む）とＤＭＡＣ５６０は、物理的および／または論理的にバス５１２と接続されている。
【００７１】
ＭＭＵ５６２は、メモリアクセスのために実効アドレス（ＤＭＡコマンドから取得される）をリアルアドレスへ変換することができるようにすることが望ましい。例えば、ＭＭＵ５６２は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、ＭＭＵ５６２は、６４ビットのメモリマネジメントモジュールをベースにして実装でき、４Ｋバイト、６４Ｋバイト、１メガバイト、１６メガバイトのページサイズと２５６ＭＢのセグメントサイズを有する２６４のバイトの実効アドレス空間を提供することができる。ＭＭＵ５６２は、ＤＭＡコマンドのために、２６５までの仮想メモリと、２４２バイト（４テラバイト）の物理メモリをサポート可能であることが好ましい。ＭＭＵ５６２のハードウェアは、８−エントリの完全連想ＳＬＢ、２５６−エントリの４ウェイセット連想ＴＬＢ、ＴＬＢのための４×４代替マネジメントテーブル（ＲＭＴ）を含むものとすることができる。なお、ＲＭＴはハードウェアＴＬＢミスのハンドリングに用いられるものである。
【００７２】
ＤＭＡＣ５６０は、ＳＰＵコア５１０ＡからのＤＭＡコマンドと、一つ以上の、ＰＵ５０４および／または他のＳＰＵのような他のデバイスからのＤＭＡコマンドとを管理することができることが望ましい。ＤＭＡコマンドは下記の３つのカテゴリがある。すなわち、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるＰｕｔコマンド、共有メモリ５１４からローカルメモリ５５０へデータを移動させるＧｅｔコマンド、ＳＬＩコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。ＤＭＡコマンドに応じて、ＭＭＵ５６２は実効アドレスをリアルアドレスに変換し、このリアルアドレスはＢＩＵ５６４に転送される。
【００７３】
ＳＰＵコア５１０Ａはチャンネルインターフェースとデータインターフェースとを用いて、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどの送信）することが好ましい。ＳＰＵコア５１０Ａは、チャンネルインターフェースを介してＤＭＡコマンドをＤＭＡＣ５６０内のＤＭＡキューに送信する。いったん、ＤＭＡキューに格納されたＤＭＡコマンドは、ＤＭＡＣ５６０内の発行ロジックと完了ロジックにより操作される。一つのＤＭＡコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がＳＰＵコア５１０Ａに返送される。
【００７４】
サブ処理ユニット５０８はＳＰＵチャンネルを有し、サブ処理ユニットで実行されるプログラムはそのＳＰＵチャンネルを通じて他のサブ処理ユニット、ＰＵ、または他のデバイスと通信する。その通信には、１つ以上のプロセッサ内部通信のメールボックスと信号通知レジスタ、ＤＭＡコマンドの発行およびステータス、デクリメンター（タイマー）アクセス、およびイベントステータスを含む。
【００７５】
チャンネルはプログラムコードから個別のチャンネル命令を用いてアクセスされる。これらの命令には、読み出しチャンネル（指定されたチャンネルに格納され、選択されたレジスタファイルへロードすべきデータの読み出しをもたらす）と、書き込みチャンネル（選択されたレジスタファイルから読み出し、指定されたチャンネルへ格納する）と、読み出しチャンネルカウント（選択されたレジスタに格納すべき、指定されたチャンネルに対応した数をもたらす）が含まれる。
【００７６】
いくつか、または全てのＳＰＵチャンネルは対応するカウントを有していてよく、そのカウントは、各チャンネル（数）に対しチャンネル命令が発行されたときはデクリメントされ、外部のイベントがそのチャンネルに入力されたときはインクリメントされる。
【００７７】
サブ処理ユニット５０８は、サブ処理ユニット５０８の設定および動作を制御するメモリ管理Ｉ／Ｏ（ＭＭＩＯ）レジスタをさらに含んでよい。ＭＭＩＯレジスタはチャンネルインターフェースを介して読み出しおよび書き込みが行われてよい。ＭＭＩＯレジスタはサブ処理ユニット５０８の起動および制御、エラーおよびデバッグの監視および制御、メールボックスや通知レジスタ（チャンネルにマッピングされている）を介したプロセッサ内部通信に用いられる。
【００７８】
本発明の種々の態様において、１つ以上のＳＰＵチャンネルは上述したプロセッサ内部通信の機能のために用いてよい。これは、１つ以上のサブ処理ユニット５０８において実行されているプログラムソフトウェアに、ローカルメモリ５５０とＰＵ５０４とに渡るアドレスドメインにおいて累積的な順序付けを実現するメカニズムを提供する。複数のソース（すなわち複数のプロセッサまたはユニット）によってなされた、他のプロセッサまたはユニットに対するストレージアクセスの順序付けを、累積的な順序付けと呼ぶ。
【００７９】
２つの独立した同期機能、すなわちＭＭＩＯ・ＳＰＣマルチソース同期機能と、チャンネル・ＳＰＣマルチソース同期機能が提供されてもよい。ＭＭＩＯ機能によって、プロセッサおよび／またはユニットはＰＵ５０４のアドレスドメインから同期化を制御することができ、チャンネル機能によって、サブ処理ユニット５０８はローカルメモリ５５０のアドレスドメインから同期化を制御することができる。これらの機能はどちらも、転送先が対応するＭＦＣ５１０Ｂである転送（例えばＭＦＣをターゲットとした書き込み転送）が、ＳＰＣマルチソース同期要求の完了より先に受け付けられることを保証する。
【００８０】
ＭＭＩＯ機能には、ＳＰＣ＿ＭＳＳｙｎｃとも呼ぶＭＭＩＯレジスタを用いてアクセスしてよい。このレジスタにいずれかの値を書き込むと、ＭＦＣ５１０Ｂは、ＭＭＩＯのＳＰＣ＿ＭＳＳｙｎｃへの書き込みに先んじて受け付けた、対応するサブ処理ユニット５０８をターゲットとする転送のうち、実施されていない全ての転送を記録する。もし記録された転送のどれかがまだ未実施であれば、ＰＣ＿ＭＳＳｙｎｃレジスタの読み出しによりその値が返される。記録された転送が全て完了したとき、このレジスタの読み出しによりゼロ値が返される。
【００８１】
ＭＭＩＯ機能を使用するためには、１．ＰＣ＿ＭＳＳｙｎｃレジスタに書き込む、２．値が０になるまでＰＣ＿ＭＳＳｙｎｃレジスタをポールする、というステップをプログラムによって処理する。
【００８２】
チャンネル機能はＳＰＣ＿ＭＳＳｙｎｃＲｅｑチャンネルと、外部イベント、外部マスクを含んでよい。ＳＰＣ＿ＭＳＳｙｎｃＲｅｑチャンネルにいずれかの値を書き込むことにより、対応するＭＦＣ５１０Ｂがターゲットであり、同期要求以前には未実施であった全ての転送が、完了したことの確認が要求される。
【００８３】
チャンネル機能を使用するためには、１．ＳＰＣ＿ＭＳＳｙｎｃＲｅｑチャンネルに書き込む、２．ＳＰＣ＿ＭＳＳｙｎｃＲｅｑチャンネルが利用可能となるまで（例えばチャンネルカウントが１に戻るまで）待機する、というステップをプログラムによって処理する。
【００８４】
図１０は、ＰＵ５０４の好ましい構造と機能を示す図である。ＰＵ５０４は、ＰＵコア５０４Ａとメモリフローコントローラ、すなわちＭＦＣ５０４Ｂとの二つの基本機能ユニットを有する。ＰＵコア５０４Ａは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、ＭＦＣ５０４Ｂは、ＰＵコア５０４Ａと、システム１００のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【００８５】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０と、命令ユニット５７２と、レジスタ５７４と、少なくとも一つの浮動小数点処理ステージ５７６と、少なくとも一つの固定小数点処理ステージ５７８とを有する。Ｌ１キャッシュ５７０は、共有メモリ１０６、プロセッサ１０２、あるいはＭＦＣ５０４Ｂにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。ＰＵコア５０４Ａはスーパーパイプラインとして実装されることが好ましいため、命令ユニット５７２は、フェッチ、デコード、従属関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。ＰＵコア５０４Ａは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット５７２から２以上の命令が発行される。高い演算パワーを実現するために、浮動小数点処理ステージ５７６と固定小数点処理ステージ５７８は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点処理ステージ５７６と固定小数点処理ステージ５７８とを用いることができる。
【００８６】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０と、Ｌ２キャッシュ５８２と、キャッシュ不可ユニット（ＮＣＵ）５８４と、コアインターフェースユニット（ＣＩＵ）５８６と、メモリマネジメントユニット（ＭＭＵ）５８８とを有する。低電力消費の設計目的を達成するために、ＭＦＣ５０４Ｂのほとんどは、ＰＵコア５０４Ａとバス１０８の半分の周波数（半分のスピード）で動作することが好ましい。
【００８７】
ＢＩＵ５８０は、バス１０８と、Ｌ２キャッシュ５８２と、ＮＣＵ５８４のロジックブロックとの間のインターフェースを提供する。ＢＩＵ５８０は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス１０８上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、ＢＩＵ５８０は、Ｌ２キャッシュ５８２とＮＣＵ５８４の代わりに、バス１０８へのロードリクエストとストアリクエストを発信する。ＢＩＵ５８０は、バス１０８へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス１０８上のデータオペレーションは、８ビートになるように設計されることができ、そして、ＢＩＵ５８０は、キャッシュラインが１２８バイト前後であり、一貫性と同期の精度が１２８ＫＢであるように設計されることが好ましい。
【００８８】
Ｌ２キャッシュ５８２（およびそれをサポートするハードウェアロジック）は、５１２ＫＢデータをキャッシュするように設計されることが好ましい。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。Ｌ２キャッシュ５８２は、８ウエイセットアソシエイティブシステムであることが好ましい。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（例えば６つのＲＣマシン）に合わせた６つのリロードキューと、８つの（６４バイトの幅の）ストアキューとを有することができる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ（動作中に変更）されたときの、復元状況において有用である。この構成は、Ｌ１キャッシュ５７０が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる（リクエストがＬ２キャッシュ５８２で止まることができるから）。この構成は、Ｌ２キャッシュ５８２にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
【００８９】
ＮＣＵ５８４はインターフェースによってＣＩＵ５８６と、Ｌ２キャッシュ５８２と、ＢＩＵ５８０と接続されており、通常、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。ＮＣＵ５８４は、ＰＵコア５０４Ａとの通信のうちの、Ｌ２キャッシュ５８２によって扱わない全ての通信を操作することが好ましい。ここで、Ｌ２キャッシュ５８２によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、ＮＣＵ５８４は、半分のスピードで動作することが好ましい。
【００９０】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａとの境界線上に配置され、浮動小数点処理ステージ５７６、固定小数点処理ステージ５７８、命令ユニット５７２、ＭＭＵ５８８から、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。ＰＵコア５０４ＡとＭＭＵ５８８はフルスピードで動作し、Ｌ２キャッシュ５８２とＮＣＵ５８４は２：１のスピード比で動作可能であることが好ましい。こうすることによって、ＣＩＵ５８６に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
【００９１】
ＣＩＵ５８６は、ロードユニット、ストアユニット、リロードユニットの３つの機能ブロックから構成される。さらに、データをプリフェッチする機能がＣＩＵ５８６により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。ＣＩＵ５８６は、下記の動作を実行可能であることが好ましい：（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロードリクエストとストアリクエストを受信する、（ｉｉ）これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する（２：１クロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれＬ２キャッシュ５８２とＮＣＵ５８４へルーティングする、（ｉｖ）Ｌ２キャッシュ５８２とＮＣＵ５８４へのリクエストが均等になるように調整する、（ｖ）リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送信するリクエストのフローコントロールを提供する、（ｖｉ）ロードリターンデータを受信すると共に、これらのデータを浮動小数点処理ステージ５７６、固定小数点処理ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へルーティングする、（ｖｉｉ）スヌープリクエストを浮動小数点処理ステージ５７６、固定小数点処理ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へ転送する、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【００９２】
ＭＭＵ５８８は、第２レベルアドレス変換手段のごとく、ＰＵコア５０４Ａのためにアドレス変換を提供することが好ましい。変換の第１レベルは、ＰＵコア５０４Ａ内において、セパレート命令と、ＭＭＵ５８８より遥かに小さくてかつ速いデータＥＲＡＴ（実効アドレスからリアルアドレスへの変換）アレイとにより提供されることが好ましい。
【００９３】
ＰＵ５０４は６４ビットで実装され、４〜６ＧＨz、１０Ｆ０４（Ｆａｎ−ｏｕｔ−ｏｆ−ｆｏｕｒ）で動作することが好ましい。レジスタは６４ビットの長さを有することが好ましく（特定用途のための一つまたはより多くのレジスタが６４ビットより小さいかもしれないが）、実効アドレスは６４ビットの長さを有することが好ましい。命令ユニット５７２、レジスタ５７４、浮動小数点処理ステージ５７６と固定小数点処理ステージ５７８はＲＩＳＣコンピューティング技術を達成するためにＰｏｗｅｒＰＣ技術により実装されることが好ましい。
【００９４】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第６５２６４９１号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のＰＥを含め、さらに、このＰＥに、ＰＵ、ＤＭＡＣおよび８個のＡＰＵを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ（ＶＳ）の構造を有してもよく、この場合、ＶＳに、ＰＵ、ＤＭＡＣおよび４つのＡＰＵを含めてもよい。
【００９５】
本発明の少なくとも１つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウエアを用いて実現することができる。そのようなハードウエアは、標準的なデジタル回路、ソフトウエアおよび／またはファームウエアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ（ＰＲＯＭ）やプログラマブル・アレイ・ロジック・デバイス（ＰＡＬ）のような１つ以上のプログラマブルなデジタルデバイス／システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装され、かつ／または、１つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウエアおよび／またはファームウエアプログラムにより実装されてもよく、それらのプログラムは、運送および／または配布の便宜のため、好適な記録媒体もしくはフロッピーディスク（登録商標）、メモリチップなどのメディアに格納されてもよい。
【００９６】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものであることは理解されるべきである。したがって、上述した実施形態に対して様々な変更を加えることができ、請求項により定義された本発明の主旨および範囲から逸脱することなく、他の構成を考案できることは理解されるところである。
【図面の簡単な説明】
【００９７】
【図１】本発明の一以上の実施の形態における、二以上のサブプロセッサを備えたマルチプロセッサシステムの構造を示すブロック図である。
【図２】図１のプロセッサシステムにおける一以上のプロセッサの詳細を示すブロック図である。
【図３】本発明の一以上の実施の形態において、図１のプロセッサシステムによって実行することのできる処理手順を示すイベント／フローチャートである。
【図４】本発明の一以上の実施の形態において、図１のプロセッサシステムによって実行することのできる別の処理手順を示すイベント／フローチャートである。
【図５】本発明の一以上の実施の形態において、図１のプロセッサシステムによって実行することのできるさらに別の処理手順を示すイベント／フローチャートである。
【図６】本発明の一以上の実施の形態において、図１のプロセッサシステムによって実行することのできるさらに別の処理手順を示すイベント／フローチャートである。
【図７】本発明の一以上の実施の形態において、図１のプロセッサシステムによって実行することのできるさらに別の処理手順を示すフローチャートである。
【図８】本発明の一以上の実施の形態を実現するために用いることのできる好適なプロセッサ要素（ＰＥ）を示す図である。
【図９】本発明の一以上の実施の形態において、図８のシステムのサブ処理ユニット（ＳＰＵ）の構造例を示す図である。
【図１０】本発明の一以上の実施の形態において、図８のシステムの処理ユニット（ＰＵ）の構造例を示す図である。
【符号の説明】
【００９８】
１００  システム、  １０２  プロセッサ、  １０４  ローカルメモリ、  １０６  共有メモリ、  １０８  バス、  １０９  プロセッサインターフェース回路、  １１０  メモリインターフェース回路、  １１２  チャンネルインターフェース回路、  １１６  起動デバイス。
【図１】
2006221645.tif 000003
【図２】
2006221645.tif 000004
【図３】
2006221645.tif 000005
【図４】
2006221645.tif 000006
【図５】
2006221645.tif 000007
【図６】
2006221645.tif 000008
【図７】
2006221645.tif 000009
【図８】
2006221645.tif 000010
【図９】
2006221645.tif 000011
【図１０】
2006221645.tif 000012