"明細書に記載の発明。本発明の目的は、デジタルデータ処理の改善された装置および方法を提供することである。本発明のより具体的な目的は、高計算要件、リアルタイムアプリケーション要件、マルチメディア要件、音声およびグラフィカルユーザインターフェース、インテリジェンス、バックグラウンドタスクサポート、インタラクティビティ、ならびに/あるいは透過的インターネット、ネットワーキング、および/またはP2Pアクセスサポートを有するアプリケーションをサポートする改善された装置および方法を提供することである。関連する目的は、このような改善された装置および方法を、これらの要件を1つ以上有し、互いに同時に実行される、サポート複数アプリケーション集合として提供することである。本発明のさらなる目的は、現在および将来の機器における、計算、サイズ、電力およびコスト要件を満たす、処理を行う埋め込み型、または他の型、改善された装置および方法を提供することである。このような機器の例には、デジタルテレビ、デジタルビデオレコーダ、ビデオおよび/またはオーディオプレーヤー、PDA、パーソナルナレッジナビゲータ、携帯電話などが含まれるが、これらに限定されるものではなく、数例に過ぎない。本発明のさらに別の目的は、本質的に並列処理であるアプリケーションを含む、幅広い範囲のアプリケーションをサポートする改善された装置および方法を提供することである。さらなる目的は、マルチメディアおよびユーザインターフェース駆動アプリケーションをサポートする改善された装置および方法を提供することである。さらに別の目的は、例えば、ピアツウピアマルチ処理を含む、1つ以上のレベルで、マルチタスキングおよびマルチ処理を行う、改善された装置および方法を提供することである。低コスト、低電力、および/またはロバストな市場に出されるまでの時間が短い実装を提供する、装置および方法を提供することである。本発明による仮想プロセッサは、1つ以上のプロセッサと、該1つ以上のプロセッサ上で実行される1つ以上の仮想処理装置であって、各仮想処理装置は、1つ以上の処理またはスレッドまとめてスレッドというを実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および/または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、1つ以上の仮想処理装置と、該1つ以上のプロセッサと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、i1つ以上のイベントの各々をそれぞれのスレッドに関連付け、iiそのスレッドがいずれの仮想処理装置および/またはプロセッサが実行中であるかに関わらず、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、イベント伝達メカニズムとを備え、これにより上記目的を達成する。前記イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベントソフトウェアイベントおよびメモリイベントのいずれかを含むというさらなる改善点を有してもよい。少なくとも選択されたスレッドは、一時停止状態から実行状態に移行することによってそれぞれの通知に応答するというさらなる改善点を有してもよい。前記イベント伝達メカニズムは、イベント発生を段階的に行うイベントキューを含むというさらなる改善点を有してもよい。前記イベント伝達メカニズムは、イベントをスレッドにマッピングするテーブルを含むというさらなる改善点を有してもよい。前記テーブルはイベントを、それらのイベントの発生に応答するために、好ましいスレッドにマッピングするというさらなる改善点を有してもよい。前記イベント伝達メカニズムは、実行されるメモリ参照命令はそれらの演算を生じさせる、ペンディングメモリ演算とそれぞれのスレッドとの間の関連を確立するテーブルを含むというさらなる改善点を有してもよい。前記イベント伝達メカニズムは、前記処理装置のうちの1つで実行中のシステムスレッドに、仮想処理装置に常駐しないスレッドに関連付けられたイベントの発生を通知するというさらなる改善点を有してもよい。前記システムスレッドは、選択された通知に、スレッドを一時停止状態から実行状態に移行させることによって応答するというさらなる改善点を有してもよい。少なくとも選択されたアクティブスレッドが、互いに対して同時に、それぞれの前記通知に応答するというさらなる改善点を有してもよい。少なくとも1つのスレッドが動作中のシステムカーネルの介入なしに、それぞれの通知に応答するというさらなる改善点を有してもよい。本発明による仮想プロセッサは、1つ以上のプロセッサ上で実行される1つ以上の仮想処理装置であって、各仮想処理装置は、1つ以上の処理またはスレッドまとめてスレッドというを実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および/または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、1つ以上の仮想処理装置と、該スレッドと通信接続されているイベントキューであって、該イベントキューは、該スレッドによってキューに入れられた少なくともソフトウェア開始シグナリングイベントソフトウェアイベントを含むイベント発生を段階的に行う、イベントキューと、該スレッドと、該イベントキューと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知し、該イベントは、少なくともソフトウェアイベントを含む、イベント伝達メカニズムとi該通知を生じさせる発生を決定するために、該イベントキューにアクセスすることと、iiその発生を扱うこととによって、ソフトウェアイベントに応答する少なくとも1つのスレッドとを備え、これにより上記目的を達成する。ソフトウェアイベントをキューに入れる、前記命令を実行する1つ以上のスレッドが、いずれのスレッドがそのイベントにおいて通知されるべきか決定するというさらなる改善点を有してもよい。本発明によるデジタルデータプロセッサは、デジタルデータプロセッサであって、データフローベースの同期化が、複数の処理および/またはスレッドまとめてスレッドというと、1つ以上のアクセス可能なメモリ位置を有し、該複数のスレッドと通信接続されているメモリであって、少なくとも選択されたメモリ位置が、関連付けられた状態を有し、該スレッドのうちの1つ以上によってアクセスのためのデータ項目を格納することができ、該状態はフル状態および空状態のいずれかを含む、メモリと、該選択されたメモリ位置を参照し、該選択された位置が該空状態と関連付けられている場合、該選択されたスレッドを少なくとも該選択された位置が該フル状態と関連付けられるまで一時停止させる、第1のメモリ命令を実行する選択されたスレッドとを含むという改善点を有し、これにより上記目的を達成する。前記選択された位置が前記フル状態と関連付けられている場合、前記第1の命令の実行は、該選択された位置に格納されているデータ項目を前記選択されたスレッドに読み出させ、該選択された位置が前記空状態と関連付けられるようにするというさらなる改善点を有してもよい。本発明によるデジタルデータプロセッサは、データフローベースの同期化が、複数の処理および/またはスレッドまとめてスレッドというと、1つ以上のアクセス可能なメモリ位置を有し、該複数のスレッドと通信接続されているメモリであって、少なくとも選択されたメモリ位置が、関連付けられた状態を有し、該複数のスレッドによってアクセスのためのデータ項目を格納することができ、該状態はフル状態および空状態のいずれかを含む、メモリと、該選択されたメモリ位置を参照し、i該選択された位置が該フル状態と関連付けられている場合、該選択された位置に格納されているデータ項目を選択されたスレッドに読み出させ、該選択された位置が前記空状態と関連付けられるようにし、ii該選択された位置が該空状態と関連付けられている場合、該選択されたスレッドの実行を少なくとも該選択された位置が該フル状態と関連付けられるまで一時停止させ、その後、該選択された位置に格納されているデータを該選択されたスレッドに読み出させ、該選択された位置が該空状態と関連付けられるように第1のメモリ命令を実行する選択されたスレッドと、位置から該選択されたメモリ位置を参照し、i該選択された位置が該空状態と関連付けられている場合、選択されたデータが該選択された位置に格納されるようにし、選択された位置が該フル状態と関連付けられるようにし、ii該選択された位置が該フル状態と関連付けられている場合、例外がシグナリングされるように第2のメモリ命令を実行する該選択された、または他のスレッドとを含むという改善点を有し、これにより上記目的を達成する。本発明による仮想プロセッサは、メモリと、該メモリと通信接続されている1つ以上の仮想処理装置であって、該仮想処理装置は、1つ以上の処理またはスレッドまとめてスレッドというを実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および/または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、1つ以上の仮想処理装置と、該メモリ内の選択された位置を参照し、該選択された位置が空状態と関連付けられている場合、該選択されたスレッドを少なくとも該選択された位置がフル状態と関連付けられるまで一時停止させる、第1のメモリ命令を実行する選択されたスレッドとを備え、これにより上記目的を達成する。本発明によるデジタルデータプロセッサは、デジタルデータプロセッサであって、イベント処理が、1つ以上のプロセッサ上で実行されている1つ以上の処理および/またはスレッドまとめてスレッドというと、該複数のスレッドと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、i1つ以上のイベントをそれぞれのスレッドに関連付け、iiこのようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、イベント伝達メカニズムとこのような通知に対して互いに同時にそれぞれ応答する少なくとも選択されたアクティブスレッドとを含むという改善点を有し、これにより上記目的を達成する。該複数のスレッドがオぺレーティングシステムカーネルの介入なしに、互いに同時にそれぞれ応答するというさらなる改善点を有してもよい。前記イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベントソフトウェアイベントおよびメモリイベントのいずれかを含むというさらなる改善点を有してもよい。本発明による仮想プロセッサは、メモリと、該メモリと通信接続されている複数の仮想処理装置であって、各仮想処理装置は、1つ以上の処理またはスレッドまとめてスレッドというを実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および/または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、複数の仮想処理装置と、データ項目を選択されたメモリ位置に格納し、その位置がフル状態であることをその位置と関連付けられた状態フィールドが示すようにさせる、第1のメモリ命令を実行する第1のスレッドと、該選択されたメモリ位置に格納されているデータ項目を、その位置と関連付けられた状態フィールドが該フル状態を示す場合に読み出す、そうではない場合は、該選択されたメモリ位置が空状態であることを示す状態フィールドを作成またはアップデートする、第2のメモリ命令を実行する第2のスレッドと、該仮想処理装置および該状態フィールドと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、スレッドがいずれの仮想処理装置および/またはプロセッサ上で実行中であるかに関わらず、該第1のメモリ命令の実行によってその位置と関連付けられた該状態フィールドが該フル状態を示す場合、メモリイベントを該第2のスレッドにシグナリングする、イベント伝達メカニズムとを備え、これにより上記目的を達成する。前記第2のスレッドは、前記第2のメモリ命令を再実行することによってメモリイベントに応答してもよい。前記イベント伝達メカニズムは、i1つ以上のイベントをそれぞれのスレッドに関連付け、iiそのスレッドがいずれの仮想処理装置および/またはプロセッサ上で実行中であるかに関わらず、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知してもよい。前記イベント伝達メカニズムは、前記第2のスレッドと前記選択されたメモリ位置との間に関連を確立する前記状態フィールドを含む、ペンディングメモリ演算テーブルを含んでもよい。前記イベント伝達メカニズムは、1つ以上のイベントをそれぞれスレッドに関連付け、該イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベントソフトウェアイベントおよびメモリイベントのいずれかであってもよい。要旨本発明によって達成される、これらの目的および他の目的は、ある局面において、1つ以上の仮想処理装置を含む仮想プロセッサを提供する。これらは、1つ以上のプロセッサ上で実行され、それぞれは、1つ以上のプロセスまたはスレッドまとめて、スレッドというを実行する。スレッドは、同じ仮想処理装置上で、それぞれの寿命を通じて実行されるように制約されてもよいが、必ずしもそうである必要はない。イベント伝達メカニズムは、イベントをそれぞれのスレッドに関連付け、そのスレッドがそのときに実行されている仮想処理装置および/またはプロセッサに関わらず、イベントが発生するときにこれらのスレッドに通知する。例えば、デジタルLCDテレビにおいて用いられる本発明による埋め込み型仮想プロセッサは、複数の仮想処理装置を実行するプロセッサモジュールを含み、それぞれが、デジタルLCD-TV動作例えば、MPEGデマルチプレクス、映像デコード、ユーザインターフェース、オペレーティングシステムなどのそれぞれの局面を扱うスレッドを処理する。イベント伝達メカニズムは、ハードウェア割り込み、ソフトウェアイベント例えば、割り込みの性質をおびたソフトウェア開始イベント、およびメモリイベントをそれぞれのスレッドに関連付ける。イベントが発生する場合、イベント伝達メカニズムは、そのときいずれの仮想処理装置を実行しているかに関わらず、イベントを適切なスレッドに伝達する。本発明の関連の局面は、選択されたスレッドが、一時停止状態から実行状態に移行することによってイベント伝達メカニズムからの通知に応答する、上述したような仮想プロセッサを提供する。上記の例を続けると、デジタルLCDTV埋め込み型仮想プロセッサにおける仮想処理装置上で実行されるユーザインターフェーススレッドは、待機またはアイドルから、イベント伝達メカニズムによって伝達されるユーザキーパッド割り込みに応答して、実行中に移行し得る。本発明のさらなる関連の局面は、イベント伝達メカニズムが、仮想処理装置のうちの1つの上で実行されるシステムスレッドに、処理装置に常駐していないスレッドに関連付けられたイベントの発生を通知する、上述したような仮想プロセッサを提供する。システムスレッドは、スレッドを一時停止状態から実行状態に移行することによって、このような通知に応答し得る。本発明のさらなる関連の局面は、少なくとも選択されたアクティブスレッドが、互いに同時に、かつ/または、オぺレーティングシステムカーネルの介入なしに、このような通知のそれぞれに応答する、上述したような仮想プロセッサを提供する。本発明のさらなる局面は、イベント伝達メカニズムが、ペンディングメモリ演算と、このような演算の完了を待機する間に一時停止したそれぞれのスレッドとの間の関連を確立するペンディングメモリ演算テーブルを含む、上述したような仮想プロセッサを提供する。イベント伝達メカニズムは、メモリイベントを、全てのペンディングメモリ演算が完了したスレッドにシグナリングする。本発明の関連の局面は、少なくともハードウェア割り込みをスレッドにマッピングするイベントからスレッドへのルックアップテーブルを含む仮想プロセッサを提供する。さらに他の局面において、本発明は、1つ以上のスレッドは、ソフトウェアイベントをイベントキューにエンキューする命令を実行する、上述したような仮想プロセッサを提供する。関連の局面によると、命令を実行する1つ以上のスレッドが、いずれのスレッドにイベントが通知されるのかを指定する。本発明の他の局面は、スレッドのうちの少なくとも1つが、現在の命令シーケンスの実行を一時停止し、エラーハンドラを実行することによって、ハードウェア割り込みに応答する、上述したような仮想プロセッサを提供する。関連の局面において、そのスレッドは、エラーハンドラの実行の間、イベント通知を少なくとも一時的にディセーブルすることによってハードウェア割り込みに応答する。さらなる関連の局面において、そのスレッドは、エラーハンドラの実行に続く現在の命令シーケンスを一時停止することによって、ハードウェア割り込みに応答する。さらに他の局面において、本発明は、改善されたデータフローベースの同期化を有するデジタルデータプロセッサを提供する。このようなデジタルデータプロセッサは、複数のプロセッサおよび/またはスレッド再度、まとめてスレッドというと、それらのスレッドによってアクセス可能なメモリとを含む。少なくとも選択されたメモリ位置は、関連付けられた状態を有し、1つ以上のスレッドによるアクセスのために、データ項目を格納することが可能である。状態は、少なくともフル状態Fullおよび空Empty状態を含む。選択されたスレッドは、選択されたメモリ位置を参照する第1のメモリ命令を実行する。選択された位置が空状態と関連付けられている場合、選択されたスレッドは選択された位置がフル状態と関連付けられるようになるまで一時停止する。本発明の関連の局面は、選択された位置がフル状態と関連付けられている場合、第1の命令の実行によって、選択された位置に格納されたデータ項目が選択されたスレッドに読み出され、選択された位置が空状態に関連付けられるようになる、改善されたこのようなデジタルデータプロセッサを提供する。本発明のさらに関連の局面によると、複数の実行中スレッドは、1つ以上の処理装置に常駐し、一時停止されたスレッドは、これらのスレッドに少なくとも一時的に存在しないようにされる。本発明は、さらなる局面において、選択されたスレッドまたは他のスレッドが、選択されたメモリ位置を参照する第2のメモリ命令を実行する、上述したようなデジタルデータプロセッサを提供する。選択された位置が空状態と関連付けられている場合、第2のメモリ演算の実行によって、選択されたデータが選択された位置に格納され、選択された位置がフル状態に関連付けられるようになる。さらに他の局面において、本発明は、メモリと、そのメモリにアクセスするスレッドを実行する1つ以上の仮想処理装置とを含む仮想プロセッサを提供する。選択されたスレッドは、メモリ内のある位置に向けられた第1のメモリ命令を実行する。その位置が空状態と関連付けられている場合、命令の実行によって、その位置がフル状態と関連付けられるようになるまでスレッドが一時停止される。本発明の関連の局面は、上述したようなイベント伝達メカニズムをさらに含む上述したような仮想プロセッサを提供する。本発明のさらなる局面は、上述したような仮想プロセッサを1つ以上含む、デジタルLCDテレビ、デジタルビデオレコーダDVRおよびサーバ、MP3サーバ、携帯電話、ならびに/あるいは他のデバイスを提供する。本発明の関連の局面は、上述したような改善されたデータフロー同期化を有するプロセッサを含む、このようなデバイスを提供する。本発明のさらに他の局面は、上述した仮想プロセッサ、デジタルデータプロセッサおよびデバイスの演算を並列処理する方法を提供する。本発明のこれらの局面および他の局面は、図面および以下の説明に明らかである。本発明は、デジタルデータ処理の改善された装置および方法を提供することができる。本発明はまた、高計算要件、リアルタイムアプリケーション要件、マルチメディア要件、音声およびグラフィカルユーザインターフェース、インテリジェンス、バックグラウンドタスクサポート、インタラクティビティ、ならびに/あるいは透過的インターネット、ネットワーキング、および/またはP2Pアクセスサポートを有するアプリケーションをサポートする改善された装置および方法を提供することができる。本発明はまた、現在および将来の機器における、計算、サイズ、電力およびコスト要件を満たす、処理を行う埋め込み型、または他の型、改善された装置および方法を提供することができる。本発明のより完全な理解は、図面を参照しながら達成され得る。詳細な説明図1は、本発明のある実施例に従って構成され、動作するプロセッサモジュール5を示す。プロセッサモジュール5は、本明細書および添付の図面を通じて、場合によっては、と呼ばれる。モジュールは、汎用プロセッサ、例えば、PC、ワークステーション、またはメインフレームコンピュータの基礎を提供し得るが、例示した実施形態は、埋め込みプロセッサとして利用されている。モジュール5は、単独で、または、1つ以上のこのようなモジュールと組み合わせて用いられ得るが、特に、計算要件が性質的に並行であり、複数の同時に実行されるアプリケーションおよび/または命令レベル並列処理の利点を受けるデバイスまたはシステムを含み得る。このようなデバイスまたはシステムには、リアルタイム要件を有するデバイスまたはシステム、マルチメディアアプリケーションが実行されるデバイスまたはシステム、ならびに/あるいは、イメージ、信号、グラフィックス、および/またはネットワーク処理のような高計算要件を有するデバイスまたはシステムが含まれ得る。モジュールはまた、1つのプラットフォーム上の複数のアプリケーションの集積、例えば、アプリケーションの同時使用があるような場合にも適する。モジュールは、モジュールが埋め込まれているか、または、他の方法で組み込まれたデバイスおよび/またはシステムにわたって、また、ネットワーク有線、無線、もしくはその他、またはデバイスおよび/またはシステムを接続する他の媒体にわたってシームレスアプリケーション実行を提供する。さらに、モジュールは、ピアツウピアP2Pアプリケーション、また、ユーザインタラクティビティを有するアプリケーションに適する。上記の説明は、モジュール5が適するアプリケーションおよび環境の広範囲にわたるリストであるとは意図されず、一例に過ぎない。モジュール5が埋め込まれ得るデバイスおよびシステムの例には、特に、デジタルLCD-TV、例えば、図24に示すタイプのデジタルLCD-TVが含まれる。デジタルLCD-TVにおいて、モジュール5は、システムオンチップSOC構成に組み込まれる。当然、モジュールは、シングルチップ上に組み込まれる必要はなく、複数チップ、1つ以上の回路基板、1つ以上の別々に実装されたデバイス、および/またはこれらの組合せに組み込まれ得ることが理解される。さらなる例には、デジタルビデオレコーダDVRおよびサーバ、MP3サーバ、携帯電話、静止画および動画カメラを集積するアプリケーション、ゲームプラットフォーム、ユニバーサルネットワークディスプレイ例えば、デジタルLCD-TV、ネットワークにつながれた情報/インターネット機器、ならびに、汎用アプリケーションプラットフォーム、G3携帯電話、個人用情報端末、などが含まれる。モジュール5は、スレッド処理装置TPU10~20と、レベル1L1命令およびデータキャッシュ22および24と、レベル2L2キャッシュ26と、パイプライン制御28と、実行または機能ユニット30~38、すなわち、整数処理ユニット、浮動小数点処理ユニット、比較ユニット、メモリユニット、およびブランチユニットとを含む。ユニット10~38は、図に示すように接続され、以下により詳細に説明される。概要として、TPU10~20は、プロセッサモジュール5内で物理的に実装される仮想処理装置であり、任意の所与の瞬間で、1つ以上のプロセス単数または複数および/またはスレッド単数または複数まとめてスレッドと呼ばれるに結合され、処理する。TPUは、汎用レジスタ、プリディケートレジスタ、制御レジスタにおいて表される、それぞれのスレッドごとの状態を有する。TPUは、ランチlaunchおよびパイプライン制御等のハードウェアを共有し、このハードウェアは、各サイクルにおいて、任意の組み合わせのスレッドから5つまでの命令をランチする。図面に示されているように、TPUは、さらに実行ユニット30~38を共有し、この実行ユニット30~38は、独立して、何れのスレッドから来たかを知る必要なく、ランチした命令を実行する。さらなる概要として、例示したL2キャッシュ26は、スレッド処理装置10~20の全てによって共有されており、モジュール5が組み込まれるチップの内部ローカルと外部との両方で、命令およびデータを記憶装置に格納する。例示したL1命令およびデータキャッシュ22および24も、TPU10~20によって共有されており、上記のチップにとってローカルな記憶装置に基づく。当然、他の実施形態において、レベル1およびレベル2キャッシュは、異なるように構成され得る。例えば、モジュール5に対して完全にローカルであってもよいし、完全に外部であってもよいし、または他の様態であってもよい。モジュール5の設計は、スケーラブルである。2つ以上のモジュール5が、SoC設計または他の構成において連動されてもよく、そのことによって、アクティブスレッドの数および処理能力全体が増大する。モジュール5によって用いられ、本明細書中で説明されるスレッドモデルに起因して、結果として増加したTPUは、ソフトウェアに対して透過性を有している。例示したモジュール5は、6個のTPUを有するが、他の実施形態はより多い数当然、より少ない数であってもよいのTPUを有し得る。しかし、さらなる機能ユニットが提供され得る。例えば、サイクルごとにランチされる命令の数は、5個から10~15個、または、それより多い数まで増加され得る。L1およびL2キャッシュ構成についての以下の記載から明らかなように、これらの数も、スケールされ得る。例示したモジュール5は、Linuxをアプリケーションソフトウェア環境として用いる。マルチスレッドとの関連で、これは、リアルタイムおよび非リアルタイム用途が1つのプラットフォーム上で実行することを可能にする。これはまた、生産機能性を増大させるためのオープンソースソフトウェアおよびアプリケーションの活用を可能にする。さらに、これは、各種のプロバイダからのアプリケーションの実行を可能にする。マルチスレッド上述したように、TPU10~20は、仮想処理装置であり、1つのプロセッサモジュール5内に物理的に実装される。TPU10~20は、それぞれ、所与の瞬間に、1つまたはそれ以上のスレッドに結びつけられ、処理する。スレッドは、幅広い用途を具現化し得る。デジタルLCD-TVにおいて有用な例には、例えば、MPEG2信号デマルチプレクス、MPEG2映像デコード、MPEG音声デコード、デジタルTVインターフェース演算、オペレーティングシステム実行例えば、Linuxが含まれる。当然、これらの用途および/または他の用途が、デジタルLCD-TV、およびモジュール5が具現化され得る各種の他のデバイスおよびシステムにおいて有用であり得る。TPUによって実行されるスレッドは独立しているが、メモリおよびイベントを通じて通信し得る。プロセッサモジュール5のそれぞれのサイクルの間、命令は、実行または機能ユニット30~38を利用するために必要な数のアクティブ実行中スレッドによってランチされる。例示的な実施形態において、この点で、ラウンドロビンプロトコルは、それぞれのスレッドに公正さを保証するために課せられるしかし、他の実施形態においては、優先順位または他のプロトコルが、代わりにまたはそれに加えて用いられ得る。1つ以上のシステムスレッドは、例えば、アプリケーションを起動する、スレッドアクティブ化を容易にするなどのためTPU上で実行され得るが、アクティブスレッドを実行するためにオペレーティングシステム介入は必要とされない。複数アクティブスレッド仮想プロセッサをサポートする、基礎をなす理論的根拠は、以下の通りである。機能的性質プロセッサごとの複数アクティブスレッドは、1つのマルチスレッドプロセッサが複数のアプリケーション、メディア、信号処理およびネットワークプロセッサに取って代わることを可能にする。また、複数アクティブスレッドは、アプリケーション、イメージ、信号処理およびネットワーク化に対応する複数スレッドが、低待ち時間および高性能で、動作し、同時に相互運用することを可能にする。コンテキストスイッチングおよびインターフェースオーバーヘッドは最小限にされる。MP4デコードのような1つのイメージ処理アプリケーション内でさえ、スレッドは、例えば、フレームnが作成されている間にフレームn1のためのデータを準備するため、パイプライン方式で容易に同時に演算することができる。パフォーマンスプロセッサごとの複数アクティブスレッドは、機能ユニットをより良好に利用し、メモリおよび他のイベント待ち時間を許容することによって、個々のプロセッサのパフォーマンスを高める。同時に実行するスレッドを4つまでサポートするため、パフォーマンスが2倍向上することも珍しくない。電力消費およびダイサイズの増大は、無視できる程度であり、電力単位あたりのパフォーマンスおよび価格パフォーマンス比は向上する。プロセッサごとの複数アクティブスレッドはまた、ブランチおよびキャッシュミスに起因するパフォーマンスの劣化を、このようなイベントの間、他のスレッドを実行することによって、低減する。さらに、プロセッサごとの複数アクティブスレッドは、殆どのコンテキストスイッチオーバーヘッドをなくし、リアルタイムアクティビティの待ち時間を減らす。さらに、プロセッサごとの複数アクティブスレッドは、一般的な、高性能イベントモデルをサポートする。実装プロセッサごとの複数アクティブスレッドは、パイプラインおよび設計全体の簡略化につながる。他のスレッドが実行され得るので、複雑なブランチ予測の必要はない。これは、複数プロセッサチップに対して、1つのプロセッサチップのコストを下げることにつながり、他の複雑さが消去される場合、コストを下げる。これは、さらに、電力単位当たりのパフォーマンスを向上させる。図2は、従来のスーパースカラープロセッサによるスレッド処理を、例示したプロセッサモジュール5のスレッド処理と対比させた図である。2Aを参照すると、スーパースカラープロセッサにおいて、斜め線によって示される1つの実行中スレッドからの命令は、実行されているコード内の実際の並列処理および依存状態に基づいて、利用可能な実行装置上で実行されるように動的にスケジュールされる。これは、平均的に、ほとんどの実行装置が、各サイクルの間、利用されることができないことを意味する。実行装置の数が増加するにつれて、利用率は、典型的には下がる。また、実行装置は、メモリシステムおよびブランチ予測ミス/待機の間、アイドル状態である。対照的に、2Bを参照すると、モジュール5において、複数スレッドそれぞれ異なる線パターンによって示されるからの命令は、同時に実行される。各サイクルで、モジュール5は、複数スレッドからの命令をスケジューリングして、利用可能な実行ユニットリソースを最適に利用する。従って、実行装置利用およびパフォーマンス全体はより高く、同時にソフトウェア対して透過性を有している。イベントおよびスレッド例示した実施形態において、イベントには、ハードウェアまたはデバイスイベント、例えば、割り込みと、デバイスイベントと同等であるが、ソフトウェア命令によって開始されるソフトウェアイベントと、メモリイベント、例えば、キャッシュミスの完了またはメモリプロデューサ-コンシューマフル-空取引とがある。ハードウェア割り込みは、通常は、アイドルスレッド例えば、ターゲットスレッドまたはターゲットグループ内のスレッドによって扱われるデバイスイベントに変換される。ソフトウェアイベントは、例えば、1つのスレッドが他のスレッドを直接ウエイクwakeすることを可能にするために、用いられ得る。各イベントは、アクティブスレッドに結合される。特定のスレッド結合がない場合、例示的な実施形態において、常にアクティブであるデフォルトシステムスレッドに結合する。そのスレッドは、その後、イベントを必要に応じて処理する。これには、仮想プロセッサ上の新たなスレッドのスケジューリングが含まれる。特定のスレッド結合がある場合、イベント伝達メカニズムに関連して以下に説明されるハードウェアまたはソフトウェアイベントの伝達の際、ターゲットスレッドは、アイドル状態から実行中に移行される。ターゲットスレッドが既にアクティブであり、実行中である場合、イベントは、処理のため、デフォルトシステムスレッドに向けられる。例示した実施形態において、スレッドは、キャッシュミスおよび同期化待機を含むメモリシステムストール短期遮断と、ブランチミス予測非常に短期の遮断と、明示的なイベントの待機ソフトウェアまたはハードウェアのいずれかで生成されると、およびシステムスレッド明示的ブロックアプリケーションスレッドとに起因する非実行状態ブロックになり得る。本発明の好ましい実施形態において、イベントは、物理プロセッサモジュール5および効率的な動的分散実行環境の基礎を提供するネットワークにわたって動作する。従って、例えば、デジタルLCD-TVあるいは他のデバイスまたはシステムにおいて実行されるモジュール5は、スレッドを実行し得、ネットワーク無線、有線、またはその他を介して動的に移行されるメモリ、あるいは、サーバまたは他の遠隔デバイスからの他のメディアを利用する。スレッドおよびメモリベースのイベントは、例えば、スレッドが、本明細書の原理に従って動作する任意のモジュール5上で透過的に実行し得ることを保証する。これは、例えば、モバイルデバイスが、ネットワーク接続された他のデバイスの電力の活用することを可能にする。これは、また、ピアツウピアおよび複数スレッドアプリケーションの、遠隔のネットワーク接続されたデバイス上での透過的に実行を可能にする。利点には、パフォーマンスの向上、機能性の向上および電力消費の低下が含まれる。スレッドは、2つの特権レベル、すなわち、システムおよびアプリケーションで実行される。システムスレッドは、全ての状態のそのスレッドおよびプロセッサ内の他のスレッド全てにアクセスし得る。アプリケーションスレッドは、それ自体に対応する非特権状態にしかアクセスできない。デフォルトで、スレッド0は、システム特権で実行される。他のスレッドは、システム特権スレッドによって作成される場合に、システム特権に構成され得る。図3を参照すると、例示した実施形態において、スレッド状態は以下の通りである。アイドルまたはノンアクティブスレッドコンテキストはTPUにロードされ、スレッドは、命令を実行していない。アイドルスレッドは、例えば、ハードウェアまたはソフトウェアイベントが発生するときに、実行に移行する。待機またはアクティブ、待機スレッドコンテキストはTPUにロードされるが、現在命令を実行しない。待機スレッドは、メモリ命令が進むことを可能にし得る、発生を待っているイベント、例えば、キャッシュ動作が完了するときに、実行に移行する。実行またはアクティブ、実行スレッドコンテキストはTPUにロードされ、現在命令を実行している。スレッドは、例えば、そうではない場合には空/充填Fillプロデューサ-コンシューマメモリ命令が完了しないので、メモリ命令がキャッシュ動作、例えばキャッシュミスを完了することを待機する必要があるときに、待機に移行する。スレッドは、イベント命令が実行されるときに、アイドルに移行する。TPUのそれぞれに関連付けられたスレッド有効ビットまたはフラグあるいは他のインジケータは、スレッドのTPUへのソフトウェアローディングおよびアンローディングのために、任意のスレッド状態を妨害することなく、スレッド実行をディセーブルする。プロセッサモジュール5は、実行する命令の利用可能性に基づいて、アクティブスレッドにわたってバランスを良くする。モジュールはまた、均一にフルにされたスレッドそれぞれについて、命令キューを保持しようと試みる。従って、最もアクティブであり続けるスレッドが、ほとんどの命令を実行する。イベント図4は、本発明の1実施例によるシステムにおけるイベント伝達メカニズムを示す。イベントがスレッドにシグナリングされ、スレッドは現在実行状態にある場合実行を一時停止し、デフォルトイベントハンドラを、例えば、仮想アドレス0x0において実行することによって認識する。例示的な実施形態において、特定のスレッドにシグナリングされ得る5つの異なるイベントタイプがある。例示したイベントキュー40は、ハードウェアデバイスによって提示されたイベントおよびソフトウェアベースのイベント命令例えば、ソフトウェア割り込みを、仮想イベント番号VTNおよびイベント番号を含むタプルの形式で、段階的に行う。当然、ハードウェアデバイスによって提示されるイベントおよびソフトウェア命令は、他の形式で、かつ/または他の情報を含んで提示され得る。次に、イベントタプルは、受け取った順序で、イベントからスレッドへのルックアップテーブルイベントテーブルまたはスレッドルックアップテーブルとも呼ばれる42に送られる。イベントからスレッドへのルックアップテーブル42は、いずれのTPUが指示されたスレッドを現在扱っているかを判定する。その後、イベント番号からなるTPUイベントの形態でイベントが、イベントからスレッドへの伝達メカニズム44を介してTPUおよび、それぞれのスレッドに提示される。特定のイベントを扱うスレッドが依然として示されていない場合、対応するイベントは、TPUのうちの1つにおいてアクティブであるデフォルトシステムスレッドに送られる。イベントキュー40は、ハードウェア、ソフトウェア、および/またはその組合せにおいて実施され得る。モジュール5によって代表される、埋め込み型システムオンチップSoC実装において、キューは、必要なキュー機能を提供する、一連のゲートおよび専用バッファとして実装される。別の実施形態において、キューは、ソフトウェアまたはハードウェアリンクリスト、アレイなどにおいて実装される。テーブル42は、ハードデバイスまたはイベント命令によって提示されるイベント番号例えば、ハードウェア割り込みと、イベントをシグナリングすることが好ましいスレッドとの間に確立される。可能な場合としては、以下の場合がある。イベント番号にエントリがない:デフォルトシステムスレッドにシグナリングするスレッドに提示:スレッドが実行、アクティブ、またはアイドルである場合特定のスレッド数にシグナリングし、そうではない場合、指定されたシステムスレッドにシグナリングするテーブル42は、アップデートされたイベントのスレッドへのマッピングを保持する、専用の、またはそうではない1つの格納領域であり得る。テーブルはまた、分散型、またはそうではない複数の格納領域を構成し得る。それにも関わらず、テーブル42は、ハードウェア、ソフトウェア、および/またはこれらの組合せに実装され得る。モジュール5によって代表される埋め込み型システムオンチップSoC実装において、テーブルは、アップデートされたイベントのスレッドへのマッピングを保持する、専用格納領域上のハードウェアルックアップを行うゲートによって実装される。このテーブルはまた、例えば、スレッドがTPU10~20に新たにロードされ、かつ/または、インアクティブにされ、TPU10~20からアンロードされるにつれて、マッピングをアップデートするシステムレベル特権スレッドによって、ソフトウェアアクセス可能である。いくつかの実施形態において、テーブル42は、マッピングを保持する格納領域のソフトウェアベースルックアップによって実装される。イベントのスレッドへの伝達メカニズム44はまた、ハードウェア、ソフトウェア、および/またはこれらの組合せにおいて、実装され得る。モジュール5によって代表される埋め込み型SoC実装において、シグナリングされるイベントをTPUキューにルーティングするメカニズム44はゲートおよびラッチによって実装される。TPUキュー自体は、一連のゲート、および、伝達されたイベントを待ち行列に並べるための専用バッファ46~48として実装される。上述したように、別の実施形態において、メカニズム44は、必要な機能性を提供するソフトウェアまたは他のハードウェア構造において実装され、同様に、キュー46~48は、ソフトウェアまたはハードウェアにリンクされたリスト、アレイなどにおいて実装される。例示的な実施形態において、ハードウェアおよびソフトウェアイベントすなわち、ソフトウェア開始シグナリングイベント、またはソフトウェア割り込みを処理するプロシージャの概略は、以下の通りである。1.イベントは現在実行しているアクティブスレッドであるTPUにシグナリングされる。2.そのTPUは、アクティブスレッドの実行を一時停止する。例外ステータス、例外IPおよび例外メモリアドレス制御レジスタは、イベントのタイプに基づいて、イベントに対応する情報を示すように設定される。全てのスレッド状態が有効である。3.TPUは、イベントシグナリングが対応するスレッド装置についてディセーブルされた状態で、仮想アドレス0x0において、デフォルトイベントハンドラのシステム特権で実行を開始する。GPレジスタ0~3はスクラッチレジスタを含み、プリディケートレジスタ0~1がイベントハンドラによってスクラッチレジスタとして利用され、システム特権である。慣習によって、GP[0]は、イベント処理スタックポインタである。4.イベントハンドラは、対応するスレッド実行装置のための再入および再イネーブルイベントをシグナリングできるように、十分な状態を保護する。5.その後、イベントハンドラはイベントを処理する。これは、イベントをSWベースキューに提示するだけであってもよいし、何らかの他の行動を取ることであってもよい。6.その後、イベントハンドラは、状態を回復し、元のスレッドの実行に戻る。メモリ関連イベントは、ある程度までしか異なるように扱われない。ペンディングメモリイベントテーブルPET50は、スレッドを実行から待機に移行するメモリ演算のためのエントリをメモリ参照命令から保持する。イベントからスレッドへのルックアップテーブル42と同様に実装され得るテーブル50は、参照を開始したペンディングメモリ演算、状態情報およびスレッドIDを保持する。PETにおけるエントリに対応して、メモリ演算が完了し、任意の他のペンディング動作がそのスレッドについてのPETにない場合、PETイベントは、対応するスレッドにシグナリングされる。例示した実施形態によるメモリイベント処理の概略は、以下の通りである。1.イベントは、現在アクティブスレッドを実行している装置への信号である。2.スレッドがアクティブ-待機状態であり、イベントがメモリイベントである場合、スレッドは、アクティブ実行に移行し、現在のIPにおいて実行を継続する。そうではない場合、このイベントは無視される。図面にさらに示されるように、例示した実施形態において、スレッド待機はタイムアウトし、スレッド例外は、スレッドに直接シグナリングされ、イベントからスレッドへの伝達メカニズム44を介して送られない。トラップマルチスレッドおよびイベントの目的は、スレッドの通常のプログラム実行が、妨害されないようにすることである。発生するイベントおよび割り込みは、イベントを待機していた適切なスレッドによって扱われる。これが可能でない場合もあり、通常処理が割り込まれる必要がある。は、この目的のため、トラップメカニズムをサポートする。イベントタイプに基づくアクションのリストは、システム例外ステータスレジスタにおいて列挙されるトラップの完全なリストと共に、以下に示される。例示したプロセッサモジュール5は、トラップが発生する場合、以下のアクションをとる。1.実行される次の命令を指定するIP命令ポインタは例外IPレジスタにロードされる2.特権レベルは、例外IPレジスタのビット0に格納される3.例外タイプは、例外状態レジスタに格納される4.実行がメモリユニット命令に関連する場合、例外に対応するメモリアドレスは、例外メモリアドレスレジスタにロードされる5.現在の特権レベルはシステムに設定される6.IP命令ポインタはクリアされるゼロ7.実行はIP0で開始する仮想メモリおよびメモリシステム例示したプロセッサモジュール5は、64ビット仮想アドレスVA空間と、64ビットシステムアドレスSA標準的な物理アドレスと異なる特徴を有すると、VAまたはSAがまばらに充填された仮想アドレスからシステムアドレスへの変換のセグメントモデルとを有する仮想メモリおよびメモリシステムアーキテクチャを利用する。オフチップメモリがDDRDRAMまたは他の形式のダイナミックメモリを利用し得るにも関わらず、TPU10~20によってアクセスされる全てのメモリは、キャッシュとして効率的に管理される。図1に戻ると、例示した実施形態において、メモリシステムは、2つのロジックレベルからなる。レベル1キャッシュは、最適な待ち時間および帯域幅のため、別個のデータキャッシュ24と命令キャッシュ22とに分割される。例示したレベル2キャッシュ26は、オンチップ部分およびレベル2拡張と呼ばれるオフチップ部分からなる。全体として、レベル2キャッシュは、個々のプロセッサ単数または複数5用のメモリであり、複数プロセッサ5が用いられる実装において、分散型の全キャッシュメモリシステムに寄与する。当然、これらの複数のプロセッサは、同じメモリシステム、チップまたはバスを物理的に共有してもよく、例えば、ネットワークまたはその他を介して接続されてもよい。図5に、例示されたシステムにおいて用いられるVAからSAへの変換を示す。この変換は、例示した実施形態においてセグメントが可変サイズ、例えば、224-228バイトであってもよい、セグメントベースで扱われる。SAは、メモリシステムにキャッシュされる。メモリシステムにあるSAは、キャッシュ22/24、26のレベルのうちの1つにエントリを有する。任意のキャッシュおよびメモリシステムにないSAは、事実上、メモリシステムにない。従って、メモリシステムは、ページおよびサブページ粒状度で、ソフトウェアおよびOSにとって自然な様式で、プロセッサ上のページテーブルのオーバーヘッドなしにまばらに充填される。上記の特徴に加えて、例示した実施形態の仮想メモリおよびメモリシステムアーキテクチャは、以下のさらなる特徴を有する。分散型共用型メモリDSM、ファイルDSF、オブジェクトDSOおよびピアツゥピアDSP2Pの直接サポート、スケーラブルキャッシュおよびメモリシステムアーキテクチャと、スレッド間で共有され得るセグメントと、高速レベル1キャッシュとである。これは、何故なら、完全な仮想から物理アドレスへの変換または仮想キャッシュの複雑さがない状態で、ルックアップがタグアクセスと並列であるからである。仮想メモリの概要例示的なシステムにおける仮想アドレスは、メモリ参照およびブランチ命令によって構成される64ビットアドレスである。仮想アドレスは、セグメントあたりのベースで、全てのシステムメモリおよびIOデバイスへのアクセスに用いられるシステムアドレスに変換される。各セグメントのサイズは、224~248バイトの間で変化する。より具体的には、図5を参照すると、仮想アドレス50は、図に示した様態で、セグメントテーブル52におけるエントリに一致させるために用いられる。一致されたエントリ54は、図に示す仮想アドレスのコンポーネントと組合せられた場合、対応するシステムアドレスを指定する。さらに、一致されたエントリ54は、対応するセグメントサイズおよび特権を指定する。次に、そのシステムアドレスは、システムメモリにマッピングする。システムメモリは、例示した実施形態において、まばらに埋められた264バイトを含む。例示した実施形態は、システム特権で、スレッドによってディセーブルされるアドレス変換を可能にする。この場合、セグメントテーブルがバイパスされ、全てのアドレスは、低い32ビットへと切り捨てられる。例示したセグメントテーブル52は、スレッドあたり16~32エントリTPUを含む。テーブルは、ハードウェア、ソフトウェア、および/またはこれらの組合せで実装され得る。モジュール5によって代表される、埋め込み型システムオンチップSoC実装において、テーブルは、メモリにおける別々のエントリが各スレッド例えば、スレッドあたり別のテーブルに設けられる状態で、ハードウェアに実装される。セグメントは、同じシステムアドレスを指す各スレッドにつき、別々のエントリを設定することによって、2つ以上のスレッドの間で共有され得る。他のハードウェアまたはソフトウェア構造が、この目的のため、代わりに、またはこれに加えて用いられ得る。キャッシュメモリシステム概要上述したように、命令およびデータ帯域幅を最大限にするため、レベル1キャッシュは、別々のレベル1命令キャッシュ22およびレベル1データキャッシュ24として構成される。図6を参照すると、オンチップL2キャッシュ26aは、タグおよびデータ部分からなる。例示した実施形態において、オンチップL2キャッシュ26aは、サイズが0.5~1Mバイトであり、128ブロックを有し、16方向に結合可能である。各ブロックは、拡張L2タグを格納するために64kバイトが提供された状態で、128バイトデータまたは16拡張L2タグを格納する。タグ内のタグモードビットは、拡張L2キャッシュについて、データ部が16タグからなることを示す。拡張L2キャッシュ26bは、上述したように、DDRDRAMベースであるが、他のメモリタイプが用いられてもよい。例示した実施形態において、拡張L2キャッシュ26bは、サイズが1ギガバイトまでであり、256方向に結合可能であり、16kバイトページおよび128バイトサブページを有する。0.5mバイトのL2キャッシュ26aおよび1gバイトの拡張L2キャッシュ26bの構成について、L2拡張を完全に記述するために12のオンチップL2キャッシュのみが必要である。より大きいオンチップL2またはより小さいL2拡張サイズのため、割合はより低くなる。L2キャッシュオンチップおよび拡張を集めて、分散型メモリシステムを作成する。例示した実施形態において、L1命令キャッシュ22およびL1データキャッシュ24は、8方向に結合可能であり、32kバイトおよび128バイトブロックを有する。図に示すように、レベル1キャッシュの両方は、レベル2キャッシュの適切なサブセットである。レベル2キャッシュは、オンチップおよびオフチップ拡張L2キャッシュからなる。図7は、L2キャッシュ26aにおいてタグルックアップを行って、L2キャッシュアドレス78に一致するデータブロック70を識別するために、例示した実施形態において用いられるL2キャッシュ26aおよびロジックを表す。例示した実施形態において、そのロジックは、16個のキャッシュタグアレイグループ72a~72pと、対応するタグ比較要素74a~74pと、対応するデータアレイグループ76a~76pとを含む。これらは、図示されているように、L2キャッシュアドレス78をグループタグアレイ72a~72pと比較し、これも図示されているように、示されたデータデータアレイグループ76a~76pによって識別されるデータブロック70を選択する。キャッシュタグアレイグループ72a~72p、タグ比較要素74a~74p、および対応するデータアレイグループ76a~76pは、ハードウェア、ソフトウェア、および/またはこれらの組み合わせに実装され得る。モジュール5によって代表される埋め込み型SoC実装において、これらは図19に示すように実装される。図19は、32x256シングルポートメモリセルにおいて実施されるキャッシュタグアレイグループ72a~72pと、128x256シングルポートメモリセルにおいて実施されるデータアレイグループ76a~76pとを示し、これらは全て図示されているように現在状態マシン制御ロジック190に接続されている。この素子は、図示されているように、本明細書と矛盾しない様態でL2キャッシュ装置26aの動作を容易にする状態マシン192と、L1命令およびデータキャッシュ22および24からのリクエストをバッファリングするリクエストキュー194とに接続されている。ロジック素子190は、さらに、L2キャッシュのオフチップ部分26bとのインターフェースを提供するDDRDRAM制御インターフェース26cに接続されている。ロジック素子190は、同様に、液晶ディスプレイLCD、音声出力インターフェース、映像入力インターフェース、映像出力インターフェース、ネットワークインターフェース無線、有線、またはその他、記憶装置インターフェース、周辺機器インターフェース例えば、USB、USB2、バスインターフェースPCI、ATAを含むが、これらに限定されないAMBA適合コンポーネントに接続されている。DDRDRAM制御インターフェース26cおよびAMBAインターフェース26dは、同様に、図示されるように、L2データキャッシュバス198によってL1命令およびデータキャッシュへのインターフェース196に接続されている。図8は、同様に、L2拡張キャッシュ26bにおいてタグルックアップを行って、指定されたアドレス78に一致するデータブロック80を識別するために、例示した実施形態において用いられるロジックを表す。例示した実施形態において、そのロジックは、データアレイグループ82a~82pと、タグ比較要素84a~84pと、タグラッチ86とを含む。これらは、図示されているように、L2キャッシュアドレス78をデータアレイグループ82a~82pと比較し、これも図示されているように、アドレス78の対応する部分に一致するグループのうちの1つからのタグを選択するように、示されているように接続されている。一致するタグからの物理的なページ数は、図示されているように、アドレス78のインデックス部と組合せされて、オフチップメモリ26bにおけるデータブロック80を識別する。データアレイグループ82a~82pおよびタグ比較要素84a~84pは、ハードウェア、ソフトウェア、および/またはこれらの組合せに実装され得る。モジュール5によって代表される、埋め込み型SoC実装では、これらは、必要なルックアップおよびタグ比較機能を提供する、ゲートおよび専用メモリにおいて実装される。他のハードウェアまたはソフトウェア構造が、この目的のため、代わりに、または追加して用いられ得る。以下は、例示した実施形態におけるL2およびL2Eキャッシュ動作を示す擬似コードである。L2Eタグルックアップ、ヒットする場合、L1キャッシュにデータで応答する、それ以外では、L2Eタグのルックアップ、ヒットする場合、タグをL2に割り当てる;L2Eデータにアクセスし、対応するL2エントリに格納する;L1キャッシュにデータで応答する;それ以外では、拡張L2EタグのルックアップL2Eタグを割り当てる;タグをL2に割り当てる;L2Eデータにアクセス、対応するL2エントリに格納し、L1キャッシュにデータで応答するスレッド処理装置の状態図9を参照すると、例示した実施形態は、6個までのアクティブスレッドをサポートする6個のTPUを有する。それぞれのTPU10~20は、図9に示すように、汎用レジスタ、プリディケートレジスタおよび制御レジスタを含む。システムおよびアプリケーション特権レベルにおけるスレッドは、同一状態を含むが、いくつかのスレッド状態情報は、凡例およびそれぞれの線パターンによって示すように、システム特権レベルにおいてのみ可視である。レジスタに加えて、それぞれのTPUは、さらにペンディングメモリイベントテーブル、イベントキューおよびイベントからスレッドへのルックアップテーブルを含むが、これらは何れも図9には示されない。実施形態によっては、汎用レジスタの数は48以下~128以上個であってもよく、例示した実施形態は128個有する。プリディケートレジスタの数は24以下~64以上であってもよく、例示した実施形態は32個有する。アクティブスレッドの数は6以下~256以上であり、例示した実施形態は8個有する。ペンディングメモリイベントテーブルのエントリは、16以下~512以上個であり、例示した実施形態は16個有する。スレッドあたりのペンディングメモリイベントの数は、少なくとも2つであることが好ましいしかし、より少ない可能性がある。イベントキューは、256以上、または以下である。イベントからスレッドへのルックアップテーブルのエントリは16以下~256以上個であり、例示した実施形態は、32個有する。汎用レジスタ例示した実施形態において、各スレッドは、実装によって、128個までの汎用レジスタを有する。汎用レジスタ3~0GP[3:0]は、システム特権レベルにおいて可視であり、イベント処理の初期の段階において、イベントスタックポインタおよび動作しているレジスタに利用され得る。プレディケーションレジスタプリディケートレジスタは、汎用プリディケートメカニズムの一部である。それぞれの命令の実行は、参照プリディケートレジスタの値に基づいて、条件付きである。は、64個までの1ビットプリディケートレジスタをスレッド状態の一部として提供する。それぞれのプリディケートレジスタは、プリディケートと呼ばれるものを保持する。プリディケートは、比較命令の実行の結果に基づいて、1真に設定されるか、または0偽にリセットされる。プリディケートレジスタ3~1PR[3:1]はシステム特権レベルで可視であり、イベント処理の初期の段階の間、動作するプリディケートに利用され得る。プリディケートレジスタ0は、読み出し専用であり、常に1、すなわち、真と読み出される。実行を無条件にすることは命令によって行われる。制御レジスタスレッド状態レジスタIDレジスタ命令ポインタレジスタ次に実行される命令の64ビット仮想アドレスを指定する。システム例外ステータスレジスタアプリケーション例外ステータスレジスタシステム例外IPシステム特権へのシグナリングされた例外に対応する命令のアドレス。ビット[0]は例外のときの特権レベルである。シグナリングされた例外に対応する命令のアドレス。ビット[0]は例外のときの特権レベルである。アプリケーション例外IPアプリケーション特権へのシグナリングされた例外に対応する命令のアドレス。シグナリングされた例外に対応する命令のアドレス。ビット[0]は例外のときの特権レベルである。例外メモリアドレス例外をシグナリングされるメモリ参照のアドレス。メモリフォルトの場合のみ有効である。例外ステータスレジスタが、メモリ参照フォルト、充填になることを待機、または空になることを待機していることを示す場合にのみ、ペンディングメモリ演算のアドレスを保持する。命令セグメントテーブルポインタISTP、データセグメントテーブルポインタDSTPISTEおよびISTEレジスタによって利用されて、読み出されるか、または書き込まれるsteおよびフィールドを指定する命令セグメントテーブルエントリISTE、データセグメントテーブルエントリDSTE読み出しのとき、ISTEによって指定されるSTEが宛先汎用レジスタに入れられる。書き込みのとき、ISTEまたはDSTEによって指定されるSTEが汎用ソースレジスタから書き込まれる。セグメントテーブルエントリのフォーマットは、変換テーブル構成およびエントリ記述というタイトルの第6章に記載される。命令またはデータレベル1キャッシュタグポインタICTP、DCTPICTEまたはDCTEによって読み出されるか、書き込まれる命令キャッシュタグエントリを指定する。命令またはデータレベル1キャッシュタグエントリICTE、DCTE読み出しのとき、ICTPまたはDCTPによって指定されるキャッシュタグが宛先汎用レジスタに入れられる。書き込みのとき、ICTPまたはDCTPによって指定されるキャッシュタグが汎用ソースレジスタから書き込まれる。キャッシュタグエントリのフォーマットは、変換テーブル構成およびエントリ記述というタイトルの第6章に記載される。イベントキュー制御レジスタイベントキュー制御レジスタEQCRは、イベントキューへの標準および診断アクセスをイネーブルする。レジスタを用いるシーケンスは、レジスタ読み出しが後に続くレジスタ書き込みである。reg_opフィールドの内容は、書き込みおよび次の読み出しのための動作を指定する。実際のレジスタ変更または読み出しは、書き込みによってトリガされる。イベント-スレッドルックアップテーブル制御イベントからスレッドへのルックアップテーブルは、ハードウェアデバイスまたはイベント命令によって提示されるイベント番号と、イベントをシグナリングすることが好ましいスレッドとの間のマッピングを確立する。テーブル内の各エントリは、ビットマスクを有するイベント番号、およびイベントがマッピングされる対応するスレッドを指定する。タイマおよびパフォーマンスモニタ例示した実施形態において、全てのタイマおよびパフォーマンスモニタレジスタは、アプリケーション特権においてアクセス可能である。クロック実行される命令スレッド実行クロック待機タイムアウトカウンタ仮想プロセッサおよびスレッドID例示した実施形態において、各アクティブスレッドは、仮想プロセッサに対応し、8ビットアクティブスレッド数アクティブスレッド[7:0]によって指定される。モジュール5は、スレッドの高速ローディングアクティブ化およびアンローディングディアクティブ化を可能にするように、16ビットのスレッドIDスレッド[15:0]をサポートする。他の実施形態は、異なるサイズのスレッドIDをサポートし得る。スレッド-命令フェッチの抽象化上述したように、モジュール5のTPU10~20は、L1命令キャッシュ22と、それらのTPUからサイクルごとに5個までの命令をランチするパイプライン制御ハードウェアとを共有する。図10は、モジュール5によって利用される、機能ユニット30~38で実行するための命令をフェッチおよびディスパッチするメカニズムを抽象化した図である。図に示すように、各サイクルの間、命令は、L1キャッシュ22からフェッチされ、TPU10~20にそれぞれ関連付けられた命令キュー10a~20aに入れられる。これは、サイクルのフェッチ段階と呼ばれる。例示した実施形態において、スレッドキュー10a~20aを等しいレベルに保つという保持するという全体的な目標で、3~6個の命令が1つのスレッドのそれぞれについてフェッチされる。他の実施形態において、異なる数の命令がフェッチされ、かつ/または、キューの相対的な充填について異なるターゲットが設定される。また、フェッチ段階の間、モジュール5および、具体的には、例えば、上記のイベントを扱うメカニズムは、イベントおよび待機から実行へのスレッドに対応する移行を認識する。フェッチおよび実行/回収段階と並列に実行するディスパッチ段階の間、1つ以上の実行中スレッドからの命令は、そのサイクルについてのリソースの最適の利用を考慮に入れるラウンドロビンプロトコルに基づいて、機能ユニット30~38にディスパッチされる。これらの命令は、スレッドに任意の組合せからのものであり得る。コンパイラは、例えば、命令セットにおいて提供されるストップフラグ、すなわち、1つのサイクル内でランチされ得るスレッド内の命令のグループ間の境界の利用を指定する。他の実施形態において、他のプロトコルが利用され得る。例えば、ある特定のスレッドを優先させるプロトコル、リソース利用を無視するプロトコルなどである。フェッチおよびディスパッチ段階と並列に実行する実行および回収段階の間、複数の命令が1つ以上のスレッドから同時に実行される。上述したように、例示した実施形態において、各サイクルの間、例えば、整数、浮動小数点、ブランチ、比較、およびメモリ機能ユニット30~38によって、5個までの命令がランチされ、実行される。他の実施形態において、例えば、機能ユニットの数およびタイプに依存して、かつ、TPUの数に依存して、より多い命令またはより少ない命令がランチされてもよい。命令は、実行後に完了していれば回収される。結果が書き込まれ、命令は命令キューからクリアされる。他方で、命令がブロックされる場合、対応するスレッドは、実行から待機に移行する。対応するスレッドについてブロックされた命令およびその後に続く全ての命令は、その後、ブロックを引き起こした条件が解決されたときに再開される。図11は、これを容易にするために例示した実施形態において用いられる3ポインタキュー管理メカニズムを示す。その図を参照すると、命令キューおよび3ポイントのセットがTPU10~20のそれぞれについて維持される。ここでは、このようなキューのうちの1つ110およびポインタのセット112~116のみが示されている。キュー110は、関連するTPU、より具体的には、そのTPUにおいて現在アクティブなスレッドについて、フェッチされ、実行中であり、回収されたまたは無効にされた命令を保持する。命令がフェッチされるにつれて、挿入またはフェッチポインタ112によって示されるキューの上部に挿入される。実行の次の命令は、抽出または発行ポインタ114によって識別される。コミットポインタ116は、実行がコミットされた最後の命令を識別する。命令がブロックされるか、他の理由で中断される場合、コミットポインタ116は、実行パイプラインにおいて、コミットポインタと抽出ポインタとの間の命令を破棄するためにロールバックされる。反対に、ブランチが取られる場合キュー全体はフラッシュされ、ポインタがリセットされる。キュー110は円形に示されているが、他の構成も用いられ得ることが理解される。図11に示す待ち行列に並べるメカニズムは、例えば、図12に示すように実装され得る。命令は、デュアルポートメモリ120、または直列のレジスタ図示せずに格納される。それぞれの新たにフェッチされた命令が格納される書き込みアドレスは、例えば、パイプラインコントロールによって発行されるフェッチコマンドに応答するフェッチポインタロジック122によって供給されて、メモリ120のための後続のアドレスが発生する。発行された命令は、他のポート、ここでは、下部に示されているポートから取られる。各命令が取られる読み出しアドレスは、発行/コミットポインタロジック124によって供給される。そのロジックは、例えば、パイプラインコントロールによって発行されるコミットおよび発行コマンドに応答して、後続のアドレスを発生させ、かつ/または、必要に応じてリセットする。プロセッサモジュール実装図13は、特に、TPU10~20を実装するロジックを含む、図1のモジュール5のSoC実装を表す。図1に示すように図13の実装は、L1およびL2キャッシュ22~26を含む。L1およびL2キャッシュ22~26は、上述したように構成され、動作する。同様に、実装は、整数ユニット、浮動小数点ユニット、および比較装置をそれぞれ含む機能ユニット30~34を含む。さらなる機能ユニットが、代わりに、またはそれに加えて設けられてもよい。TPU10~20を実装するためのロジックは、パイプラインコントロール130、ブランチユニット38、メモリユニット36、レジスタファイル136、およびロード-格納バッファ138を含む。図13に示すコンポーネントは、図に示すように、制御および情報転送のため相互接続される。破線は、主な制御を示し、細い実線は、プリディケート値制御を示し、より太い実線は、64ビットデータバスを識別し、さらに太い線は、128ビットデータバスを示す。図13が本発明によるプロセッサモジュール5のある実装を表し、他の実装も実現され得ることが理解される。パイプラインコントロールユニット例示した実施形態において、パイプラインコントロール130は、図11~12を参照しながら上述したスレッドごとのキューを含む。1スレッドあたり、12、15または18個の命令があるとパラメータ化され得る。コントロール130は、それらのキューからラウンドロビンベースでこれは他の基準でも行われることも注記しておく命令を取り上げる。コントロール130は、レジスタファイル136命令のソースおよび宛先レジスタを提供するリソースである、および機能ユニット30~38へのアクセスのシーケンスを制御する。パイプラインコントロール130は、スレッドごとのキューからの基本的な命令クラスをデコードし、命令を機能ユニット30~38にディスパッチする。上述したように、1つ以上のスレッドからの複数の命令が、同じサイクル内の機能ユニットによって、実行のためスケジューリングされ得る。コントロール130は、さらに、ブランチユニット38がスレッドごとの構成キューを空にしたときにブランチユニット38にシグナリングする役割も果たし、例えば、サイクルごとのベースで消費を低減することが可能な場合機能ユニットをアイドルにする役割も果たす。図14は、パイプラインコントロールユニット130のブロック図である。このユニットは、図に示されているように互いにかつ、モジュール5の他のコンポーネントに接続されている、スレッドクラスキューのためのコントロールロジック140と、スレッドクラススレッドあたりのキュー142自体と、命令ディスパッチ144と、ロングワードデコードユニット146と、機能ユニットキュー148a~148eとを含む。スレッドクラススレッドごとのキューは、図11~12を参照しながら上述したように、構成され、動作する。スレッドクラスキュー制御ロジック140は、それらのキュー142の入力側を制御し、従って、図11~12を参照しながら上述した挿入ポインタ機能性を提供する。制御ロジック140はまた、ユニットキュー148a~148eの入力側を制御する役割も果たし、命令フェッチングを制御するためにブランチユニット38とインターフェースする役割も果たす。この後者の点において、ロジック140は、上述した様態で例えば、ほとんどの命令を回収するTPUを補償するように、命令フェッチングのバランスを取る役割を果たす。命令ディスパッチ144は、各サイクルで、スレッドクラスキューのそれぞれにおいて利用可能な命令のスケジュールを評価し、判定する。上述したように、例示した実施形態において、キューは、命令をより素早く回収するキューを考慮に入れながら、ラウンドロビンベースで扱われる。命令ディスパッチ144はまた、スレッドクラスキュー142の出力側を制御する。この点において、命令ディスパッチ144は、図11~12を参照しながら上述した抽出およびコミットポインタを管理する。これには、コミットポインタ巻き戻し命令が回収されたときのアップデートおよび例えば、スレッドスイッチまたは例外のため命令が中断される場合のそのポインタのロールバックが含まれる。ロングワードデコードユニット146は、L1命令キャッシュ22から入来する命令ロングワードをデコードする。例示した実施形態において、それぞれのこのようなロングワードは、命令にデコードされる。これは、1つまたは2つのロングワードのデコードのためにパラメータ化され、ロングワードは、それぞれ、3つおよび6つの命令にデコードされる。デコードユニット146はまた、各命令の命令クラスをデコードする役割を果たす。ユニットキュー148a~148eは、機能ユニット30~38によって実行される実際の命令を待ち行列に並べる。各キューは、スレッド単位のベースで構成され、そのクラスキューと矛盾しないように保たれる。ユニットキューは、上述したように、スレッドクラスキューコントロール140と、制御の目的のために命令ディスパッチ144に接続されている。キュー148a~148eからの命令は、機能ユニット30~38への途中である、対応するパイプライン150a~150bに転送される。命令はまた、レジスタファイルパイプライン152に送られる。図15は、個々のユニットキュー、例えば、148aのブロック図である。これは、TPUにつき、1つの命令キュー154a~154eを含む。これらは、制御の目的で、スレッドクラスキューコントロール140tcqueue_ctlと表示されると、命令ディスパッチ144idispatchと表示されるとに接続される。これらはまた、図示されているように、命令入力のためロングワードデコードユニット146lwdecodeと表示されるに接続され、スレッド選択ユニット156に接続される。スレッド選択ユニットは、図示されているように命令ディスパッチ144によって提供される制御信号に基づいて、スレッド選択を制御する。ユニット156からの出力は、対応するパイプライン150a~150eと、レジスタファイルパイプライン152とにルーティングされる。再度図14を参照すると、整数ユニットパイプライン150aおよび浮動小数点ユニットパイプライン150bは、それぞれの機能ユニットに適した命令フィールドをデコードする。各パイプラインはまた、機能ユニットへのコマンドのタイミングを調節する。さらに、各パイプライン150aおよび150bは、ブランチングまたは中断に基づいて、それぞれのパイプラインを閉めるsquash。さらに、各パイプラインは、サイクルの間用いられていないときに、それぞれの機能ユニットに電力低下信号を印加する。例示した比較ユニットパイプライン150c、ブランチユニットパイプライン150d、およびメモリユニットパイプライン150eは、それぞれの機能ユニット、すなわち、比較ユニット34、ブランチユニット38、およびメモリユニット36と同様の機能性を提供する。レジスタファイルパイプライン150はまた、レジスタファイル136と同様の機能性を提供する。再度図13を参照すると、例示したブランチユニット38は、命令アドレス生成およびアドレス変換と、命令フェッチングとを行う。さらに、ブランチユニット38は、スレッド処理装置10~20の状態を維持する。図16は、ブランチユニット38のブロック図である。ブランチユニット38は、図に示されているように互いにかつモジュール5の他のコンポーネントと接続されている、制御ロジック160、スレッド状態記憶装置162a~162e、スレッドセレクタ164、アドレス加算器166、セグメント変換内容アドレス可能メモリCAM168を含む。制御ロジックデバイス160は、パイプラインコントロール130からのコマンド信号に基づいて、ユニット38を駆動する。制御ロジックデバイス160はまた、図示されているように、命令キャッシュ22およびL2キャッシュ26受信通知を入力として受け取る。ロジック160は、図示されているように、スレッドスイッチをパイプラインコントロール130に出力し、コマンドを命令キャッシュ22およびL2キャッシュに出力する。スレッド状態記憶装置162a~162eは、それぞれのTPU10~20について、スレッド状態を格納する。TPUのそれぞれについて、スレッド状態記憶装置162a~162eは、図3に示し、上述された、汎用レジスタと、プリディケートレジスタと、制御レジスタとを維持する。スレッド状態記憶装置から取得されたアドレス情報は、図示されているように、スレッドセレクタにルーティングされる。スレッドセレクタは、そこからスレッドアドレスを選択し、アドレス計算が、コントロール160からの制御信号図示されているに基づいて行われる。アドレス加算器166は、図示されているように、選択されたアドレスを増分させるか、または、スレッドセレクタ164の出力およびレジスタファイルレジスタソースと呼ばれるによって供給されるアドレシング情報に基づいて、ブランチアドレス計算を行う。さらに、アドレス加算器166は、ブランチ結果を出力する。新たに計算されるアドレスは、セグメント変換メモリ168にルーティングされ、セグメント変換メモリ168は、図5を参照しながら上述したように動作し、次の命令フェッチと共に用いられる変換された命令キャッシュアドレスを生成する。機能ユニット再度図13を参照すると、メモリユニット36は、データキャッシュ24アドレス生成およびアドレス変換を含む、メモリ参照命令実行を行う。さらに、ユニット36は、上述したように、ペンディングメモリイベントテーブルPET50を維持する。図17は、メモリユニット36のブロック図である。メモリユニット36は、図に示されているように互いにかつ、モジュール5の他のコンポーネントに接続されている、制御ロジック170、アドレス加算器172、およびセグメント変換内容アドレス可能メモリCAM174を含む。制御ロジック170は、パイプラインコントロール130からのコマンド信号に基づいて、ユニット36を駆動させる。制御ロジック170はまた、図示されているように、データキャッシュ22状態およびL2キャッシュ26受信確認を入力として受け取る。ロジック170は、図示されているように、スレッドスイッチをパイプラインコントロール130およびブランチユニット38に出力し、コマンドをデータキャッシュ24およびL2キャッシュに出力する。アドレス加算器172は、レジスタファイル136から提供されたアドレシング情報を増分させるか、または必要なアドレス計算を行う。新たに計算されるアドレスは、セグメント変換メモリ174にルーティングされ、セグメント変換メモリ174は、図5を参照しながら上述したように動作し、データアクセスとともに用いられる変換された命令キャッシュアドレスを生成する。図面に示されていないが、ユニットはまた、上述したように、PETを含む。図18は、L1命令キャッシュ22またはL2データキャッシュ24のいずれかを実装するキャッシュユニットのブロック図である。ユニットは、データアレイとして機能する、16個の128x256バイトシングルポートメモリセルを、タグアレイとして機能する、16個の対応する32x56バイトデュアルポートメモリセル182a~182pとともに含む。制御ロジック184および186は、図示されているように、メモリセルと、L1キャッシュコントロールおよびL2キャッシュコントロールとに接続されている。再度図13を参照すると、レジスタファイル136は、機能ユニット30~38によって実行されている命令によってアクセスされる、全てのソースおよび宛先レジスタのリソースとして機能する。レジスタファイルは、図20に示すように実装される。図20に示されているように、遅延および書き込みオーバーヘッドを低減するため、ユニット136は、機能ユニット30~38ごとに、別のレジスタファイルインスタンスに分解される。例示した実施形態において、各インスタンスは、48個の64ビットレジスタをTPUのそれぞれについて提供する。他の実施形態は、TPUに割り当てられたレジスタの数に依存して、TPUの数およびレジスタのサイズが変動し得る。各インスタンス200a~200eは、各インスタンスの上部に入る矢印によって示されるように、5個の書き込みポートを有し、それを介して、機能ユニット30~38は同時に出力データを書き込むことができるそのことにより、インスタンスが矛盾しないデータを維持することを確実にする。それぞれは、各インスタンスの底部から出ている矢印によって示されているように、異なる数の読み出しポートを有し、それを介して、それぞれの機能ユニットがデータを取得する。従って、図に示されているように、整数ユニット30と、浮動小数点ユニット32と、メモリユニットとに関連付けられたインスタンスは全て、3つの読み出しポートを有し、比較ユニット34に関連付けられたインスタンスは2つの読み出しポートを有し、ブランチユニット38に関連付けられたインスタンスは1つのポートを有する。レジスタファイルインスタンス200~200eは、各サイクルで、1つのスレッドにつき全てのポートが読み出されることによって最適化され得る。さらに、格納ビットは、ポートアクセスのためのワイヤの下でフォルドfoldされ得る。図21および22は、それぞれ、整数ユニット30および比較ユニット34のブロック図である。図23Aおよび23Bは、それぞれ、浮動小数点ユニット32および浮動小数点ユニット32で用いられている乗算-加算統合ユニットのブロック図である。これらのユニットの構成および動作は、図面に提供されているコンポーネント、インターコネクションおよびラベルから明らかである。コンシューマ-プロデューサメモリ従来技術によるマルチプロセッサにおいて、同期化オーバーヘッドおよび例えば、イメージ処理のための複数ステップについてスレッドまたはプロセッサの間のデータベース処理フローを実装するためのプログラミングの困難さが非常に高い。プロセッサモジュール5は、これが容易に行われることを可能にするメモリ命令を提供し、データが利用可能になることをスレッドが待機することを可能にし、データが利用可能であることを他のスレッドが示すときに、透過的に起動させる。このようなソフトウェア透過性コンシューマ-プロデューサメモリ演算は、効率的なデータ志向コンシューマ-プロデューサプログラミングスタイルを有する、より高いパフォーマンスの微細なスレッドレベル並列処理を可能にする。例示した実施形態は、データを選択されたメモリ位置にロードし、状態をその位置、すなわち、充填状態に関連付けるように、データプロデューサであるスレッドによって用いられるフルメモリ命令を提供する。その命令が実行されるときに位置が既にその状態である場合、例外がシグナリングされる。この実施形態はまた、選択された位置からデータを取得するデータコンシューマによって用いられる空情報を提供する。位置がフル状態に関連付けられる場合、データはそこから指定されたレジスタに読み出され、命令は、位置が空状態と関連付けられるようにする。反対に、空状態が実行されるときに位置が完全状態には関連付けられない場合、命令は、命令を実行するスレッドを、一時的にアイドルまたは、他の実施形態には、アクティブ、非実行状態に移行させ、関連付けられた後で、アクティブ、実行状態に戻して、空命令を完了まで実行する。空命令を用いることは、スレッドが、そのデータが、低いオーバーヘッドおよびソフトウェアに透過的な状態で、利用可能であるときに、実行することを可能にする。例示した実施形態において、ペンディングメモリイベントテーブルPET50が、充填および空動作の対象であるメモリ位置についてのステータス情報を格納する。これには、それらの位置のアドレス、それぞれのフルまたは空状態、その位置のデータのコンシューマのアイデンティティ、すなわち、空命令を実行して、位置が充填されることを待機しているスレッドが含まれる。これにはまた、データのプロデューサのアイデンティティが含まれる。これは、例えば、例外の原因をシグナリングし、追跡すること例えば、同じアドレスについて、空命令が介在することなく後続の充填命令が実行される場所において有用である。それぞれの位置についてのデータは、PET50に格納されないが、充填および/または空命令の対象でないデータと同様に、キャッシュおよび/またはメモリシステム自体に維持される。他の実施形態において、ステータス情報は、メモリシステムにおいて、例えば、属する位置に沿って、かつ/または、別のテーブル、リンクされたリストなどに格納される。従って、例えば、空命令が所与のメモリ位置上で実行される場合、PETは、同じ位置が現在フル状態であることを示すエントリを有するか否かを決定するためにチェックされる。有する場合、エントリは、空に変更され、読み出しが行われ、データがメモリ位置からから命令によって指定されたレジスタに移動される。反対に、空命令が実行されるときに、所与のメモリ位置について、PETにはエントリがない場合または、このようなエントリのいずれかが、位置が現在からであると示す場合、エントリが、PETにおいて、所与の位置が空であることを示し、空命令を実行するスレッドが充填命令によってその位置に後で格納される所与のデータのコンシューマであることを示すように、作成または更新される。充填命令が後でおそらくは他のスレッドによって実行される場合、PETは、同じ位置が現在空状態であることを示すエントリを有するか否を決定するためにチェックされる。このようなエントリが見つかると、その状態はフルに変更され、イベント伝達メカニズム44図4は、通知をそのエントリにおいて識別されたコンシューマ-スレッドにルーティングするために用いられる。そのスレッドがTPUにおいてアクティブ、待機状態である場合、通知はそのTPUに送られ、TPUは、アクティブ、実行状態を入力し、空命令を、今回はメモリ位置がフル状態なので完了するために再実行する。そのスレッドがアイドル状態である場合、通知はいずれのTPUで現在実行しているかに関わらずシステムスレッドに送られ、実行、アクティブ状態において、スレッドがTPUにロードされ、空命令が再実行されることできるようにする。例示した実施形態において、コンシューマ/プロデューサのようなメモリ演算のためのPETのこの使用は、選択されたメモリ命令、例えば、充填および空についてのみ行われ、より従来のロードおよび格納メモリ命令については行われない。従って、例えば、ロード命令が現在から命令の対象であるメモリ位置について、実行されている場合でも、命令が再実行されることができるように、空命令を実行するスレッドに通知がされない。他の実施形態は、この点において異なり得る。図24Aは、3つの独立したスレッド230、232、および234を表す。スレッド230、232、および234の同期化、およびその間のデータ転送は、本発明による充填および空命令によって容易にされ得る。例えば、MPEG2デマルチプレクススレッド230は、例えば、チューナ、ストリーミングソース、その他のMPEG2ソース236から取得したMPEG2信号をデマルチプレクスする役割を果たす。この例を続けるため、MPEG2デマルチプレクススレッド230は、TPU10上でアクティブ、実行状態であると仮定される。スレッド232は、映像デコードステップ1スレッドであり、デマルチプレクスされたMPEG2信号からの映像信号のデコードの第1の段階を行う。TPU12上で、アクティブ、実行状態であると仮定される。スレッド234は、映像復号ステップ2スレッドであり、LCDインターフェース238または他のデバイスを介する出力について、デマルチプレクスされたMPEG2信号からの映像信号のデコードの第2の段階を行う。TPU14上でアクティブ、実行状態であると仮定される。ソース236からのデータストリーミングをリアルタイムで収容するため、スレッド230~234のそれぞれは、アップストリームソースによって提供されるデータを継続的に処理し、他のスレッドと並列して行う。図24Bは、同期化を確実にし、スレッド間のデータ転送を容易にするような様態で、これを容易にする充填および空命令の使用を示す。図面を参照すると、矢印240a~240gは、スレッド間、特に、あるスレッドによって書き込まれた充填されたデータ位置と、他のスレッドによって読み出された空にされたデータ位置との間の充填依存関係を示す。従って、スレッド230は、アドレスA0に向けられたデータを処理し、スレッド232は、その位置がターゲットの空命令を実行し、スレッド234は、アドレスB0スレッド232が最終的に充填させるがターゲットの空命令を実行する。空命令の結果として、スレッド232は、位置A0の充填が完了することを待機する間、待機状態例えば、アクティブ、非実行、またはアイドルになり、位置B0の充填の完了を待機する間、スレッド234は待機状態になる。スレッド230がA0の充填を完了すると、スレッド232の空にする動作も完了し、完全命令を介してB0に向けられた結果を用いて、そのスレッドがA0からのデータを処理することが可能になる。スレッド234は、待機状態を維持し、依然として、その充填の完了を待機する。その間、スレッド230は、アドレスA1に向けられた処理データを開始し、スレッド232は、空命令を実行し、A1の充填の完了を待機する間、待機状態にする。スレッド232がB0の充填デマンドを実行するとき、スレッド234を空にすることを完了することによって、TV視聴者へのディスプレイためのLCDインターフェース図示せずによってそこから読み出される、C0に向けられた結果を用いて、そのスレッドがB0からのデータを処理することを可能になる。3つのスレッド230、232、234は、処理を継続し、充填および空命令を図に示したような様態で、MPEG2ストリーム全体の処理が完了するまで、実行する。充填および空命令のさらなる理解は、その命令フォーマットを検討することによって達成され得る。空フォーマット:psEMPTY.cache.threadsdreg,breg,ireg{,stop}説明:空は、メモリシステムに有効アドレスの状態を調べるように命令する。状態がフルである場合、空命令は、状態を空にし、値をdregにロードするように変化させる。状態が既に空である場合、命令は、その命令がフルにされるまで、スレッドフィールドに指定された待機挙動で待機する。オペランドおよびフィールドps命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない他の作用はなしstop0命令グループがこの命令によって詳述されていないことを示す1命令グループがこの命令によって詳述されていることを示すthread0無条件、スレッドスイッチなし1無条件スレッドスイッチ2ストールスレッドのブロック実行時条件付きスレッドスイッチ3予約済みscache0再使用キャッシュヒントがあるtbd1再使用キャッシュヒントがある読み出し/書き込み2再使用キャッシュヒントがないtbd3再使用キャッシュヒントがない読み出し/書き込みim0アドレス計算のためインデックスレジスタiregを指定1アドレス計算のためdispを指定ireg命令のインデックスレジスタを指定breg命令のベースレジスタを指定dispメモリ参照命令のため2での補数置換定数8ビットを指定するdreg命令の宛先レジスタを指定する充填フォーマット:psFILL.cache.threadsslreg,breg,ireg{,stop}説明:レジスタs1regは、有効アドレスにおいて、メモリ内のワードに書き込まれる。有効アドレスは、bregベースレジスタと、iregインデックスレジスタまたはimイミディエートメモリフィールドに基づいてdisp置換のいずれかを加えることによって計算される。有効アドレスの状態はフルに変更される。状態が既にフルである場合、例外がシグナリングされる。オペランドおよびフィールドps命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない他の作用はなしstop0命令グループがこの命令によって詳述されていないことを示す1命令グループがこの命令によって詳述されていることを示すthread0無条件、スレッドスイッチなし1無条件スレッドスイッチ2ストールスレッドのブロック実行時条件付きスレッドスイッチ3予約済みscache0再使用キャッシュヒントがあるtbd1再使用キャッシュヒントがある読み出し/書き込み2再使用キャッシュヒントがないtbd3再使用キャッシュヒントがない読み出し/書き込みim0アドレス計算のためインデックスレジスタiregを指定1アドレス計算のためdispを指定ireg命令のインデックスレジスタを指定breg命令のベースレジスタを指定dispメモリ参照命令のため2での補数置換定数8ビットを指定するs1reg命令の第1オペランドを含むレジスタを指定ソフトウェアイベントハードウェアおよびソフトウェアイベントのより完全な理解が、命令フォーマットの検討によって達成され得る。イベントフォーマット:psEVENTs1reg{,stop}説明:EVENT命令は実行中スレッドについてイベントキューをポーリングする。イベントが存在する場合、命令は、例外ステータスレジスタにロードされるイベントステータスで完了する。そのイベントキューにイベントがない場合、スレッドはアイドル状態に移行する。オペランドおよびフィールドps命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない他の作用はなしstop0命令グループがこの命令によって詳述されていないことを示す1命令グループがこの命令によって詳述されていることを示すs1reg命令の第1ソースオペランドを含むレジスタを指定SWイベントフォーマット:ps.SWEVENTs1reg{,stop}説明:SWEvent命令は、イベントをスレッドによって扱われるイベントキューにエンキューする。イベントフォーマットについてxxxを参照されたい。オペランドおよびフィールドps命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない他の作用はなしstop0命令グループがこの命令によって詳述されていないことを示す1命令グループがこの命令によって詳述されていることを示すs1reg命令の第1ソースオペランドを含むレジスタを指定CtlFldフォーマット:psCtlFld.ticfield,{,stop}説明:コントロールフィールド命令は、cfieldで指定されたコントロールフィールドを変更する。コントロールレジスタ内の他のフィールドは、変更されないオペランドおよびフィールドps命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない他の作用はなしstop0命令グループがこの命令によって詳述されていないことを示す1命令グループがこの命令によって詳述されていることを示すti0このスレッドの制御レジスタへのアクセスを指定1ID.t_indirectfieldスレッド不正特権によって指定されたスレッドの制御レジスタへのアクセスを指定cfieldcfield[4:0]コントロールフィールド特権S=0クリア、S=1設定プロセッサモジュール5を組み込んだデバイス図25は、SoCフォーマットで具現化された本発明による、デジタルLCD-TVサブシステム242のブロック図である。サブシステム242は、上述したようにプロセッサモジュール5を含み、例えば、上述した、MPEG2信号デマルチプレクス、MPEG2映像デコード、MPEG音声デコード、デジタルTVユーザインターフェース操作、およびオペレーティングシステム実行例えば、Linuxを提供する実行スレッドを同時に実行するように動作する。モジュール5は、これも上述したように、L2キャッシュ26のオフチップ部分を含むDDRDRAMフラッシュメモリに接続されている。このモジュールは、AMBAAHBバス244へのインターフェース図示せずを含む。このモジュールは、AMBAAHBバス244を介して、デジタルLCD-TVの他のコンポーネントへのインターフェース、すなわち、映像入力インターフェース、映像出力インターフェース、音声出力インターフェース、およびLCDインターフェースを提供する知的財産またはIP246と通信する。当然、他のIPが、追加で、またはこれらの代わりに設けられ、AHBバス5を介して、またはその他の方法でモジュール5に接続されてもよい。例えば、図面において、例示したモジュール5は、オプションのIP、例えば、DMAエンジン248、高速I/Oデバイスコントローラ250、および低速デバイスコントローラ252APBブリッジ254を介してと通信し、それを介して、デジタルLCD-TVはソース信号を取得し、かつ/または、制御される。図26は、同様にSoCフォーマットで具現化された本発明による、デジタルLCD-TVまたは他のアプリケーションサブシステム256のブロック図である。例示したサブシステムは、図25に246で示される特定のIPの代わりに、APBおよびAHB/APBブリッジと、APBマクロ258とを有する状態で描かれている点以外は、上述したように構成されている。アプリケーションの必要性に依存して、素子258は、上記の実装と同様に、または他の様態で、映像入力インターフェース、映像出力インターフェース、音声出力インターフェースおよびLCDインターフェースを含み得る。例示したサブシステムは、複数のモジュール5、例えば、1~20個またはこれ以上のこのようなモジュールをさらに含む。これらのモジュールは、モジュール5によって利用されるオフチップL2キャッシュ26bとインターフェースし、好ましくは、その一部を形成するインターコネクトを介して接続される。このインターコネクトは、モジュール5によって共有され、より具体的には、L2キャッシュ26によって共有されるシフトレジスタバスを含むリングインターコネクトRIの形態であり得る。あるいは、インターコネクトは、他の形態の、モジュール5の組み合わせられたメモリシステム内でのデータの高速移動を容易にする、独占権下にあってもよいし、そうでなくてもよいインターコネクトであり得る。いずれにせよ、L2キャッシュは、任意の1つのモジュール5のためのL2キャッシュがその個々のプロセッサのための唯一のメモリシステムになるのではなく、プロセッサモジュール5の全てについての分散型キャッシュメモリシステム全体にも寄与するように、接続されることが好ましい。当然、上述したように、モジュール5は、同じメモリシステム、チップまたはバスを物理的に共有する必要はなく、ネットワークを介して、または他の様態で接続され得る。以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。本発明は、ある局面において、1つ以上の仮想処理装置を含む仮想プロセッサを提供する。これらの仮想処理装置は、1つ以上のプロセッサ上で実行され、それぞれの仮想処理装置は、1つ以上のプロセスまたはスレッドまとめて、スレッドというを実行する。スレッドは、同じ仮想処理装置上で、それぞれの寿命を通じて実行されるように制約されてもよいが、必ずしもそうである必要はない。イベント伝達メカニズムは、イベントをそれぞれのスレッドに関連付け、そのスレッドがそのときに実行されている仮想処理装置および/またはプロセッサに関わらず、イベントが発生するときにこれらのスレッドに通知する。本発明は、他の局面において、改善されたデータフローベースの同期化を有する仮想および/またはデジタルデータプロセッサを提供する。このようなプロセッサ内で実行されているプロセスまたはスレッド再度、まとめてスレッドというは、例えば、他のスレッドによって生成されるデータの利用可能性をスレッドが待機し、他のスレッドがデータを例えば、充填または他のメモリ-コンシューマ命令を実行することによって利用可能にするときに透過的に起動させることを可能にする、メモリ命令例えば、空または他のメモリ-コンシューマ命令を実行し得る。"