(57)【要約】【解決手段】通信（例えばＣＤＭＡ）システムにおいて送信を処理するための技術。マルチスレッドプロセッサが、マルチスレッドプロセッサに関連する複数のプロセッサパイプラインを経由して動作している複数のスレッドを処理し、マルチスレッドプロセッサが第１のスレッドから第２のスレッドへ切り換えるトリガイベントを予め定める。このトリガイベントは、マルチスレッドプロセッサパフォーマンスを最適にするために可変的かつ動的に定めることができる。このトリガイベントは、マルチスレッドプロセッサのパフォーマンスを最適化するために動的に定められたプロセッササイクル数であるか、又は、例えばキャッシュミスや命令ミスのような可変的かつ動的に定められたイベントでありうる。【選択図】      図７
2008538246.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッドプロセッサに関連した複数のプロセッサパイプラインを介して動作する複数のスレッドを処理するマルチスレッドプロセッサ上で命令を処理する方法であって、
前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わるために、前記マルチスレッドプロセッサのパフォーマンスを最適化するように可変的かつ動的に定められる少なくとも１つのトリガイベントを予め定めることと、
前記トリガイベントが発生するまで、第１のスレッドからの第１の命令のセットを処理することと、
前記トリガイベントが発生すると、前記第１のスレッドからの処理を、第２のスレッドからの処理へと前記マルチスレッドプロセッサを切り換えることと、
前記トリガイベントが発生するまで、前記第２のスレッドからの第２の命令のセットを処理することと、
前記トリガイベントが発生すると、前記第２のスレッドからの処理を、次のスレッドからの処理へと前記マルチスレッドプロセッサを切り換えることと、
前記マルチスレッドプロセッサの動作中、前記処理することと、前記切り換えることとを続けることと
からなる各ステップを備える方法。
【請求項２】
前記予め定めるステップは更に、
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定されるプロセッササイクル数に関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定めることと、
前記プロセッササイクル数をカウントし、前記カウントしたプロセッササイクル数が、前記予め定めたプロセッササイクル数と等しいかを判定し、これによって、前記トリガイベントの存在を確証することと
からなる各ステップを備える請求項１に記載の方法。
【請求項３】
前記予め定めるステップは更に、
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定される可変的かつ動的にプログラム可能なイベントに関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定めることと、
前記可変的かつ動的にプログラム可能なイベントの存在を判定するために、前記複数のスレッドのおのおのの処理中に生じるイベントを監視し、これによって、前記トリガイベントの存在を確証することと
からなる各ステップを備える請求項１に記載の方法。
【請求項４】
前記少なくとも１つのトリガイベントを、前記複数のスレッドの処理中に生じるキャッシュミスと定めるステップを更に備える請求項１に記載の方法。
【請求項５】
前記少なくとも１つのトリガイベントを、前記複数のスレッドの処理中に生じる命令ミスと定めるステップを更に備える請求項１に記載の方法。
【請求項６】
前記少なくとも１つのトリガイベントを、前記第１のスレッドから前記第２のスレッドへ切り換えるためのスイッチオンシグナル処理を実行するための信号と定めるステップを更に備える請求項１に記載の方法。
【請求項７】
前記第１のスレッドから前記第２のスレッドへ切り換えるためのスイッチオンユーズ処理を実行するための前記少なくとも１つのトリガイベントとして、命令が、ロードから失われた値の使用を試みたことを定めるステップを更に備える請求項１に記載の方法。
【請求項８】
前記マルチスレッドプロセッサのパフォーマンスを最適化するために可変的かつ動的に決定され、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる第２のトリガイベントを予め定めることと、
前記少なくとも１つのトリガイベントの発生、又は、前記第２のトリガイベントの発生が、前記第１のスレッドからの処理を、前記第２のスレッドからの処理へ前記マルチスレッドプロセッサを切り換えることを制御するかを選択的かつ動的に制御することと
からなる各ステップを更に備える請求項１に記載の方法。
【請求項９】
マルチスレッドプロセッサに関連する複数のプロセッサパイプラインを介して動作する複数のスレッドを処理するマルチスレッドデジタルシグナルプロセッサであって、
前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わるために、前記マルチスレッドプロセッサのパフォーマンスを最適化するように可変的かつ動的に定められる少なくとも１つのトリガイベントを予め定める手段と、
前記トリガイベントが発生するまで、第１のスレッドからの第１の命令のセットを処理する手段と、
前記トリガイベントが発生すると、前記第１のスレッドからの処理を、第２のスレッドからの処理へと前記マルチスレッドプロセッサを切り換える手段と、
前記トリガイベントが発生するまで、前記第２のスレッドからの第２の命令のセットを処理する手段と、
前記トリガイベントが発生すると、前記第２のスレッドからの処理を、次のスレッドからの処理へと前記マルチスレッドプロセッサを切り換える手段と、
前記マルチスレッドプロセッサの動作中、前記処理することと、前記切り換えることとを続ける手段と
を備えるマルチスレッドデジタルシグナルプロセッサ。
【請求項１０】
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定されるプロセッササイクル数に関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定める手段と、
前記プロセッササイクル数をカウントし、前記カウントしたプロセッササイクル数が、前記予め定めたプロセッササイクル数に等しいかを判定し、これによって、前記トリガイベントの存在を確証する手段と
を更に備える請求項９に記載のシステム。
【請求項１１】
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定される可変的かつ動的にプログラム可能なイベントに関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定める手段と、
前記可変的かつ動的にプログラム可能なイベントの存在を判定するために、前記複数のスレッドのおのおのの処理中に生じるイベントを監視し、これによって、前記トリガイベントの存在を確証する手段と
を更に備える請求項９に記載のシステム。
【請求項１２】
前記少なくとも１つのトリガイベントを、前記複数のスレッドの処理中に生じるキャッシュミスと定める手段を更に備える請求項９に記載のシステム。
【請求項１３】
前記少なくとも１つのトリガイベントを、前記複数のスレッドの処理中に生じる命令ミスと定める手段を更に備える請求項９に記載のシステム。
【請求項１４】
前記少なくとも１つのトリガイベントを、前記第１のスレッドから前記第２のスレッドへ切り換わるためのスイッチオンシグナル処理を実行する信号と定める手段を更に備える請求項９に記載のシステム。
【請求項１５】
前記第１のスレッドから前記第２のスレッドへ切り換わるためのスイッチオンユーズ処理を実行するための前記少なくとも１つのトリガイベントとして、命令が、ロードから失われた値の使用を試みたことを定める手段を更に備える請求項９に記載のシステム。
【請求項１６】
前記マルチスレッドプロセッサのパフォーマンスを最適化するために可変的かつ動的に決定され、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる第２のトリガイベントを予め定める手段と、
前記少なくとも１つのトリガイベントの発生、又は、前記第２のトリガイベントの発生が、前記第１のスレッドからの処理を、前記第２のスレッドからの処理へと前記マルチスレッドプロセッサを切り換えることを制御するかを選択的かつ動的に制御する手段と
を更に備える請求項９に記載のシステム。
【請求項１７】
マルチスレッドプロセッサに関連する複数のプロセッサパイプラインを介して動作する複数のスレッドを処理するマルチスレッドデジタルシグナルプロセッサであって、
前記複数のプロセッサパイプラインに関連する複数のスレッドへ命令をキューするための命令キューと、
前記命令キューに関連付けられ、前記複数のスレッドを受け取る発行ロジックであって、前記マルチスレッドプロセッサを、第１のスレッドから第２のスレッドへ切り換えさせ、前記マルチスレッドプロセッサのパフォーマンスを最適化するように可変的かつ動的に決定される、少なくとも１つのトリガイベントを予め定めるスレッド切換ロジックを備える発行ロジックと、
前記トリガイベントが発生するまで、第１のスレッドからの第１の命令のセットを処理する実行データパスと、
前記トリガイベントが発生すると、前記第１のスレッドからの処理を、第２のスレッドからの処理へと前記マルチプロセッサを切り換える前記スレッド切換ロジックと、
前記トリガイベントが発生するまで、前記第２のスレッドからの第２の命令のセットを処理する前記実行データパスと、
前記トリガイベントが発生すると、前記第２のスレッドからの処理を、次のスレッドからの処理へと前記マルチスレッドプロセッサを切り換える前記スレッド切換ロジックと、
前記マルチスレッドプロセッサの動作中、前記処理するステップと、前記切り換えるステップとを、続けることに関連付けられた前記命令キュー、前記発行ロジック、及び前記実行データパスと
を備えるマルチスレッドデジタルシグナルプロセッサ。
【請求項１８】
前記発行ロジックは更に、
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定されるプロセッササイクル数に関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定める、前記スレッド切換ロジックに関連付けられた最適化ロジックと、
前記プロセッササイクル数をカウントし、前記カウントしたプロセッササイクル数が、前記予め定めたプロセッササイクル数に等しいかを判定し、これによって、前記トリガイベントの存在を確証するプロセッササイクルカウントロジックと
備える請求項１７に記載のシステム。
【請求項１９】
前記発行ロジックは更に、
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定される可変的かつ動的にプログラム可能なイベントに関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定める、前記スレッド切換ロジックに関連付けられた最適化ロジックと、
前記可変的かつ動的にプログラム可能なイベントの存在を判定するために、前記複数のスレッドのおのおのの処理中に生じるイベントを監視し、これによって、前記トリガイベントの存在を確証する監視ロジックと
を備える請求項１７に記載のシステム。
【請求項２０】
前記少なくとも１つのトリガイベントを、前記複数のスレッドの処理中に生じるキャッシュミスと定めるイベント監視ロジックを更に備える請求項１７に記載のシステム。
【請求項２１】
前記少なくとも１つのトリガイベントを、前記複数のスレッドの処理中に生じる命令ミスと定めるイベント監視ロジックを更に備える請求項１７に記載のシステム。
【請求項２２】
前記少なくとも１つのトリガイベントを、前記第１のスレッドから前記第２のスレッドへ切り換えるためのスイッチオンシグナル処理を実行するための信号と定めるイベント監視ロジックを更に備える請求項１７に記載のシステム。
【請求項２３】
前記第１のスレッドから前記第２のスレッドへ切り換えるためのスイッチオンユーズ処理を実行するための前記少なくとも１つのトリガイベントとして、命令が、ロードから失われた値の使用を試みたことを定めるイベント監視ロジックを更に備える請求項１７に記載のシステム。
【請求項２４】
前記スレッド切換ロジックは更に、
前記マルチスレッドプロセッサのパフォーマンスを最適化するために可変的かつ動的に決定され、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる第２のトリガイベントを予め定める最適化ロジックと、
前記少なくとも１つのトリガイベントの発生、又は、前記第２のトリガイベントの発生が、前記第１のスレッドからの処理を、前記第２のスレッドからの処理へと前記マルチスレッドプロセッサを切り換えることを制御するかを選択的かつ動的に制御する切換イベント制御ロジックと
を備える請求項１７に記載のシステム。
【請求項２５】
マルチスレッドプロセッサに関連する複数のプロセッサパイプラインを介して動作する複数のスレッドを処理する前記マルチスレッドプロセッサ上で命令を処理するために、組み込まれたコンピュータ読取可能プログラムコード手段を有するコンピュータ使用可能媒体であって、
前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わるため、前記マルチスレッドプロセッサのパフォーマンスを最適化するように可変的かつ動的に定められる少なくとも１つのトリガイベントを予め定めるコンピュータ読取可能プログラムコード手段と、
前記トリガイベントが発生するまで、第１のスレッドからの第１の命令のセットを処理するコンピュータ読取可能プログラムコード手段と、
前記トリガイベントが発生すると、前記第１のスレッドからの処理を、第２のスレッドからの処理へ前記マルチスレッドプロセッサを切り換えるコンピュータ読取可能プログラムコード手段と、
前記トリガイベントが発生するまで、前記第２のスレッドからの第２の命令のセットを処理するコンピュータ読取可能プログラムコード手段と、
前記トリガイベントが発生すると、前記第２のスレッドからの処理を、次のスレッドからの処理へと前記マルチスレッドプロセッサを切り換えるコンピュータ読取可能プログラムコード手段と、
前記マルチスレッドプロセッサの動作中、前記処理するステップと、前記切り換えるステップとを続けるコンピュータ読取可能プログラムコード手段と
からなる各ステップを備えるコンピュータ使用可能媒体。
【請求項２６】
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定されるプロセッササイクル数に関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定めるコンピュータ読取可能プログラムコード手段と、
前記プロセッササイクル数をカウントし、前記カウントしたプロセッササイクル数が、前記予め定めたプロセッササイクル数に等しいかを判定し、これによって、前記トリガイベントの存在を確証するコンピュータ読取可能プログラムコード手段と
を更に備える請求項２５に記載のコンピュータ使用可能媒体。
【請求項２７】
前記マルチスレッドプロセッサのパフォーマンスを最適化するように決定される可変的かつ動的にプログラム可能なイベントに関連しており、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる少なくとも１つのトリガイベントを予め定めるコンピュータ読取可能プログラムコード手段と、
前記可変的かつ動的にプログラム可能なイベントの存在を判定するために、前記複数のスレッドのおのおのの処理中に生じるイベントを監視し、これによって、前記トリガイベントの存在を確証することと
を更に備える請求項２５に記載のコンピュータ使用可能媒体。
【請求項２８】
前記マルチスレッドプロセッサのパフォーマンスを最適化するために可変的かつ動的に決定され、前記マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わる第２のトリガイベントを予め定めるコンピュータ読取可能プログラムコード手段と、
前記少なくとも１つのトリガイベントの発生、又は、前記第２のトリガイベントの発生が、前記第１のスレッドからの処理を、前記第２のスレッドからの処理へと前記マルチスレッドプロセッサを切り換えることを制御するかを選択的かつ動的に制御することと
を更に備える請求項２５に記載のコンピュータ使用可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示された主な問題は、データ通信に関する。更に詳しくは、本開示は、マルチスレッドプロセッサシステムにおける可変インタリーブ処理のための斬新で改良された方法及び装置に関する。
【背景技術】
【０００２】
今日、通信システムは、様々なアプリケーションをサポートする必要がある。そのような１つの通信システムは、地上リンクを介してユーザ間の音声及びデータ通信をサポートする符号分割多元接続（ＣＤＭＡ）システムである。多元接続通信システムにおけるＣＤＭＡ技術の使用は、権利主張された主題の譲受人に共に譲渡されている"SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS"と題された米国特許第４，９０１，３０７号（特許文献１）と、"SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM"と題された米国特許第５，１０３，４５９号（特許文献２）とに開示されている。
【０００３】
ＣＤＭＡシステムは、一般に、１又は複数の規格に従うように設計されている。そのような１つである第１世代の規格は、"TIA/EIA/IS-95 Terminal-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System"であり、以下ＩＳ−９５規格と称される。ＩＳ−９５  ＣＤＭＡシステムは、音声データとパケットデータとを送信することができる。より効率的にパケットデータを送信することができるより新しい世代の規格は、「第３世代パートナシップ計画（３ＧＰＰ）」と命名されたコンソーシアムによって提供され、公衆に容易に利用可能である文書番号3G TS 25.211, 3G TS 25.212, 3G TS 25.213,及び3G TS 25.214を含む文書セットに具体化されている。３ＧＰＰ規格は、以下、Ｗ−ＣＤＭＡ規格と称される。
【０００４】
デジタルシグナルプロセッサ（ＤＳＰ）は、上記規格に従う無線ハンドセット内で頻繁に使用されている。ハードウェアマルチスレッドは、そのようなＤＳＰにおいて潜在的に利用可能な技術になっている。幾つかのマルチスレッドＤＳＰは、業界によってアナウンスされているか、あるいは、高性能マイクロプロセッサ、メディアプロセッサ、及びネットワークプロセッサの分野において既に製品に組み込まれている。
【０００５】
ＤＳＰにおけるマルチスレッドは、異なるレベル、あるいは異なる程度のプロセスグラニュラリティにおいて起きうるかもしれない。例えば、ＤＳＰが実施しうるマルチスレッドのファイングレイン（fine-grained）な形態は、プロセッサパイプライン内で並行して２又はそれ以上の制御スレッドを使用する。２又はそれ以上の制御スレッドのコンテキストは、個別のオンチップレジスタセット内に格納される。最新のマイクロプロセッサによるシングルスレッドプログラムのパイプライン実行の間、レイテンシから生じる未使用の命令スロットは、マルチスレッドプロセッサ内の他のスレッドの命令によって満たされる。レジスタセット内にロードされるスレッドコンテキスト間で、実行ユニットが多重化される。
【０００６】
マルチスレッドＤＳＰを用いた無線ハンドセットでは、電力、あるいは更に詳しくは、エネルギー（すなわち、時間にわたった電力）を節約する必要がある。なぜなら、マルチメディア無線ハンドセットは、バッテリ又は電源エネルギーを益々消費するからである。例えば、ライブテレビ放送を受信する無線ハンドセットは、通常の２方向呼出トラフィックにおいてなされるような間歇的ではなく、バッテリエネルギーを連続的に消費する。無線ハンドセット動作のためのマルチスレッドＤＳＰは、本処理アーキテクチャを用いて、できるだけ多くのプロセッササイクルのために命令を処理することによって、電源を効率的に使用するというこの問題に対処する。しかしながら、既存のアプローチに関する問題が未だに存在する。
【０００７】
マルチスレッドＤＳＰにおいて解決すべき重要な問題は、スレッドスケジューリング、つまり、ＤＳＰがスレッド間の処理をどのように切り換えるかを決定する方法に関する。あいにく、異なる切換インタバルにおいて、異なるアプリケーションの組み合わせが最適になることがしばしば生じる。例えば、Ｎ個のスレッドを有するＤＳＰの場合、サイクル毎に切り換えることが最適かもしれない。Ｎ／２個のスレッドを有する別のＤＳＰの場合、２サイクル毎に切り換えることが最適かも知れない。幾つかの状況では、同じアプリケーションが、アプリケーションの１つの部分の間は、１つの切換インタバルで最適になり、別の部分の間は、別のインタバルで最適になるかもしれない。従って、マルチスレッドデジタルシグナル処理のスレッド切換に関連する様々なリソース使用問題を解決する方法及びシステムに対するニーズがある。
【０００８】
これら問題を解決するための試みは、具体的な、すなわち、柔軟性のないアプリケーションのために設定又は確立された従来型ＤＳＰアーキテクチャによって、うまくいっていない。例えば、ユーザ指向アプリケーション問題は、通常は、ある種のマルチスレッド演算からより恩恵を受ける一方、科学的アプリケーションは、別のタイプのマルチスレッド演算からより恩恵を受ける。その結果、異なるアプリケーションのために異なるプロセッサを設計することができるが、同じプロセッサは、これら両方のプロセッサのために最適にはならない。あいにく、無線ハンドセットは、そのＤＳＰが、マルチスレッド動作に対する単一のアプローチが実用的な解決策を与える多くの他のタイプのアプリケーションのみならず、ユーザ指向アプリケーション、科学的アプリケーション、及びマルチメディアアプリケーションを処理することを要求しており、今後この要求は益々高まるであろう。従って、様々なアプリケーションで最適な動作が可能な無線ハンドセットマルチスレッドＤＳＰに対するニーズが存在する。
【特許文献１】米国特許第４，９０１，３０７号
【特許文献２】米国特許第５，１０３，４５９号
【発明の開示】
【０００９】
マルチスレッドプロセッサが、その動作時間が最大になる部分に対する命令を処理することを保証するために、プロセッサの動作と、無線ハンドセットエネルギーリソースの効率的使用との両方を改良する、マルチスレッドプロセッサシステムを用いた可変インタリーブ処理のための技術が開示される。
【００１０】
本開示の実施形態は、マルチスレッドプロセッサについての命令を処理する方法を提供する。このマルチスレッドプロセッサは、マルチスレッドプロセッサに関連した複数のプロセッサパイプラインを経由して動作する複数のスレッドを処理する。この方法は、マルチスレッドプロセッサが、第１のスレッドから第２のスレッドへ切り換わるための少なくとも１つのトリガイベントを予め定めるステップを含む。このトリガイベントは、マルチスレッドプロセッサパフォーマンスを最適化するために可変的かつ動的に定められる。この方法及びシステムは、このトリガイベントが発生するまで、第１のスレッドからの第１の命令のセットを処理する。トリガイベントが発生すると、第１のスレッドを処理することから、第２のスレッドを処理することへのマルチスレッドプロセッサの切り換えが生じる。第２のスレッドからの第２の命令のセットを処理することは、次のトリガイベントの発生まで続く。本方法及びシステムは、処理が複数のスレッドから処理されることを要求する命令の全てのセットをマルチスレッドプロセッサが処理するまで、処理ステップ及び切換ステップを継続する。
【００１１】
このトリガイベントは、動的に定められたプロセッササイクル数でありうる。この数は、マルチスレッドプロセッサのパフォーマンスを最適にするために予め定められうる。そのような場合、本実施形態は、プロセッササイクル数をカウントし、カウントしたプロセッササイクル数が、予め定めたプロセッササイクル数と等しいかを判定し、これによって、トリガイベントの存在を確証する。あるいは、実施形態は、トリガイベントを、例えばブロックされたマルチスレッドプロセッサにおいて生じうる可変的又は動的に定められたイベントとして確証しうる。そのため、トリガイベントは、キャッシュ又は命令ミスでありうる。更に、開示された実施形態は、予め定めたプロセッササイクル数である第１のトリガイベントと、ブロッキングイベントである第２のトリガイベントとを組み合わせうる。両トリガイベントともに、可変的及び動的に定められる。
【００１２】
開示された主題のこれら及びその他の利点は、更なる発明的な特徴に加えて、本明細書で与えられた記述から明らかになるであろう。本要約の意図は、権利主張した主題の包括的な記載ではなく、むしろ、本主題の機能の幾つかの短い概要を提供することである。本明細書で提示されたものとは別のシステム、方法、特徴、及び利点も、添付図面及び詳細説明を検討することによって、当業者に容易に明らかになるであろう。そのような追加のシステム、方法、特徴、及び利点は全て、本記載に含まれ、特許請求の範囲に含まれることが意図される。
【発明を実施するための最良の形態】
【００１３】
開示された主題の特徴、性質、及び利点は、同一の符号が、全体を通じて対応して示される図面とともに参照された場合、以下に示す詳細説明からより明らかになるであろう。
【００１４】
図１は、本明細書に示す実施形態を実現可能な通信システム１０の簡略ブロック図である。送信機ユニット１２では、データソース１４から送信（ＴＸ）データプロセッサ１６へと、一般にブロック形式でデータが送られる。送信（ＴＸ）データプロセッサ１６は、このデータをフォーマットし、符合化し、処理して、１又は複数のアナログ信号を生成する。このアナログ信号は、その後、送信機（ＴＭＴＲ）１８に提供される。送信機（ＴＭＴＲ）１８では、ベースバンド信号を変調、フィルタ、増幅、及びアップコンバートして、変調信号を生成する。そして、この変調信号は、アンテナ２０を経由して、１又は複数の受信機ユニットに送信される。
【００１５】
受信機ユニット２２では、この送信された信号がアンテナ２４によって受信され、受信機（ＲＣＶＲ）２６に提供される。この受信された信号は、受信機２６の内部で、増幅され、フィルタ化され、ダウンコンバートされ、復調され、デジタル化されて、同位相（Ｉ）サンプル及び（Ｑ）サンプルが生成される。これらサンプルはその後、受信（ＲＸ）データプロセッサ２８によって復号及び処理され、送信データが復元される。受信機ユニット２２における復号及び処理は、送信機ユニット１２で実行された符合化及び処理に対して相補的な方法で行なわれる。そして、復元されたデータは、データシンク３０に提供される。
【００１６】
上述した信号処理は、音声、ビデオ、パケットデータ、メッセージ、及びその他のタイプの１方向通信の送信をサポートする。双方向通信システムは、２方向のデータ伝送をサポートする。しかしながら、図１には、簡潔さのために、他の方向の信号処理は示していない。通信システム１０は、符号分割多元接続（ＣＤＭＡ）システム、時分割多元接続（ＴＤＭＡ）通信システム（例えばＧＳＭシステム）、周波数分割多元接続（ＦＤＭＡ）通信システム、あるいは、地上リンクを介してユーザ間での音声及びデータ通信をサポートするその他の多元接続通信システムでありうる。特定の実施形態では、通信システム１０は、Ｗ−ＣＤＭＡ規格に従うＣＤＭＡシステムである。
【００１７】
図２は、図１の送信データプロセッサ１６及び受信データプロセッサ２８であるＤＳＰ４０のアーキテクチャを例示する。ＤＳＰ４０は、本明細書に示す教示及び概念を効果的に利用する極めて多くのデジタルシグナルプロセッサの実施形態のうちの１つの実施形態のみを示している。従って、ＤＳＰ４０内では、スレッドＴ０乃至Ｔ５（４２〜５２）が、異なるスレッドからの命令のセットを含んでいる。回路５４は、命令アクセスメカニズムを表し、スレッドＴ０乃至Ｔ５のための命令を取得するために使用される。回路５４のための命令は、命令キュー５６へキューされる。命令キュー５６内の命令は、プロセッサパイプライン６６（下記参照）へ発行される準備ができている。命令キュー５６からは、例えばスレッドＴ０のような単一のスレッドが、発行ロジック回路５８によって選択されうる。選択されたスレッドのレジスタファイル６０が読まれ、この読まれたデータは、スロット０乃至スロット３のための実行データパス６２に送られる。この例では、スロット０乃至スロット３は、本実施形態で適用されるパケットグルーピング組み合わせのために提供される。
【００１８】
実行データパス６２の出力は、ＤＳＰ４０の演算からの結果を戻すために、個別のスレッドＴ０乃至Ｔ５を収納するように構成されたレジスタファイル書込回路６４へ送られる。従って、回路５４から、様々なスレッドに従って分割されているレジスタファイル書込回路６４の前までのデータパスが、処理パイプライン６６を形成する。
【００１９】
本実施形態は、最大６個のスレッドＴ０乃至Ｔ５を持つ単一のマイクロプロセッサを用いた異種混合の要素プロセッサ（ＨＥＰ）システムからなる混成を適用しうる。プロセッサパイプライン６６は、回路５４からレジスタ６０，６４へとデータ項目を取得するために必要な最小のプロセッササイクル数に一致する６つのステージを持つ。ＤＳＰ４０は、プロセッサパイプライン６６内で、異なるスレッドＴ０乃至Ｔ５の命令を同時に実行する。すなわち、ＤＳＰ４０は、独立した６つのプログラムカウンタ、プロセッサパイプライン６６内のスレッドＴ０乃至Ｔ５の命令を識別する内部タギングメカニズム、及び、スレッド切換をトリガするメカニズムを提供する。スレッド切換オーバヘッドは、０から数サイクルまで変化する。
【００２０】
本実施形態によって、予め定めたクロックサイクル数になった場合のみならず、例えば外部イベントのような、特定のイベントの発生におけるスレッド切換が可能となる。そのような外部イベントは、例えば、データキャッシュミス又は命令キャッシュミスでありうる。実際、このシステムは、スレッド切換を開始する外部イベントとして使用又は取り扱われる割り込みを発行しうる。従って、例えば、著しくプロセッサリソースを必要とするプロセッサでは、本実施形態は、例えば１００万クロックサイクルの間、プロセッサリソースへアクセスを提供しうる。１００万クロックサイクルの後、プロセッサは、制御スレッドを次の制御スレッドに切り換えることができる。次の制御スレッドが、わずか１万クロックサイクルしか必要としないのであれば、本実施形態は、プロセッサに、必要とされる１万クロックサイクルのみをスレッドに割り当てさせる。
【００２１】
図３乃至図６は、本主題の様々な実施形態からなるある局面を表示するための命令発行対プロセッササイクル図を示す。特に、図３は、ＤＳＰ４０のＩＭＴ演算に対する命令発行対プロセッササイクル図７０を示す。
【００２２】
図４は、本実施形態のＶＩＩＭＴ演算に関連する図７２を示す。
【００２３】
図５は、ＤＳＰ４０を用いたＶＳＯＥＭＴ演算の１つの実施形態の図７４である。
【００２４】
図６はまた、ＶＳＯＥＭＴ処理をＶＩＩＭＴ処理と組み合わせることの利点を示す図７６を示す。
【００２５】
図３乃至図５では全て、例えば空のスロット７８（図３）のような空の発行スロットを、垂直方向又は水平方向の消耗（waste）として定義することができる。垂直方向の消耗８０は、ＤＳＰ４０が、サイクルにおいて命令を発行しない場合、すなわち、命令発行ストール（stalling）がある場合に生じる。水平方向の消耗８２は、ＤＳＰ４０が、与えられたサイクルにおいて利用可能なスロットの、空ではないサブセットのみを埋める場合に生じる。
【００２６】
図３に示すように、ＩＭＴは、長いレイテンシイベントが起きたかに関わらず、処理されたスレッドを、サイクル毎に切り換えることによってスレッド切換ＴＳを実行する。そのため、ＤＳＰ４０リソースは、単一サイクルのグラニュラリティにおいて、準備可能なスレッドＴ０乃至Ｔ５のプールからインタリーブされる。
【００２７】
図４では、ＶＩＩＭＴ演算は、動的に定めたインタバル、ここでは３プロセッササイクル、における切換によって、ＩＭＴ切換から変わる。３に設定された可変プロセッササイクルによって、幾つかの垂直方向の消耗７９がもたらされることに留意されたい。図５は、生じているプロセッササイクル対命令発行を示し、ここでは、キャッシュミスや命令ミスのようなトリガイベントが動的に決定される。見て分かるように、スレッド切換間の処理サイクルは、例えば、垂直方向の消耗の場合、４サイクルから１サイクルに変わる。すなわち、この図は、従来のＳＯＥＭＴプロセッササイクル対命令発行図と類似しているが、このイベントは、本実施形態を用いて動的に決定される。ただし、幾つかのインスタンスでは、垂直方向の消耗８４が生じうる。見て分かるように、図６では、ＶＳＯＥＭＴとＶＩＩＭＴとの組み合わせによって、垂直方向の消耗と、水平方向の消耗との両方を実質的に低減する。その効果は、ＤＳＰ４０がその動作サイクルの相当大きな部分の命令を実行するということである。
【００２８】
本実施形態のＶＳＯＥＭＴ処理は、スレッド切換の結果となりうるイベントのタイプを動的に選択する。通常、そのような状況は、命令実行が、長いレイテンシ動作に達した場合、あるいは、レイテンシが生じる状態に達した場合に生じる。本実施形態の柔軟性を例示するため、そのようなイベントを以下に述べる。
【００２９】
例えば、ＶＳＯＥＭＴ処理は、キャッシュ内でロードミス又はストアミスがあった場合、スレッドを切り換えるスイッチオンキャッシュミス（switch-on-cache-miss）処理を実行しうる。そのような処理では、キャッシュミスするロードと、バッファされないストアのみが、長いレイテンシを有し、スレッド切換を引き起こす。スイッチオンシグナル（switch-on-signal）処理は、例えば、割り込み、トラップ、あるいはメッセージ到着をシグナリングする具体的な信号が発生した場合にスレッドを切り換える。スイッチオンユーズ（switch-on-use）処理は、命令が、ロードからの失われた（例えば、キャッシュ内で失われた）値の使用を未だ試みる場合に切り換わる。
【００３０】
切換が起こると動的に判定される別のイベントは、条件付切換（conditional-switch）である。これは、明示的な切換命令を条件と結びつける。そのような処理では、条件が満たされる場合に限り、スレッド切換が行われ、満たされない場合には、スレッド切換は行われない。条件付切換命令は、例えば、ロード／ストア命令の後に使用されうる。そのようなインスタンスでは、（前のグループ内の）全てのロード命令がキャッシュをヒットした場合、スレッド切換は行われない。そうでない場合に、スレッド切換が行われる。更に、レイジーなスレッド切換を実現するために、スイッチオンユーズモデルを実施する代わりに、ロードグループとその後の使用との間に条件付切換命令が追加されうる。
【００３１】
図７乃至図９は、本実施形態の可変マルチスレッドプロセッサ方法及びシステムの様々な例を示すフロー図を表す。図７に示すように、ＶＩＩＭＴ処理９０は、ポイントＤＳＰ４０マルチスレッド動作が始まるステップ９２において始まるものと考えられる。ステップ９４では、ＤＳＰ４０が第１のスレッドから第２のスレッドへ切り換わるサイクル数を、ＶＩＩＭＴ処理９０が動的に決定する。ステップ９４で決定されたサイクル数は、マルチスレッドプロセッサパフォーマンスを最適化するために可変的かつ動的に決定されたトリガイベントと考えられる。それは、スレッドが含む命令のセットを実行するために必要なＤＳＰ４０のリソース量かもしれない。マルチスレッド動作がなされている間、ＶＩＩＭＴ処理は、問い合わせ９６において、予め定めたサイクル数に達したかを確認する。もしも達していれば、処理フローはステップ９８に進み、ポイントＤＳＰ４０が、第１のスレッドを処理することから、第２のスレッドを処理することへ切り換わる。その後、処理フローはステップ１００に進み、ＤＳＰ４０は、新たなスレッドを処理する。ＶＩＩＭＴ処理９０では、フローは問い合わせ９６へ戻り、プロセッササイクル数を常に確認する。そして、もしもプロセッササイクル数に達していないのであれば、ＶＩＩＭＴ処理９０は、問い合わせ１０２に続き、マルチスレッド動作が完了したかを確認する。完了しているのであれば、処理フローはステップ１０４に進み、マルチスレッド動作が終了する。完了していないのであれば、処理フローはステップ１００に進み、現在のスレッドの処理を続ける。
【００３２】
図８は、ＶＳＯＥＭＴ処理フロー１２０を示す。これは、ＶＩＩＭＴ処理フロー９０のようにステップ９２で始まり、ここでＤＳＰ４０が、マルチスレッド動作を開始すると考えられる。その後処理フローはステップ１２２に進み、ＶＳＯＥＭＴ処理フロー１２０がトリガイベントを動的に決定する。トリガイベントが一旦決定されると、処理フローは、問い合わせ１２４に進み、トリガイベントが生じているのかを確認する。トリガイベントが生じていれば、処理フローはステップ９８及びステップ１００に進み、スレッドを切り換え、ＤＳＰ４０スレッド処理を続ける。トリガイベントが生じてないのであれば、処理フローは問い合わせ１０２に進み、図７のＶＩＩＭＴ処理フロー９０に類似した方法で動作する。
【００３３】
図９は、ＶＩＩＭＴ処理フロー９０の有用な動作と、ＶＳＯＥＭＴ処理フロー１２０との組み合わせから導かれる処理フロー１３０を詳述する。ステップ１２２におけるトリガイベントと、ステップ９４におけるプロセッササイクル数との両方を組み合わせることにより、ＤＳＰ４０のマルチスレッド動作を向上させる。
【００３４】
マルチスレッドプロセッサの様々なスレッドが、異なる量のプロセッサリソースを必要とする場合、ここで開示した主題は、かなりの程度の柔軟性を示す。従って、１つのスレッドについての命令のセットが、プロセッサリソースの大部分を必要とする場合、本実施形態は、より少ない量のプロセッサリソースを必要とする他のスレッドのために割り当てられた量よりも、著しく長い時間、プロセッサリソースを割り当てうる。
【００３５】
従って、本実施形態は、スレッドインタバルカウンタを含む可変インタバルインタリーブマルチスレッドプロセッサを提供する。このスレッドインタバルカウンタは、各スレッドが次のスレッドに切り換わる前に動作する動的に決定されたサイクル数を含む。スレッドインタバルカウンタは、例えばシステムソフトウェアのようなソフトウェアによって更新されるか、又は動的に決定される。そのような実施形態の処理は、次にどのスレッドが動作するのかを決定するために、スレッドインタバルカウンタと、動的に決定されたサイクル数とを用いる。この実施形態は、与えられたアプリケーション又はアプリケーション組み合わせに対してＤＰＳを最適化するために、スレッドインタバルカウンタを動的に変えることによって、ＤＰＳパフォーマンスを改良するという問題に取り組む。スレッドインタバルカウンタは、最適なインタバルを達成するために、アプリケーション動作における異なる段階の間に動的に変更されうる。
【００３６】
要約すると、ＶＩＳＯＥＭＴ方法及びシステムを含むこの実施形態は、スレッドインタバルカウンタの動作を組み合わせる際に、可変のイベントベースの切換を与える。従って、動的にプログラム可能なスレッド切換カウンタを用いることによって、サイクル数が、動的に決定されたスレッド切換タイムアウト値又はサイクルカウントに達した場合、プロセッサは、次のスレッドに切り換わる。スレッドインタバルカウンタはまた、ソフトウェアによってディセーブルされうる。この場合、プロセッサは、純粋なＳＯＥＭＴプロセッサとなる。その結果、プロセッサが必要とする様々なアプリケーションとして、本実施形態によって、マルチスレッドプロセッサが、ＳＯＥＭＴ及びＩＭＴの両方のプロセッサとなることができる。
【００３７】
本明細書に記載の処理特徴及び機能は、様々な方法で実施することができる。例えば、ＤＳＰ４０が上述した動作を実行するのみならず、本実施形態は、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、マイクロプロセッサ、又は、本明細書に記載の機能を実行するために設計されたその他の電子回路で実現されうる。従って、好適な実施形態の上述した説明は、当業者が、この権利要求された主題を活用又は利用できるように提供される。これらの実施形態への様々な変形も、当業者に容易に明らかになり、本明細書で定めた一般原理は、発明的な能力を用いることなく、他の実施形態に適用されうる。従って、この権利要求された主題は、本明細書で示された実施形態に限定されることは意図されておらず、本明細書で開示した斬新な特徴及び原理に一致した最も広い範囲が与えられる。
【図面の簡単な説明】
【００３８】
【図１】図１は、本実施形態を実現可能な通信システムの簡略ブロック図である。
【図２】図２は、本実施形態の教示を説明するためのＤＳＰアーキテクチャを例示する。
【図３】図３は、権利主張した主題の様々な実施形態の、ある局面を表示する命令発行対プロセッササイクル図を示す。
【図４】図４は、権利主張した主題の様々な実施形態の、ある局面を表示する命令発行対プロセッササイクル図を示す。
【図５】図５は、権利主張した主題の様々な実施形態の、ある局面を表示する命令発行対プロセッササイクル図を示す。
【図６】図６は、権利主張した主題の様々な実施形態の、ある局面を表示する命令発行対プロセッササイクル図を示す。
【図７】図７は、可変マルチスレッドプロセッサ方法及びシステムの別の実施形態を実現するための様々な処理フローを示すフロー図である。
【図８】図８は、可変マルチスレッドプロセッサ方法及びシステムの別の実施形態を実現するための様々な処理フローを示すフロー図である。
【図９】図９は、可変マルチスレッドプロセッサ方法及びシステムの別の実施形態を実現するための様々な処理フローを示すフロー図である。
【図１】
2008538246.tif 000003
【図２】
2008538246.tif 000004
【図３】
2008538246.tif 000005
【図４】
2008538246.tif 000006
【図５】
2008538246.tif 000007
【図６】
2008538246.tif 000008
【図７】
2008538246.tif 000009
【図８】
2008538246.tif 000010
【図９】
2008538246.tif 000011
【国際調査報告】
2008538246.tif 000012
2008538246.tif 000013
2008538246.tif 000014