(57)【要約】      （修正有）【課題】複数スレッドのプログラムコードを同時に実行できるリアルタイム制御プロセッサを提供する。【解決手段】一実施態様ではリアルタイムコントローラが提供される。このリアルタイムコントローラは、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含む。このマルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてメディア処理に関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。【選択図】図３
2006302261.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサであって、
実行パイプラインと、
前記実行パイプラインを制御して、第１のスレッドとしてアプリケーションに関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、
を含む、マルチスレッドプロセッサ、
を備える装置。
【請求項２】
メディアプレイヤデバイスを備え、前記アプリケーションに関係したプログラムコードは、音響又はビデオのメディア処理に関係したプログラムコードを含む、請求項１に記載の装置。
【請求項３】
音響データ又はビデオデータの少なくとも１つを記憶する記憶媒体と、
前記音響データ又は前記ビデオデータの前記少なくとも１つを出力する出力デバイスと、
をさらに備える、請求項２に記載の装置。
【請求項４】
無線ネットワークデバイスを備え、前記アプリケーションに関係したプログラムコードは、無線ネットワーク接続に関係したプログラムコードを含む、請求項１に記載の装置。
【請求項５】
前記無線ネットワークデバイスは、無線ルータ又は無線アクセスポイントの一方である、請求項４に記載の装置。
【請求項６】
ブロードバンドモデムを備え、前記アプリケーションに関係したプログラムコードは、広帯域通信に関係したプログラムコードを含む、請求項１に記載の装置。
【請求項７】
前記広帯域通信に関係したプログラムコードは、ケーブル通信プログラムコード、ＤＳＬ通信プログラムコード、又は衛星通信プログラムコードを含む、請求項６に記載の装置。
【請求項８】
有線ルータを備え、前記アプリケーションに関係したプログラムコードは、ネットワーク接続に関係したプログラムコードを含む、請求項１に記載の装置。
【請求項９】
前記ネットワーク接続に関係したプログラムコードは、ルーティングプログラムコード、ネットワークプログラムコード、アクセスポイントプログラムコード、セキュリティプログラムコード、リピータプログラムコード、無線通信プロトコルを実施するプログラムコード、又は仮想プライベートネットワーク接続プログラムコードの少なくとも１つを含む、請求項４又は８に記載の装置。
【請求項１０】
前記システムレベルプログラムコードは、サーボに関係したプログラムコード、ディスクドライブデータ取り込みプログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線／無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む、請求項２、４、６、及び８のいずれか１項に記載の装置。
【請求項１１】
前記実行パイプラインは、
命令フェッチユニットと、
前記命令フェッチユニットに応答するデコーダと、
前記デコーダに応答する発行ユニットと、
前記発行ユニットに応答する実行ユニットと、
を備える、請求項２、４、６、及び８のいずれか１項に記載の装置。
【請求項１２】
少なくとも２つのスレッドのプログラムコードを実行するように適合された第２のマルチスレッドプロセッサであって、
第２の実行パイプラインと、
前記第２の実行パイプラインを制御して、第３のスレッドとして第１のリアルタイムプログラムコードを実行し、第４のスレッドとして第２のリアルタイムプログラムコードを実行する第２のスレッド制御ユニットと、
を含む、第２のマルチスレッドプロセッサ、
をさらに備える、請求項２、４、６、及び８のいずれか１項に記載の装置。
【請求項１３】
請求項１、１１、及び１２のいずれか１項に記載の装置を備え、
前記アプリケーションに関係したプログラムコードは、通信に関係したプログラムコードを含む、
システム。
【請求項１４】
セルラーＷＬＡＮシステムを備え、前記通信に関係したプログラムコードは、セルラー通信に関係したプログラムコードを含む、請求項１３に記載のシステム。
【請求項１５】
前記セルラー通信に関係したプログラムコードは、次のプロトコル、すなわち、ＣＤＭＡ、Ｇ３、又はＧＳＭの１つ又は複数に関係する、請求項１４に記載のシステム。
【請求項１６】
ＶｏＩＰシステムを備え、前記通信に関係したプログラムコードは、音声処理に関係したプログラムコードを含む、請求項１３に記載のシステム。
【請求項１７】
前記スレッド制御ユニットは、前記実行パイプラインをさらに制御して、第３のスレッドとしてコーデックに関係したプログラムコードを実行する、請求項１６に記載のシステム。
【請求項１８】
無線テレビシステムを備え、前記通信プログラムコードは、メディアに関係したプログラムコードを含む、請求項１３に記載のシステム。
【請求項１９】
前記メディアに関係したプログラムコードは、ビデオ処理プログラムコード又は音響処理プログラムコードの少なくとも１つを含む、請求項１８に記載のシステム。
【請求項２０】
前記システムレベルプログラムコードは、メニュープログラムコード、ディスプレイプログラムコード、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線／無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む、請求項１４、１６、及び１８のいずれか１項に記載のシステム。
【請求項２１】
少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサであって、
実行パイプラインと、
前記実行パイプラインを制御して、第１のスレッドとして第１のリアルタイムプログラムコードを実行し、第２のスレッドとして第２のリアルタイムプログラムコードを実行するスレッド制御ユニットと、
を含む、マルチスレッドプロセッサ、
を備えるリアルタイムコントローラ。
【請求項２２】
前記第１のリアルタイムコードは、ビデオ処理プログラムコードであり、前記第２のリアルタイムコードは、音響プログラムコードである、請求項２１に記載のリアルタイムコントローラ。
【請求項２３】
ストレージコントローラをさらに備え、前記第１のリアルタイムプログラムコードは、サーボに関係したプログラムコードを含み、前記第２のリアルタイムプログラムコードは、システムレベルプログラムコードを含む、請求項２１に記載のリアルタイムコントローラ。
【請求項２４】
前記ストレージコントローラは、ハードディスクコントローラ又は光ディスクコントローラを備える、請求項２３に記載のリアルタイムコントローラ。
【請求項２５】
前記ホストプロトコル管理プログラムコードは、次のプロトコル、すなわち、ＡＴＡ、ＵＳＢ、ＳＡＴＡ、ＳＡＳ、ＦＣ、ＣＥ−ＡＴＡ、又はＳＤＩＯの少なくとも１つを管理する、請求項２４に記載のリアルタイムコントローラ。
【請求項２６】
少なくとも２つのスレッドのプログラムコードを実行するように適合された第２のマルチスレッドプロセッサであって、
第２の実行パイプラインと、
前記第２の実行パイプラインを制御して、第３のスレッドとして第３のリアルタイムプログラムコードを実行し、第４のスレッドとして第４のリアルタイムプログラムコードを実行する第２のスレッド制御ユニットと、
を含む、第２のマルチスレッドプロセッサ、
をさらに備える、請求項２１、２３及び２４のいずれか１項に記載のリアルタイムコントローラ。
【請求項２７】
前記第２のマルチスレッドプロセッサは、前記第１のマルチスレッドプロセッサによって実行されない所与のスレッドのプログラムコードを実行する、請求項２６に記載のリアルタイムコントローラ。
【請求項２８】
前記スレッド制御ユニットは、前記実行パイプラインをさらに制御して、第３のスレッドとして追加プログラムコードを実行する、請求項２４に記載のリアルタイムコントローラ。
【請求項２９】
前記システムレベルプログラムコードは、ディスクドライブデータ取り込みプログラムコード、ＤＶＤデータ取り込みプログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、又は暗号化及びセキュリティの管理プログラムコードの少なくとも１つを含む、請求項２４に記載のリアルタイムコントローラ。
【請求項３０】
前記実行パイプラインは、
命令フェッチユニットと、
前記命令フェッチユニットに応答するデコーダと、
前記デコーダに応答する発行ユニットと、
前記発行ユニットに応答する実行ユニットと、
を備える、請求項２１、２３及び２４のいずれか１項に記載のリアルタイムコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の開示は、処理回路及び処理システムに関する。
【０００２】
本出願は、本出願と同時に出願された同一出願人による米国特許出願である代理人整理番号第ＭＰ０６３３／１３３６１−１４２００１号のホン・イ・チェン（Hong-Yi Chen）及びセハット・スタージャ（Sehat Sutardja）による「Dual Thread Processor」という発明の名称の出願の部分継続出願である。この米国特許出願の全内容は、参照によりそっくりそのまま援用される。
【背景技術】
【０００３】
従来のオペレーティングシステムは、通常、マルチタスクをサポートする。マルチタスクは、２つ以上のプロセッサスレッドが共通の処理資源を共有することを可能にするスケジューリング方式である。プロセッサスレッドは、ソフトウェアプログラムの実行を追跡するプロセッサ内のアーキテクチャ状態を表す。単一のプロセッサを有するコンピュータの場合、どの所与の時点においても１つのプロセッサスレッドしか処理されず、これは、プロセッサが、単一のプロセッサスレッドに関連した命令を積極的に実行していることを意味する。或るプロセッサスレッドから別のプロセッサスレッドへプロセッサを再割り当てする動作は、コンテキストスイッチと呼ばれる。
【０００４】
従来のパイプラインプロセッサでは、コンテキストスイッチは、通常、ハードウェア割り込み及び割り込みサービスルーチンを通じて行われる。割り込みサービスルーチンは、通常、貴重なプロセッサ時間を消費し得る、関連した実行時間、すなわち割り込みオーバーヘッドを有する。これに加えて、従来のパイプラインプロセッサでは、コンテキストスイッチは、たとえばオペレーティングシステムのベンダによって定められるように、通常、一定の間隔（たとえば、１００μｓごと）でしか行われない。
【発明の開示】
【課題を解決するための手段】
【０００５】
概して、一態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むハードディスクコントローラを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてサーボに関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【０００６】
特定の実施態様は、次のものの１つ又は複数を含むことができる。ハードディスクコントローラは、サーボに関係したプログラムコード及びシステムレベルプログラムコードを記憶するメモリをさらに含むことができる。このメモリは、ユーザが提供したプログラムコードを記憶することができる。スレッド制御ユニットは、実行パイプラインを制御して、第３のスレッドとしてユーザが提供したプログラムコードを実行することができる。実行パイプラインは、命令フェッチユニットと、命令フェッチユニットに応答するデコーダと、デコーダに応答する発行ユニットと、発行ユニットに応答する実行ユニットと、を含むことができる。システムレベルプログラムコードは、ディスクドライブデータ取り込みプログラムコード、エラー訂正プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、又は欠陥マネージャプログラムコードの少なくとも１つを含むことができる。ホストプロトコル管理プログラムコードは、次のプロトコル、すなわち、ＡＴＡ、ＵＳＢ、ＳＡＴＡ、ＳＡＳ、ＦＣ、ＣＥ−ＡＴＡ、ＳＤＩＯの少なくとも１つを管理することができる。ハードディスクコントローラは、少なくとも２つのスレッドのプログラムコードを実行するように適合された第２のマルチスレッドプロセッサをさらに含むことができる。第２のマルチスレッドプロセッサは、第２の実行パイプラインと、第２のスレッド制御ユニットとを含むことができる。第２のスレッド制御ユニットは、第２の実行パイプラインを制御して、第３のスレッドとして第１のリアルタイムプログラムコードを実行し、第４のスレッドとして第２のリアルタイムプログラムコードを実行する。第２のマルチスレッドプロセッサは、第１のマルチスレッドプロセッサによって実行されない所与のスレッドのプログラムコードを実行することができる。ハードディスクコントローラは、読み出しチャネルをさらに含むことができる。
【０００７】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むＤＶＤコントローラを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてサーボに関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【０００８】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むメディアプレイヤデバイスを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてメディア処理に関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【０００９】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むセルラーＷＬＡＮシステムを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてセルラー通信に関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００１０】
特定の実施態様は、次の特徴の１つ又は複数を含むことができる。セルラー通信に関係したプログラムコードは、次のプロトコル、すなわち、ＣＤＭＡ、Ｇ３、ＧＳＭ等の１つ又は複数に関係し得る。システムレベルプログラムコードは、メニュープログラムコード、ディスプレイプログラムコード、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、無線／有線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含むことができる。
【００１１】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むＶｏＩＰシステムを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとして音声処理に関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００１２】
特定の実施態様は、次の特徴の１つ又は複数を含むことができる。スレッド制御ユニットは、実行パイプラインをさらに制御して、第３のスレッドとしてコーデックに関係したプログラムコードを実行することができる。音声処理に関係したプログラムコードは、音声信号を処理して、ネットワークを介した伝送に適した形態に変換することに関連したプログラムコードとすることができる。システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、無線／有線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含むことができる。
【００１３】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含む無線ネットワークデバイスシステムを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとして無線ネットワークに関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００１４】
特定の実施態様は、次の特徴の１つ又は複数を含むことができる。無線ネットワークに関係したプログラムコードは、ルーティングプログラムコード、ネットワークプログラムコード、アクセスポイントプログラムコード、リピータプログラムコード、セキュリティプログラムコード、仮想プライベートネットワークプログラムコード、又は無線通信プロトコルを実施するプログラムコードの少なくとも１つを含むことができる。システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含むことができる。
【００１５】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含む無線テレビシステムを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてメディアに関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００１６】
特定の実施態様は、次の特徴の１つ又は複数を含むことができる。メディアに関係したプログラムコードは、ビデオ処理プログラムコード又は音響処理プログラムコードの少なくとも１つを含むことができる。システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線／無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含むことができる。
【００１７】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むブロードバンドモデムを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてブロードバンド通信に関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００１８】
特定の実施態様は、次のものの１つ又は複数を含むことができる。ブロードバンド通信に関係したプログラムコードは、ケーブル通信プログラムコード、ＤＳＬ通信コード、又は衛星通信プログラムコードの少なくとも１つを含む。システムに関係したコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線／無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含むことができる。
【００１９】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含む有線ルータを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてネットワーク接続に関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００２０】
特定の実施態様は、次の特徴の１つ又は複数を含むことができる。ネットワーク接続に関係したプログラムコードは、ルーティングプログラムコード、アクセスポイントプログラムコード、セキュリティプログラムコード、リピータプログラムコード、仮想プライベートネットワーク接続プログラムコード、又は通信プロトコルを実施するプログラムコードの少なくとも１つを含むことができる。システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含むことができる。
【００２１】
概して、別の態様では、この明細書は、少なくとも２つのスレッドのプログラムコードを実行するように適合されたマルチスレッドプロセッサを含むリアルタイムコントローラを説明する。マルチスレッドプロセッサは、実行パイプラインと、この実行パイプラインを制御して、第１のスレッドとしてメディアに関係したプログラムコードを実行し、第２のスレッドとしてシステムレベルプログラムコードを実行するスレッド制御ユニットと、を含む。
【００２２】
一般に、別の態様では、この明細書は、第１のリアルタイムプログラムコードを設けること、第２のリアルタイムプログラムコードを設けること、第１のリアルタイムプログラムコードを、マルチスレッドプロセッサの実行パイプラインを通じて第１のプロセッサスレッドで実行すること、及び、第２のリアルタイムプログラムコードを、マルチスレッドプロセッサの実行パイプラインを通じて第２のプロセッサスレッドで実行することを含む方法を説明する。
【００２３】
一般に、別の態様では、この明細書は、リアルタイムコントローラを説明する。リアルタイムコントローラは、少なくとも２つのスレッドのプログラムコードを実行するための手段を含む。この実行するための手段は、実行パイプライン手段と、この実行パイプライン手段を制御して、第１のスレッドとして第１のリアルタイムプログラムコードを実行し、第２のスレッドとして第２のリアルタイムプログラムコードを実行するための手段とを含む。
【００２４】
特定の実施態様は、次の特徴の１つ又は複数を含むことができる。リアルタイムコントローラは、第１のリアルタイムプログラムコード及び第２のリアルタイムプログラムコードを記憶するための手段を含むことができる。この記憶するための手段は、ユーザが提供したプログラムコードをさらに記憶することができる。制御するための手段は、実行パイプライン手段を制御して、ユーザが提供したプログラムコードを第３のスレッドとして実行することができる。実行パイプライン手段は、命令をフェッチするための手段と、フェッチされた命令をデコードするための手段と、デコードされた命令を発行するための手段と、発行された命令を実行するための手段と、を含むことができる。リアルタイムコントローラは、少なくとも２つのスレッドのプログラムコードを実行するための第２の手段をさらに含むことができる。この実行するための第２の手段は、第２の実行パイプライン手段と、この第２の実行パイプライン手段を制御して、第３のスレッドとして第３のリアルタイムプログラムコードを実行し、第４のスレッドとして第４のリアルタイムプログラムコードを実行するための手段と、を含む。
【００２５】
概して、別の態様では、この明細書は、第１のリアルタイムプログラムコードを設ける手段と、第２のリアルタイムプログラムコードを設ける手段と、第１のリアルタイムプログラムコードを、マルチスレッドプロセッサの実行パイプラインを通じて第１のプロセッサスレッドで実行する手段と、第２のリアルタイムプログラムコードを、マルチスレッドプロセッサの実行パイプラインを通じて第２のプロセッサスレッドで実行する手段とを含むリアルタイムコントローラを説明する。
【００２６】
特定の実施態様は、次のものの１つ又は複数を含むことができる。第１のリアルタイムコードは、ビデオ処理プログラムコードとすることができ、第２のリアルタイムコードは、音響プログラムコードとすることができる。
【００２７】
実施態様は、次の利点の１つ又は複数を含むことができる。マルチプロセッサ（たとえば、ＣＰＵ対ＣＰＵ）管理を必要としない単一のマルチスレッドプロセッサを含む用途が含まれる。その結果、マルチプロセッサ管理に関連したプロセッサ時間が省かれる。用途においてＣＰＵの個数が削減されることによって、さらに、所与の用途に関連した製造コストも削減される。さらに、マルチスレッドプロセッサは、所与のプログラムコードに専用化できる利用可能なプロセッサスレッドを通じて、計算資源がそのプログラムコードに利用可能になることを保証する。また、マルチスレッドプロセッサによって、マルチスレッドプロセッサにより実行されるソフトウェアコードの独立した開発が可能になる。
【００２８】
１つ又は複数の実施態様の詳細は、添付図面及び以下の説明に述べられている。他の特徴及び利点は、これらの説明及び図面、並びに特許請求の範囲から明らかになる。
【００２９】
さまざまな図面における同じ参照シンボルは、同じ要素を示す。
【発明を実施するための最良の形態】
【００３０】
図１は、２つ又は３つ以上のプロセッサスレッドＴ１、Ｔ２、…Ｔｎを処理するように動作可能なマルチスレッドパイプラインプロセッサアーキテクチャ１００のブロック図である。プロセッサスレッドＴ１、Ｔ２、…Ｔｎは、それぞれ、対応するソフトウェアプログラムの実行を追跡する、マルチスレッドパイプラインプロセッサアーキテクチャ１００内のアーキテクチャ状態を表す。ソフトウェアプログラムの命令は、たとえば、命令キャッシュ（たとえば、命令キャッシュ１０２）から取り出すことができる。一実施態様では、マルチスレッドパイプラインプロセッサアーキテクチャ１００は、２つ又は３つ以上のプログラムカウンタ（図示せず）を含む。これらのプログラムカウンタのそれぞれは、プロセッサスレッドＴ１、Ｔ２、…Ｔｎに対応する。各プログラムカウンタは、（対応するプロセッサスレッドＴ１、Ｔ２、…Ｔｎについて）マルチスレッドパイプラインプロセッサアーキテクチャ１００が、命令シーケンスに関してどこにいるかを示す。プログラムカウンタは、図３及び図５に関連して以下でより詳細に解説する。
【００３１】
一実施態様では、マルチスレッドパイプラインプロセッサアーキテクチャ１００は、６つのパイプラインステージを含む。これらの６つのパイプラインステージは、命令フェッチステージ（ＩＦ）、命令デコードステージ（ＩＤ）、命令発行ステージ（ＩＳ）、命令実行ステージ（ＥＸ）、データメモリ読み出しステージ（ＭＥＭ）、及びライトバックステージ（ＷＢ）を含む。しかしながら、マルチスレッドパイプラインプロセッサアーキテクチャ１００は、異なる個数のパイプラインステージを含むこともできる。さらに、マルチスレッドパイプラインプロセッサアーキテクチャ１００は、命令フェッチユニット（ＩＦＵ）１０４，デコードロジック１０６、発行ロジック１０８、レジスタファイル１１０、実行ユニット１１２、読み出しロジック１１４、書き込みロジック１１６、及びプログラマブルスレッド割り当てコントローラ（又はスレッド制御ユニット）１１８を含む。
【００３２】
命令フェッチユニット１０４は、たとえば命令キャッシュ１０２からプログラム命令を取り出す。デコーダ１０６は、プログラム命令をデコードし、実行ユニット１１２によって実行されるデコードされた命令を生成する。一実施態様では、デコードされた命令は、固定長のマイクロオペレーション命令である。発行ロジック１０８は、実行のために実行ユニット１１２へデコードされた命令を発行する。実行ユニット１１２は、代理人整理番号第ＭＰ０６３４／１３３６１−１４０００１号のホン・イ・チェン（Hong-yi Chen）及びジェンセン・テン（Jensen Tjeng）による「Variable Length Pipeline Processor Architecture」という発明の名称の米国特許出願に記載されているようなロード実行ユニット、ストア実行ユニット、算術論理演算ユニット（ＡＬＵ）、積和演算（ＭＡＣ）ユニット、又はロード／ストア複合実行ユニットとすることができる。この米国特許出願は、その全内容が参照により援用される。読み出しロジック１１４は、たとえばデータキャッシュ（図示せず）からデータを読み出す。書き込みロジック１１６は、実行された命令の結果を、たとえば、データキャッシュ、レジスタファイル１１０、又はリオーダバッファ（図示せず）にライトバックする。
【００３３】
レジスタファイル１１０は、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎに関連したデータを記憶する。一実施態様では、レジスタファイル１１０は、対応するプロセッサスレッドＴ１、Ｔ２、…Ｔｎに関連したデータを記憶する別個のバンク（たとえば、バンクＴ１、Ｔ２、…Ｔｎ）を含む。たとえば、書き込みロジック１１６が、プロセッサスレッドＴ２に関連したデータをレジスタファイル１１０にライトバックしている場合、書き込みロジック１１６は、そのデータをレジスタファイル１１０のバンクＴ２に書き込む。或いは、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎに対応するデータを記憶するための別個のレジスタファイル（図示せず）をマルチスレッドパイプラインプロセッサアーキテクチャ１００内に実施することもできる。
【００３４】
プログラマブルスレッド割り当てコントローラ１１８は、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎについて定義されているプロセッサ時間割り当て、すなわち、プロセッサ時間のどの部分が、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎに専用化されるか、を記憶するようにプログラミングすることができる。一実施態様では、複数のプロセッサスレッド（たとえば、プロセッサスレッドＴ１、Ｔ２、…Ｔｎ）のそれぞれに割り当てられるプロセッサ時間の部分を定義した、たとえばユーザからの入力が、グラフィカルユーザインターフェース（図示せず）を通じて受け取られる。たとえば、ユーザは、デュアルスレッドパイプラインプロセッサの場合、第１のプロセッサスレッドにプロセッサ時間の９５％を割り当て、第２のプロセッサスレッドに５％を割り当てることができる。一実施態様では、各プロセッサスレッド（たとえば、プロセッサスレッドＴ１、Ｔ２、…Ｔｎ）について定義されたプロセッサ時間割り当ては、ユーザ又は好ましくはソフトウェアプログラム（たとえば、実行されるソフトウェアプログラム）が動的に変更することができる。すなわち、プログラム実行中に変更することができる。或いは、各プロセッサスレッドのプロセッサ時間割り当ては、静的に設定することもできる。すなわち、プログラム実行中に変更することができない。
【００３５】
一実施態様では、プログラマブルスレッド割り当てコントローラ１１８は、次の命令が（たとえば、命令フェッチユニット１０４によって）プロセッサスレッドからフェッチされる際のプロセッサスレッドを決定することによって、コンテキストスイッチを自動的に実行する。一実施態様では、プログラマブルスレッド割り当てコントローラ１１８は、命令フェッチユニット１０４と通信する１つ又は複数のセレクタを切り換えることによってコンテキストスイッチを実行する。このセレクタは、たとえば、マルチプレクサ及び／又はデマルチプレクサ（図示せず）である。コンテキストスイッチを実行するマルチプレクサ及びデマルチプレクサを含むプロセッサの一実施態様は、図３、図４、及び図５に関連して以下で解説する。コンテキストスイッチが行われると、次のプロセッサスレッドに関連した命令が、命令フェッチユニット１０４によってフェッチされる。マルチスレッドパイプラインプロセッサアーキテクチャ１００のパイプラインステージ（たとえば、パイプラインステージＩＦ、ＩＤ、ＩＳ、ＥＸ、ＭＥＭ、ＷＢ）は、２つ又は３つ以上のプロセッサスレッドに関連した命令を含むことができるが、各所与のプロセッサスレッドに関連したデータは、レジスタファイル１１０を通じて別個に保持され、したがって、各プロセッサスレッドに関連したデータの完全性が維持される。割り込みサービスルーチンを必要とする場合がある従来のパイプラインプロセッサと異なり、プログラマブルスレッド割り当てコントローラ１１８は、コンテキストスイッチを実行することに関連した割り込みオーバーヘッドを何ら有しない。
【００３６】
図２は、マルチスレッドパイプラインプロセッサアーキテクチャ（たとえば、マルチスレッドパイプラインプロセッサアーキテクチャ１００）を通じてプロセッサスレッドを処理するための方法２００を示している。複数のプロセッサスレッドのそれぞれに割り当てられるプロセッサ時間の一部を定義した入力が受け取られる（ステップ２０２）。一実施態様では、入力割り当てが、グラフィカルユーザインターフェースを通じてユーザから受け取られる。一実施態様では、入力割り当てが、ソフトウェアアプリケーションを実行する要求に基づいて決定される。各プロセッサスレッドに割り当てられたプロセッサ時間は、プログラマブルスレッド割り当てコントローラ（たとえば、プログラマブルスレッド割り当てコントローラ１１８）に記憶することができる。一実施態様では、プロセッサ時間は、ＣＰＵ（中央処理装置）サイクル、クロックサイクル、及び／又は命令サイクルに基づいて割り当てられる。
【００３７】
各スレッドは、各スレッドに割り当てられたプロセッサ時間に従ってマルチスレッドパイプラインプロセッサにより処理される（ステップ２０４）。一実施態様では、コンテキストスイッチは、プログラマブルスレッド割り当てコントローラに記憶された、各スレッドに割り当てられたプロセッサ時間に従って自動的に行われる。一実施態様では、プログラマブルスレッド割り当てコントローラは、命令フェッチユニット（たとえば、命令フェッチユニット１０４）と通信する１つ又は複数のマルチプレクサ及び／又はデマルチプレクサの切り換えを制御する。一実施態様では、以下でより詳細に解説するように、プログラマブルスレッド割り当てコントローラは、マルチスレッドパイプラインプロセッサの各パイプラインステージの前後に配置された１つ又は複数のマルチプレクサ及び／又はデマルチプレクサの切り換えを制御して、コンテキストスイッチを実行する。この実施態様では、プロセッサスレッドの状態は、パイプラインプロセッサの各パイプラインステージの前後に配置されたレジスタに記憶され、これらのレジスタからロードされる。一実施態様では、コンテキストスイッチは、所与の命令サイクルの終了時に行われる。
【００３８】
プロセッサ時間割り当てを動的に変更する入力が受け取られたかどうかの判断が（たとえば、プログラマブルスレッド割り当てコントローラ１１８を通じて）行われる（ステップ２０６）。各プロセッサスレッドに割り当てられたプロセッサ時間が動的に変更されていない場合、各プロセッサスレッドは、前に設定されたプロセッサ時間割り当てに従って処理され、方法２００はステップ２０４に戻る。プロセッサ時間割り当てが動的に変更されている場合、各プロセッサスレッドは、変更されたプロセッサ時間割り当てに従って処理される（ステップ２０８）。ステップ２０８の後、方法２００は、上記で解説したステップ２０６に戻る。
【００３９】
図３は、（ｎ個の）プロセッサスレッドＴ１、Ｔ２、…Ｔｎを処理するマルチスレッドパイプラインプロセッサアーキテクチャ１００に従って構築されたマルチスレッドパイプラインプロセッサ３００のブロック図を示している。一実施態様では、マルチスレッドパイプラインプロセッサ３００は、命令フェッチユニット３０４、デコーダ３０６、レジスタファイル３０８、発行ロジック３１０、２ステージ実行ユニット３１２、リオーダバッファ３１４、及びプログラマブルスレッド割り当てコントローラ３１６を含む。さらに、マルチスレッドパイプラインプロセッサ３００は、プロセッサスレッドＴ１、Ｔ２、…Ｔｎにそれぞれ対応するレジスタＴ１〜Ｔｎ及びプログラムカウンタＴ１〜Ｔｎを含む。さらに、マルチスレッドパイプラインプロセッサ３００はマルチプレクサ３５０を含む。
【００４０】
一実施態様では、命令フェッチ（ＩＦ）ステージの期間中に、命令フェッチユニット３０４は、実行される命令を、たとえば命令キャッシュ３０２から取り出す。命令フェッチユニット３０４は、プログラムカウンタＴ１、Ｔ２、…Ｔｎに従って命令を取り出す。一実施態様では、プログラムカウンタＴ１は、プロセッサスレッドＴ１の実行ステータス（すなわち、マルチスレッドパイプラインプロセッサ３００が、プロセッサスレッドＴ１に関連した命令シーケンスに関してどこにいるか）を示し、プログラムカウンタＴ２は、プロセッサスレッドＴ２に関連した実行ステータスを示し、プログラムカウンタＴｎは、プロセッサスレッドＴｎに関連した実行ステータスを示す。
【００４１】
命令デコードステージ（ＩＤ）の期間中、命令フェッチユニット３０４によって取り出された命令がデコードされる。
【００４２】
命令発行ステージ（ＩＳ）の期間中、一実施態様では、デコードされた命令が、（発行ロジック３１０を通じて）リオーダバッファ３１４へ送られる。リオーダバッファ３１４は、デコードされた命令が実行のために発行されるまで、デコードされた命令を記憶する。一実施態様では、リオーダバッファ３１４は循環バッファである。
【００４３】
また、リオーダバッファ３１４は、実行された命令を、たとえばレジスタファイル３０８内に回収する準備ができるまで、実行された命令の結果も記憶する。一実施態様では、レジスタファイル３０８は、マルチスレッドパイプラインプロセッサ３００によって処理された各プロセッサスレッド（たとえば、プロセッサスレッドＴ１、Ｔ２、…Ｔｎ）に対応するバンク（たとえば、バンクＴ１、Ｔ２、…Ｔｎ）を含む。バンクＴ１は、プロセッサスレッドＴ１に関連したデータを保持し、バンクＴ２は、プロセッサスレッドＴ２に関連したデータを保持し、バンクＴｎは、プロセッサスレッドＴｎに関連したデータを保持する。これらのデータは、所与のプロセッサスレッドに関連した、実行された命令のオペランド及び／又は結果を含むことができる。一実施態様では、マルチスレッドパイプラインプロセッサ３００は、リオーダバッファを含まない。
【００４４】
実行ステージＥＸ１、ＥＸ２の期間中、実行ユニット３１２は、デコードされて発行ロジック３１０から発行された命令を実行する。実行ユニット３１２は、上記で解説したように、あらゆるタイプの実行ユニットとすることができる。実行ユニット３１２は２つのパイプラインステージを有するものとして示されているが、実行ユニット３１２は、異なる個数のパイプラインステージを有することもできる。一実施態様では、実行された命令の結果は、リオーダバッファ３１４にライトバックされ、次いで、レジスタファイル３０８に回収される。
【００４５】
プログラマブルスレッド割り当てコントローラ３１６は、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎのプロセッサ時間割り当て、すなわち、どれだけのプロセッサ時間が各プロセッサスレッドＴ１、Ｔ２、…Ｔｎに専用化されるか、を記憶するプログラミングを受けるように動作可能である。一実施態様では、プロセッサ時間の一部を各プロセッサスレッドＴ１、Ｔ２、…Ｔｎに割り当てる、たとえばユーザからの入力が、グラフィカルユーザインターフェース（図示せず）を通じて受け取られる。一実施態様では、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎのプロセッサ時間割り当ては、ユーザが動的に変更することができる。一実施態様では、各プロセッサスレッドＴ１、Ｔ２、…Ｔｎのプロセッサ時間割り当ては、マルチスレッドパイプラインプロセッサ３００によって処理されているソフトウェアアプリケーションを通じて動的に変更される。
【００４６】
一実施態様では、プログラマブルスレッド割り当てコントローラ３１６は、命令フェッチユニット３０４と通信するマルチプレクサ３５０を切り換えることにより、プロセッサスレッドＴ１、Ｔ２、…Ｔｎ間でコンテキストスイッチを自動的に実行する。たとえば、マルチスレッドパイプラインプロセッサ３００がプロセッサスレッドＴ１を処理している時間の間、マルチプレクサ３５０は、プロセッサスレッドＴ１に関連した命令がマルチスレッドパイプラインプロセッサ３００のパイプラインステージを通過するように制御される。コンテキストスイッチがプロセッサスレッドＴ１から行われると、マルチプレクサ３５０は、別のプロセッサスレッド、たとえばプロセッサスレッドＴ２、に関連した命令が通過するように制御される。一実施態様では、マルチプレクサ３５０は、ｎ対１マルチプレクサである。
【００４７】
一実施態様では、プログラマブルスレッド割り当てコントローラ３１６は、各プロセッサスレッドに割り当てられたプロセッサ時間に対応する重みを決定する複数のスレッド割り当てカウンタ（たとえば、スレッド割り当てカウンタＴ１〜Ｔｎ）を含む。たとえば、一実施態様では、スレッド割り当てカウンタＴ１〜Ｔｎのそれぞれは、いくつのＣＰＵサイクルが各スレッドについて割り当てられているかを表す値を含む。たとえば、スレッド割り当てカウンタＴ１が２５６の値を含み、スレッド割り当てカウンタＴ２が１６の値を含み、且つ、スレッド割り当てカウンタＴｎが０の値を含む場合、命令は、まず、２５６個のＣＰＵサイクルの間、プロセッサスレッドＴ１からフェッチされ、次に、命令は、１６個のＣＰＵサイクルの間、プロセッサスレッドＴ２からフェッチされ、プロセッサスレッドＴｎからは、０個の命令がフェッチされる。次に、命令は、別の２５６個のＣＰＵサイクル及び１６個のＣＰＵサイクルの間、再び、それぞれプロセッサスレッドＴ１及びＴ２からフェッチされる。以下、同様に繰り返される。命令フェッチは、スレッド割り当てカウンタの１つ又は複数の値が変更されるまで、それに応じて継続することができる。各スレッド割り当てカウンタＴ１〜Ｔｎが０の値に達すると、プログラマブルスレッド割り当てカウンタ３１６は、マルチプレクサ３５０を切り換えて、次のプロセッサスレッドに関連した命令を、処理のために命令フェッチユニット３０４に渡す。
【００４８】
図４は、２つ又は３つ以上のプロセッサスレッドＴ１、Ｔ２、…Ｔｎを処理するように動作可能なマルチスレッドパイプラインプロセッサアーキテクチャ４００のブロック図である。プロセッサスレッドＴ１、Ｔ２、…Ｔｎに関連した命令は、たとえば、命令キャッシュ（たとえば、命令キャッシュ４０２）から取り出すことができる。
【００４９】
一実施態様では、マルチスレッドパイプラインプロセッサアーキテクチャ４００は、６つのパイプラインステージを含む。これらの６つのパイプラインステージは、命令フェッチステージ（ＩＦ）、命令デコードステージ（ＩＤ）、命令発行ステージ（ＩＳ）、命令実行ステージ（ＥＸ）、データメモリ読み出しステージ（ＭＥＭ）、及びライトバックステージ（ＷＢ）を含む。しかしながら、マルチスレッドパイプラインプロセッサアーキテクチャ４００は、異なる個数のパイプラインステージを含むこともできる。さらに、マルチスレッドパイプラインプロセッサアーキテクチャ４００は、命令フェッチユニット（ＩＦＵ）４０４，デコードロジック４０６、発行ロジック４０８、実行ユニット４１０、読み出しロジック４１２、書き込みロジック４１４、及びプログラマブルスレッド割り当てコントローラ４１６を含む。マルチスレッドパイプラインプロセッサアーキテクチャ４００は、図１のマルチスレッドパイプラインプロセッサアーキテクチャと類似している。しかしながら、マルチスレッドパイプラインプロセッサアーキテクチャ４００は、さらに、１組のレジスタ（たとえば、レジスタＡ１〜Ａ７、Ｂ１〜Ｂ７、Ｎ１〜Ｎ７）を含む。これらのレジスタは、各パイプラインステージ間（各ステージの前に１つ及び後に１つ）に配置され、コンテキストスイッチの期間中、対応するプロセッサスレッドＴ１、Ｔ２、…Ｔｎの状態を記憶するため。
【００５０】
レジスタＡ１〜Ａ７は、プロセッサスレッドＴ１の状態を記憶する。同様にして、レジスタＢ１〜Ｂ７は、プロセッサスレッドＴ２の状態を記憶し、レジスタＮ１〜Ｎ７は、プロセッサスレッドＴｎの状態を記憶する。一実施態様では、各レジスタＡ１〜Ａ７、Ｂ１〜Ｂ７、Ｎ１〜Ｎ７は、所与の命令サイクルの終了時にマルチスレッドパイプラインプロセッサアーキテクチャ４００の対応するパイプラインステージによって生成されたデータの状態を記憶することを含めて、対応するプロセッサスレッドの状態を記憶する。たとえば、プロセッサスレッドＴ１に関連した命令を処理する時、命令サイクルの終了時に、レジスタＡ３は、デコーダ４０６から受け取ったプロセッサスレッドＴ１のデータの状態を記憶することができ、レジスタＡ５は、実行ユニット４１０から受け取ったデータの状態を記憶することができる。レジスタＡ１〜Ａ７、Ｂ１〜Ｂ７、Ｎ１〜Ｎ７は、対応するプロセッサスレッドの状態を所与のレジスタから直接ロードする（又は、所与のレジスタへ直接記憶する）ことを可能にするという点でコンテキストスイッチを容易にする。一実施態様では、各一組のレジスタＡ１〜Ａ７、Ｂ１〜Ｂ７、Ｎ１〜Ｎ７は、マルチスレッドパイプラインプロセッサアーキテクチャ４００内の機能ユニットの比較的近くに（たとえば、各パイプラインステージの間に）配置され、高速のコンテキストスイッチ時間が可能にされる。
【００５１】
一実施態様では、プログラマブルスレッド割り当てコントローラ４１６は、各パイプラインステージ（たとえば、パイプラインステージＩＦ、ＩＤ、ＩＳ、ＥＸ、ＭＥＭ、ＷＢ）の前又は後に配置された１つ又は複数のマルチプレクサ及び／又はデマルチプレクサ（図示せず）を切り換えることによって、コンテキストスイッチを自動的に実行する。コンテキストスイッチを実行する、マルチプレクサ及びデマルチプレクサを含むプロセッサの一実施態様は、図５に関連して以下で解説する。コンテキストスイッチが行われる場合、コンテキストスイッチを行う予定の現在のプロセッサスレッド（たとえば、プロセッサスレッドＴ１）に関連した一組のレジスタ（たとえば、レジスタＡ１〜Ａ７）は、現在のプロセッサスレッドの状態を記憶する。コンテキストスイッチを完了するために、次のプロセッサスレッド（たとえば、プロセッサスレッドＴ２）の状態が、次のプロセッサスレッドに関連した異なる一組のレジスタ（たとえば、レジスタＢ１〜Ｂ７）からロードされる。パイプラインプロセッサは、続く命令サイクルで次のプロセッサスレッドを処理する。一実施態様では、コンテキストスイッチは、命令サイクルの終了時に行われ（すなわち、パイプラインステージからのデータが、関連したレジスタに保存された後）、シームレスなコンテキストスイッチが可能にされる。
【００５２】
図５は、２つのスレッドＴ１、Ｔ２を処理するマルチスレッドパイプラインプロセッサアーキテクチャ４００に関連して構築されたマルチスレッドパイプラインプロセッサ５００のブロック図である。一実施態様では、マルチスレッドパイプラインプロセッサ５００は、命令フェッチユニット５０４，デコーダ５０６、レジスタファイル５０８、発行ユニット５１０、２ステージ実行ユニット５１２、リオーダバッファ５１４、及びプログラマブルスレッド割り当てコントローラ５１６を含む。さらに、マルチスレッドパイプラインプロセッサ５００は、プロセッサスレッドＴ１に対応する第１の組のレジスタＡ１〜Ａ６、及び、プロセッサスレッドＴ２に対応する第２の組のレジスタＢ１〜Ｂ６を含む。さらに、マルチスレッドパイプラインプロセッサ５００は、プログラムカウンタＴ１、Ｔ２、マルチプレクサ５５０、及びデマルチプレクサ５５２を含む。
【００５３】
一実施態様では、命令フェッチ（ＩＦ）ステージの期間中、命令フェッチユニット５０４は、実行される命令を、たとえば命令キャッシュ５０２から取り出す。命令フェッチユニット５０４は、プログラムカウンタＴ１、Ｔ２に従って命令を取り出す。一実施態様では、プログラムカウンタＴ１は、プロセッサスレッドＴ１の実行ステータス（すなわち、マルチスレッドパイプラインプロセッサ５００が、プロセッサスレッドＴ１に関連した命令シーケンスに関してどこにいるか）を示し、プログラムカウンタＴ２は、プロセッサスレッドＴ２に関連した実行ステータスを示す。
【００５４】
命令デコードステージ（ＩＤ）の期間中、命令フェッチユニット５０４によって取り出された命令がデコードされる。
【００５５】
命令発行ステージ（ＩＳ）の期間中、一実施態様では、デコードされた命令が、（発行ユニット５１０を通じて）リオーダバッファ５１４へ送られる。リオーダバッファ５１４は、デコードされた命令が実行のために発行されるまで、デコードされた命令を記憶する。一実施態様では、リオーダバッファ５１４は循環バッファである。
【００５６】
また、リオーダバッファ５１４は、実行された命令を、たとえばレジスタファイル５０８内に回収する準備ができるまで、実行された命令の結果も記憶する。一実施態様では、レジスタファイル５０８は、２つのバンクＴ１、Ｔ２を含む。バンクＴ１は、プロセッサスレッドＴ１に関連したデータを保持し、バンクＴ２は、プロセッサスレッドＴ２に関連したデータを保持する。レジスタファイル５０８は、データがレジスタからロードされる際の当該レジスタを示すスレッドインデックス（図示せず）を含むことができる。スレッドインデックスによって、現在実行中のプロセッサスレッドに関連したレジスタからのデータは、レジスタファイル５０８に確実にロードされる。
【００５７】
実行ステージＥＸ１、ＥＸ２の期間中、実行ユニット５１２は、デコードされて発行ロジック５１０から発行された命令を実行する。実行ユニット５１２は、上記で解説したように、あらゆるタイプの実行ユニットとすることができる。実行ユニット５１２は２つのパイプラインステージを有するものとして示されているが、実行ユニット５１２は、異なる個数のパイプラインステージを有することもできる。一実施態様では、実行された命令の結果は、リオーダバッファ５１４にライトバックされ、次いで、レジスタファイル５０８に回収される。
【００５８】
プログラマブルスレッド割り当てコントローラ５１６は、各プロセッサスレッドＴ１、Ｔ２のプロセッサ時間割り当てを記憶するプログラミングを受けるように動作できる。一実施態様では、プログラマブルスレッド割り当てコントローラ５１６は、マルチスレッドパイプラインプロセッサ５００の各パイプラインステージ（たとえば、パイプラインステージＩＦ、ＩＤ、ＩＳ、ＥＸ１、ＥＸ２）の前後にそれぞれ配置されたマルチプレクサ５５０及びデマルチプレクサ５５２を切り換えることによって、プロセッサスレッドＴ１、Ｔ２間のコンテキストスイッチを自動的に実行する。たとえば、マルチスレッドパイプラインプロセッサ５００がプロセッサスレッドＴ１を処理している時間の間、マルチプレクサ５５０及びデマルチプレクサ５５２は、プロセッサスレッドＴ１に関連した命令が（マルチスレッドパイプラインプロセッサ５００のパイプラインステージを）通過するように制御される。プロセッサスレッドＴ２の状態情報は、レジスタＢ１〜Ｂ６に記憶される。コンテキストスイッチがプロセッサスレッドＴ１から行われると、レジスタＡ１〜Ａ６は、プロセッサスレッドＴ１の状態を記憶し、プロセッサスレッドＴ２の状態が、レジスタＢ１〜Ｂ６から（マルチプレクサ５５０及びデマルチプレクサ５５２を通じて）ロードされて、マルチスレッドパイプラインプロセッサ５００によって処理される。一実施態様では、マルチプレクサ５５０のそれぞれは２対１マルチプレクサであり、デマルチプレクサ５５２のそれぞれは１対２デマルチプレクサである。
【００５９】
＜例外ハンドリング＞
マルチスレッドパイプラインプロセッサアーキテクチャ１００、４００に従って構築されたマルチスレッドパイプラインプロセッサ（たとえば、マルチスレッドパイプラインプロセッサ３００、５００）が例外を検出すると、通常の命令実行シーケンスは一時停止する。例外は、通常のプログラム実行の一時停止を引き起こすイベントである。例外のタイプには、たとえば、アドレス指定例外、データ例外、オペレーション例外、オーバーフロー例外、保護例外、アンダーフロー例外等が含まれる。例外は、ハードウェアによって生成される場合もあるし、ソフトウェアによって生成される場合もある。
【００６０】
図６は、マルチスレッドパイプラインプロセッサアーキテクチャ１００、４００に従って実施されたマルチスレッドパイプラインプロセッサで例外ハンドリングを実行するための方法を示している。所与のスレッドの命令ｉが実行されている間に、例外要求が発生する（ステップ６０２）。各プロセッサスレッドに関連したプログラムカウンタ値が、マルチスレッドプロセッサのパイプライン内の現在の命令の状態と共に保存される（ステップ６０４）。一実施態様では、マルチスレッドプロセッサのパイプライン内のすべての命令がアボート又はフラッシュされる。マルチスレッドプロセッサは、所与のスレッドに関連した例外ハンドリングルーチンにジャンプする（ステップ６０６）。一実施態様では、各プロセッサスレッドは、他のプロセッサスレッドに関連した例外ハンドリングルーチンとは別で且つ独立の関連した例外ハンドリングルーチンを有する。一実施態様では、単一の例外ハンドリングルーチンが、すべてのプロセッサスレッドの例外要求を実行する。
【００６１】
例外要求は、所与の例外ハンドリングルーチンによって実行される（ステップ６０８）。例外要求がマルチスレッドプロセッサによって実行された後、プログラムカウンタ値は、プロセッサのプログラムカウンタ内に復元され、（例外要求前の）命令の状態は、マルチスレッドプロセッサのパイプライン内に復元される（ステップ６１０）。マルチスレッドプロセッサは、例外ハンドリングルーチンから復帰した後、次の命令（たとえば、命令ｉ＋１）のプログラム実行を再開する（ステップ６１２）。ステップ６１２では、命令が再実行される場合、マルチスレッドプロセッサは、命令ｉでプログラム命令を再開することができる。
【００６２】
＜割り込みハンドリング＞
マルチスレッドパイプラインプロセッサアーキテクチャ１００、４００に従って実施されたマルチスレッドパイプラインプロセッサ内の割り込みも、例外と同様にハンドリングされる。図７は、マルチスレッドパイプラインプロセッサアーキテクチャ１００、４００に従って実施されたマルチスレッドパイプラインプロセッサで割り込みをハンドリングするための方法を示している。
【００６３】
所与のスレッドの命令ｉが実行されている間に、割り込みが発生する（ステップ７０２）。各プロセッサスレッドに関連したプログラムカウンタ値が、そのマルチスレッドプロセッサのパイプライン内の現在の命令の状態と共に保存される（ステップ７０４）。マルチスレッドプロセッサは、所与のスレッドに関連した割り込みハンドリングルーチンにジャンプする（ステップ７０６）。一実施態様では、各プロセッサスレッドは、他のプロセッサスレッドに関連した割り込みハンドリングルーチンに関連したエントリーポイントとは別で且つ独立のエントリーポイントを有する、関連した割り込みハンドリングルーチンを有する。エントリーポイントは、割り込みハンドリングルーチンの開始アドレスである。一実施態様では、単一の割り込みハンドリングルーチン（単一のエントリーポイントを有する）が、すべてのプロセッサスレッドの割り込みを実行する。
【００６４】
割り込みは、所与の割り込みハンドリングルーチンによって実行される（ステップ７０８）。割り込みがマルチスレッドプロセッサによって実行された後、プログラムカウンタ値は、マルチスレッドプロセッサのプログラムカウンタ内に復元され、（割り込み要求前の）命令の状態は、マルチスレッドプロセッサのパイプライン内に復元される（ステップ７１０）。マルチスレッドプロセッサは、割り込みハンドリングルーチンから復帰した後、次の命令（たとえば、命令ｉ＋１）のプログラム実行を再開する（ステップ７１２）。
【００６５】
［応用］
パイプラインプロセッサアーキテクチャ１００、４００に従って構築されたマルチスレッドパイプラインプロセッサは、より具体的にはリアルタイム制御の用途を含む、広範囲の用途に使用することができる。用途の例には、以下でより詳細に説明するように、データストレージの用途、無線の用途、コンピュータシステムの用途、セルラーＷＬＡＮの用途、インターネットプロトコル上の音声（ＶＯＩＰ）の用途、無線及び有線のネットワークデバイスの用途、無線テレビの用途、ブロードバンドモデムの用途、有線ルータの用途、無線メディアの用途、リアルタイムコントローラの用途、並びに他の用途が含まれる。前述の用途は他のマルチスレッドプロセッサアーキテクチャも使用できることが当業者には十分理解されよう。独立したソフトウェアプログラムのスレッドを、他のプロセッサスレッドに影響を与えることなく開発することができる。その上、各プロセッサスレッドには、マルチスレッドプロセッサによって実施された処理割り当てに従って計算資源を保証することができる。
【００６６】
ハードディスクドライブシステム
図８に示すように、マルチスレッドプロセッサ８０８（たとえば、上記で解説したようなマルチスレッドプロセッサ３００、５００）をハードディスクドライブシステム８００内で使用して、ハードディスクドライブシステム８００に関連した実質的にすべての処理機能を実行することができる。
【００６７】
ハードディスクドライブシステム８００は、プリント回路基板８０２を含む。揮発性メモリ８０４は、読み出し制御データ、書き込み制御データ、及び／又はハードディスクドライブシステム８００の制御に関連した揮発性制御データを記憶する。揮発性メモリ８０４は、低待ち時間を有するメモリとすることができる。たとえば、ＳＤＲＡＭ又は他のタイプの低待ち時間メモリを使用することができる。また、フラッシュメモリ等の不揮発性メモリ８０６を設けて、不揮発性プログラムコード等の重要なデータも記憶することができる。制御コードは、システムレベルプログラムコードを含むことができる。このシステムレベルプログラムコードには、ディスクドライブデータ取り込みプログラムコード、エラー訂正プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、及び欠陥マネージャプログラムコードが含まれる。ホストプロトコル管理コードは、次のプロトコルの１つ又は複数を管理するプログラムコードを含むことができる。すなわち、アドバンストテクノロジーアタッチメント（ＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、家庭用電化製品ＡＴＡ（ＣＥ−ＡＴＡ）（Consumer Electronics ATA）、ユニバーサルシリアルバス（ＵＳＢ）、シリアルアッタチド小型コンピュータシステムインターフェース（ＳＡＳ）、（ファイバチャネル）ＦＣ、又はセキュアデジタル入出力（ＳＤＩＯ）の１つ又は複数を管理するプログラムコードを含むことができる。揮発性メモリ８０４、不揮発性メモリ８０６、又は他のメモリ（たとえば、キャッシュメモリ）（図示せず）は、サーボに関係したプログラムコードも記憶することができ、たとえば、以下でより詳細に解説するように、スピンドル／ＶＣＭドライバ８１４を動作させるプログラムコードも記憶することができる。さらに、揮発性メモリ８０４、不揮発性メモリ８０６、又は他のメモリは、ユーザが提供したプログラムコードも記憶することができ、たとえば、第三者によって供給されたプログラムコードも記憶することができる。ユーザが提供したコードも、マルチスレッドプロセッサ８０８が実行することができる。
【００６８】
マルチスレッドプロセッサ８０８は、ハードディスクドライブシステム８００のオペレーションに関係したデータ処理及び／又は制御処理を実行する。一実施態様では、マルチスレッドプロセッサ８０８は、所与のプロセッサ機能にそれぞれ専用化された複数のプロセッサスレッドを実行する。たとえば、マルチスレッドプロセッサ８０８によって実行される複数のプロセッサスレッドは、ハードディスク制御モジュール（ＨＤＣ）８１０のオペレーションをサポートする。ハードディスク制御モジュール８１０は、入出力インターフェース８１２、スピンドル／音声コイルモータ（ＶＣＭ）ドライバ８１４、及び読み出し／書き込みチャネルモジュール８１６と通信する。マルチスレッドプロセッサ８０８によって実行される１つ又は複数のプロセッサスレッドを通じて、ハードディスク制御モジュール８１０は、スピンドル／ＶＣＭドライバ８１４、読み出し／書き込みチャネルモジュール８１６、及びインターフェース８１２を通じたホスト８１８とのデータ入出力の制御を調整する。
【００６９】
上記で解説したように、マルチスレッドプロセッサ８０８は、読み出し／書き込みチャネルモジュール８１６に関連した処理機能に専用化された１つ又は複数のプロセッサスレッドを実行することができる。たとえば、書き込みオペレーションの間、読み出し／書き込みチャネルモジュール８１６は、（マルチスレッドプロセッサ８０８によって実行される１つ又は複数のプロセッサスレッドを通じて）読み出し／書き込みデバイス８２０により書き込まれるデータをエンコードすることができる。マルチスレッドプロセッサ８０８を使用すると、読み出し／書き込みチャネルモジュール８１６は、信頼性を得るために書き込み信号を処理することができ、たとえば、エラー訂正コーディング（ＥＣＣ）、ランレングスリミテッドコーディング（ＲＬＬ）等をデータに適用することができる。さらに、読み出しオペレーション中、読み出し／書き込みチャネルモジュール８１６は、（マルチスレッドプロセッサ８０８によって実行される１つ又は複数のプロセッサスレッドを使用して）読み出し／書き込みデバイス８２０のアナログ読み出し信号出力をデジタル読み出し信号に変換することができる。変換された信号は、その後、従来の技法により検出されてデコードされ、マルチスレッドプロセッサ８０８によって実行される１つ又は複数のプロセッサスレッドを使用して読み出し／書き込みデバイス８２０により読み出されたデータを復元することができる。
【００７０】
また、マルチスレッドプロセッサ８０８は、ハードディスクドライブアセンブリ（ＨＤＤＡ）８２２に関連した処理機能に専用化された１つ又は複数のプロセッサスレッドも実行することができる。ハードディスクドライブアセンブリ８２２は、磁場を記憶する磁気コーティングを含んだ１つ又は複数のハードドライブプラッタ８２４を含む。これらのプラッタ８２４は、８２６に概略的に示すスピンドルモータによって回転される。一般に、スピンドルモータ８２６は、読み出し／書き込みオペレーション中、制御された速度でハードドライブプラッタ８２４を回転させる。１つ又は複数の読み出し／書き込みアーム８２８がプラッタ８２４に対して移動し、ハードドライブプラッタ８２４からデータを読み出し、且つ／又は、ハードドライブプラッタ８２４へデータを書き込む。スピンドル／ＶＣＭドライバ８１４は、スピンドルモータ８２６を制御し、スピンドルモータ８２６は、プラッタ８２４を回転させる。また、スピンドル／ＶＣＭドライバ８１４は、たとえば、音声コイルアクチュエータ、ステッパモータ、又は他の任意の適切なアクチュエータを使用して、読み出し／書き込みアーム８２８を位置付ける制御信号も生成する。マルチスレッドプロセッサ８０８によって実行される１つ又は複数のプロセッサスレッドを使用して、制御信号を生成することができる。
【００７１】
読み出し／書き込みデバイス８２０は、読み出し／書き込みアーム８２８の遠位端の近くに配置される。読み出し／書き込みデバイス８２０は、磁場を生成するインダクタ等の書き込み素子を含む。また、読み出し／書き込みデバイス８２０は、プラッタ８２４の磁場を検知する読み出し素子（磁気抵抗（ＭＲ）素子等）も含む。ハードディスクドライブアセンブリ８２２は、アナログ読み出し／書き込み信号を増幅するプリアンプ回路８３０を含む。データの読み出し時に、プリアンプ回路８３０は、読み出し素子からの低レベル信号を増幅して、増幅された信号を読み出し／書き込みチャネルモジュール８１６へ出力する。データの書き込み中、読み出し／書き込みデバイス８２０の書き込み素子を流れる書き込み電流が生成される。この書き込み電流は、スイッチングされて、正又は負の極性を有する磁場を生成する。正又は負の極性は、ハードドライバプラッタ８２４により記憶されて、データを表すのに使用される。
【００７２】
ハードディスクドライブシステム８００の一部は、１つ又は複数の集積回路（ＩＣ）又はチップによって実施することができる。たとえば、マルチスレッドプロセッサ８０８及びハードディスク制御モジュール８１０は、シングルチップによって実施することができる。スピンドル／ＶＣＭドライバ８１４及び／又は読み出し／書き込みチャネルモジュール８１６も、マルチスレッドプロセッサ８０８若しくはハードディスク制御モジュール８１０と同じチップによって実施することができ、且つ／又は、追加チップによって実施することができる。或いは、ハードディスクドライブアセンブリ８２２以外のハードディスクドライブシステム８００のほとんどは、システムオンチップ（ＳＯＣ）として実施することもできる。
【００７３】
ＤＶＤシステム
次に図９を参照して、ＤＶＤシステム９００が、ＤＶＤプリント回路基板（ＰＣＢ）９０２を含むものとして示されている。このＤＶＤプリント回路基板９０２は、読み出しデータ、書き込みデータ、及び／又はＤＶＤシステム９００の制御に関連した揮発性制御コードを記憶する揮発性メモリ９０４を含む。揮発性メモリ９０４は、ＳＤＲＡＭや他のタイプの低待ち時間メモリ等の揮発性メモリを含むことができる。また、ＤＶＤ書き込みフォーマット及び／又は他の不揮発性制御コードに関するデータ等の重要なデータ用に、フラッシュメモリ等の不揮発性メモリ９０６も使用することができる。制御コードは、ハードディスクドライブシステム８００（図８）に関して上記で解説したような制御コードを含むことができる。揮発性メモリ９０４、不揮発性メモリ９０６、又は他のメモリ（たとえば、キャッシュメモリ）（図示せず）は、リアルタイムデータ（たとえば、リアルタイム音響データ又はリアルタイムビデオデータ）をハンドリングするリアルタイムプログラムコードも記憶することができる。
【００７４】
マルチスレッドプロセッサ９０８は、ＤＶＤシステム９００のオペレーションに関係した実質的にすべてのデータ処理及び／又は制御処理を実行する。一実施態様では、マルチスレッドプロセッサ９０８は、以下で解説する、対応する処理機能に専用化された複数のプロセッサスレッドを実行することによってすべての処理機能を実行する。また、マルチスレッドプロセッサ９０８は、必要に応じて、コピープロテクトのデコーディング及び／又は圧縮／伸張も実行することができる。
【００７５】
ＤＶＤ制御モジュール９１０は、入出力インターフェース９１２、スピンドル／フィードモータ（ＦＭ）ドライバ９１４、及び読み出し／書き込みチャネルモジュール９１６と通信する。マルチスレッドプロセッサ９０８を通じて、ＤＶＤ制御モジュール９１０は、スピンドル／ＦＭドライバ９１４、読み出し／書き込みチャネルモジュール９１６、及びインターフェース９１２を通じたデータ入出力の制御を調整する。
【００７６】
一実施態様では、マルチスレッドプロセッサ９０８は、読み出し／書き込みチャネルモジュール９１６に関連した処理機能に専用化された１つ又は複数のプロセッサスレッドを実行する。たとえば、書き込みオペレーションの間、読み出し／書き込みチャネルモジュール９１６は、マルチスレッドプロセッサ９０８によって実行されるプログラムコードを使用して、光読み出し／書き込み（ＯＲＷ）デバイス又は光読み出し専用（ＯＲ）デバイス９１８によりＤＶＤプラッタに書き込まれるデータをエンコードする。マルチスレッドプロセッサ９０８により実行される１つ又は複数のプロセッサスレッドを使用して、読み出し／書き込みチャネルモジュール９１６は、信頼性を得るために信号を処理し、たとえば、ＥＣＣ、ＲＬＬ等を適用することができる。読み出しオペレーションの間、読み出し／書き込みチャネルモジュール９１６は、ＯＲＷデバイス又はＯＲデバイス９１８のアナログ出力をデジタル信号に変換する。変換された信号は、その後、従来の技法により検出されてデコードされ、（たとえば、マルチスレッドプロセッサ９０８によって実行されるプログラムコードを使用して）ＤＶＤに書き込まれたデータが復元される。
【００７７】
また、マルチスレッドプロセッサ９０８は、以下で解説するＤＶＤアセンブリ（ＤＶＤＡ）９２０に関連した実質的にすべての処理機能に専用化された１つ又は複数のプロセッサスレッドも実行することができる。一実施態様では、ＤＶＤアセンブリ９２０は、光学的にデータを記憶するＤＶＤプラッタ９２２を含む。このプラッタ９２２は、９２４に概略的に示すスピンドルモータによって回転される。スピンドルモータ９２４は、読み出し／書き込みオペレーション中、制御された速度及び／又は可変速度でＤＶＤプラッタ９２２を回転させる。ＯＲＷデバイス又はＯＲデバイス９１８は、ＤＶＤプラッタ９２２に対して移動し、ＤＶＤプラッタ９２２からデータを読み出し、且つ／又は、ＤＶＤプラッタ９２２へデータを書き込む。ＯＲＷデバイス又はＯＲデバイス９１８は、通常、レーザ及び光センサを含む。
【００７８】
ＤＶＤ読み出し／書き込みシステム及びＤＶＤ読み出し専用システムの読み出しオペレーション中、レーザは、ランド及びピットを含むＤＶＤ上のトラックに向けられる。光センサは、ランド／ピットによって引き起こされた反射を検知する。ＤＶＤ書き込みアプリケーションの場合、レーザは、ＤＶＤプラッタ９２２のダイ層を加熱するのにも使用することができる。一実施態様では、ダイは、第１の所定の温度に加熱されると、透明になり、このようなダイは、第１の２値デジタル値を表すのに使用することができる。ダイは、第２の所定の温度に加熱されると、不透明になり、このようなダイは、第２の２値デジタル値を表すのに使用することができる。
【００７９】
また、マルチスレッドプロセッサ９０８は、以下で解説するスピンドル／ＦＭドライバ９１４に関連した実質的にすべての処理機能に専用化された１つ又は複数のプロセッサスレッドも実行することができる。スピンドル／ＦＭドライバ９１４は、スピンドルモータ９２４を制御し、スピンドルモータ９２４は、ＤＶＤプラッタ９２２を制御可能に回転させる。また、スピンドル／ＦＭドライバ９１４は、たとえば、音声コイルアクチュエータ、ステッパモータ、又は他の任意の適切なアクチュエータを使用して、フィードモータ９２６を位置付ける制御信号も生成する。フィードモータ９２６は、通常、ＯＲＷデバイス又はＯＲデバイス９１８を、ＤＶＤプラッタ９２２に対して半径方向に移動させる。レーザドライバ９２８は、読み出し／書き込みチャネルモジュール９１６の出力に基づいてレーザ駆動信号を生成する。ＤＶＤアセンブリ９２０は、アナログ読み出し信号を増幅するプリアンプ回路９３０を含む。データの読み出し時に、プリアンプ回路９３０は、ＯＲＷデバイス又はＯＲデバイス９１８からの低レベル信号を増幅して、増幅された信号を読み出し／書き込みチャネルモジュールデバイス９１６へ出力する。
【００８０】
さらに、ＤＶＤシステム９００は、ＭＰＥＧフォーマットのいずれか等のビデオをエンコードし、且つ／又は、デコードするコーデックモジュール９３２を含む。マルチスレッドプロセッサ９０８によって実行される１つ又は複数のプロセッサスレッドは、エンコーディング／デコーディングの目的でコーデックモジュール９３２に割り当てることができる。音響デジタル信号プロセッサ及び／若しくはモジュール９３４、並びに／又は、ビデオデジタル信号プロセッサ及び／若しくはモジュール９３６は、それぞれ、音響信号処理及び／又はビデオ信号処理をそれぞれ実行する。また、マルチスレッドプロセッサ９０８によって実行される１つ又は複数のプロセッサスレッドは、信号処理のために、音響デジタル信号プロセッサ９３４及びビデオデジタル信号プロセッサ９３６にも割り当てることができる。
【００８１】
ハードディスクドライブシステム８００と同様に、ＤＶＤシステム９００の一部は、１つ又は複数の集積回路（ＩＣ）又はチップによって実施することができる。たとえば、マルチスレッドプロセッサ９０８及びＤＶＤ制御モジュール９１０は、シングルチップによって実施することができる。スピンドル／ＦＭドライバ９１４及び／又は読み出し／書き込みチャネルモジュール９１６も、マルチスレッドプロセッサ９０８若しくはＤＶＤ制御モジュール９１０と同じチップによって実施することができ、且つ／又は、追加チップによって実施することができる。一実施態様では、ＤＶＤアセンブリ９２０以外のＤＶＤシステム９００のほとんどは、ＳＯＣとして実施することもできる。
【００８２】
セルラーＷＬＡＮシステム
図１０は、マルチスレッドプロセッサ１００２を含むセルラー無線ローカルエリアネットワーク（ＷＬＡＮ）システム１０００を示している。一実施態様では、マルチスレッドプロセッサ１００２は、セルラーＷＬＡＮシステム１０００に関連した実質的にすべての処理機能を実行する。セルラーＷＬＡＮシステム１０００は、たとえば、ワイヤレスフィデリティ（ＷＩ−ＦＩ）能力又はテレビ電話を有する携帯電話とすることができる。セルラーＷＬＡＮシステム１０００は、次のマルチメディアの特徴、すなわち、組み込みデジタルカメラ又はカムコーダ、テレビ（ＴＶ）チューナ、デジタルラジオ、及び／又はウォーキートーキーを含む特徴、の１つ又は複数をサポートすることができる。一実施態様では、マルチスレッドプロセッサ１００２は、これらのマルチメディアの特徴のそれぞれに対応する１つ又は複数のプロセッサスレッドを実行する。
【００８３】
一実施態様では、セルラーＷＬＡＮシステム１０００は、ＷＬＡＮユニット１００４、セルラーユニット１００６、ブルートゥースユニット１００８、全地球測位システム（ＧＰＳ）ユニット１０１０、及び表示スクリーン１０１２を含む。オプションとして、セルラーＷＬＡＮシステム１０００は、これらのすべての能力を含むとは限らないものとすることができる。
【００８４】
ＷＬＡＮユニット１００４は、ＲＦトランシーバ１０１４、ベースバンドプロセッサ（ＢＢＰ）１０１６、及び媒体アクセスコントローラ（ＭＡＣ）（図示せず）を含む。ＲＦトランシーバ１０１４は、他の無線デバイス及び他のネットワークデバイスからのＲＦ信号を受信し、他の無線デバイス及び他のネットワークデバイスへＲＦ信号を送信する。他のネットワークデバイスには、たとえば、リピータ、ルータ等が含まれる。一実施態様では、ＲＦトランシーバ１０１４は、セルラーＷＬＡＮシステム１０００によって使用されている無線周波数伝送プロトコルに適合したベースバンドからの／へのＲＦ信号を処理する。ベースバンドプロセッサ１０１６は、たとえば、エンコーディング／デコーディング及びエラー訂正を含む信号処理を実行する。マルチスレッドプロセッサ１００２は、ベースバンドプロセッサ１０１６に関連した信号処理機能を実行する１つ又は複数のプロセッサスレッドを実行することができる。ＭＡＣは、受信された信号／送信される信号を処理して、ネットワークコンポーネントとインターフェースするための１つ又は複数のルーチンを含む。これらのルーチンは、マルチスレッドプロセッサ１００２を使用して実行することができる。
【００８５】
セルラーユニット１００６は、セルラートランシーバ１０１８及びプロトコルスタック１０２０を含む。一実施態様では、セルラートランシーバ１０１８は、ＧＳＭ  ＲＦトランシーバを含む。一実施態様では、セルラートランシーバ１０１８は、プロトコルスタック１０２０によって使用されているＧＳＭ無線周波数伝送プロトコルに適合したベースバンドからの／へのＧＳＭ  ＲＦ信号を処理する。他のプロトコルは、符号分割多重アクセス（ＣＤＭＡ）、Ｇ３、及び他の携帯電話プロトコル標準規格を含むプロトコルスタック１０２０によって実施することができる。携帯電話機能に関連した信号処理管理、メニュー機能等は、マルチスレッドプロセッサ１００２で実行される１つ又は複数のプロセッサスレッドによって実現することができる。
【００８６】
オプションとして、セルラーＷＬＡＮシステム１０００は、ブルートゥースユニット１００８を含む。ブルートゥースユニット１００８は、ブルートゥーストランシーバ１０２２を含む。一実施態様では、ブルートゥーストランシーバ１０２２は、短距離無線トランシーバである。一実施態様では、デジタル信号プロセッサ（図示せず）が、（１つ又は複数のプロセッサスレッドを実行して）セルラーＷＬＡＮシステム１０００によって使用されているブルートゥースプロトコルに適合したブルートゥース信号を処理する。
【００８７】
オプションとして、セルラーＷＬＡＮシステム１０００は、ＧＰＳユニット１０１０を含む。ＧＰＳユニット１００６は、ＧＰＳトランシーバ１０２０を含む。一実施態様では、ＧＰＳトランシーバ１０２０は、セルラーＷＬＡＮシステム１０００によって使用されているＧＰＳ無線周波数伝送プロトコルに適合したベースバンドからの／へのＧＰＳ  ＲＦ信号を処理する。ブルートゥースプロトコルをサポートするのに必要な他の処理機能は、マルチスレッドプロセッサ１００２によって実行されるプロセッサスレッドによって実現することができる。
【００８８】
オプションとして、セルラーＷＬＡＮシステム１０００は、表示スクリーン１０１２を含む。表示スクリーン１０１２は、ユーザ用のグラフィカルユーザインターフェースを提供する。一実施態様では、表示スクリーン１０１２は、液晶ディスプレイである。一実施態様では、表示スクリーン１０１２は、テレビ電話に関連したビデオデータを表示する。グラフィカルユーザインターフェースは、ランダムアクセスメモリ１０２４、フラッシュメモリ１０２６、又は他のメモリ（図示せず）に記憶された１つ又は複数のセルラーオペレーティングシステムによって提供することができる。一実施態様では、マルチスレッドプロセッサ１００２は、オペレーティングシステム、及び、１つ又は複数の関連したプロセッサスレッドを実行する他のあらゆるプログラムコード命令を処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。また、プログラムコードは、セルラー通信に関係したプログラムコード又はシステムレベルプログラムコードも含むことができる。一実施態様では、セルラー通信に関係したプログラムコードは、次のプロトコル、すなわち、ＣＤＭＡ、Ｇ３、ＧＳＭ等、の１つ又は複数に関係する。一実施態様では、システムレベルプログラムコードは、メニュープログラムコード、表示プログラムコード、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、無線／有線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む。また、プログラムコードは、ランダムアクセスメモリ１０２４、フラッシュメモリ１０２６、又は他のメモリに記憶することもできる。他のプログラムコードを記憶することもでき、たとえば、上記で解説したようなユーザが提供したコードを記憶することができる。
【００８９】
ＶｏＩＰシステム
図１１は、マルチスレッドプロセッサ１１０２を含む、インターネットプロトコル上の音声（ＶｏＩＰ）システム１１００を示している。一実施態様では、マルチスレッドプロセッサ１１０２は、ＶｏＩＰシステム１１００に関連した実質的にすべての処理機能を実行する。一実施態様では、ＶｏＩＰシステム１１００は、ＷＬＡＮユニット１１０４、ＶｏＩＰスタック１１０６、及びコーデック１１０８を含む。ＶｏＩＰシステム１１００は、ＷＬＡＮユニット１００４を含むものとして示されているが、ＶｏＩＰは、無線でないローカルエリアネットワークに接続するためのＬＡＮユニット（図示せず）を含むことができる。
【００９０】
ＷＬＡＮユニット１００４は、ＲＦトランシーバ１１１０、ベースバンドプロセッサ１１１２、及び媒体アクセスコントローラ（ＭＡＣ）１１１４を含む。ＲＦトランシーバ１１１０は、音声データパケット伝送用の他の無線デバイス及び他のネットワークデバイスからのＲＦ信号を受信し、これらの他の無線デバイス及び他のネットワークデバイスへＲＦ信号を送信する。一実施態様では、ＲＦトランシーバ１１１０は、ＶｏＩＰスタック１１０６によって使用されているＶｏＩＰプロトコルに適合したベースバンドからの／へのＲＦ信号を処理する。ベースバンドプロセッサ１１１２は、たとえば、エンコーディング／デコーディング、圧縮／伸張、及びエラー訂正を含む信号処理を実行することができる。マルチスレッドプロセッサ１１０２は、ベースバンドプロセッサ１１１２に関連した処理機能の一部又は全部を実行する１つ又は複数のプロセッサスレッドを実行することができる。ＭＡＣ１１１４は、（マルチスレッドプロセッサ１１０２を使用して）受信された信号／送信される信号を処理して、ネットワークコンポーネントとインターフェースするための１つ又は複数の処理ルーチン（図示せず）を含む。一実施態様では、コーデック１１０８は、デジタル信号をアナログ信号に変換し、その逆の変換も行う。この信号変換は、マルチスレッドプロセッサ１１０２によって実行される１つ又は複数のプロセッサスレッドを使用して処理することができる。
【００９１】
一実施態様では、マルチスレッドプロセッサ１１０２は、１つ又は複数の関連したプロセッサスレッドを実行するプログラムコード命令を処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。また、プログラムコードは、音声処理に関係したプログラムコード及びシステムレベルプログラムコードも含むことができる。一実施態様では、音声処理に関係したプログラムコードは、音声信号を処理して、ネットワークを介した送信に適した形へ変換することに関連したプログラムコードである。一実施態様では、システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、無線／有線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む。一実施態様では、ＲＡＭメモリ１１１６及び／又はフラッシュメモリ１１１８が、ＶｏＩＰシステム１１００によって実行される、リアルタイムプログラムコード、ユーザが提供したプログラムコード（上記で解説）、又は他のプログラムコード（上記で解説）を記憶する。
【００９２】
無線ネットワークデバイス
図１２は、マルチスレッドプロセッサ１２０２を含む無線ネットワークデバイス１２００を示している。無線ネットワークデバイス１２００は、たとえば、無線ルータ、無線アクセスポイント等とすることができる。一実施態様では、マルチスレッドプロセッサ１２０２は、無線ネットワークデバイス１２００に関連した実質的にすべての処理機能を実行する。一実施態様では、無線ネットワークデバイス１２００は、ＲＦトランシーバ１２０４、ベースバンドプロセッサ１２０６、及びＭＡＣ１２０８を含む。無線ネットワークデバイス１２００は、たとえば、ファイアウォール又は（仮想プライベートネットワーク）ＶＰＮを通じた有線ＬＡＮ接続へのインターフェースを含むことができる。ＲＦトランシーバ１２０４は、たとえば無線クライアント（図示せず）を含むネットワークデバイスからのＲＦ信号を受信し、このネットワークデバイスへＲＦ信号を送信する。ＲＦトランシーバ１２０４は、無線ネットワークデバイス１２００によって使用されている無線周波数伝送プロトコルに適合したベースバンドからの／へのＲＦ信号を処理する。ベースバンドプロセッサ１２０６は、たとえば、エンコーディング／デコーディング、圧縮／伸張、及びエラー訂正を含む信号処理を実行することができる。マルチスレッドプロセッサ１２０２は、ベースバンドプロセッサ１２０６に関連した処理機能の一部又は全部を実行する１つ又は複数のプロセッサスレッドを実行することができる。ＭＡＣ１２０８は、受信された信号／送信される信号を処理して、ネットワークコンポーネントとインターフェースするための１つ又は複数の処理ルーチンであって、マルチスレッドプロセッサ１２０２により（すなわち、マルチスレッドプロセッサ１２０２によって実行されるプロセッサスレッドにより）実行できる、処理ルーチンを含む。
【００９３】
オプションとして、マルチスレッドプロセッサ１２０２は、無線ネットワークデバイス１２００に関連した他のプログラムコードを実行するのに使用することができる。一実施態様では、ＭＡＣ１２０８は、１つ又は複数の無線クライアントとの構成情報の初期化及び更新を行うためのセキュリティ管理エンジン１２１０を含む。セキュリティ管理エンジン１２１０は、サービスセット識別子（ＳＳＩＤ）、安全な鍵、及び必要に応じて個人識別番号（ＰＩＮ）を生成するのに使用することができる。セキュリティ管理エンジン１２１０は、ハードウェア（回路）、ソフトウェア、ファームウェア、又はそれらの組み合わせの形態を有することができる。一実施態様では、マルチスレッドプロセッサ１２０２は、ＭＡＣ１２０８に関連した実質的にすべての処理機能を提供する。
【００９４】
一実施態様では、マルチスレッドプロセッサ１２０２は、１つ又は複数の関連したプロセッサスレッドを実行するプログラムコード命令を処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。プログラムコードは、無線ネットワークに関係したプログラムコード及びシステムレベルプログラムコードも含むことができる。一実施態様では、無線ネットワークに関係したプログラムコードは、ルーティングプログラムコード、ネットワークプログラムコード、アクセスポイントプログラムコード、リピータプログラムコード、又は無線通信プロトコルを実施するプログラムコードの少なくとも１つを含む。一実施態様では、システムレベルコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む。一実施態様では、ＲＡＭメモリ１１１６及び／又はフラッシュメモリ１１１８が、無線ネットワークデバイス１２００のマルチスレッドプロセッサ１２０２によって実行される、リアルタイムプログラムコード、ユーザが提供したプログラムコード（上記で解説）、又は他のプログラムコード（上記で解説）を記憶する。
【００９５】
無線テレビシステム
図１３は、マルチスレッドプロセッサ１３０２を含む無線テレビシステム１３００を示している。一実施態様では、マルチスレッドプロセッサ１３０２は、無線テレビシステム１３００に関連した実質的にすべての処理機能を実行する。一実施態様では、無線テレビシステム１３００は、ＲＦトランシーバ１３０４、ベースバンドプロセッサ１３０６、ＭＡＣ１３０８、及びビデオ／音響受信機１３１０を含む。ＲＦトランシーバ１３０４は、たとえば、無線ルータ、アクセスポイント等を含むネットワークデバイスからのＲＦ信号を受信し、これらのネットワークデバイスへＲＦ信号を送信する。ＲＦトランシーバ１３０４は、無線テレビシステム１３００によって使用されている無線周波数伝送プロトコルに適合したベースバンドからの／へのＲＦ信号を処理する。ベースバンドプロセッサ１３０６は、たとえば、エンコーディング／デコーディング及びエラー訂正を含む信号処理を実行することができる。マルチスレッドプロセッサ１３０２は、ベースバンドプロセッサ１３０６に関連した処理機能の一部又は全部を実行する１つ又は複数のプロセッサスレッドを実行することができる。ＭＡＣ１３０８は、受信された信号／送信される信号を処理して、ネットワークコンポーネントとインターフェースするための（マルチスレッドプロセッサ１３０２によって実行される）１つ又は複数の処理ルーチンを含む。
【００９６】
ビデオ／音響受信機１３１０は、ビデオ信号及び音響信号を受信する。これらの音響／ビデオ信号は、マルチスレッドプロセッサ１３０２によって実行される１つ又は複数のプロセッサスレッドを使用して処理することができる。一実施態様では、マルチスレッドプロセッサ１３０２は、１つ又は複数の関連したプロセッサスレッドを実行するプログラムコード命令も処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。また、プログラムコードは、メディアに関係したプログラムコード及びシステムレベルプログラムコードも含むことができる。一実施態様では、メディアに関係したプログラムコードは、ビデオ処理プログラムコード又は音響処理プログラムコードの少なくとも１つを含む。一実施態様では、システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線／無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む。一実施態様では、ＲＡＭメモリ１３１２、フラッシュメモリ１３１４、及び／又は他のメモリ（図示せず）が、たとえば、ビデオ／音響受信機１３１０を通じて受信された音響／ビデオ信号に対して処理を行うためのリアルタイムプログラムコード又は他のプログラムコードを記憶する。プログラムコードのさらに別の例には、たとえばコーデックが含まれる。
【００９７】
ブロードバンドモデム
図１４は、マルチスレッドプロセッサ１４０２を含むブロードバンドモデム１４００を示している。一実施態様では、ブロードバンドモデム１４００は、ケーブルモデム、デジタル加入者線（ＤＳＬ）モデム、衛星モデム等である。一実施態様では、マルチスレッドプロセッサ１４０２は、ブロードバンドモデム１４００に関連した実質的にすべての処理機能を実行する。ブロードバンドモデム１４００は、たとえば、ケーブルテレビ線に接続することができ、接続されたデバイス（たとえば、コンピュータシステム）に、インターネットへの連続した接続を提供することができる。一実施態様では、ブロードバンドモデム１４００は、チューナ１４０４、復調器１４０６、バースト変調器１４０８、ＭＡＣ１４１０、及びインターフェース（Ｉ／Ｆ）１４１２を含む。復調器１４０６及びバースト変調器１４０８は、シングルチップ内で実施することができる。
【００９８】
一実施態様では、チューナ１４０４は、情報源（たとえば、ケーブルＴＶ（ＣＡＴＶ）の指し込み口）に直接接続される。チューナ１４０４は、チューナ１４０４を通じて上り信号及び下り信号の双方を提供する組み込みダイプレクサ（図示せず）を含むことができる。一実施態様では、チューナ１４０４は、デジタルで変調された直交振幅変調（ＱＡＭ）信号を受信する。
【００９９】
受信方向において、復調器１４０６は、中間周波数（ＩＦ）信号を生成する。復調器１４０６は、アナログ／デジタル（Ａ／Ｄ）変換、ＱＡＭ復調、ＭＰＥＧフレーム同期、及びエラー訂正（たとえば、リードソロモンエラー訂正）を実行することができる。送信方向において、バースト変調器１４０８は、信号をチューナ１４０４に提供する。一実施態様では、バースト変調器１４０８は、各バーストのエンコーディング、選択された周波数における４相位相シフトキーイング（ＱＳＰＫ）／ＱＡＭ信号の変調、及びＤ／Ａ変換を実行する。
【０１００】
ＭＡＣ１４１０は、受信された信号／送信される信号を処理して、ネットワークコンポーネントとインターフェースするための、マルチスレッドプロセッサ１４０２により実行される１つ又は複数の処理ルーチン（図示せず）を含む。ＭＡＣ１４１０は、ハードウェア若しくはソフトウェア又は双方の組み合わせで実施することができる。ＭＡＣ１４１０を通過するデータは、インターフェース１４１２に入る。インターフェース１４１２は、たとえば、イーサネット（登録商標）インターフェース、ＵＳＢインターフェース、又はＰＣＩバスインターフェースとすることができる。
【０１０１】
一実施態様では、マルチスレッドプロセッサ１４０２は、１つ又は複数の関連したプロセッサスレッドを実行するプログラムコード命令を処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。また、プログラムコードは、広帯域通信に関係したプログラムコード及びシステムレベルプログラムコードも含むことができる。一実施態様では、広帯域通信に関係したプログラムコードは、ケーブル通信プログラムコード、ＤＳＬ通信プログラムコード、又は衛星通信プログラムコードを含む。一実施態様では、システムレベルコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、有線／無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む。一実施態様では、ＲＡＭメモリ１４１４及び／又はフラッシュメモリ１４１６が、ブロードバンドモデム１４００によって実行されるリアルタイムプログラムコード、ユーザが提供したプログラムコード（上記で解説）、又は他のプログラムコード（上記で解説）を記憶する。
【０１０２】
有線ルータ
図１５は、有線ルータ１５００を示している。一実施態様では、有線ルータ１５００は、マルチスレッドプロセッサ１５０２、フロントエンド１５０６、信号プロセッサ１５０８、及びインターフェース（Ｉ／Ｆ）１５１０を含む。一実施態様では、マルチスレッドプロセッサ１５０２は、有線ルータ１５００に関連した実質的にすべての処理機能を実行する。
【０１０３】
一実施態様では、フロントエンド１５０６は、電話線から受信されたアナログ信号を前置増幅し、フィルタリングし、そしてデジタル化する。また、フロントエンド１５０６は、デジタル／アナログ変換器（ＤＡＣ）（図示せず）によって生成されたアナログ信号も増幅してフィルタリングすることができ、正しい電力レベルでアナログ信号を配信することができる。一実施態様では、信号プロセッサ１５０８は、マルチスレッドプロセッサ１５０２によって実行できる、たとえば、エコーキャンセル、エラー訂正、デジタルコーディング、又はレート調整（rate adaptation）を含む信号処理を実行するためのルーチンを含む。Ｉ／Ｆ１５１０は、有線ルータ１５００を高速デバイスに接続することを可能にする。
【０１０４】
一実施態様では、マルチスレッドプロセッサ１５０２は、１つ又は複数の関連したプロセッサスレッドを実行するプログラムコード命令を処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。また、プログラムコードは、ネットワーク接続に関係したプログラムコード及びシステムレベルプログラムコードも含むことができる。一実施態様では、ネットワーク接続に関係したプログラムコードは、ルーティングプログラムコード、アクセスポイントプログラムコード、セキュリティプログラムコード、リピータプログラムコード、又は仮想プライベートネットワーク接続プログラムコードの少なくとも１つを含む。一実施態様では、システムレベルプログラムコードは、ＭＡＣプログラムコード、ＷＬＡＮプログラムコード、ネットワーク通信プログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、ホストプロトコル管理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、暗号化／解読プログラムコード、圧縮／伸張プログラムコード、無線通信プログラムコード、又はセキュリティ管理プログラムコードの少なくとも１つを含む。一実施態様では、ＲＡＭメモリ１５１２及び／又はフラッシュメモリ１５１４が、有線ルータ１５００によって実行される、リアルタイムプログラムコード、ユーザが提供したプログラムコード（上記で解説）、又は他のプログラムコード（上記で解説）を記憶する。
【０１０５】
無線メディアプレイヤ
図１６は、マルチスレッドプロセッサ１６０２を含む無線メディアプレイヤ１６００を示している。一実施態様では、マルチスレッドプロセッサ１６０２は、無線メディアプレイヤ１６００に関連した実質的にすべての処理機能を実行する。無線メディアプレイヤ１６００は、視覚データ及び／又は音響データを出力する任意のタイプの無線デバイスとすることができる。音響データは、たとえば、ＭＰ３／ＭＰ４、エンハンストパーセプチャルオーディオコーダ（ＥＰＡＣ（Enhanced Perceptual Audio Coder））、Ｑデザイン音楽プレイバック（QDesign Music playback）、アドバンストオーディオコーディング（ＡＡＣ）、リキッドオーディオ（Liquid Audio）、マイクロソフト（ＭＳ）オーディオ、ドルビーデジタル、リアルオーディオ（ＲＡ）、可逆圧縮オーディオコーデック（ＦＬＡＣ（Free Lossless Audio Codec））、又はＷｉｎｄｏｗｓメディアオーディオ（ＷＭＡ）に関連した音響データを含むことができる。無線メディアプレイヤ１６００は、ＭＰ３／ＭＰ４プレイヤ、携帯情報端末（ＰＤＡ）等とすることができる。一実施態様では、無線メディアプレイヤ１６００は、ＷＡＬＮユニット１６０４及びコーデック１６０６を含む。
【０１０６】
一実施態様では、ＷＬＡＮユニット１６０４は、ＲＦトランシーバ１６０８、ベースバンドプロセッサ１６１０、及びＭＡＣ１６１２を含む。ＲＦトランシーバ１６１２は、他の無線デバイス及び他のネットワークデバイスからのＲＦ信号を受信し、他の無線デバイス及び他のネットワークデバイスへＲＦ信号を送信する。ＲＦトランシーバ１６０８は、無線メディアプレイヤ１６００によって使用されている無線周波数伝送プロトコルに適合したベースバンドからの／へのＲＦ信号を処理する。ベースバンドプロセッサ１６１０は、たとえば、エンコーディング／デコーディング及びエラー訂正を含む信号処理を実行することができる。マルチスレッドプロセッサ１６０２は、ベースバンドプロセッサ１６１０に関連した処理機能の一部又は全部を実行する１つ又は複数のプロセッサスレッドを実行することができる。ＭＡＣ１６１２は、受信された信号／送信される信号を処理して、ネットワークコンポーネントとインターフェースするための、マルチスレッドプロセッサ１６０２によって実行される１つ又は複数の処理ルーチン（図示せず）を含む。一実施態様では、コーデック１６０６は、信号のエンコーディング及び／又はＲＦトランシーバ１６０８によって受信された信号のデコーディングを行うプログラムコードを含む。エンコーディングプログラムコード及び／又はデコーディングプログラムコードは、マルチスレッドプロセッサ１６０２によって実行される１つ又は複数のプロセッサスレッドを使用して処理することができる。一実施態様では、コーデック１６０６は、データの圧縮及び伸張を行うプログラムコードを含む。コーデック１６０６は、ソフトウェア、ハードウェア、又は双方の組み合わせで実施することができる。コンピュータビデオ用のコーデックの例には、ＭＰＥＧ、Ｉｎｄｅｏ、及びＣｉｎｅｐａｋ２が含まれる。
【０１０７】
一実施態様では、マルチスレッドプロセッサ１６０２は、１つ又は複数の関連したプロセッサスレッドを実行するプログラムコード命令を処理する。プログラムコードは、リアルタイムプログラムコードを含むことができる。また、プログラムコードは、メディアに関係したプログラムコード及びシステムレベルプログラムコードも含むことができる。一実施態様では、メディアに関係したプログラムコードは、音響に関係したプログラムコード及びビデオに関係したプログラムコードを含む。一実施態様では、システムレベルプログラムコードは、サーボに関係したプログラムコード、ディスクドライブデータ取り込みプログラムコード、エラー訂正プログラムコード、ビデオ処理プログラムコード、音響処理プログラムコード、キャッシュ管理プログラムコード、欠陥マネージャプログラムコード、又は暗号化及びセキュリティ管理のプログラムコードの少なくとも１つを含む。一実施態様では、ＲＡＭメモリ１６１４、フラッシュメモリ１６１６、不揮発性メモリ１６１８、及び／又は他のメモリ（図示せず）が、無線メディアプレイヤ１６００によって実行される、リアルタイムプログラムコード、ユーザが提供したプログラムコード、及び／又は他のプログラムコード（上記で解説）を記憶することができる。
【０１０８】
リアルタイムコントローラ
図１７は、マルチスレッドプロセッサ１７０２及びコントローラ１７０３を含むリアルタイムコントローラ１７００を示している。リアルタイムコントローラ１７００は、リアルタイムプログラムコードを処理して、制御されたデバイス（図示せず）を制御するように動作できる。一実施態様では、マルチスレッドプロセッサ１７０２は、リアルタイムコントローラ１７００に関連した実質的にすべての処理機能を実行する。リアルタイムコントローラ１７００は、リアルタイムプログラムコードを処理する任意のタイプの無線デバイス又は有線デバイスとすることができる。
【０１０９】
一実施態様では、ＲＡＭメモリ１７１４及び／又はフラッシュメモリ１７１６が、リアルタイムコントローラ１７００によって実行されるリアルタイムプログラムコードを記憶する。リアルタイムプログラムコードは、マルチスレッドプロセッサ１７０２によって実行される１つ又は複数のプロセッサスレッドを使用して処理することができる。
【０１１０】
複数の実施態様を説明してきた。それにもかかわらず、さまざまな変更を行えることが理解されよう。たとえば、上述した用途は、単一のマルチスレッドプロセッサを含むが、用途のいずれも、２つ又は３つ以上のマルチスレッドプロセッサを含むことができる。たとえば、ハードディスクドライブシステム８００は、２つのマルチスレッドプロセッサ（たとえば、第１のマルチスレッドプロセッサ及び第２のマルチスレッドプロセッサ）を含むことができる。一実施態様では、第２のマルチスレッドプロセッサは、第１のマルチスレッドプロセッサによって実行されないプロセッサスレッドを実行する。また、上述した方法のステップは、異なる順序で実行することができ、それでも依然として望ましい結果を達成することができる。したがって、他の実施態様も、添付の特許請求の範囲の範囲内にある。
【図面の簡単な説明】
【０１１１】
【図１】マルチスレッドパイプラインプロセッサアーキテクチャのブロック図である。
【図２】図１のマルチスレッドパイプラインプロセッサアーキテクチャに従って構成されたマルチスレッドプロセッサのオペレーションの方法である。
【図３】図１のマルチスレッドパイプラインプロセッサアーキテクチャによるマルチスレッドパイプラインプロセッサのブロック図である。
【図４】マルチスレッドパイプラインプロセッサアーキテクチャのブロック図である。
【図５】図４のマルチスレッドパイプラインプロセッサアーキテクチャによるマルチスレッドパイプラインプロセッサのブロック図である。
【図６】図１及び図４のマルチスレッドパイプラインプロセッサアーキテクチャで例外ハンドリングを実行する方法である。
【図７】図１及び図４のマルチスレッドパイプラインプロセッサアーキテクチャで割り込みハンドリングを実行する方法である。
【図８】マルチスレッドプロセッサを含むハードディスクドライブシステムの機能ブロック図である。
【図９】マルチスレッドプロセッサを含むデジタル多用途ディスク（ＤＶＤ）システムの機能ブロック図である。
【図１０】マルチスレッドプロセッサを含むセルラーＷＬＡＮ（無線ローカルエリアネットワーク）システムの機能ブロック図である。
【図１１】マルチスレッドプロセッサを含むＶｏＩＰシステムの機能ブロック図である。
【図１２】マルチスレッドプロセッサを含む無線ネットワークデバイスの機能ブロック図である。
【図１３】マルチスレッドプロセッサを含む無線テレビシステムの機能ブロック図である。
【図１４】マルチスレッドプロセッサを含むブロードバンドモデムの機能ブロック図である。
【図１５】マルチスレッドプロセッサを含む有線ルータの機能ブロック図である。
【図１６】マルチスレッドプロセッサを含む無線メディアプレイヤの機能ブロック図である。
【図１７】マルチスレッドプロセッサを含むリアルタイムコントローラの機能ブロック図である。
【図１】
2006302261.tif 000003
【図２】
2006302261.tif 000004
【図３】
2006302261.tif 000005
【図４】
2006302261.tif 000006
【図５】
2006302261.tif 000007
【図６】
2006302261.tif 000008
【図７】
2006302261.tif 000009
【図８】
2006302261.tif 000010
【図９】
2006302261.tif 000011
【図１０】
2006302261.tif 000012
【図１１】
2006302261.tif 000013
【図１２】
2006302261.tif 000014
【図１３】
2006302261.tif 000015
【図１４】
2006302261.tif 000016
【図１５】
2006302261.tif 000017
【図１６】
2006302261.tif 000018
【図１７】
2006302261.tif 000019
【外国語明細書】
2006302261.tif 000020
2006302261.tif 000021
2006302261.tif 000022
2006302261.tif 000023
2006302261.tif 000024
2006302261.tif 000025
2006302261.tif 000026
2006302261.tif 000027
2006302261.tif 000028
2006302261.tif 000029
2006302261.tif 000030
2006302261.tif 000031
2006302261.tif 000032
2006302261.tif 000033
2006302261.tif 000034
2006302261.tif 000035
2006302261.tif 000036
2006302261.tif 000037
2006302261.tif 000038
2006302261.tif 000039
2006302261.tif 000040
2006302261.tif 000041
2006302261.tif 000042
2006302261.tif 000043
2006302261.tif 000044
2006302261.tif 000045
2006302261.tif 000046
2006302261.tif 000047
2006302261.tif 000048
2006302261.tif 000049
2006302261.tif 000050
2006302261.tif 000051
2006302261.tif 000052
2006302261.tif 000053
2006302261.tif 000054
2006302261.tif 000055
2006302261.tif 000056
2006302261.tif 000057
2006302261.tif 000058
2006302261.tif 000059
2006302261.tif 000060
2006302261.tif 000061
2006302261.tif 000062
2006302261.tif 000063
2006302261.tif 000064
2006302261.tif 000065
2006302261.tif 000066
2006302261.tif 000067
2006302261.tif 000068
2006302261.tif 000069
2006302261.tif 000070
2006302261.tif 000071
2006302261.tif 000072
2006302261.tif 000073
2006302261.tif 000074
2006302261.tif 000075
2006302261.tif 000076
2006302261.tif 000077
2006302261.tif 000078
2006302261.tif 000079
2006302261.tif 000080
2006302261.tif 000081
2006302261.tif 000082
2006302261.tif 000083
2006302261.tif 000084
2006302261.tif 000085
2006302261.tif 000086
2006302261.tif 000087
2006302261.tif 000088
2006302261.tif 000089
2006302261.tif 000090
2006302261.tif 000091
2006302261.tif 000092
2006302261.tif 000093
2006302261.tif 000094
2006302261.tif 000095
2006302261.tif 000096
2006302261.tif 000097
2006302261.tif 000098
2006302261.tif 000099
2006302261.tif 000100
2006302261.tif 000101
2006302261.tif 000102