(57)【要約】【課題】  １つ以上の仮想処理装置を含む仮想プロセッサを提供すること。【解決手段】  これらの仮想処理装置は、１つ以上のプロセッサ上で実行され、それぞれの仮想処理装置は、１つ以上のプロセスまたはスレッド（まとめて、「スレッド」という）を実行する。スレッドは、同じ仮想処理装置上で、それぞれの寿命を通じて実行されるように制約されてもよいが、必ずしもそうである必要はない。イベント伝達メカニズムは、イベントをそれぞれのスレッドに関連付け、そのスレッドがそのときに実行されている仮想処理装置および／またはプロセッサに関わらず、イベントが発生するときにこれらのスレッドに通知する。本発明は、他の局面において、改善されたデータフローベースの同期化を有する仮想および／またはデジタルデータプロセッサを提供する。【選択図】  図１
2004362564.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のプロセッサと、
該１つ以上のプロセッサ上で実行される１つ以上の仮想処理装置であって、各仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、１つ以上の仮想処理装置と、
該１つ以上のプロセッサと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、（ｉ）１つ以上のイベントの各々をそれぞれのスレッドに関連付け、（ｉｉ）そのスレッドがいずれの仮想処理装置および／またはプロセッサが実行中であるかに関わらず、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、イベント伝達メカニズムと
を備える、仮想プロセッサ。
【請求項２】
前記イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）およびメモリイベントのいずれかを含むというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項３】
少なくとも選択されたスレッドは、一時停止状態から実行状態に移行することによってそれぞれの通知に応答するというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項４】
前記イベント伝達メカニズムは、イベント発生を段階的に行うイベントキューを含むというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項５】
前記イベント伝達メカニズムは、イベントをスレッドにマッピングするテーブルを含むというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項６】
前記テーブルはイベントを、それらのイベントの発生に応答するために、好ましいスレッドにマッピングするというさらなる改善点を有する、請求項５に記載の仮想プロセッサ。
【請求項７】
前記イベント伝達メカニズムは、実行されるメモリ参照命令はそれらの演算を生じさせる、ペンディングメモリ演算とそれぞれのスレッドとの間の関連を確立するテーブルを含むというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項８】
前記イベント伝達メカニズムは、前記処理装置のうちの１つで実行中のシステムスレッドに、仮想処理装置に常駐しないスレッドに関連付けられたイベントの発生を通知するというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項９】
前記システムスレッドは、選択された通知に、スレッドを一時停止状態から実行状態に移行させることによって応答するというさらなる改善点を有する、請求項８に記載の仮想プロセッサ。
【請求項１０】
少なくとも選択されたアクティブスレッドが、互いに対して同時に、それぞれの前記通知に応答するというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項１１】
少なくとも１つのスレッドが動作中のシステムカーネルの介入なしに、それぞれの通知に応答するというさらなる改善点を有する、請求項１に記載の仮想プロセッサ。
【請求項１２】
仮想プロセッサであって、
１つ以上のプロセッサ上で実行される１つ以上の仮想処理装置であって、各仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、１つ以上の仮想処理装置と、
該スレッドと通信接続されているイベントキューであって、該イベントキューは、該スレッドによってキューに入れられた少なくともソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）を含むイベント発生を段階的に行う、イベントキューと、
該スレッドと、該イベントキューと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知し、該イベントは、少なくともソフトウェアイベントを含む、イベント伝達メカニズムと
（ｉ）該通知を生じさせる発生を決定するために、該イベントキューにアクセスすることと、（ｉｉ）その発生を扱うこととによって、ソフトウェアイベントに応答する少なくとも１つのスレッドと
を備える、仮想プロセッサ。
【請求項１３】
ソフトウェアイベントをキューに入れる、前記命令を実行する１つ以上のスレッドが、いずれのスレッドがそのイベントにおいて通知されるべきか決定するというさらなる改善点を有する、請求項１２に記載の仮想プロセッサ。
【請求項１４】
デジタルデータプロセッサであって、データフローベースの同期化が、
複数の処理および／またはスレッド（まとめて「スレッド」という）と、
１つ以上のアクセス可能なメモリ位置を有し、該複数のスレッドと通信接続されているメモリであって、少なくとも選択されたメモリ位置が、関連付けられた状態を有し、該スレッドのうちの１つ以上によってアクセスのためのデータ項目を格納することができ、該状態はフル状態および空状態のいずれかを含む、メモリと、
該選択されたメモリ位置を参照し、該選択された位置が該空状態と関連付けられている場合、該選択されたスレッドを少なくとも該選択された位置が該フル状態と関連付けられるまで一時停止させる、第１のメモリ命令を実行する選択されたスレッドと
を含むという改善点を有する、デジタルデータプロセッサ。
【請求項１５】
前記選択された位置が前記フル状態と関連付けられている場合、前記第１の命令の実行は、該選択された位置に格納されているデータ項目を前記選択されたスレッドに読み出させ、該選択された位置が前記空状態と関連付けられるようにするというさらなる改善点を有する、請求項１４に記載のデジタルデータプロセッサ。
【請求項１６】
デジタルデータプロセッサであって、データフローベースの同期化が、
複数の処理および／またはスレッド（まとめて「スレッド」という）と、
１つ以上のアクセス可能なメモリ位置を有し、該複数のスレッドと通信接続されているメモリであって、少なくとも選択されたメモリ位置が、関連付けられた状態を有し、該複数のスレッドによってアクセスのためのデータ項目を格納することができ、該状態はフル状態および空状態のいずれかを含む、メモリと、
該選択されたメモリ位置を参照し、（ｉ）該選択された位置が該フル状態と関連付けられている場合、該選択された位置に格納されているデータ項目を選択されたスレッドに読み出させ、該選択された位置が前記空状態と関連付けられるようにし、（ｉｉ）該選択された位置が該空状態と関連付けられている場合、該選択されたスレッドの実行を少なくとも該選択された位置が該フル状態と関連付けられるまで一時停止させ、その後、該選択された位置に格納されているデータを該選択されたスレッドに読み出させ、該選択された位置が該空状態と関連付けられるように第１のメモリ命令を実行する選択されたスレッドと、
位置から該選択されたメモリ位置を参照し、（ｉ）該選択された位置が該空状態と関連付けられている場合、選択されたデータが該選択された位置に格納されるようにし、選択された位置が該フル状態と関連付けられるようにし、（ｉｉ）該選択された位置が該フル状態と関連付けられている場合、例外がシグナリングされるように第２のメモリ命令を実行する該選択された、または他のスレッドと
を含むという改善点を有する、デジタルデータプロセッサ。
【請求項１７】
メモリと、
該メモリと通信接続されている１つ以上の仮想処理装置であって、該仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、１つ以上の仮想処理装置と、
該メモリ内の選択された位置を参照し、該選択された位置が空状態と関連付けられている場合、該選択されたスレッドを少なくとも該選択された位置がフル状態と関連付けられるまで一時停止させる、第１のメモリ命令を実行する選択されたスレッドと
を備える、仮想プロセッサ。
【請求項１８】
デジタルデータプロセッサであって、イベント処理が、
１つ以上のプロセッサ上で実行されている１つ以上の処理および／またはスレッド（まとめて「スレッド」という）と、
該複数のスレッドと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、（ｉ）１つ以上のイベントをそれぞれのスレッドに関連付け、（ｉｉ）このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、イベント伝達メカニズムと
このような通知に対して互いに同時にそれぞれ応答する少なくとも選択されたアクティブスレッドと
を含むという改善点を有する、デジタルデータプロセッサ。
【請求項１９】
該複数のスレッドがオぺレーティングシステムカーネルの介入なしに、互いに同時にそれぞれ応答するというさらなる改善点を有する、請求項１８に記載のデジタルデータプロセッサ。
【請求項２０】
前記イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）およびメモリイベントのいずれかを含むというさらなる改善点を有する、請求項１８に記載のデジタルデータプロセッサ。
【請求項２１】
メモリと、
該メモリと通信接続されている複数の仮想処理装置であって、各仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、複数の仮想処理装置と、
データ項目を選択されたメモリ位置に格納し、その位置がフル状態であることをその位置と関連付けられた状態フィールドが示すようにさせる、第１のメモリ命令を実行する第１のスレッドと、
該選択されたメモリ位置に格納されているデータ項目を、その位置と関連付けられた状態フィールドが該フル状態を示す場合に読み出す、そうではない場合は、該選択されたメモリ位置が空状態であることを示す状態フィールドを作成またはアップデートする、第２のメモリ命令を実行する第２のスレッドと、
該仮想処理装置および該状態フィールドと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、スレッドがいずれの仮想処理装置および／またはプロセッサ上で実行中であるかに関わらず、該第１のメモリ命令の実行によってその位置と関連付けられた該状態フィールドが該フル状態を示す場合、メモリイベントを該第２のスレッドにシグナリングする、イベント伝達メカニズムと
を備える、仮想プロセッサ。
【請求項２２】
前記第２のスレッドは、前記第２のメモリ命令を再実行することによってメモリイベントに応答する、請求項２１に記載の仮想プロセッサ。
【請求項２３】
前記イベント伝達メカニズムは、（ｉ）１つ以上のイベントをそれぞれのスレッドに関連付け、（ｉｉ）そのスレッドがいずれの仮想処理装置および／またはプロセッサ上で実行中であるかに関わらず、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、請求項２１に記載の仮想プロセッサ。
【請求項２４】
前記イベント伝達メカニズムは、前記第２のスレッドと前記選択されたメモリ位置との間に関連を確立する前記状態フィールドを含む、ペンディングメモリ演算テーブルを含む、請求項２１に記載の仮想プロセッサ。
【請求項２５】
前記イベント伝達メカニズムは、１つ以上のイベントをそれぞれスレッドに関連付け、該イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）およびメモリイベントのいずれかである、請求項２１に記載の仮想プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータ処理、より具体的には、統一イベント通知およびコンシューマ（ｃｏｎｓｕｍｅｒ）−プロデューサ（ｐｒｏｄｕｃｅｒ）メモリ演算を有する仮想プロセッサ方法および装置に関する。
【背景技術】
【０００２】
コンピューティングおよびアプリケーションの進化には、大きく分けて３つの段階があった。最初に、メインフレームおよびミニコンピュータの段階があった。次に、パーソナルコンピュータの段階が続いた。現在は、埋め込みプロセッサ、または「変装したコンピュータ」の段階である。
【０００３】
埋め込みプロセッサは、デジタルテレビ、デジタルビデオレコーダ、ＰＤＡ、携帯電話、ならびに、マルチメディアア用途（ＭＰＥＧデコードおよび／またはエンコードを含む）と、音声および／またはグラフィカルユーザインターフェースと、インテリジェントエージェントおよび他のバックグラウンドタスクと、ならびに透過的インターネット、ネットワーク、ピア・ツウ・ピア（Ｐ２Ｐ）もしくは他の情報アクセスとをサポートする他の機器において用いられている。これらのアプリケーションの多くは、複雑な映像、音声または他の信号処理を必要とし、互いに対して同時に、リアルタイムで実行される必要がある。
【０００４】
従来技術の埋め込みアプリケーションシステムは、代表的には、（１）ユーザインターフェース処理、高レベルアプリケーション処理、およびオペレーティングシステムを扱う、１つ以上の汎用プロセッサ、例えば、ＡＲＭ、ＭＩＰまたはｘ８６の種類の汎用プロセッサを、（２）特定のインターフェースにおいて、または、特定のアプリケーション内で、リアルタイム／低待ち時間ベースで、特定のタイプの算術計算を扱う専用の１つ以上のデジタル信号プロセッサ（ＤＳＰ）（メディアプロセッサを含む）と組み合わせる。ＤＳＰの代わりに、またはＤＳＰに加えて、特殊用途ハードウェアが、しばしば提供される。特殊用途ハードウェアは、例えばＤＳＰが複数のアクティビティを一度に扱うことができないために、またはＤＳＰが非常に特化された計算素子のニーズを満たすことができないためにＤＳＰがプログラマブルベースで扱うことができない専用のニーズを扱う。
【０００５】
従来技術のシステムにおける問題点は、ハードウェア設計の複雑さと、それに結び付けられた、プログラミングおよび異種の計算素子をインターフェースさせることにおけるソフトウェアの複雑さである。その結果として、しばしば、埋め込み処理サブシステムは、演算能力が足りないが、サイズ、コスト、および／または電力要件が過剰である。他の問題は、ハードウェアおよびソフトウェアの両方が、アプリケーションごとに再設計される必要があることである。さらに、従来技術のシステムは、バランスを良くしない。あるハードウェア素子からの他のハードウェア素子へと転送する能力は無い。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、デジタルデータ処理の改善された装置および方法を提供することである。
【０００７】
本発明のより具体的な目的は、高計算要件、リアルタイムアプリケーション要件、マルチメディア要件、音声およびグラフィカルユーザインターフェース、インテリジェンス、バックグラウンドタスクサポート、インタラクティビティ、ならびに／あるいは透過的インターネット、ネットワーキング、および／またはＰ２Ｐアクセスサポートを有するアプリケーションをサポートする改善された装置および方法を提供することである。関連する目的は、このような改善された装置および方法を、これらの要件を１つ以上有し、互いに同時に実行される、サポート複数アプリケーション集合として提供することである。
【０００８】
本発明のさらなる目的は、現在および将来の機器における、計算、サイズ、電力およびコスト要件を満たす、処理を行う（埋め込み型、または他の型）、改善された装置および方法を提供することである。このような機器の例には、デジタルテレビ、デジタルビデオレコーダ、ビデオおよび／またはオーディオプレーヤー、ＰＤＡ、パーソナル・ナレッジ・ナビゲータ、携帯電話などが含まれるが、これらに限定されるものではなく、数例に過ぎない。
【０００９】
本発明のさらに別の目的は、本質的に並列処理であるアプリケーションを含む、幅広い範囲のアプリケーションをサポートする改善された装置および方法を提供することである。
【００１０】
さらなる目的は、マルチメディアおよびユーザインターフェース駆動アプリケーションをサポートする改善された装置および方法を提供することである。
【００１１】
さらに別の目的は、例えば、ピア・ツウ・ピアマルチ処理を含む、１つ以上のレベルで、マルチタスキングおよびマルチ処理を行う、改善された装置および方法を提供することである。
【００１２】
低コスト、低電力、および／またはロバストな市場に出されるまでの時間が短い実装を提供する、装置および方法を提供することである。
【課題を解決するための手段】
【００１３】
本発明による仮想プロセッサは、１つ以上のプロセッサと、該１つ以上のプロセッサ上で実行される１つ以上の仮想処理装置であって、各仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、１つ以上の仮想処理装置と、該１つ以上のプロセッサと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、（ｉ）１つ以上のイベントの各々をそれぞれのスレッドに関連付け、（ｉｉ）そのスレッドがいずれの仮想処理装置および／またはプロセッサが実行中であるかに関わらず、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、イベント伝達メカニズムとを備え、これにより上記目的を達成する。
【００１４】
前記イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）およびメモリイベントのいずれかを含むというさらなる改善点を有してもよい。
【００１５】
少なくとも選択されたスレッドは、一時停止状態から実行状態に移行することによってそれぞれの通知に応答するというさらなる改善点を有してもよい。
【００１６】
前記イベント伝達メカニズムは、イベント発生を段階的に行うイベントキューを含むというさらなる改善点を有してもよい。
【００１７】
前記イベント伝達メカニズムは、イベントをスレッドにマッピングするテーブルを含むというさらなる改善点を有してもよい。
【００１８】
前記テーブルはイベントを、それらのイベントの発生に応答するために、好ましいスレッドにマッピングするというさらなる改善点を有してもよい。
【００１９】
前記イベント伝達メカニズムは、実行されるメモリ参照命令はそれらの演算を生じさせる、ペンディングメモリ演算とそれぞれのスレッドとの間の関連を確立するテーブルを含むというさらなる改善点を有してもよい。
【００２０】
前記イベント伝達メカニズムは、前記処理装置のうちの１つで実行中のシステムスレッドに、仮想処理装置に常駐しないスレッドに関連付けられたイベントの発生を通知するというさらなる改善点を有してもよい。
【００２１】
前記システムスレッドは、選択された通知に、スレッドを一時停止状態から実行状態に移行させることによって応答するというさらなる改善点を有してもよい。
【００２２】
少なくとも選択されたアクティブスレッドが、互いに対して同時に、それぞれの前記通知に応答するというさらなる改善点を有してもよい。
【００２３】
少なくとも１つのスレッドが動作中のシステムカーネルの介入なしに、それぞれの通知に応答するというさらなる改善点を有してもよい。
【００２４】
本発明による仮想プロセッサは、１つ以上のプロセッサ上で実行される１つ以上の仮想処理装置であって、各仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、１つ以上の仮想処理装置と、該スレッドと通信接続されているイベントキューであって、該イベントキューは、該スレッドによってキューに入れられた少なくともソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）を含むイベント発生を段階的に行う、イベントキューと、該スレッドと、該イベントキューと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知し、該イベントは、少なくともソフトウェアイベントを含む、イベント伝達メカニズムと（ｉ）該通知を生じさせる発生を決定するために、該イベントキューにアクセスすることと、（ｉｉ）その発生を扱うこととによって、ソフトウェアイベントに応答する少なくとも１つのスレッドとを備え、これにより上記目的を達成する。
【００２５】
ソフトウェアイベントをキューに入れる、前記命令を実行する１つ以上のスレッドが、いずれのスレッドがそのイベントにおいて通知されるべきか決定するというさらなる改善点を有してもよい。
【００２６】
本発明によるデジタルデータプロセッサは、デジタルデータプロセッサであって、データフローベースの同期化が、複数の処理および／またはスレッド（まとめて「スレッド」という）と、１つ以上のアクセス可能なメモリ位置を有し、該複数のスレッドと通信接続されているメモリであって、少なくとも選択されたメモリ位置が、関連付けられた状態を有し、該スレッドのうちの１つ以上によってアクセスのためのデータ項目を格納することができ、該状態はフル状態および空状態のいずれかを含む、メモリと、該選択されたメモリ位置を参照し、該選択された位置が該空状態と関連付けられている場合、該選択されたスレッドを少なくとも該選択された位置が該フル状態と関連付けられるまで一時停止させる、第１のメモリ命令を実行する選択されたスレッドとを含むという改善点を有し、これにより上記目的を達成する。
【００２７】
前記選択された位置が前記フル状態と関連付けられている場合、前記第１の命令の実行は、該選択された位置に格納されているデータ項目を前記選択されたスレッドに読み出させ、該選択された位置が前記空状態と関連付けられるようにするというさらなる改善点を有してもよい。
【００２８】
本発明によるデジタルデータプロセッサは、データフローベースの同期化が、複数の処理および／またはスレッド（まとめて「スレッド」という）と、１つ以上のアクセス可能なメモリ位置を有し、該複数のスレッドと通信接続されているメモリであって、少なくとも選択されたメモリ位置が、関連付けられた状態を有し、該複数のスレッドによってアクセスのためのデータ項目を格納することができ、該状態はフル状態および空状態のいずれかを含む、メモリと、該選択されたメモリ位置を参照し、（ｉ）該選択された位置が該フル状態と関連付けられている場合、該選択された位置に格納されているデータ項目を選択されたスレッドに読み出させ、該選択された位置が前記空状態と関連付けられるようにし、（ｉｉ）該選択された位置が該空状態と関連付けられている場合、該選択されたスレッドの実行を少なくとも該選択された位置が該フル状態と関連付けられるまで一時停止させ、その後、該選択された位置に格納されているデータを該選択されたスレッドに読み出させ、該選択された位置が該空状態と関連付けられるように第１のメモリ命令を実行する選択されたスレッドと、位置から該選択されたメモリ位置を参照し、（ｉ）該選択された位置が該空状態と関連付けられている場合、選択されたデータが該選択された位置に格納されるようにし、選択された位置が該フル状態と関連付けられるようにし、（ｉｉ）該選択された位置が該フル状態と関連付けられている場合、例外がシグナリングされるように第２のメモリ命令を実行する該選択された、または他のスレッドと
を含むという改善点を有し、これにより上記目的を達成する。
【００２９】
本発明による仮想プロセッサは、メモリと、該メモリと通信接続されている１つ以上の仮想処理装置であって、該仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、１つ以上の仮想処理装置と、該メモリ内の選択された位置を参照し、該選択された位置が空状態と関連付けられている場合、該選択されたスレッドを少なくとも該選択された位置がフル状態と関連付けられるまで一時停止させる、第１のメモリ命令を実行する選択されたスレッドとを備え、これにより上記目的を達成する。
【００３０】
本発明によるデジタルデータプロセッサは、デジタルデータプロセッサであって、イベント処理が、１つ以上のプロセッサ上で実行されている１つ以上の処理および／またはスレッド（まとめて「スレッド」という）と、該複数のスレッドと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、（ｉ）１つ以上のイベントをそれぞれのスレッドに関連付け、（ｉｉ）このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知する、イベント伝達メカニズムとこのような通知に対して互いに同時にそれぞれ応答する少なくとも選択されたアクティブスレッドとを含むという改善点を有し、これにより上記目的を達成する。
【００３１】
該複数のスレッドがオぺレーティングシステムカーネルの介入なしに、互いに同時にそれぞれ応答するというさらなる改善点を有してもよい。
【００３２】
前記イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）およびメモリイベントのいずれかを含むというさらなる改善点を有してもよい。
【００３３】
本発明による仮想プロセッサは、メモリと、該メモリと通信接続されている複数の仮想処理装置であって、各仮想処理装置は、１つ以上の処理またはスレッド（まとめて「スレッド」という）を実行し、各スレッドは、そのスレッドの寿命の間、同じ仮想処理装置および／または同じプロセッサで実行されるように制約されているか、制約されていないかのいずれかである、複数の仮想処理装置と、データ項目を選択されたメモリ位置に格納し、その位置がフル状態であることをその位置と関連付けられた状態フィールドが示すようにさせる、第１のメモリ命令を実行する第１のスレッドと、該選択されたメモリ位置に格納されているデータ項目を、その位置と関連付けられた状態フィールドが該フル状態を示す場合に読み出す、そうではない場合は、該選択されたメモリ位置が空状態であることを示す状態フィールドを作成またはアップデートする、第２のメモリ命令を実行する第２のスレッドと、該仮想処理装置および該状態フィールドと通信接続されているイベント伝達メカニズムであって、該イベント伝達メカニズムは、スレッドがいずれの仮想処理装置および／またはプロセッサ上で実行中であるかに関わらず、該第１のメモリ命令の実行によってその位置と関連付けられた該状態フィールドが該フル状態を示す場合、メモリイベントを該第２のスレッドにシグナリングする、イベント伝達メカニズムとを備え、これにより上記目的を達成する。
【００３４】
前記第２のスレッドは、前記第２のメモリ命令を再実行することによってメモリイベントに応答してもよい。
【００３５】
前記イベント伝達メカニズムは、（ｉ）１つ以上のイベントをそれぞれのスレッドに関連付け、（ｉｉ）そのスレッドがいずれの仮想処理装置および／またはプロセッサ上で実行中であるかに関わらず、このようなそれぞれのスレッドに、関連付けられたイベントの発生を選択的に通知してもよい。
【００３６】
前記イベント伝達メカニズムは、前記第２のスレッドと前記選択されたメモリ位置との間に関連を確立する前記状態フィールドを含む、ペンディングメモリ演算テーブルを含んでもよい。
【００３７】
前記イベント伝達メカニズムは、１つ以上のイベントをそれぞれスレッドに関連付け、該イベントは、ハードウェア割り込み、ソフトウェア開始シグナリングイベント（「ソフトウェアイベント」）およびメモリイベントのいずれかであってもよい。
【００３８】
（要旨）
本発明によって達成される、これらの目的および他の目的は、ある局面において、１つ以上の仮想処理装置を含む仮想プロセッサを提供する。これらは、１つ以上のプロセッサ上で実行され、それぞれは、１つ以上のプロセスまたはスレッド（まとめて、「スレッド」という）を実行する。スレッドは、同じ仮想処理装置上で、それぞれの寿命を通じて実行されるように制約されてもよいが、必ずしもそうである必要はない。イベント伝達メカニズムは、イベントをそれぞれのスレッドに関連付け、そのスレッドがそのときに実行されている仮想処理装置および／またはプロセッサに関わらず、イベントが発生するときにこれらのスレッドに通知する。
【００３９】
例えば、デジタルＬＣＤテレビにおいて用いられる本発明による埋め込み型仮想プロセッサは、複数の仮想処理装置を実行するプロセッサモジュールを含み、それぞれが、デジタルＬＣＤ−ＴＶ動作（例えば、ＭＰＥＧデマルチプレクス、映像デコード、ユーザインターフェース、オペレーティングシステムなど）のそれぞれの局面を扱うスレッドを処理する。イベント伝達メカニズムは、ハードウェア割り込み、ソフトウェアイベント（例えば、割り込みの性質をおびたソフトウェア開始イベント）、およびメモリイベントをそれぞれのスレッドに関連付ける。イベントが発生する場合、イベント伝達メカニズムは、そのときいずれの仮想処理装置を実行しているかに関わらず、イベントを適切なスレッドに伝達する。
【００４０】
本発明の関連の局面は、選択されたスレッドが、一時停止状態から実行状態に移行することによってイベント伝達メカニズムからの通知に応答する、上述したような仮想プロセッサを提供する。上記の例を続けると、デジタルＬＣＤ  ＴＶ埋め込み型仮想プロセッサにおける仮想処理装置上で実行されるユーザインターフェーススレッドは、待機またはアイドルから、イベント伝達メカニズムによって伝達されるユーザキーパッド割り込みに応答して、実行中に移行し得る。
【００４１】
本発明のさらなる関連の局面は、イベント伝達メカニズムが、仮想処理装置のうちの１つの上で実行されるシステムスレッドに、処理装置に常駐していないスレッドに関連付けられたイベントの発生を通知する、上述したような仮想プロセッサを提供する。システムスレッドは、スレッドを一時停止状態から実行状態に移行することによって、このような通知に応答し得る。
【００４２】
本発明のさらなる関連の局面は、少なくとも選択されたアクティブスレッドが、互いに同時に、かつ／または、オぺレーティングシステムカーネルの介入なしに、このような通知のそれぞれに応答する、上述したような仮想プロセッサを提供する。
【００４３】
本発明のさらなる局面は、イベント伝達メカニズムが、ペンディングメモリ演算と、このような演算の完了を待機する間に一時停止したそれぞれのスレッドとの間の関連を確立するペンディングメモリ演算テーブルを含む、上述したような仮想プロセッサを提供する。イベント伝達メカニズムは、メモリイベントを、全てのペンディングメモリ演算が完了したスレッドにシグナリングする。本発明の関連の局面は、少なくともハードウェア割り込みをスレッドにマッピングするイベントからスレッドへのルックアップテーブルを含む仮想プロセッサを提供する。
【００４４】
さらに他の局面において、本発明は、１つ以上のスレッドは、ソフトウェアイベントをイベントキューにエンキューする命令を実行する、上述したような仮想プロセッサを提供する。関連の局面によると、命令を実行する１つ以上のスレッドが、いずれのスレッドにイベントが通知されるのかを指定する。
【００４５】
本発明の他の局面は、スレッドのうちの少なくとも１つが、現在の命令シーケンスの実行を一時停止し、エラーハンドラを実行することによって、ハードウェア割り込みに応答する、上述したような仮想プロセッサを提供する。関連の局面において、そのスレッドは、エラーハンドラの実行の間、イベント通知を少なくとも一時的にディセーブルすることによってハードウェア割り込みに応答する。さらなる関連の局面において、そのスレッドは、エラーハンドラの実行に続く現在の命令シーケンスを一時停止することによって、ハードウェア割り込みに応答する。
【００４６】
さらに他の局面において、本発明は、改善されたデータフローベースの同期化を有するデジタルデータプロセッサを提供する。このようなデジタルデータプロセッサは、複数のプロセッサおよび／またはスレッド（再度、まとめて「スレッド」という）と、それらのスレッドによってアクセス可能なメモリとを含む。少なくとも選択されたメモリ位置は、関連付けられた状態を有し、１つ以上のスレッドによるアクセスのために、データ項目を格納することが可能である。状態は、少なくともフル状態（Ｆｕｌｌ）および空（Ｅｍｐｔｙ）状態を含む。選択されたスレッドは、選択されたメモリ位置を参照する第１のメモリ命令を実行する。選択された位置が空状態と関連付けられている場合、選択されたスレッドは選択された位置がフル状態と関連付けられるようになるまで一時停止する。
【００４７】
本発明の関連の局面は、選択された位置がフル状態と関連付けられている場合、第１の命令の実行によって、選択された位置に格納されたデータ項目が選択されたスレッドに読み出され、選択された位置が空状態に関連付けられるようになる、改善されたこのようなデジタルデータプロセッサを提供する。本発明のさらに関連の局面によると、複数の実行中スレッドは、１つ以上の処理装置に常駐し、一時停止されたスレッドは、これらのスレッドに少なくとも一時的に存在しないようにされる。
【００４８】
本発明は、さらなる局面において、選択されたスレッドまたは他のスレッドが、選択されたメモリ位置を参照する第２のメモリ命令を実行する、上述したようなデジタルデータプロセッサを提供する。選択された位置が空状態と関連付けられている場合、第２のメモリ演算の実行によって、選択されたデータが選択された位置に格納され、選択された位置がフル状態に関連付けられるようになる。
【００４９】
さらに他の局面において、本発明は、メモリと、そのメモリにアクセスするスレッドを実行する１つ以上の仮想処理装置とを含む仮想プロセッサを提供する。選択されたスレッドは、メモリ内のある位置に向けられた第１のメモリ命令を実行する。その位置が空状態と関連付けられている場合、命令の実行によって、その位置がフル状態と関連付けられるようになるまでスレッドが一時停止される。
【００５０】
本発明の関連の局面は、上述したようなイベント伝達メカニズムをさらに含む上述したような仮想プロセッサを提供する。
【００５１】
本発明のさらなる局面は、上述したような仮想プロセッサを１つ以上含む、デジタルＬＣＤテレビ、デジタルビデオレコーダ（ＤＶＲ）およびサーバ、ＭＰ３サーバ、携帯電話、ならびに／あるいは他のデバイスを提供する。本発明の関連の局面は、上述したような改善されたデータフロー同期化を有するプロセッサを含む、このようなデバイスを提供する。
【００５２】
本発明のさらに他の局面は、上述した仮想プロセッサ、デジタルデータプロセッサおよびデバイスの演算を並列処理する方法を提供する。
【００５３】
本発明のこれらの局面および他の局面は、図面および以下の説明に明らかである。
【発明の効果】
【００５４】
本発明は、デジタルデータ処理の改善された装置および方法を提供することができる。
【００５５】
本発明はまた、高計算要件、リアルタイムアプリケーション要件、マルチメディア要件、音声およびグラフィカルユーザインターフェース、インテリジェンス、バックグラウンドタスクサポート、インタラクティビティ、ならびに／あるいは透過的インターネット、ネットワーキング、および／またはＰ２Ｐアクセスサポートを有するアプリケーションをサポートする改善された装置および方法を提供することができる。
【００５６】
本発明はまた、現在および将来の機器における、計算、サイズ、電力およびコスト要件を満たす、処理を行う（埋め込み型、または他の型）、改善された装置および方法を提供することができる。
【発明を実施するための最良の形態】
【００５７】
本発明のより完全な理解は、図面を参照しながら達成され得る。
【００５８】
（詳細な説明）
図１は、本発明のある実施例に従って構成され、動作するプロセッサモジュール５を示す。プロセッサモジュール５は、本明細書および添付の図面を通じて、場合によっては、「ＳＥＰ」と呼ばれる。モジュールは、汎用プロセッサ、例えば、ＰＣ、ワークステーション、またはメインフレームコンピュータの基礎を提供し得るが、例示した実施形態は、埋め込みプロセッサとして利用されている。
【００５９】
モジュール５は、単独で、または、１つ以上のこのようなモジュールと組み合わせて用いられ得るが、特に、計算要件が性質的に並行であり、複数の同時に実行されるアプリケーションおよび／または命令レベル並列処理の利点を受けるデバイスまたはシステムを含み得る。このようなデバイスまたはシステムには、リアルタイム要件を有するデバイスまたはシステム、マルチメディアアプリケーションが実行されるデバイスまたはシステム、ならびに／あるいは、イメージ、信号、グラフィックス、および／またはネットワーク処理のような高計算要件を有するデバイスまたはシステムが含まれ得る。モジュールはまた、１つのプラットフォーム上の複数のアプリケーションの集積、例えば、アプリケーションの同時使用があるような場合にも適する。モジュールは、モジュールが埋め込まれているか、または、他の方法で組み込まれたデバイスおよび／またはシステムにわたって、また、ネットワーク（有線、無線、もしくはその他）、またはデバイスおよび／またはシステムを接続する他の媒体にわたってシームレスアプリケーション実行を提供する。さらに、モジュールは、ピア・ツウ・ピア（Ｐ２Ｐ）アプリケーション、また、ユーザインタラクティビティを有するアプリケーションに適する。上記の説明は、モジュール５が適するアプリケーションおよび環境の広範囲にわたるリストであるとは意図されず、一例に過ぎない。
【００６０】
モジュール５が埋め込まれ得るデバイスおよびシステムの例には、特に、デジタルＬＣＤ−ＴＶ、例えば、図２４に示すタイプのデジタルＬＣＤ−ＴＶが含まれる。デジタルＬＣＤ−ＴＶにおいて、モジュール５は、システムオンチップ（ＳＯＣ）構成に組み込まれる。（当然、モジュールは、シングルチップ上に組み込まれる必要はなく、複数チップ、１つ以上の回路基板、１つ以上の別々に実装されたデバイス、および／またはこれらの組合せに組み込まれ得ることが理解される。）さらなる例には、デジタルビデオレコーダ（ＤＶＲ）およびサーバ、ＭＰ３サーバ、携帯電話、静止画および動画カメラを集積するアプリケーション、ゲームプラットフォーム、ユニバーサルネットワークディスプレイ（例えば、デジタルＬＣＤ−ＴＶ、ネットワークにつながれた情報／インターネット機器、ならびに、汎用アプリケーションプラットフォーム）、Ｇ３携帯電話、個人用情報端末、などが含まれる。
【００６１】
モジュール５は、スレッド処理装置（ＴＰＵ）１０〜２０と、レベル１（Ｌ１）命令およびデータキャッシュ２２および２４と、レベル２（Ｌ２）キャッシュ２６と、パイプライン制御２８と、実行（または機能ユニット）３０〜３８、すなわち、整数処理ユニット、浮動小数点処理ユニット、比較ユニット、メモリユニット、およびブランチユニットとを含む。ユニット１０〜３８は、図に示すように接続され、以下により詳細に説明される。
【００６２】
概要として、ＴＰＵ１０〜２０は、プロセッサモジュール５内で物理的に実装される仮想処理装置であり、任意の所与の瞬間で、１つ（以上）のプロセス（単数または複数）および／またはスレッド（単数または複数）（まとめて「スレッド」と呼ばれる）に結合され、処理する。ＴＰＵは、汎用レジスタ、プリディケートレジスタ、制御レジスタにおいて表される、それぞれのスレッドごとの状態を有する。ＴＰＵは、ランチ（ｌａｕｎｃｈ）およびパイプライン制御等のハードウェアを共有し、このハードウェアは、各サイクルにおいて、任意の組み合わせのスレッドから５つまでの命令をランチする。図面に示されているように、ＴＰＵは、さらに実行ユニット３０〜３８を共有し、この実行ユニット３０〜３８は、独立して、何れのスレッドから来たかを知る必要なく、ランチした命令を実行する。
【００６３】
さらなる概要として、例示したＬ２キャッシュ２６は、スレッド処理装置１０〜２０の全てによって共有されており、モジュール５が組み込まれるチップの内部（ローカル）と外部との両方で、命令およびデータを記憶装置に格納する。例示したＬ１命令およびデータキャッシュ２２および２４も、ＴＰＵ１０〜２０によって共有されており、上記のチップにとってローカルな記憶装置に基づく。（当然、他の実施形態において、レベル１およびレベル２キャッシュは、異なるように構成され得る。例えば、モジュール５に対して完全にローカルであってもよいし、完全に外部であってもよいし、または他の様態であってもよい。）
モジュール５の設計は、スケーラブルである。２つ以上のモジュール５が、ＳｏＣ設計または他の構成において「連動」されてもよく、そのことによって、アクティブスレッドの数および処理能力全体が増大する。モジュール５によって用いられ、本明細書中で説明されるスレッドモデルに起因して、結果として増加したＴＰＵは、ソフトウェアに対して透過性を有している。例示したモジュール５は、６個のＴＰＵを有するが、他の実施形態はより多い数（当然、より少ない数であってもよい）のＴＰＵを有し得る。しかし、さらなる機能ユニットが提供され得る。例えば、サイクルごとにランチされる命令の数は、５個から１０〜１５個、または、それより多い数まで増加され得る。Ｌ１およびＬ２キャッシュ構成についての以下の記載から明らかなように、これらの数も、スケールされ得る。
【００６４】
例示したモジュール５は、Ｌｉｎｕｘをアプリケーションソフトウェア環境として用いる。マルチスレッドとの関連で、これは、リアルタイムおよび非リアルタイム用途が１つのプラットフォーム上で実行することを可能にする。これはまた、生産機能性を増大させるためのオープンソースソフトウェアおよびアプリケーションの活用を可能にする。さらに、これは、各種のプロバイダからのアプリケーションの実行を可能にする。
【００６５】
（マルチスレッド）
上述したように、ＴＰＵ１０〜２０は、仮想処理装置であり、１つのプロセッサモジュール５内に物理的に実装される。ＴＰＵ１０〜２０は、それぞれ、所与の瞬間に、１つ（またはそれ以上）のスレッドに結びつけられ、処理する。スレッドは、幅広い用途を具現化し得る。デジタルＬＣＤ−ＴＶにおいて有用な例には、例えば、ＭＰＥＧ２信号デマルチプレクス、ＭＰＥＧ２映像デコード、ＭＰＥＧ音声デコード、デジタルＴＶインターフェース演算、オペレーティングシステム実行（例えば、Ｌｉｎｕｘ）が含まれる。当然、これらの用途および／または他の用途が、デジタルＬＣＤ−ＴＶ、およびモジュール５が具現化され得る各種の他のデバイスおよびシステムにおいて有用であり得る。
【００６６】
ＴＰＵによって実行されるスレッドは独立しているが、メモリおよびイベントを通じて通信し得る。プロセッサモジュール５のそれぞれのサイクルの間、命令は、実行または機能ユニット３０〜３８を利用するために必要な数のアクティブ実行中スレッドによってランチされる。例示的な実施形態において、この点で、ラウンドロビンプロトコルは、それぞれのスレッドに「公正さ」を保証するために課せられる（しかし、他の実施形態においては、優先順位または他のプロトコルが、代わりにまたはそれに加えて用いられ得る）。１つ以上のシステムスレッドは、（例えば、アプリケーションを起動する、スレッドアクティブ化を容易にするなどのため）ＴＰＵ上で実行され得るが、アクティブスレッドを実行するためにオペレーティングシステム介入は必要とされない。
【００６７】
複数アクティブスレッド（仮想プロセッサ）をサポートする、基礎をなす理論的根拠は、以下の通りである。
【００６８】
（機能的性質）
プロセッサごとの複数アクティブスレッドは、１つのマルチスレッドプロセッサが複数のアプリケーション、メディア、信号処理およびネットワークプロセッサに取って代わることを可能にする。また、複数アクティブスレッドは、アプリケーション、イメージ、信号処理およびネットワーク化に対応する複数スレッドが、低待ち時間および高性能で、動作し、同時に相互運用することを可能にする。コンテキストスイッチングおよびインターフェースオーバーヘッドは最小限にされる。ＭＰ４デコードのような１つのイメージ処理アプリケーション内でさえ、スレッドは、例えば、フレームｎが作成されている間にフレームｎ＋１のためのデータを準備するため、パイプライン方式で容易に同時に演算することができる。
【００６９】
（パフォーマンス）
プロセッサごとの複数アクティブスレッドは、機能ユニットをより良好に利用し、メモリおよび他のイベント待ち時間を許容することによって、個々のプロセッサのパフォーマンスを高める。同時に実行するスレッドを４つまでサポートするため、パフォーマンスが２倍向上することも珍しくない。電力消費およびダイサイズの増大は、無視できる程度であり、電力単位あたりのパフォーマンスおよび価格パフォーマンス比は向上する。プロセッサごとの複数アクティブスレッドはまた、ブランチおよびキャッシュミスに起因するパフォーマンスの劣化を、このようなイベントの間、他のスレッドを実行することによって、低減する。さらに、プロセッサごとの複数アクティブスレッドは、殆どのコンテキストスイッチオーバーヘッドをなくし、リアルタイムアクティビティの待ち時間を減らす。さらに、プロセッサごとの複数アクティブスレッドは、一般的な、高性能イベントモデルをサポートする。
【００７０】
（実装）
プロセッサごとの複数アクティブスレッドは、パイプラインおよび設計全体の簡略化につながる。他のスレッドが実行され得るので、複雑なブランチ予測の必要はない。これは、複数プロセッサチップに対して、１つのプロセッサチップのコストを下げることにつながり、他の複雑さが消去される場合、コストを下げる。これは、さらに、電力単位当たりのパフォーマンスを向上させる。
【００７１】
図２は、従来のスーパースカラープロセッサによるスレッド処理を、例示したプロセッサモジュール５のスレッド処理と対比させた図である。２Ａを参照すると、スーパースカラープロセッサにおいて、（斜め線によって示される）１つの実行中スレッドからの命令は、実行されているコード内の実際の並列処理および依存状態に基づいて、利用可能な実行装置上で実行されるように動的にスケジュールされる。これは、平均的に、ほとんどの実行装置が、各サイクルの間、利用されることができないことを意味する。実行装置の数が増加するにつれて、利用率は、典型的には下がる。また、実行装置は、メモリシステムおよびブランチ予測ミス／待機の間、アイドル状態である。
【００７２】
対照的に、２Ｂを参照すると、モジュール５において、複数スレッド（それぞれ異なる線パターンによって示される）からの命令は、同時に実行される。各サイクルで、モジュール５は、複数スレッドからの命令をスケジューリングして、利用可能な実行ユニットリソースを最適に利用する。従って、実行装置利用およびパフォーマンス全体はより高く、同時にソフトウェア対して透過性を有している。
【００７３】
（イベントおよびスレッド）
例示した実施形態において、イベントには、ハードウェア（またはデバイス）イベント、例えば、割り込みと、デバイスイベントと同等であるが、ソフトウェア命令によって開始されるソフトウェアイベントと、メモリイベント、例えば、キャッシュミスの完了またはメモリプロデューサ−コンシューマ（フル−空）取引とがある。ハードウェア割り込みは、通常は、アイドルスレッド（例えば、ターゲットスレッドまたはターゲットグループ内のスレッド）によって扱われるデバイスイベントに変換される。ソフトウェアイベントは、例えば、１つのスレッドが他のスレッドを直接ウエイク（ｗａｋｅ）することを可能にするために、用いられ得る。
【００７４】
各イベントは、アクティブスレッドに結合される。特定のスレッド結合がない場合、例示的な実施形態において、常にアクティブであるデフォルトシステムスレッドに結合する。そのスレッドは、その後、イベントを必要に応じて処理する。これには、仮想プロセッサ上の新たなスレッドのスケジューリングが含まれる。特定のスレッド結合がある場合、（イベント伝達メカニズムに関連して以下に説明される）ハードウェアまたはソフトウェアイベントの伝達の際、ターゲットスレッドは、アイドル状態から実行中に移行される。ターゲットスレッドが既にアクティブであり、実行中である場合、イベントは、処理のため、デフォルトシステムスレッドに向けられる。
【００７５】
例示した実施形態において、スレッドは、キャッシュミスおよび同期化待機を含むメモリシステムストール（短期遮断）と、ブランチミス予測（非常に短期の遮断）と、明示的なイベントの待機（ソフトウェアまたはハードウェアのいずれかで生成される）と、およびシステムスレッド明示的ブロックアプリケーションスレッドとに起因する非実行状態（ブロック）になり得る。
【００７６】
本発明の好ましい実施形態において、イベントは、物理プロセッサモジュール５および効率的な動的分散実行環境の基礎を提供するネットワークにわたって動作する。従って、例えば、デジタルＬＣＤ−ＴＶあるいは他のデバイスまたはシステムにおいて実行されるモジュール５は、スレッドを実行し得、ネットワーク（無線、有線、またはその他）を介して動的に移行されるメモリ、あるいは、サーバまたは他の（遠隔）デバイスからの他のメディアを利用する。スレッドおよびメモリベースのイベントは、例えば、スレッドが、本明細書の原理に従って動作する任意のモジュール５上で透過的に実行し得ることを保証する。これは、例えば、モバイルデバイスが、ネットワーク接続された他のデバイスの電力の活用することを可能にする。これは、また、ピア・ツウ・ピアおよび複数スレッドアプリケーションの、遠隔のネットワーク接続されたデバイス上での透過的に実行を可能にする。利点には、パフォーマンスの向上、機能性の向上および電力消費の低下が含まれる。
【００７７】
スレッドは、２つの特権レベル、すなわち、システムおよびアプリケーションで実行される。システムスレッドは、全ての状態のそのスレッドおよびプロセッサ内の他のスレッド全てにアクセスし得る。アプリケーションスレッドは、それ自体に対応する非特権状態にしかアクセスできない。デフォルトで、スレッド０は、システム特権で実行される。他のスレッドは、システム特権スレッドによって作成される場合に、システム特権に構成され得る。
【００７８】
図３を参照すると、例示した実施形態において、スレッド状態は以下の通りである。
【００７９】
（アイドル（またはノンアクティブ））
スレッドコンテキストはＴＰＵにロードされ、スレッドは、命令を実行していない。アイドルスレッドは、例えば、ハードウェアまたはソフトウェアイベントが発生するときに、実行に移行する。
【００８０】
（待機（またはアクティブ、待機））
スレッドコンテキストはＴＰＵにロードされるが、現在命令を実行しない。待機スレッドは、メモリ命令が進むことを可能にし得る、発生を待っているイベント、例えば、キャッシュ動作が完了するときに、実行に移行する。
【００８１】
（実行（またはアクティブ、実行））
スレッドコンテキストはＴＰＵにロードされ、現在命令を実行している。スレッドは、例えば、そうではない場合には空／充填（Ｆｉｌｌ）（プロデューサ−コンシューマメモリ）命令が完了しないので、メモリ命令がキャッシュ動作、例えばキャッシュミスを完了することを待機する必要があるときに、待機に移行する。スレッドは、イベント命令が実行されるときに、アイドルに移行する。
【００８２】
ＴＰＵのそれぞれに関連付けられたスレッド有効ビット（またはフラグあるいは他のインジケータ）は、スレッドのＴＰＵへのソフトウェアローディングおよびアンローディングのために、任意のスレッド状態を妨害することなく、スレッド実行をディセーブルする。
【００８３】
プロセッサモジュール５は、実行する命令の利用可能性に基づいて、アクティブスレッドにわたってバランスを良くする。モジュールはまた、均一にフルにされたスレッドそれぞれについて、命令キューを保持しようと試みる。従って、最もアクティブであり続けるスレッドが、ほとんどの命令を実行する。
【００８４】
（イベント）
図４は、本発明の１実施例によるシステムにおけるイベント伝達メカニズムを示す。イベントがスレッドにシグナリングされ、スレッドは（現在実行状態にある場合）実行を一時停止し、デフォルトイベントハンドラを、例えば、仮想アドレス０ｘ０において実行することによって認識する。
【００８５】
例示的な実施形態において、特定のスレッドにシグナリングされ得る５つの異なるイベントタイプがある。
【００８６】
【表１】
2004362564.tif 000003
例示したイベントキュー４０は、ハードウェアデバイスによって提示されたイベントおよびソフトウェアベースのイベント命令（例えば、ソフトウェア「割り込み」）を、仮想イベント番号（ＶＴＮ）およびイベント番号を含むタプルの形式で、段階的に行う。
【００８７】
【表２】
2004362564.tif 000004
【００８８】
【表３】
2004362564.tif 000005
当然、ハードウェアデバイスによって提示されるイベントおよびソフトウェア命令は、他の形式で、かつ／または他の情報を含んで提示され得る。
【００８９】
次に、イベントタプルは、受け取った順序で、イベントからスレッドへのルックアップテーブル（イベントテーブルまたはスレッドルックアップテーブルとも呼ばれる）４２に送られる。イベントからスレッドへのルックアップテーブル４２は、いずれのＴＰＵが指示されたスレッドを現在扱っているかを判定する。その後、イベント番号からなる「ＴＰＵイベント」の形態でイベントが、イベントからスレッドへの伝達メカニズム４４を介してＴＰＵ（および、それぞれのスレッド）に提示される。特定のイベントを扱うスレッドが依然として示されていない場合、対応するイベントは、ＴＰＵのうちの１つにおいてアクティブであるデフォルトシステムスレッドに送られる。
【００９０】
イベントキュー４０は、ハードウェア、ソフトウェア、および／またはその組合せにおいて実施され得る。モジュール５によって代表される、埋め込み型システムオンチップ（ＳｏＣ）実装において、キューは、必要なキュー機能を提供する、一連のゲートおよび専用バッファとして実装される。別の実施形態において、キューは、ソフトウェア（またはハードウェア）リンクリスト、アレイなどにおいて実装される。
【００９１】
テーブル４２は、ハードデバイスまたはイベント命令によって提示されるイベント番号（例えば、ハードウェア割り込み）と、イベントをシグナリングすることが好ましいスレッドとの間に確立される。可能な場合としては、以下の場合がある。
【００９２】
イベント番号にエントリがない：デフォルトシステムスレッドにシグナリングする
スレッドに提示：スレッドが実行、アクティブ、またはアイドルである場合特定のスレッド数にシグナリングし、そうではない場合、指定されたシステムスレッドにシグナリングする
テーブル４２は、アップデートされたイベントのスレッドへのマッピングを保持する、専用の、またはそうではない１つの格納領域であり得る。テーブルはまた、分散型、またはそうではない複数の格納領域を構成し得る。それにも関わらず、テーブル４２は、ハードウェア、ソフトウェア、および／またはこれらの組合せに実装され得る。モジュール５によって代表される埋め込み型システムオンチップ（ＳｏＣ）実装において、テーブルは、アップデートされたイベントのスレッドへのマッピングを保持する、専用格納領域上の「ハードウェア」ルックアップを行うゲートによって実装される。このテーブルはまた、例えば、スレッドがＴＰＵ１０〜２０に新たにロードされ、かつ／または、インアクティブにされ、ＴＰＵ１０〜２０からアンロードされるにつれて、マッピングをアップデートするシステムレベル特権スレッドによって、ソフトウェアアクセス可能である。いくつかの実施形態において、テーブル４２は、マッピングを保持する格納領域のソフトウェアベースルックアップによって実装される。
【００９３】
イベントのスレッドへの伝達メカニズム４４はまた、ハードウェア、ソフトウェア、および／またはこれらの組合せにおいて、実装され得る。モジュール５によって代表される埋め込み型ＳｏＣ実装において、シグナリングされるイベントをＴＰＵキューにルーティングするメカニズム４４はゲート（およびラッチ）によって実装される。ＴＰＵキュー自体は、一連のゲート、および、伝達されたイベントを待ち行列に並べるための専用バッファ４６〜４８として実装される。上述したように、別の実施形態において、メカニズム４４は、必要な機能性を提供するソフトウェア（または他のハードウェア構造）において実装され、同様に、キュー４６〜４８は、ソフトウェア（またはハードウェア）にリンクされたリスト、アレイなどにおいて実装される。
【００９４】
例示的な実施形態において、ハードウェアおよびソフトウェアイベント（すなわち、ソフトウェア開始シグナリングイベント、または「ソフトウェア割り込み」）を処理するプロシージャの概略は、以下の通りである。
【００９５】
１．イベントは現在実行しているアクティブスレッドであるＴＰＵにシグナリングされる
２．そのＴＰＵは、アクティブスレッドの実行を一時停止する。例外ステータス、例外ＩＰおよび例外メモリアドレス制御レジスタは、イベントのタイプに基づいて、イベントに対応する情報を示すように設定される。全てのスレッド状態が有効である。
【００９６】
３．ＴＰＵは、イベントシグナリングが対応するスレッド装置についてディセーブルされた状態で、仮想アドレス０ｘ０において、デフォルトイベントハンドラのシステム特権で実行を開始する。ＧＰレジスタ０〜３はスクラッチレジスタを含み、プリディケートレジスタ０〜１がイベントハンドラによってスクラッチレジスタとして利用され、システム特権である。慣習によって、ＧＰ［０］は、イベント処理スタックポインタである。
【００９７】
４．イベントハンドラは、対応するスレッド実行装置のための再入および再イネーブルイベントをシグナリングできるように、十分な状態を保護する。
【００９８】
５．その後、イベントハンドラはイベントを処理する。これは、イベントをＳＷベースキューに提示するだけであってもよいし、何らかの他の行動を取ることであってもよい。
【００９９】
６．その後、イベントハンドラは、状態を回復し、元のスレッドの実行に戻る。
【０１００】
メモリ関連イベントは、ある程度までしか異なるように扱われない。ペンディング（メモリ）イベントテーブル（ＰＥＴ）５０は、スレッドを実行から待機に移行するメモリ演算のためのエントリを（メモリ参照命令から）保持する。イベントからスレッドへのルックアップテーブル４２と同様に実装され得るテーブル５０は、参照を開始したペンディングメモリ演算、状態情報およびスレッドＩＤを保持する。ＰＥＴにおけるエントリに対応して、メモリ演算が完了し、任意の他のペンディング動作がそのスレッドについてのＰＥＴにない場合、ＰＥＴイベントは、対応するスレッドにシグナリングされる。
【０１０１】
例示した実施形態によるメモリイベント処理の概略は、以下の通りである。
【０１０２】
１．イベントは、現在アクティブスレッドを実行している装置への信号である
２．スレッドがアクティブ−待機状態であり、イベントがメモリイベントである場合、スレッドは、アクティブ実行に移行し、現在のＩＰにおいて実行を継続する。そうではない場合、このイベントは無視される。
【０１０３】
図面にさらに示されるように、例示した実施形態において、スレッド待機はタイムアウトし、スレッド例外は、スレッドに直接シグナリングされ、イベントからスレッドへの伝達メカニズム４４を介して送られない。
【０１０４】
（トラップ）
マルチスレッドおよびイベントの目的は、スレッドの通常のプログラム実行が、妨害されないようにすることである。発生するイベントおよび割り込みは、イベントを待機していた適切なスレッドによって扱われる。これが可能でない場合もあり、通常処理が割り込まれる必要がある。ＳＥＰは、この目的のため、トラップメカニズムをサポートする。イベントタイプに基づくアクションのリストは、システム例外ステータスレジスタにおいて列挙されるトラップの完全なリストと共に、以下に示される。
【０１０５】
【表４】
2004362564.tif 000006
例示したプロセッサモジュール５は、トラップが発生する場合、以下のアクションをとる。
【０１０６】
１．実行される次の命令を指定するＩＰ（命令ポインタ）は例外ＩＰレジスタにロードされる
２．特権レベルは、例外ＩＰレジスタのビット０に格納される
３．例外タイプは、例外状態レジスタに格納される
４．実行がメモリユニット命令に関連する場合、例外に対応するメモリアドレスは、例外メモリアドレスレジスタにロードされる
５．現在の特権レベルはシステムに設定される
６．ＩＰ（命令ポインタ）はクリアされる（ゼロ）
７．実行はＩＰ０で開始する
（仮想メモリおよびメモリシステム）
例示したプロセッサモジュール５は、６４ビット仮想アドレス（ＶＡ）空間と、６４ビットシステムアドレス（ＳＡ）（標準的な物理アドレスと異なる特徴を有する）と、ＶＡまたはＳＡがまばらに充填された仮想アドレスからシステムアドレスへの変換のセグメントモデルとを有する仮想メモリおよびメモリシステムアーキテクチャを利用する。
【０１０７】
オフチップメモリがＤＤＲ  ＤＲＡＭまたは他の形式のダイナミックメモリを利用し得るにも関わらず、ＴＰＵ１０〜２０によってアクセスされる全てのメモリは、キャッシュとして効率的に管理される。図１に戻ると、例示した実施形態において、メモリシステムは、２つのロジックレベルからなる。レベル１キャッシュは、最適な待ち時間および帯域幅のため、別個のデータキャッシュ２４と命令キャッシュ２２とに分割される。例示したレベル２キャッシュ２６は、オンチップ部分およびレベル２拡張と呼ばれるオフチップ部分からなる。全体として、レベル２キャッシュは、個々のＳＥＰプロセッサ（単数または複数）５用のメモリであり、複数ＳＥＰプロセッサ５が用いられる実装において、分散型の「全キャッシュ」メモリシステムに寄与する。当然、これらの複数のプロセッサは、同じメモリシステム、チップまたはバスを物理的に共有してもよく、例えば、ネットワークまたはその他を介して接続されてもよい。
【０１０８】
図５に、例示されたシステムにおいて用いられるＶＡからＳＡへの変換を示す。この変換は、（例示した実施形態において）セグメントが可変サイズ、例えば、２２４−２２８バイトであってもよい、セグメントベースで扱われる。ＳＡは、メモリシステムにキャッシュされる。メモリシステムにあるＳＡは、キャッシュ２２／２４、２６のレベルのうちの１つにエントリを有する。任意のキャッシュ（およびメモリシステム）にないＳＡは、事実上、メモリシステムにない。従って、メモリシステムは、ページ（およびサブページ）粒状度で、ソフトウェアおよびＯＳにとって自然な様式で、プロセッサ上のページテーブルのオーバーヘッドなしにまばらに充填される。
【０１０９】
上記の特徴に加えて、例示した実施形態の仮想メモリおよびメモリシステムアーキテクチャは、以下のさらなる特徴を有する。分散型共用型メモリ（ＤＳＭ）、ファイル（ＤＳＦ）、オブジェクト（ＤＳＯ）およびピア・ツゥ・ピア（ＤＳＰ２Ｐ）の直接サポート、スケーラブルキャッシュおよびメモリシステムアーキテクチャと、スレッド間で共有され得るセグメントと、高速レベル１キャッシュとである。これは、何故なら、完全な仮想から物理アドレスへの変換または仮想キャッシュの複雑さがない状態で、ルックアップがタグアクセスと並列であるからである。
【０１１０】
（仮想メモリの概要）
例示的なシステムにおける仮想アドレスは、メモリ参照およびブランチ命令によって構成される６４ビットアドレスである。仮想アドレスは、セグメントあたりのベースで、全てのシステムメモリおよびＩＯデバイスへのアクセスに用いられるシステムアドレスに変換される。各セグメントのサイズは、２２４〜２４８バイトの間で変化する。より具体的には、図５を参照すると、仮想アドレス５０は、図に示した様態で、セグメントテーブル５２におけるエントリに一致させるために用いられる。一致されたエントリ５４は、図に示す仮想アドレスのコンポーネントと組合せられた場合、対応するシステムアドレスを指定する。さらに、一致されたエントリ５４は、対応するセグメントサイズおよび特権を指定する。次に、そのシステムアドレスは、システムメモリにマッピングする。システムメモリは、例示した実施形態において、まばらに埋められた２６４バイトを含む。例示した実施形態は、システム特権で、スレッドによってディセーブルされるアドレス変換を可能にする。この場合、セグメントテーブルがバイパスされ、全てのアドレスは、低い３２ビットへと切り捨てられる。
【０１１１】
例示したセグメントテーブル５２は、スレッドあたり１６〜３２エントリ（ＴＰＵ）を含む。テーブルは、ハードウェア、ソフトウェア、および／またはこれらの組合せで実装され得る。モジュール５によって代表される、埋め込み型システムオンチップ（ＳｏＣ）実装において、テーブルは、メモリにおける別々のエントリが各スレッド（例えば、スレッドあたり別のテーブル）に設けられる状態で、ハードウェアに実装される。セグメントは、同じシステムアドレスを指す各スレッドにつき、別々のエントリを設定することによって、２つ以上のスレッドの間で共有され得る。他のハードウェアまたはソフトウェア構造が、この目的のため、代わりに、またはこれに加えて用いられ得る。
【０１１２】
（キャッシュメモリシステム概要）
上述したように、命令およびデータ帯域幅を最大限にするため、レベル１キャッシュは、別々のレベル１命令キャッシュ２２およびレベル１データキャッシュ２４として構成される。
【０１１３】
図６を参照すると、オンチップＬ２キャッシュ２６ａは、タグおよびデータ部分からなる。例示した実施形態において、オンチップＬ２キャッシュ２６ａは、サイズが０．５〜１Ｍバイトであり、１２８ブロックを有し、１６方向に結合可能である。各ブロックは、拡張Ｌ２タグを格納するために６４ｋバイトが提供された状態で、１２８バイトデータまたは１６拡張Ｌ２タグを格納する。タグ内のタグモードビットは、拡張Ｌ２キャッシュについて、データ部が１６タグからなることを示す。
【０１１４】
拡張Ｌ２キャッシュ２６ｂは、上述したように、ＤＤＲ  ＤＲＡＭベースであるが、他のメモリタイプが用いられてもよい。例示した実施形態において、拡張Ｌ２キャッシュ２６ｂは、サイズが１ギガバイトまでであり、２５６方向に結合可能であり、１６ｋバイトページおよび１２８バイトサブページを有する。０．５ｍバイトのＬ２キャッシュ２６ａおよび１ｇバイトの拡張Ｌ２キャッシュ２６ｂの構成について、Ｌ２拡張を完全に記述するために１２％のオンチップＬ２キャッシュのみが必要である。より大きいオンチップＬ２またはより小さいＬ２拡張サイズのため、割合はより低くなる。Ｌ２キャッシュ（オンチップおよび拡張）を集めて、分散型ＳＥＰメモリシステムを作成する。
【０１１５】
例示した実施形態において、Ｌ１命令キャッシュ２２およびＬ１データキャッシュ２４は、８方向に結合可能であり、３２ｋバイトおよび１２８バイトブロックを有する。図に示すように、レベル１キャッシュの両方は、レベル２キャッシュの適切なサブセットである。レベル２キャッシュは、オンチップおよびオフチップ拡張Ｌ２キャッシュからなる。
【０１１６】
図７は、Ｌ２キャッシュ２６ａにおいてタグルックアップを行って、Ｌ２キャッシュアドレス７８に一致するデータブロック７０を識別するために、例示した実施形態において用いられるＬ２キャッシュ２６ａおよびロジックを表す。例示した実施形態において、そのロジックは、１６個のキャッシュタグアレイグループ７２ａ〜７２ｐと、対応するタグ比較要素７４ａ〜７４ｐと、対応するデータアレイグループ７６ａ〜７６ｐとを含む。これらは、図示されているように、Ｌ２キャッシュアドレス７８をグループタグアレイ７２ａ〜７２ｐと比較し、これも図示されているように、示されたデータデータアレイグループ７６ａ〜７６ｐによって識別されるデータブロック７０を選択する。
【０１１７】
キャッシュタグアレイグループ７２ａ〜７２ｐ、タグ比較要素７４ａ〜７４ｐ、および対応するデータアレイグループ７６ａ〜７６ｐは、ハードウェア、ソフトウェア、および／またはこれらの組み合わせに実装され得る。モジュール５によって代表される埋め込み型ＳｏＣ実装において、これらは図１９に示すように実装される。図１９は、３２ｘ２５６シングルポートメモリセルにおいて実施されるキャッシュタグアレイグループ７２ａ〜７２ｐと、１２８ｘ２５６シングルポートメモリセルにおいて実施されるデータアレイグループ７６ａ〜７６ｐとを示し、これらは全て図示されているように現在状態マシン制御ロジック１９０に接続されている。この素子は、図示されているように、本明細書と矛盾しない様態でＬ２キャッシュ装置２６ａの動作を容易にする状態マシン１９２と、Ｌ１命令およびデータキャッシュ２２および２４からのリクエストをバッファリングするリクエストキュー１９４とに接続されている。
【０１１８】
ロジック素子１９０は、さらに、Ｌ２キャッシュのオフチップ部分２６ｂとのインターフェースを提供するＤＤＲ  ＤＲＡＭ制御インターフェース２６ｃに接続されている。ロジック素子１９０は、同様に、液晶ディスプレイ（ＬＣＤ）、音声出力インターフェース、映像入力インターフェース、映像出力インターフェース、ネットワークインターフェース（無線、有線、またはその他）、記憶装置インターフェース、周辺機器インターフェース（例えば、ＵＳＢ、ＵＳＢ２）、バスインターフェース（ＰＣＩ、ＡＴＡ）を含むが、これらに限定されないＡＭＢＡ適合コンポーネントに接続されている。ＤＤＲ  ＤＲＡＭ制御インターフェース２６ｃおよびＡＭＢＡインターフェース２６ｄは、同様に、図示されるように、Ｌ２データキャッシュバス１９８によってＬ１命令およびデータキャッシュへのインターフェース１９６に接続されている。
【０１１９】
図８は、同様に、Ｌ２拡張キャッシュ２６ｂにおいてタグルックアップを行って、指定されたアドレス７８に一致するデータブロック８０を識別するために、例示した実施形態において用いられるロジックを表す。例示した実施形態において、そのロジックは、データアレイグループ８２ａ〜８２ｐと、タグ比較要素８４ａ〜８４ｐと、タグラッチ８６とを含む。これらは、図示されているように、Ｌ２キャッシュアドレス７８をデータアレイグループ８２ａ〜８２ｐと比較し、これも図示されているように、アドレス７８の対応する部分に一致するグループのうちの１つからのタグを選択するように、示されているように接続されている。一致するタグからの物理的なページ数は、図示されているように、アドレス７８のインデックス部と組合せされて、オフチップメモリ２６ｂにおけるデータブロック８０を識別する。
【０１２０】
データアレイグループ８２ａ〜８２ｐおよびタグ比較要素８４ａ〜８４ｐは、ハードウェア、ソフトウェア、および／またはこれらの組合せに実装され得る。モジュール５によって代表される、埋め込み型ＳｏＣ実装では、これらは、必要なルックアップおよびタグ比較機能を提供する、ゲートおよび専用メモリにおいて実装される。他のハードウェアまたはソフトウェア構造が、この目的のため、代わりに、または追加して用いられ得る。
【０１２１】
以下は、例示した実施形態におけるＬ２およびＬ２Ｅキャッシュ動作を示す擬似コードである。
【０１２２】
Ｌ２Ｅタグルックアップ、ヒットする場合、Ｌ１キャッシュにデータで応答する、それ以外では、Ｌ２Ｅタグのルックアップ、ヒットする場合、
タグをＬ２に割り当てる；
Ｌ２Ｅデータにアクセスし、対応するＬ２エントリに格納する；
Ｌ１キャッシュにデータで応答する；
それ以外では、拡張Ｌ２Ｅタグのルックアップ
Ｌ２Ｅタグを割り当てる；
タグをＬ２に割り当てる；
Ｌ２Ｅデータにアクセス、対応するＬ２エントリに格納し、Ｌ１キャッシュにデータで応答する
（スレッド処理装置の状態）
図９を参照すると、例示した実施形態は、６個までのアクティブスレッドをサポートする６個のＴＰＵを有する。それぞれのＴＰＵ１０〜２０は、図９に示すように、汎用レジスタ、プリディケートレジスタおよび制御レジスタを含む。システムおよびアプリケーション特権レベルにおけるスレッドは、同一状態を含むが、いくつかのスレッド状態情報は、凡例およびそれぞれの線パターンによって示すように、システム特権レベルにおいてのみ可視である。レジスタに加えて、それぞれのＴＰＵは、さらにペンディングメモリイベントテーブル、イベントキューおよびイベントからスレッドへのルックアップテーブルを含むが、これらは何れも図９には示されない。
【０１２３】
実施形態によっては、汎用レジスタの数は４８（以下）〜１２８（以上）個であってもよく、例示した実施形態は１２８個有する。プリディケートレジスタの数は２４（以下）〜６４（以上）であってもよく、例示した実施形態は３２個有する。アクティブスレッドの数は６（以下）〜２５６（以上）であり、例示した実施形態は８個有する。ペンディングメモリイベントテーブルのエントリは、１６（以下）〜５１２（以上）個であり、例示した実施形態は１６個有する。スレッドあたりのペンディングメモリイベントの数は、少なくとも２つであることが好ましい（しかし、より少ない可能性がある）。イベントキューは、（２５６（以上、または以下）である。イベントからスレッドへのルックアップテーブルのエントリは１６（以下）〜２５６（以上）個であり、例示した実施形態は、３２個有する。
【０１２４】
（汎用レジスタ）
例示した実施形態において、各スレッドは、実装によって、１２８個までの汎用レジスタを有する。汎用レジスタ３〜０（ＧＰ［３：０］）は、システム特権レベルにおいて可視であり、イベント処理の初期の段階において、イベントスタックポインタおよび動作しているレジスタに利用され得る。
【０１２５】
（プレディケーションレジスタ）
プリディケートレジスタは、汎用ＳＥＰプリディケートメカニズムの一部である。それぞれの命令の実行は、参照プリディケートレジスタの値に基づいて、条件付きである。
【０１２６】
ＳＥＰは、６４個までの１ビットプリディケートレジスタをスレッド状態の一部として提供する。それぞれのプリディケートレジスタは、プリディケートと呼ばれるものを保持する。プリディケートは、比較命令の実行の結果に基づいて、１（真）に設定されるか、または０（偽）にリセットされる。プリディケートレジスタ３〜１（ＰＲ［３：１］）はシステム特権レベルで可視であり、イベント処理の初期の段階の間、動作するプリディケートに利用され得る。プリディケートレジスタ０は、読み出し専用であり、常に１、すなわち、真と読み出される。実行を無条件にすることは命令によって行われる。
【０１２７】
（制御レジスタ）
（スレッド状態レジスタ）
【０１２８】
【表５】
2004362564.tif 000007
【０１２９】
【表６】
2004362564.tif 000008
（ＩＤレジスタ）
【０１３０】
【表７】
2004362564.tif 000009
【０１３１】
【表８】
2004362564.tif 000010
（命令ポインタレジスタ）
【０１３２】
【表９】
2004362564.tif 000011
次に実行される命令の６４ビット仮想アドレスを指定する。
【０１３３】
【表１０】
2004362564.tif 000012
（システム例外ステータスレジスタ）
【０１３４】
【表１１】
2004362564.tif 000013
【０１３５】
【表１２】
2004362564.tif 000014
（アプリケーション例外ステータスレジスタ）
【０１３６】
【表１３】
2004362564.tif 000015
【０１３７】
【表１４】
2004362564.tif 000016
（システム例外ＩＰ）
【０１３８】
【表１５】
2004362564.tif 000017
システム特権へのシグナリングされた例外に対応する命令のアドレス。ビット［０］は例外のときの特権レベルである。
【０１３９】
【表１６】
2004362564.tif 000018
シグナリングされた例外に対応する命令のアドレス。ビット［０］は例外のときの特権レベルである。
【０１４０】
（アプリケーション例外ＩＰ）
【０１４１】
【表１７】
2004362564.tif 000019
アプリケーション特権へのシグナリングされた例外に対応する命令のアドレス。
【０１４２】
【表１８】
2004362564.tif 000020
シグナリングされた例外に対応する命令のアドレス。ビット［０］は例外のときの特権レベルである。
【０１４３】
（例外メモリアドレス）
【０１４４】
【表１９】
2004362564.tif 000021
例外をシグナリングされるメモリ参照のアドレス。メモリフォルトの場合のみ有効である。例外ステータスレジスタが、メモリ参照フォルト、充填になることを待機、または空になることを待機していることを示す場合にのみ、ペンディングメモリ演算のアドレスを保持する。
【０１４５】
（命令セグメントテーブルポインタ（ＩＳＴＰ）、データセグメントテーブルポインタ（ＤＳＴＰ））
【０１４６】
【表２０】
2004362564.tif 000022
ＩＳＴＥおよびＩＳＴＥレジスタによって利用されて、読み出されるか、または書き込まれるｓｔｅおよびフィールドを指定する
【０１４７】
【表２１】
2004362564.tif 000023
（命令セグメントテーブルエントリ（ＩＳＴＥ）、データセグメントテーブルエントリ（ＤＳＴＥ））
【０１４８】
【表２２】
2004362564.tif 000024
読み出しのとき、ＩＳＴＥによって指定されるＳＴＥが宛先汎用レジスタに入れられる。書き込みのとき、ＩＳＴＥまたはＤＳＴＥによって指定されるＳＴＥが汎用ソースレジスタから書き込まれる。セグメントテーブルエントリのフォーマットは、変換テーブル構成およびエントリ記述というタイトルの第６章に記載される。
【０１４９】
（命令またはデータレベル１キャッシュタグポインタ（ＩＣＴＰ、ＤＣＴＰ）
【０１５０】
【表２３】
2004362564.tif 000025
ＩＣＴＥまたはＤＣＴＥによって読み出されるか、書き込まれる命令キャッシュタグエントリを指定する。
【０１５１】
【表２４】
2004362564.tif 000026
（命令またはデータレベル１キャッシュタグエントリ（ＩＣＴＥ、ＤＣＴＥ））
【０１５２】
【表２５】
2004362564.tif 000027
読み出しのとき、ＩＣＴＰまたはＤＣＴＰによって指定されるキャッシュタグが宛先汎用レジスタに入れられる。書き込みのとき、ＩＣＴＰまたはＤＣＴＰによって指定されるキャッシュタグが汎用ソースレジスタから書き込まれる。キャッシュタグエントリのフォーマットは、変換テーブル構成およびエントリ記述というタイトルの第６章に記載される。
【０１５３】
（イベントキュー制御レジスタ）
【０１５４】
【表２６】
2004362564.tif 000028
イベントキュー制御レジスタ（ＥＱＣＲ）は、イベントキューへの標準および診断アクセスをイネーブルする。レジスタを用いるシーケンスは、レジスタ読み出しが後に続くレジスタ書き込みである。ｒｅｇ＿ｏｐフィールドの内容は、書き込みおよび次の読み出しのための動作を指定する。実際のレジスタ変更または読み出しは、書き込みによってトリガされる。
【０１５５】
【表２７】
2004362564.tif 000029
（イベント−スレッドルックアップテーブル制御）
【０１５６】
【表２８】
2004362564.tif 000030
イベントからスレッドへのルックアップテーブルは、ハードウェアデバイスまたはイベント命令によって提示されるイベント番号と、イベントをシグナリングすることが好ましいスレッドとの間のマッピングを確立する。テーブル内の各エントリは、ビットマスクを有するイベント番号、およびイベントがマッピングされる対応するスレッドを指定する。
【０１５７】
【表２９】
2004362564.tif 000031
（タイマおよびパフォーマンスモニタ）
例示した実施形態において、全てのタイマおよびパフォーマンスモニタレジスタは、アプリケーション特権においてアクセス可能である。
【０１５８】
（クロック）
【０１５９】
【表３０】
2004362564.tif 000032
【０１６０】
【表３１】
2004362564.tif 000033
（実行される命令）
【０１６１】
【表３２】
2004362564.tif 000034
【０１６２】
【表３３】
2004362564.tif 000035
（スレッド実行クロック）
【０１６３】
【表３４】
2004362564.tif 000036
【０１６４】
【表３５】
2004362564.tif 000037
（待機タイムアウトカウンタ）
【０１６５】
【表３６】
2004362564.tif 000038
【０１６６】
【表３７】
2004362564.tif 000039
（仮想プロセッサおよびスレッドＩＤ）
例示した実施形態において、各アクティブスレッドは、仮想プロセッサに対応し、８ビットアクティブスレッド数（アクティブスレッド［７：０］）によって指定される。モジュール５は、スレッドの高速ローディング（アクティブ化）およびアンローディング（ディアクティブ化）を可能にするように、１６ビットのスレッドＩＤ（スレッド［１５：０］）をサポートする。他の実施形態は、異なるサイズのスレッドＩＤをサポートし得る。
【０１６７】
（スレッド−命令フェッチの抽象化）
上述したように、モジュール５のＴＰＵ１０〜２０は、Ｌ１命令キャッシュ２２と、それらのＴＰＵからサイクルごとに５個までの命令をランチするパイプライン制御ハードウェアとを共有する。図１０は、モジュール５によって利用される、機能ユニット３０〜３８で実行するための命令をフェッチおよびディスパッチするメカニズムを抽象化した図である。
【０１６８】
図に示すように、各サイクルの間、命令は、Ｌ１キャッシュ２２からフェッチされ、ＴＰＵ１０〜２０にそれぞれ関連付けられた命令キュー１０ａ〜２０ａに入れられる。これは、サイクルのフェッチ段階と呼ばれる。例示した実施形態において、スレッドキュー１０ａ〜２０ａを等しいレベルに保つという保持するという全体的な目標で、３〜６個の命令が１つのスレッドのそれぞれについてフェッチされる。他の実施形態において、異なる数の命令がフェッチされ、かつ／または、キューの相対的な充填について異なるターゲットが設定される。また、フェッチ段階の間、モジュール５（および、具体的には、例えば、上記のイベントを扱うメカニズム）は、イベントおよび待機から実行へのスレッドに対応する移行を認識する。
【０１６９】
フェッチおよび実行／回収段階と並列に実行するディスパッチ段階の間、１つ以上の実行中スレッドからの命令は、そのサイクルについてのリソースの最適の利用を考慮に入れるラウンドロビンプロトコルに基づいて、機能ユニット３０〜３８にディスパッチされる。これらの命令は、スレッドに任意の組合せからのものであり得る。コンパイラは、例えば、命令セットにおいて提供される「ストップ」フラグ、すなわち、１つのサイクル内でランチされ得るスレッド内の命令のグループ間の境界の利用を指定する。他の実施形態において、他のプロトコルが利用され得る。例えば、ある特定のスレッドを優先させるプロトコル、リソース利用を無視するプロトコルなどである。
【０１７０】
フェッチおよびディスパッチ段階と並列に実行する実行および回収段階の間、複数の命令が１つ以上のスレッドから同時に実行される。上述したように、例示した実施形態において、各サイクルの間、例えば、整数、浮動小数点、ブランチ、比較、およびメモリ機能ユニット３０〜３８によって、５個までの命令がランチされ、実行される。他の実施形態において、例えば、機能ユニットの数およびタイプに依存して、かつ、ＴＰＵの数に依存して、より多い命令またはより少ない命令がランチされてもよい。
【０１７１】
命令は、実行後に完了していれば回収される。結果が書き込まれ、命令は命令キューからクリアされる。
【０１７２】
他方で、命令がブロックされる場合、対応するスレッドは、実行から待機に移行する。対応するスレッドについてブロックされた命令およびその後に続く全ての命令は、その後、ブロックを引き起こした条件が解決されたときに再開される。図１１は、これを容易にするために例示した実施形態において用いられる３ポインタキュー管理メカニズムを示す。
【０１７３】
その図を参照すると、命令キューおよび３ポイントのセットがＴＰＵ１０〜２０のそれぞれについて維持される。ここでは、このようなキューのうちの１つ１１０およびポインタのセット１１２〜１１６のみが示されている。キュー１１０は、関連するＴＰＵ、より具体的には、そのＴＰＵにおいて現在アクティブなスレッドについて、フェッチされ、実行中であり、回収された（または無効にされた）命令を保持する。命令がフェッチされるにつれて、挿入（またはフェッチ）ポインタ１１２によって示されるキューの上部に挿入される。実行の次の命令は、抽出（または発行）ポインタ１１４によって識別される。コミットポインタ１１６は、実行がコミットされた最後の命令を識別する。命令がブロックされるか、他の理由で中断される場合、コミットポインタ１１６は、実行パイプラインにおいて、コミットポインタと抽出ポインタとの間の命令を破棄するためにロールバックされる。反対に、ブランチが取られる場合キュー全体はフラッシュされ、ポインタがリセットされる。
【０１７４】
キュー１１０は円形に示されているが、他の構成も用いられ得ることが理解される。図１１に示す待ち行列に並べるメカニズムは、例えば、図１２に示すように実装され得る。命令は、デュアルポートメモリ１２０、または直列のレジスタ（図示せず）に格納される。それぞれの新たにフェッチされた命令が格納される書き込みアドレスは、（例えば、パイプラインコントロールによって発行される）フェッチコマンドに応答するフェッチポインタロジック１２２によって供給されて、メモリ１２０のための後続のアドレスが発生する。発行された命令は、他のポート、ここでは、下部に示されているポートから取られる。各命令が取られる読み出しアドレスは、発行／コミットポインタロジック１２４によって供給される。そのロジックは、（例えば、パイプラインコントロールによって発行される）コミットおよび発行コマンドに応答して、後続のアドレスを発生させ、かつ／または、必要に応じてリセットする。
【０１７５】
（プロセッサモジュール実装）
図１３は、特に、ＴＰＵ１０〜２０を実装するロジックを含む、図１のモジュール５のＳｏＣ実装を表す。図１に示すように図１３の実装は、Ｌ１およびＬ２キャッシュ２２〜２６を含む。Ｌ１およびＬ２キャッシュ２２〜２６は、上述したように構成され、動作する。同様に、実装は、整数ユニット、浮動小数点ユニット、および比較装置をそれぞれ含む機能ユニット３０〜３４を含む。さらなる機能ユニットが、代わりに、またはそれに加えて設けられてもよい。ＴＰＵ１０〜２０を実装するためのロジックは、パイプラインコントロール１３０、ブランチユニット３８、メモリユニット３６、レジスタファイル１３６、およびロード−格納バッファ１３８を含む。図１３に示すコンポーネントは、図に示すように、制御および情報転送のため相互接続される。破線は、主な制御を示し、細い実線は、プリディケート値制御を示し、より太い実線は、６４ビットデータバスを識別し、さらに太い線は、１２８ビットデータバスを示す。図１３が本発明によるプロセッサモジュール５のある実装を表し、他の実装も実現され得ることが理解される。
【０１７６】
（パイプラインコントロールユニット）
例示した実施形態において、パイプラインコントロール１３０は、図１１〜１２を参照しながら上述したスレッドごとのキューを含む。１スレッドあたり、１２、１５または１８個の命令があるとパラメータ化され得る。コントロール１３０は、それらのキューからラウンドロビンベースで（これは他の基準でも行われることも注記しておく）命令を取り上げる。コントロール１３０は、レジスタファイル１３６（命令のソースおよび宛先レジスタを提供するリソースである）、および機能ユニット３０〜３８へのアクセスのシーケンスを制御する。パイプラインコントロール１３０は、スレッドごとのキューからの基本的な命令クラスをデコードし、命令を機能ユニット３０〜３８にディスパッチする。上述したように、１つ以上のスレッドからの複数の命令が、同じサイクル内の機能ユニットによって、実行のためスケジューリングされ得る。コントロール１３０は、さらに、ブランチユニット３８がスレッドごとの構成キューを空にしたときにブランチユニット３８にシグナリングする役割も果たし、例えば、サイクルごとのベースで消費を低減することが可能な場合機能ユニットをアイドルにする役割も果たす。
【０１７７】
図１４は、パイプラインコントロールユニット１３０のブロック図である。このユニットは、図に示されているように互いに（かつ、モジュール５の他のコンポーネントに）接続されている、スレッドクラスキューのためのコントロールロジック１４０と、スレッドクラス（スレッドあたりの）キュー１４２自体と、命令ディスパッチ１４４と、ロングワードデコードユニット１４６と、機能ユニットキュー１４８ａ〜１４８ｅとを含む。スレッドクラス（スレッドごとの）キューは、図１１〜１２を参照しながら上述したように、構成され、動作する。スレッドクラスキュー制御ロジック１４０は、それらのキュー１４２の入力側を制御し、従って、図１１〜１２を参照しながら上述した挿入ポインタ機能性を提供する。制御ロジック１４０はまた、ユニットキュー１４８ａ〜１４８ｅの入力側を制御する役割も果たし、命令フェッチングを制御するためにブランチユニット３８とインターフェースする役割も果たす。この後者の点において、ロジック１４０は、上述した様態で（例えば、ほとんどの命令を回収するＴＰＵを補償するように）、命令フェッチングのバランスを取る役割を果たす。
【０１７８】
命令ディスパッチ１４４は、各サイクルで、スレッドクラスキューのそれぞれにおいて利用可能な命令のスケジュールを評価し、判定する。上述したように、例示した実施形態において、キューは、命令をより素早く回収するキューを考慮に入れながら、ラウンドロビンベースで扱われる。命令ディスパッチ１４４はまた、スレッドクラスキュー１４２の出力側を制御する。この点において、命令ディスパッチ１４４は、図１１〜１２を参照しながら上述した抽出およびコミットポインタを管理する。これには、コミットポインタ巻き戻し命令が回収されたときのアップデートおよび（例えば、スレッドスイッチまたは例外のため）命令が中断される場合のそのポインタのロールバックが含まれる。
【０１７９】
ロングワードデコードユニット１４６は、Ｌ１命令キャッシュ２２から入来する命令ロングワードをデコードする。例示した実施形態において、それぞれのこのようなロングワードは、命令にデコードされる。これは、１つまたは２つのロングワードのデコードのためにパラメータ化され、ロングワードは、それぞれ、３つおよび６つの命令にデコードされる。デコードユニット１４６はまた、各命令の命令クラスをデコードする役割を果たす。
【０１８０】
ユニットキュー１４８ａ〜１４８ｅは、機能ユニット３０〜３８によって実行される実際の命令を待ち行列に並べる。各キューは、スレッド単位のベースで構成され、そのクラスキューと矛盾しないように保たれる。ユニットキューは、上述したように、スレッドクラスキューコントロール１４０と、制御の目的のために命令ディスパッチ１４４に接続されている。キュー１４８ａ〜１４８ｅからの命令は、機能ユニット３０〜３８への途中である、対応するパイプライン１５０ａ〜１５０ｂに転送される。命令はまた、レジスタファイルパイプライン１５２に送られる。
【０１８１】
図１５は、個々のユニットキュー、例えば、１４８ａのブロック図である。これは、ＴＰＵにつき、１つの命令キュー１５４ａ〜１５４ｅを含む。これらは、制御の目的で、スレッドクラスキューコントロール１４０（ｔｃｑｕｅｕｅ＿ｃｔｌと表示される）と、命令ディスパッチ１４４（ｉｄｉｓｐａｔｃｈと表示される）とに接続される。これらはまた、図示されているように、命令入力のためロングワードデコードユニット１４６（ｌｗｄｅｃｏｄｅと表示される）に接続され、スレッド選択ユニット１５６に接続される。スレッド選択ユニットは、図示されているように命令ディスパッチ１４４によって提供される制御信号に基づいて、スレッド選択を制御する。ユニット１５６からの出力は、対応するパイプライン１５０ａ〜１５０ｅと、レジスタファイルパイプライン１５２とにルーティングされる。
【０１８２】
再度図１４を参照すると、整数ユニットパイプライン１５０ａおよび浮動小数点ユニットパイプライン１５０ｂは、それぞれの機能ユニットに適した命令フィールドをデコードする。各パイプラインはまた、機能ユニットへのコマンドのタイミングを調節する。さらに、各パイプライン１５０ａおよび１５０ｂは、ブランチングまたは中断に基づいて、それぞれのパイプラインを閉める（ｓｑｕａｓｈ）。さらに、各パイプラインは、サイクルの間用いられていないときに、それぞれの機能ユニットに電力低下信号を印加する。例示した比較ユニットパイプライン１５０ｃ、ブランチユニットパイプライン１５０ｄ、およびメモリユニットパイプライン１５０ｅは、それぞれの機能ユニット、すなわち、比較ユニット３４、ブランチユニット３８、およびメモリユニット３６と同様の機能性を提供する。レジスタファイルパイプライン１５０はまた、レジスタファイル１３６と同様の機能性を提供する。
【０１８３】
再度図１３を参照すると、例示したブランチユニット３８は、命令アドレス生成およびアドレス変換と、命令フェッチングとを行う。さらに、ブランチユニット３８は、スレッド処理装置１０〜２０の状態を維持する。図１６は、ブランチユニット３８のブロック図である。ブランチユニット３８は、図に示されているように互いに（かつモジュール５の他のコンポーネントと）接続されている、制御ロジック１６０、スレッド状態記憶装置１６２ａ〜１６２ｅ、スレッドセレクタ１６４、アドレス加算器１６６、セグメント変換内容アドレス可能メモリ（ＣＡＭ）１６８を含む。
【０１８４】
制御ロジックデバイス１６０は、パイプラインコントロール１３０からのコマンド信号に基づいて、ユニット３８を駆動する。制御ロジックデバイス１６０はまた、図示されているように、命令キャッシュ２２およびＬ２キャッシュ２６受信通知を入力として受け取る。ロジック１６０は、図示されているように、スレッドスイッチをパイプラインコントロール１３０に出力し、コマンドを命令キャッシュ２２およびＬ２キャッシュに出力する。スレッド状態記憶装置１６２ａ〜１６２ｅは、それぞれのＴＰＵ１０〜２０について、スレッド状態を格納する。ＴＰＵのそれぞれについて、スレッド状態記憶装置１６２ａ〜１６２ｅは、図３に示し、上述された、汎用レジスタと、プリディケートレジスタと、制御レジスタとを維持する。
【０１８５】
スレッド状態記憶装置から取得されたアドレス情報は、図示されているように、スレッドセレクタにルーティングされる。スレッドセレクタは、そこからスレッドアドレスを選択し、アドレス計算が、コントロール１６０からの制御信号（図示されている）に基づいて行われる。アドレス加算器１６６は、図示されているように、選択されたアドレスを増分させるか、または、スレッドセレクタ１６４の出力およびレジスタファイル（レジスタソースと呼ばれる）によって供給されるアドレシング情報に基づいて、ブランチアドレス計算を行う。さらに、アドレス加算器１６６は、ブランチ結果を出力する。新たに計算されるアドレスは、セグメント変換メモリ１６８にルーティングされ、セグメント変換メモリ１６８は、図５を参照しながら上述したように動作し、次の命令フェッチと共に用いられる変換された命令キャッシュアドレスを生成する。
【０１８６】
（機能ユニット）
再度図１３を参照すると、メモリユニット３６は、データキャッシュ２４アドレス生成およびアドレス変換を含む、メモリ参照命令実行を行う。さらに、ユニット３６は、上述したように、ペンディング（メモリ）イベントテーブル（ＰＥＴ）５０を維持する。図１７は、メモリユニット３６のブロック図である。メモリユニット３６は、図に示されているように互いに（かつ、モジュール５の他のコンポーネントに）接続されている、制御ロジック１７０、アドレス加算器１７２、およびセグメント変換内容アドレス可能メモリ（ＣＡＭ）１７４を含む。
【０１８７】
制御ロジック１７０は、パイプラインコントロール１３０からのコマンド信号に基づいて、ユニット３６を駆動させる。制御ロジック１７０はまた、図示されているように、データキャッシュ２２状態およびＬ２キャッシュ２６受信確認を入力として受け取る。ロジック１７０は、図示されているように、スレッドスイッチをパイプラインコントロール１３０およびブランチユニット３８に出力し、コマンドをデータキャッシュ２４およびＬ２キャッシュに出力する。アドレス加算器１７２は、レジスタファイル１３６から提供されたアドレシング情報を増分させるか、または必要なアドレス計算を行う。新たに計算されるアドレスは、セグメント変換メモリ１７４にルーティングされ、セグメント変換メモリ１７４は、図５を参照しながら上述したように動作し、データアクセスとともに用いられる変換された命令キャッシュアドレスを生成する。図面に示されていないが、ユニットはまた、上述したように、ＰＥＴを含む。
【０１８８】
図１８は、Ｌ１命令キャッシュ２２またはＬ２データキャッシュ２４のいずれかを実装するキャッシュユニットのブロック図である。ユニットは、データアレイとして機能する、１６個の１２８ｘ２５６バイトシングルポートメモリセルを、タグアレイとして機能する、１６個の対応する３２ｘ５６バイトデュアルポートメモリセル１８２ａ〜１８２ｐとともに含む。制御ロジック１８４および１８６は、図示されているように、メモリセルと、Ｌ１キャッシュコントロールおよびＬ２キャッシュコントロールとに接続されている。
【０１８９】
再度図１３を参照すると、レジスタファイル１３６は、機能ユニット３０〜３８によって実行されている命令によってアクセスされる、全てのソースおよび宛先レジスタのリソースとして機能する。レジスタファイルは、図２０に示すように実装される。図２０に示されているように、遅延および書き込みオーバーヘッドを低減するため、ユニット１３６は、機能ユニット３０〜３８ごとに、別のレジスタファイルインスタンスに分解される。例示した実施形態において、各インスタンスは、４８個の６４ビットレジスタをＴＰＵのそれぞれについて提供する。他の実施形態は、ＴＰＵに割り当てられたレジスタの数に依存して、ＴＰＵの数およびレジスタのサイズが変動し得る。
【０１９０】
各インスタンス２００ａ〜２００ｅは、各インスタンスの上部に入る矢印によって示されるように、５個の書き込みポートを有し、それを介して、機能ユニット３０〜３８は同時に出力データを書き込むことができる（そのことにより、インスタンスが矛盾しないデータを維持することを確実にする）。それぞれは、各インスタンスの底部から出ている矢印によって示されているように、異なる数の読み出しポートを有し、それを介して、それぞれの機能ユニットがデータを取得する。従って、図に示されているように、整数ユニット３０と、浮動小数点ユニット３２と、メモリユニットとに関連付けられたインスタンスは全て、３つの読み出しポートを有し、比較ユニット３４に関連付けられたインスタンスは２つの読み出しポートを有し、ブランチユニット３８に関連付けられたインスタンスは１つのポートを有する。
【０１９１】
レジスタファイルインスタンス２００〜２００ｅは、各サイクルで、１つのスレッドにつき全てのポートが読み出されることによって最適化され得る。さらに、格納ビットは、ポートアクセスのためのワイヤの下でフォルド（ｆｏｌｄ）され得る。
【０１９２】
図２１および２２は、それぞれ、整数ユニット３０および比較ユニット３４のブロック図である。図２３Ａおよび２３Ｂは、それぞれ、浮動小数点ユニット３２および浮動小数点ユニット３２で用いられている乗算−加算統合ユニットのブロック図である。これらのユニットの構成および動作は、図面に提供されているコンポーネント、インターコネクションおよびラベルから明らかである。
【０１９３】
（コンシューマ−プロデューサメモリ）
従来技術によるマルチプロセッサにおいて、同期化オーバーヘッドおよび（例えば、イメージ処理のための複数ステップについて）スレッドまたはプロセッサの間のデータベース処理フローを実装するためのプログラミングの困難さが非常に高い。プロセッサモジュール５は、これが容易に行われることを可能にするメモリ命令を提供し、データが利用可能になることをスレッドが待機することを可能にし、データが利用可能であることを他のスレッドが示すときに、透過的に起動させる。このようなソフトウェア透過性コンシューマ−プロデューサメモリ演算は、効率的なデータ志向コンシューマ−プロデューサプログラミングスタイルを有する、より高いパフォーマンスの微細なスレッドレベル並列処理を可能にする。
【０１９４】
例示した実施形態は、データを選択されたメモリ位置にロードし、状態をその位置、すなわち、「充填」状態に関連付けるように、データプロデューサであるスレッドによって用いられる「フル」メモリ命令を提供する。その命令が実行されるときに位置が既にその状態である場合、例外がシグナリングされる。
【０１９５】
この実施形態はまた、選択された位置からデータを取得するデータコンシューマによって用いられる「空」情報を提供する。位置がフル状態に関連付けられる場合、データはそこから（指定されたレジスタに）読み出され、命令は、位置が「空」状態と関連付けられるようにする。反対に、空状態が実行されるときに位置が完全状態には関連付けられない場合、命令は、命令を実行するスレッドを、一時的にアイドル（または、他の実施形態には、アクティブ、非実行）状態に移行させ、関連付けられた後で、アクティブ、実行状態に戻して、空命令を完了まで実行する。空命令を用いることは、スレッドが、そのデータが、低いオーバーヘッドおよびソフトウェアに透過的な状態で、利用可能であるときに、実行することを可能にする。
【０１９６】
例示した実施形態において、ペンディング（メモリ）イベントテーブル（ＰＥＴ）５０が、充填および空動作の対象であるメモリ位置についてのステータス情報を格納する。これには、それらの位置のアドレス、それぞれのフルまたは空状態、その位置のデータの「コンシューマ」のアイデンティティ、すなわち、空命令を実行して、位置が充填されることを待機しているスレッドが含まれる。これにはまた、データのプロデューサのアイデンティティが含まれる。これは、例えば、例外の原因をシグナリングし、追跡すること（例えば、同じアドレスについて、空命令が介在することなく後続の充填命令が実行される場所）において有用である。
【０１９７】
それぞれの位置についてのデータは、ＰＥＴ５０に格納されないが、充填および／または空命令の対象でないデータと同様に、キャッシュおよび／またはメモリシステム自体に維持される。他の実施形態において、ステータス情報は、メモリシステムにおいて、例えば、属する位置に沿って、かつ／または、別のテーブル、リンクされたリストなどに格納される。
【０１９８】
従って、例えば、空命令が所与のメモリ位置上で実行される場合、ＰＥＴは、同じ位置が現在フル状態であることを示すエントリを有するか否かを決定するためにチェックされる。有する場合、エントリは、空に変更され、読み出しが行われ、データがメモリ位置からから命令によって指定されたレジスタに移動される。
【０１９９】
反対に、空命令が実行されるときに、所与のメモリ位置について、ＰＥＴにはエントリがない場合（または、このようなエントリのいずれかが、位置が現在からであると示す場合）、エントリが、ＰＥＴにおいて、所与の位置が空であることを示し、空命令を実行するスレッドが充填命令によってその位置に後で格納される所与のデータのコンシューマであることを示すように、作成（または更新）される。
【０２００】
充填命令が後で（おそらくは他のスレッドによって）実行される場合、ＰＥＴは、同じ位置が現在空状態であることを示すエントリを有するか否を決定するためにチェックされる。このようなエントリが見つかると、その状態はフルに変更され、イベント伝達メカニズム４４（図４）は、通知をそのエントリにおいて識別されたコンシューマ−スレッドにルーティングするために用いられる。そのスレッドがＴＰＵにおいてアクティブ、待機状態である場合、通知はそのＴＰＵに送られ、ＴＰＵは、アクティブ、実行状態を入力し、空命令を、今回は（メモリ位置がフル状態なので）完了するために再実行する。そのスレッドがアイドル状態である場合、通知は（いずれのＴＰＵで現在実行しているかに関わらず）システムスレッドに送られ、実行、アクティブ状態において、スレッドがＴＰＵにロードされ、空命令が再実行されることできるようにする。
【０２０１】
例示した実施形態において、コンシューマ／プロデューサのようなメモリ演算のためのＰＥＴのこの使用は、選択されたメモリ命令、例えば、充填および空についてのみ行われ、より従来のロードおよび格納メモリ命令については行われない。従って、例えば、ロード命令が現在から命令の対象であるメモリ位置について、実行されている場合でも、命令が再実行されることができるように、空命令を実行するスレッドに通知がされない。他の実施形態は、この点において異なり得る。
【０２０２】
図２４Ａは、３つの独立したスレッド２３０、２３２、および２３４を表す。スレッド２３０、２３２、および２３４の同期化、およびその間のデータ転送は、本発明による充填および空命令によって容易にされ得る。例えば、ＭＰＥＧ２デマルチプレクススレッド２３０は、例えば、チューナ、ストリーミングソース、その他のＭＰＥＧ２ソース２３６から取得したＭＰＥＧ２信号をデマルチプレクスする役割を果たす。この例を続けるため、ＭＰＥＧ２デマルチプレクススレッド２３０は、ＴＰＵ１０上でアクティブ、実行状態であると仮定される。スレッド２３２は、映像デコードステップ１スレッドであり、デマルチプレクスされたＭＰＥＧ２信号からの映像信号のデコードの第１の段階を行う。ＴＰＵ１２上で、アクティブ、実行状態であると仮定される。スレッド２３４は、映像復号ステップ２スレッドであり、ＬＣＤインターフェース２３８または他のデバイスを介する出力について、デマルチプレクスされたＭＰＥＧ２信号からの映像信号のデコードの第２の段階を行う。ＴＰＵ１４上でアクティブ、実行状態であると仮定される。
【０２０３】
ソース２３６からのデータストリーミングをリアルタイムで収容するため、スレッド２３０〜２３４のそれぞれは、アップストリームソースによって提供されるデータを継続的に処理し、他のスレッドと並列して行う。図２４Ｂは、同期化を確実にし、スレッド間のデータ転送を容易にするような様態で、これを容易にする充填および空命令の使用を示す。
【０２０４】
図面を参照すると、矢印２４０ａ〜２４０ｇは、スレッド間、特に、あるスレッドによって書き込まれた（充填された）データ位置と、他のスレッドによって読み出された（空にされた）データ位置との間の充填依存関係を示す。従って、スレッド２３０は、アドレスＡ０に向けられたデータを処理し、スレッド２３２は、その位置がターゲットの空命令を実行し、スレッド２３４は、アドレスＢ０（スレッド２３２が最終的に充填させる）がターゲットの空命令を実行する。空命令の結果として、スレッド２３２は、位置Ａ０の充填が完了することを待機する間、待機状態（例えば、アクティブ、非実行、またはアイドル）になり、位置Ｂ０の充填の完了を待機する間、スレッド２３４は待機状態になる。
【０２０５】
スレッド２３０がＡ０の充填を完了すると、スレッド２３２の空にする動作も完了し、完全命令を介してＢ０に向けられた結果を用いて、そのスレッドがＡ０からのデータを処理することが可能になる。スレッド２３４は、待機状態を維持し、依然として、その充填の完了を待機する。その間、スレッド２３０は、アドレスＡ１に向けられた処理データを開始し、スレッド２３２は、空命令を実行し、Ａ１の充填の完了を待機する間、待機状態にする。
【０２０６】
スレッド２３２がＢ０の充填デマンドを実行するとき、スレッド２３４を空にすることを完了することによって、ＴＶ視聴者へのディスプレイためのＬＣＤインターフェース（図示せず）によってそこから読み出される、Ｃ０に向けられた結果を用いて、そのスレッドがＢ０からのデータを処理することを可能になる。３つのスレッド２３０、２３２、２３４は、処理を継続し、充填および空命令を図に示したような様態で、ＭＰＥＧ２ストリーム全体の処理が完了するまで、実行する。
【０２０７】
充填および空命令のさらなる理解は、その命令フォーマットを検討することによって達成され得る。
【０２０８】
（空）
フォーマット：ｐｓＥＭＰＴＹ．ｃａｃｈｅ．ｔｈｒｅａｄｓ  ｄｒｅｇ，ｂｒｅｇ，ｉｒｅｇ｛，ｓｔｏｐ｝
説明：空は、メモリシステムに有効アドレスの状態を調べるように命令する。状態がフルである場合、空命令は、状態を空にし、値をｄｒｅｇにロードするように変化させる。状態が既に空である場合、命令は、その命令がフルにされるまで、スレッドフィールドに指定された待機挙動で待機する。
【０２０９】
（オペランドおよびフィールド）
ｐｓ  命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない（他の作用はなし）
ｓｔｏｐ  ０  命令グループがこの命令によって詳述されていないことを示す
１  命令グループがこの命令によって詳述されていることを示す
ｔｈｒｅａｄ  ０  無条件、スレッドスイッチなし
１  無条件スレッドスイッチ
２  ストール（スレッドのブロック実行）時条件付きスレッドスイッチ
３  予約済み
ｓｃａｃｈｅ  ０  再使用キャッシュヒントがあるｔｂｄ
１  再使用キャッシュヒントがある読み出し／書き込み
２  再使用キャッシュヒントがないｔｂｄ
３  再使用キャッシュヒントがない読み出し／書き込み
ｉｍ  ０  アドレス計算のためインデックスレジスタ（ｉｒｅｇ）を指定
１  アドレス計算のためｄｉｓｐを指定
ｉｒｅｇ  命令のインデックスレジスタを指定
ｂｒｅｇ  命令のベースレジスタを指定
ｄｉｓｐ  メモリ参照命令のため２での補数置換定数（８ビット）を指定する
ｄｒｅｇ  命令の宛先レジスタを指定する
（充填）
フォーマット：ｐｓＦＩＬＬ．ｃａｃｈｅ．ｔｈｒｅａｄｓ  ｓｌｒｅｇ，ｂｒｅｇ，ｉｒｅｇ｛，ｓｔｏｐ｝
説明：レジスタｓ１ｒｅｇは、有効アドレスにおいて、メモリ内のワードに書き込まれる。有効アドレスは、ｂｒｅｇ（ベースレジスタ）と、ｉｒｅｇ（インデックスレジスタ）またはｉｍ（イミディエートメモリ）フィールドに基づいてｄｉｓｐ（置換）のいずれかを加えることによって計算される。有効アドレスの状態はフルに変更される。状態が既にフルである場合、例外がシグナリングされる。
【０２１０】
（オペランドおよびフィールド）
ｐｓ  命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない（他の作用はなし）
ｓｔｏｐ  ０  命令グループがこの命令によって詳述されていないことを示す
１  命令グループがこの命令によって詳述されていることを示す
ｔｈｒｅａｄ  ０  無条件、スレッドスイッチなし
１  無条件スレッドスイッチ
２  ストール（スレッドのブロック実行）時条件付きスレッドスイッチ
３  予約済み
ｓｃａｃｈｅ  ０  再使用キャッシュヒントがあるｔｂｄ
１  再使用キャッシュヒントがある読み出し／書き込み
２  再使用キャッシュヒントがないｔｂｄ
３  再使用キャッシュヒントがない読み出し／書き込み
ｉｍ  ０  アドレス計算のためインデックスレジスタ（ｉｒｅｇ）を指定
１  アドレス計算のためｄｉｓｐを指定
ｉｒｅｇ  命令のインデックスレジスタを指定
ｂｒｅｇ  命令のベースレジスタを指定
ｄｉｓｐ  メモリ参照命令のため２での補数置換定数（８ビット）を指定する
ｓ１ｒｅｇ  命令の第１オペランドを含むレジスタを指定
（ソフトウェアイベント）
ハードウェアおよびソフトウェアイベントのより完全な理解が、命令フォーマットの検討によって達成され得る。
【０２１１】
（イベント）
フォーマット：ｐｓＥＶＥＮＴｓ１ｒｅｇ｛，ｓｔｏｐ｝
説明：ＥＶＥＮＴ命令は実行中スレッドについてイベントキューをポーリングする。イベントが存在する場合、命令は、例外ステータスレジスタにロードされるイベントステータスで完了する。そのイベントキューにイベントがない場合、スレッドはアイドル状態に移行する。
【０２１２】
（オペランドおよびフィールド）
ｐｓ  命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない（他の作用はなし）
ｓｔｏｐ  ０  命令グループがこの命令によって詳述されていないことを示す
１  命令グループがこの命令によって詳述されていることを示す
ｓ１ｒｅｇ  命令の第１ソースオペランドを含むレジスタを指定
（ＳＷイベント）
フォーマット：ｐｓ．ＳＷＥＶＥＮＴｓ１ｒｅｇ｛，ｓｔｏｐ｝
説明：ＳＷＥｖｅｎｔ命令は、イベントをスレッドによって扱われるイベントキューにエンキューする。イベントフォーマットについてｘｘｘを参照されたい。
オペランドおよびフィールド
ｐｓ  命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない（他の作用はなし）
ｓｔｏｐ  ０  命令グループがこの命令によって詳述されていないことを示す
１  命令グループがこの命令によって詳述されていることを示す
ｓ１ｒｅｇ  命令の第１ソースオペランドを含むレジスタを指定
（ＣｔｌＦｌｄ）
フォーマット：ｐｓＣｔｌＦｌｄ．ｔｉ  ｃｆｉｅｌｄ，｛，ｓｔｏｐ｝
説明：コントロールフィールド命令は、ｃｆｉｅｌｄで指定されたコントロールフィールドを変更する。コントロールレジスタ内の他のフィールドは、変更されない
（オペランドおよびフィールド）
ｐｓ  命令が実行されるか否かを指定するプリディケートソースレジスタ。真の場合命令は実行され、偽の場合命令は実行されない（他の作用はなし）
ｓｔｏｐ  ０  命令グループがこの命令によって詳述されていないことを示す
１  命令グループがこの命令によって詳述されていることを示す
ｔｉ  ０  このスレッドの制御レジスタへのアクセスを指定
１  ＩＤ．ｔ＿ｉｎｄｉｒｅｃｔ  ｆｉｅｌｄ（スレッド不正）（特権）によって指定されたスレッドの制御レジスタへのアクセスを指定
ｃｆｉｅｌｄ
ｃｆｉｅｌｄ［４：０］  コントロールフィールド  特権
【０２１３】
【表３８】
2004362564.tif 000040
Ｓ＝０  クリア、Ｓ＝１  設定
（プロセッサモジュール５を組み込んだデバイス）
図２５は、ＳｏＣフォーマットで具現化された本発明による、デジタルＬＣＤ−ＴＶサブシステム２４２のブロック図である。サブシステム２４２は、上述したようにプロセッサモジュール５を含み、例えば、上述した、ＭＰＥＧ２信号デマルチプレクス、ＭＰＥＧ２映像デコード、ＭＰＥＧ音声デコード、デジタルＴＶユーザインターフェース操作、およびオペレーティングシステム実行（例えば、Ｌｉｎｕｘ）を提供する実行スレッドを同時に実行するように動作する。モジュール５は、これも上述したように、Ｌ２キャッシュ２６のオフチップ部分を含むＤＤＲ  ＤＲＡＭフラッシュメモリに接続されている。このモジュールは、ＡＭＢＡ  ＡＨＢバス２４４へのインターフェース（図示せず）を含む。このモジュールは、ＡＭＢＡ  ＡＨＢバス２４４を介して、デジタルＬＣＤ−ＴＶの他のコンポーネントへのインターフェース、すなわち、映像入力インターフェース、映像出力インターフェース、音声出力インターフェース、およびＬＣＤインターフェースを提供する「知的財産」または「ＩＰ」２４６と通信する。当然、他のＩＰが、追加で、またはこれらの代わりに設けられ、ＡＨＢバス５を介して、またはその他の方法でモジュール５に接続されてもよい。例えば、図面において、例示したモジュール５は、オプションのＩＰ、例えば、ＤＭＡエンジン２４８、高速Ｉ／Ｏデバイスコントローラ２５０、および低速デバイスコントローラ２５２（ＡＰＢブリッジ２５４を介して）と通信し、それを介して、デジタルＬＣＤ−ＴＶはソース信号を取得し、かつ／または、制御される。
【０２１４】
図２６は、同様にＳｏＣフォーマットで具現化された本発明による、デジタルＬＣＤ−ＴＶまたは他のアプリケーションサブシステム２５６のブロック図である。例示したサブシステムは、図２５に２４６で示される特定のＩＰの代わりに、ＡＰＢおよびＡＨＢ／ＡＰＢブリッジと、ＡＰＢマクロ２５８とを有する状態で描かれている点以外は、上述したように構成されている。アプリケーションの必要性に依存して、素子２５８は、上記の実装と同様に、または他の様態で、映像入力インターフェース、映像出力インターフェース、音声出力インターフェースおよびＬＣＤインターフェースを含み得る。
【０２１５】
例示したサブシステムは、複数のモジュール５、例えば、１〜２０個（またはこれ以上）のこのようなモジュールをさらに含む。これらのモジュールは、モジュール５によって利用されるオフチップＬ２キャッシュ２６ｂとインターフェースし、好ましくは、その一部を形成するインターコネクトを介して接続される。このインターコネクトは、モジュール５によって共有され、より具体的には、Ｌ２キャッシュ２６によって共有されるシフトレジスタバスを含むリングインターコネクト（ＲＩ）の形態であり得る。あるいは、インターコネクトは、他の形態の、モジュール５の組み合わせられたメモリシステム内でのデータの高速移動を容易にする、独占権下にあってもよいし、そうでなくてもよいインターコネクトであり得る。いずれにせよ、Ｌ２キャッシュは、任意の１つのモジュール５のためのＬ２キャッシュがその個々のプロセッサのための唯一のメモリシステムになるのではなく、プロセッサモジュール５の全てについての分散型キャッシュメモリシステム全体にも寄与するように、接続されることが好ましい。当然、上述したように、モジュール５は、同じメモリシステム、チップまたはバスを物理的に共有する必要はなく、ネットワークを介して、または他の様態で接続され得る。
【０２１６】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【０２１７】
(要約)
本発明は、ある局面において、１つ以上の仮想処理装置を含む仮想プロセッサを提供する。これらの仮想処理装置は、１つ以上のプロセッサ上で実行され、それぞれの仮想処理装置は、１つ以上のプロセスまたはスレッド（まとめて、「スレッド」という）を実行する。スレッドは、同じ仮想処理装置上で、それぞれの寿命を通じて実行されるように制約されてもよいが、必ずしもそうである必要はない。イベント伝達メカニズムは、イベントをそれぞれのスレッドに関連付け、そのスレッドがそのときに実行されている仮想処理装置および／またはプロセッサに関わらず、イベントが発生するときにこれらのスレッドに通知する。本発明は、他の局面において、改善されたデータフローベースの同期化を有する仮想および／またはデジタルデータプロセッサを提供する。このようなプロセッサ内で実行されているプロセスまたはスレッド（再度、まとめて「スレッド」という）は、例えば、他のスレッドによって生成されるデータの利用可能性をスレッドが待機し、他のスレッドがデータを（例えば、「充填」または他のメモリ−コンシューマ命令を実行することによって）利用可能にするときに透過的に起動させることを可能にする、メモリ命令（例えば、「空」または他のメモリ−コンシューマ命令）を実行し得る。
【図面の簡単な説明】
【０２１８】
【図１】図１は、本発明のある実施例に従って構成され、動作するプロセッサモジュールを表す図である。
【図２】図２は、従来のスーパースカラープロセッサによる処理と本発明のある実施例に従って構成され、動作するプロセッサモジュールによる処理とを対比させた図である。
【図３】図３は、本発明のある実施例に従って構成され、動作するプロセッサ内の仮想処理装置（またはスレッド処理装置（ＴＰＵ））において実行されているスレッドの可能な状態を示す図である。
【図４】図４は、本発明のある実施例に従って構成され、動作するプロセッサモジュールにおけるイベント伝達メカニズムを表す図である。
【図５】図５は、本発明のある実施例に従って構成され、動作するシステムにおける仮想アドレスからシステムアドレスへの変換のメカニズムを示す図である。
【図６】図６は、本発明のある実施例に従って構成され、動作するシステムにおけるレベル１およびレベル２キャッシュの構成を表す図である。
【図７】図７は、本発明のある実施例に従って構成され、動作するシステムにおいてタグルックアップを行うために用いられるＬ２キャッシュおよびロジックを表す図である。
【図８】図８は、本発明のある実施例に従って構成され、動作するシステムにおいて、Ｌ２拡張キャッシュ内でタグルックアップを行うために用いられるロジックを表す図である。
【図９】図９は、本発明のある実施例に従って構成され、動作するシステムにおいて、各スレッド処理装置（ＴＰＵ）について維持される、汎用レジスタ、プリディケートレジスタ、スレッド状態レジスタまたは制御レジスタを表す図である。
【図１０】図１０は、本発明のある実施例に従って構成され、動作するシステムにおいて、スレッドによって実行される命令をフェッチし、ディスパッチするメカニズムを表す図である。
【図１１】図１１は、本発明のある実施例に従って構成され、動作するシステムにおいて用いられるキュー管理メカニズムを示す図である。
【図１２】図１２は、本発明のある実施例に従って構成され、動作するシステムにおいて用いられるキュー管理メカニズムを示す図である。
【図１３】図１３は、本発明のある実施例に従って構成され、動作する、処理ユニットを実装するロジックを含む、図１のプロセッサモジュールのシステム・オン・チップ（ＳｏＣ）実装を表す図である。
【図１４】図１４は、本発明のある実施例に従って構成され、動作するシステムにおけるパイプライン制御ユニットのブロック図である。
【図１５】図１５は、本発明のある実施例に従って構成され、動作するシステムにおける個々のユニットキューのブロック図である。
【図１６】図１６は、本発明のある実施例に従って構成され、動作するシステムにおけるブランチユニットのブロック図である。
【図１７】図１７は、本発明のある実施例に従って構成され、動作するシステムにおけるメモリユニットのブロック図である。
【図１８】図１８は、本発明のある実施例に従って構成され、動作するシステムＬ１命令キャッシュまたはＬ１データキャッシュのいずれかを実装するキャッシュユニットのブロック図である。
【図１９】図１９は、本発明のある実施例に従って構成され、動作するシステムにおける、図７のＬ２キャッシュおよびロジックの実装を表す図である。
【図２０】図２０は、本発明のある実施例に従って構成され、動作するシステムにおけるレジスタファイルの実装を表す図である。
【図２１】図２１は、本発明のある実施例に従って構成され、動作するシステムにおける整数ユニットおよび比較ユニットのブロック図である。
【図２２】図２２は、本発明のある実施例に従って構成され、動作するシステムにおける整数ユニットおよび比較ユニットのブロック図である。
【図２３Ａ】図２３Ａは、本発明のある実施例に従って構成され、動作するシステムにおける浮動小数点ユニットのブロック図である。
【図２３Ｂ】図２３Ｂは、本発明のある実施例に従って構成され、動作するシステムにおける浮動小数点ユニットのブロック図である。
【図２４Ａ】図２４Ａは、本発明のある実施例に従って構成され、動作するシステムにおけるコンシューマおよびプロデューサメモリ命令の使用を示す図である。
【図２４Ｂ】図２４Ｂは、本発明のある実施例に従って構成され、動作するシステムにおけるコンシューマおよびプロデューサメモリ命令の使用を示す図である。
【図２５】図２５は、本発明のある実施例に従って構成され、動作するシステムにおけるデジタルＬＣＤ−ＴＶサブシステムのブロック図である。
【図２６】図２６は、本発明のある実施例に従って構成され、動作するシステムにおけるデジタルＬＣＤ−ＴＶサブシステムまたは他のアプリケーションサブシステムのブロック図である。
【符号の説明】
【０２１９】
５  モジュール
１０〜２０  スレッド処理装置（ＴＰＵ）
２２  Ｌ１命令キャッシュ
２４  Ｌ１データキャッシュ
２６  Ｌ２キャッシュ
２８  パイプライン制御
３０  整数ユニット
３２  浮動小数点ユニット
３４  比較ユニット
３６  メモリユニット
３８  ブランチユニット
【図１】
2004362564.tif 000041
【図２】
2004362564.tif 000042
【図３】
2004362564.tif 000043
【図４】
2004362564.tif 000044
【図５】
2004362564.tif 000045
【図６】
2004362564.tif 000046
【図７】
2004362564.tif 000047
【図８】
2004362564.tif 000048
【図９】
2004362564.tif 000049
【図１０】
2004362564.tif 000050
【図１１】
2004362564.tif 000051
【図１２】
2004362564.tif 000052
【図１３】
2004362564.tif 000053
【図１４】
2004362564.tif 000054
【図１５】
2004362564.tif 000055
【図１６】
2004362564.tif 000056
【図１７】
2004362564.tif 000057
【図１８】
2004362564.tif 000058
【図１９】
2004362564.tif 000059
【図２０】
2004362564.tif 000060
【図２１】
2004362564.tif 000061
【図２２】
2004362564.tif 000062
【図２３Ａ】
2004362564.tif 000063
【図２３Ｂ】
2004362564.tif 000064
【図２４Ａ】
2004362564.tif 000065
【図２４Ｂ】
2004362564.tif 000066
【図２５】
2004362564.tif 000067
【図２６】
2004362564.tif 000068