(57)【特許請求の範囲】
【請求項１】
異なるハードウエアリソースを備えた複数のハードウエアスレッドを有するマルチスレッド式プロセッサ上で命令を実行する方法であって、
複数のハードウエアスレッド上の実行のための命令の複数のストリームを受信する段階と、
どのハードウエアスレッドが実行のための命令を受信することができるかを判断する段階と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する段階と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階における前記判断の結果に基づいて前記命令を実行する段階と、
を含み、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階が、各ハードウエアスレッド上の命令を事前復号すること及び命令が前記ハードウエアスレッドによってサポートされていることを検出することを特徴とする方法。
【請求項２】
スレッドが命令によって要求される前記ハードウエアリソースを有するか否かを判断する前記段階は、該命令によって要求される該リソースを判断する段階と、これらを各利用可能なハードウエアスレッド上のリソースに対して比較する段階とを含むことを特徴とする請求項１に記載の方法。
【請求項３】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階は、各クロックサイクルで実施されることを特徴とする請求項２に記載の方法。
【請求項４】
前記事前復号することは、命令復号処理の事前復号部分で実施されることを特徴とする請求項２又は請求項３に記載の方法。
【請求項５】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階の結果が命令を実行すべきではないという結果である場合に、事前符号化部分でフラグを発生させる段階を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記命令がそのサイクルで実行するのに利用可能ではないことを指示するために前記フラグを命令スケジューラーに通す段階を含むことを特徴とする請求項５に記載の方法。
【請求項７】
異なるハードウエアリソースを備えた複数のハードウエアスレッド上で命令を実行するためのマルチスレッド式プロセッサであって、
複数のハードウエアスレッド上で実行するための命令の複数のストリームを受信するための手段と、
どのハードウエアスレッドが実行のための命令を受信することができるかを判断するための手段と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための手段と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段における前記判断の結果に基づいて前記命令を実行するための手段と、
を含み、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段が、各ハードウエアスレッド上の命令を事前復号するための手段、及び命令が前記ハードウエアスレッドによってサポートされているか否かを検出するための手段を含むことを特徴とするプロセッサ。
【請求項８】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段が、命令によって要求されるリソースのリストを各利用可能なハードウエアスレッド上の前記リソースと比較することを特徴とする請求項７に記載のマルチスレッド式プロセッサ。
【請求項９】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段における前記判断は、各クロックサイクルで行われることを特徴とする請求項８に記載のマルチスレッド式プロセッサ。
【請求項１０】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段は、それが命令を実行すべきでないと判断した場合に事前復号手段においてフラグを発生させることを特徴とする請求項８又は請求項９に記載のマルチスレッド式プロセッサ。
【請求項１１】
前記事前復号手段は、前記命令が利用可能でないことを指示するために前記フラグを命令スケジューラーに通すことを特徴とする請求項１０に記載のマルチスレッド式プロセッサ。
【請求項１２】
各ハードウエアスレッドが、命令フェッチ手段、事前復号命令を記憶するためのレジスタ段、及び命令事後復号手段を含み、各レジスタ段が、命令を該命令事後復号手段に提供する命令スケジューラーに連結されることを特徴とする請求項７に記載のマルチスレッド式プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のハードウエアスレッドを備えたマルチスレッド式データプロセッサを構成する方法に関し、かつマルチスレッド式マイクロプロセッサ上で命令を実行する方法及び装置に関する。
【背景技術】
【０００２】
本発明者の英国特許第２３１１８８２号明細書は、その内容が引用により本明細書に組み込まれ、マルチスレッド式プロセッサシステムを説明している。
【０００３】
この早期の特許は、コプロセッサポートも組み込む複数のハードウエアスレッドを備えたシステムを説明している。このシステムでは、スレッドの全ては、それらの全てが機能の同じセット及びこれらに利用可能な同じリソースを有する点で同質である。様々なプロセッサは、プロセッサをそれが最も標準のＲＩＳＣプロセッサのように作動するがＤＳＰプロセッサに共通の機能も組み込むように改造することにより、このシステムの基礎の上に構築される。
【０００４】
図１に示すのは、ＧＢ２３１１８８２に説明するタイプのマルチスレッド式マイクロプロセッサコアである。このマイクロプロセッサは、スレッドが１組の共通ハードウエア上で実行される命令の個別のストリームであるいくつかのスレッドの１つからパイプラインに出すことができる命令スケジューラーと共に、いくつかの演算パイプライン（例えば、データユニット（５）及びアドレスユニット（４））から構成される。特に注意すべきは、スレッドが一部の個別のリソースを有し、最も重要なことは、各スレッドが、全てがそれ自体のための１組のレジスタを有するという事実である。
【０００５】
一般的に、複数のスレッドを備えたデバイスを作る場合、１つのスレッドに対する回路が設計され、次に、この回路が他のスレッドの全てに対して複製されることになる。当該の回路は、図で（２）で示すスレッド命令フェッチ、復号、及びスケジューリング構成要素、及びアドレス（４）及びデータユニット（５）に示すレジスタの実施を含む。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】英国特許第２３１１８８２号明細書
【特許文献２】ＧＢ２３１１８８２
【発明の概要】
【課題を解決するための手段】
【０００７】
本発明の１つの態様の実施形態は、意図されたアプリケーションが、スレッドの全てが同じ機能の全てを有することを要求しない複数のスレッドを備えたマイクロプロセッサを構築する問題に対処する。それは、ハードウエアを個々のハードウエアスレッドに追加及び取り除くことが可能であり、同時に依然としてこれらのスレッドを統一されたプロセッサアーキテクチャに共存させることを可能にするシステムを提供する。
【０００８】
自由な発想で、ハードウエアスレッドの全てが正確に同じようなマルチスレッド式プロセッサを設計することは最も明らか（及び普通）である。しかし、多くのプロセッサにおいて異なるスレッドは異なることを行い、一部のスレッドは、他のものよりも多くを行わなくてはならない。例えば、１つのスレッドは、作業の大部分を行う場合があり、一方、別のものは、ディスプレイパイプラインの管理を処理する軽い負荷を有する。
【０００９】
一部のスレッドは、他よりも多くの処理機能を要求する場合がある。例えば、ＤＡＢ無線「システムオンチップ（ＳｏＣ）」を作る場合、一部のスレッドは、無線又はオーディオ信号を復号するのに必要なＤＳＰを実行することができ、一方、他のスレッドは、ユーザインタフェースを実行することができる。したがって、スレッドに関連付けられたゲートが最適化された場合、ハードウエアブロックの領域及び電力要件の両方を最適化することができる。
【００１０】
１組の最小ハードウエア要件まで既存のスレッドを切り落とすことに加えて、システムの残りの機能を超えて一部のスレッドを拡張することも望ましい。例えば、スレッドには、異なる命令セット又は全く異なるマイクロプロセッサ（例えば、ｘ８６、ＡＲＭなど）からの命令セットを一緒にサポートするように要求することができる。
【００１１】
したがって、全てのスレッドが１組の機能を有する所定の開始ポイントから、一部のスレッドがその領域を低減する機能を減ずるか又は他のスレッドの機能を上げる（開始ポイントよりも）ように望む場合があると考えられる。
【００１２】
本発明の実施形態によると、マイクロプロセッサを複数のハードウエアスレッドによって構築することができるが、これらのハードウエアスレッドの全てが同じである必要はなく、したがって、一部は、異なる命令セット、レジスタセット、又は他の機能を有する場合がある。これは、単一のプロセッサコア内に複数のスレッドを構築することを超えたステップであり、ハードウエアの低減及び／又は適切な場合にハードウエアの追加の両方をもたらす。
【００１３】
スレッドをその全スレッド開始ポイントよりも機能を低下させる時に、取り除かれるハードウエアは、一般的に、スレッド特定のレジスタ及び命令復号器の一部の大きなセグメントなどであることになる。しかし、全スレッドハードウエアに対して許容されたソフトウエアが、縮小されたスレッドが組み込まない機能をそれが使用するのでその時点で違法であるかを検出するために、ハードウエアを追加する必要があることになる。これらのエラーを検出するためにこのスレッドによってサポートされない命令を検出する付加的なハードウエアを命令復号器に追加すべきである。次に、このハードウエアは、オペレーティングシステム又はソフトウエアスタックが適切なアクションを取ることができるように、ソフトウエアによって処理することができる例外を提起する必要があることになる。適切なアクションは、命令が、ソフトウエアにおけるこのスレッド上だけで現在違法であることを指示する段階、及びソフトウエアの作者にそれがこのスレッド上で実行できないことを通知するためにデバッガにエラーコードを送り返す段階を含む。
【００１４】
例えば、２種類のスレッドが異なるＳｏＣで使用されている。スレッドのこれらのタイプは、「ＤＳＰ」及び「汎用」である。ＤＳＰ及び／又はＲＩＳＣ（縮小命令セットコンピュータ）命令を実行することができるプロセッサでは、「ＤＳＰ」スレッドは、命令の両方の種類を実行することができる全スレッドの例であるが、「汎用」スレッドは、ＲＩＳＣ命令セットを実行することだけが許可されている縮小スレッドである。したがって、「汎用」スレッドは、スレッドがＤＳＰ機能を使用しようにと試みた時を検出し、かつこの試みに応答して例外を提起するためにそれらの命令復号器に追加されたハードウエアを有する。
【００１５】
第１のインスタンスでは、スレッドの一部の領域を低減することにより、マルチスレッド式マイクロプロセッサの全体的なシリコン領域を低減することが望ましい。スレッドの領域の大きな部分は、そのレジスタセット、すなわち、プログラムにおいて参照されるか又はそのコンパイラによって使用することができるレジスタのセットである。レジスタの半分を有するスレッドに対してレジスタファイルを構築することを選択するのは非常に単純であるが、これは、例えば、プログラムが、利用可能なレジスタセットにそれ以上適合しなくなったスレッド上で実行される場合に対処すべき一部の問題を残す。これらの問題は、利用可能なリソース内に適合しないプログラムを検出し、かつこれらの問題に対する例外を提起するこれらの低減された領域スレッドのための回路の追加をもたらす。
【図面の簡単な説明】
【００１６】
【図１】上述のようなマルチスレッド式プロセッサを示すブロック図である。
【図２】マルチスレッド式プロセッサを示す更に別のブロック図である。
【図３】命令に対する命令パイプラインを通過する様々な機能を示す図である。
【図４】スレッド上の実行ユニットを示すブロック図である。
【図５】命令スケジューラー及びそれへの接続を示すブロック図である。
【図６】本発明の実施形態における異なる機能のスレッドをサポートするのに必要なハードウエアの差異の例を示す図である。
【発明を実施するための形態】
【００１７】
マイクロプロセッサのようなデータ管理システムは、任意的に、同じハードウエアで実行される命令の１つよりも多いストリームをサポートすることができる。このようなシステムは、「マルチスレッド式」と考えられる。上記に引用したこのようなシステムの例が図１に示されている。
【００１８】
１に示すように、このようなシステムは、１つ又はそれよりも多くの命令フェッチ及び復号ユニット２、マルチスレッドの命令の中から選択する単一共通命令スケジューラー１、いくつかの可能な実行ユニット４及び５（例えば、アドレスユニット、データユニット）、及び恐らく１つ又はそれよりも多くのキャッシュから構成される。一般的に、このようなシステムは、共通論理、例えば、実行ユニット、及び毎スレッド論理、例えば、レジスタセットに分割されることになる。実行パイプラインのような論理の多くが共有されるので、スレッドの最も明白な構成は、これらが全て同じ論理から構築されるということである。ここで、本発明者は、このような機械内の異なるスレッドが異なる論理から構築されるようにするという問題に対処し、したがって、機能の異なるレベルを可能にすることができる。
【００１９】
基本的に、プロセッサは、システム（２）における異なるハードウエアスレッドの全てを仲裁する命令スケジューラー（１）から構成される。これらの命令は、キャッシュ及びＭＭＵ（３）、実行ユニット（４及び５）、及びレジスタ（６）のようないくつかの共通リソースをターゲットとする。このプロセッサがＤＳＰオペレーションをサポートする場合、組込みＤＳＰ  ＲＡＭ及びアキュムレータのようなＤＳＰ機能が、実行ユニット（５）に構築されることになる。
【００２０】
１に示すようなマルチスレッド式データ管理システムは、通常、全ての命令がそれを通じて移動する１つ又はそれよりも多くのパイプラインを有することになり、このようなパイプラインの例が図３に示されている。この第１段は、命令フェッチ７及び次に命令復号８であり、これらは、図２の命令フェッチ及び復号ユニット２によって実行される。次に、オペランドフェッチ９、命令のＡＬＵ処理１０、及び次に宛先への書込みの段階１１が続く。
【００２１】
本発明のこの実施形態では、本発明のシステムは、ある一定のスレッド特定の機能（例えば、所定のスレッドに対するマイクロプロセッサレジスタ）、並びにある一定のスレッド共通機能（例えば、共有レジスタ及び実行ユニットＡＬＵ自体）をその各々が組み込むいくつかの実行ユニットを組み込んでいる。実行ユニットの例が図４に示されている。
【００２２】
図４から分るように、実行ユニットは、図４の項目１３、１４、及び１５が、図３において９、１０、及び１１としてマーク付けされているパイプライン段、すなわち、オペランドフェッチ１２、ＡＬＵ１４、及び出力レジスタ１５との関係を維持するようにパイプライン化される。更に、実行ユニットが、ＡＬＵパイプラインに関連付けられた局所化レジスタファイル１２を含むことが分る。レジスタファイルは、スレッドの全て（ｇ）及び一部のスレッド特定のレジスタ（ｔ）によってグローバルに共有されるいくつかのレジスタから構成される。本発明のこの実施形態では、レジスタ毎スレッドの数を様々なスレッドにおいて完全に異なるものにすることができる。更に、図２の項目５に示すように、本発明の実施形態は、標準的なマイクロプロセッサ機能及びＤＳＰ機能の両方をサポートすることができる。この実施形態は、基本及びＤＳＰ機能へのアクセスに関して様々な機能の考えを組み込んでいる。
【００２３】
マルチスレッド式マイクロプロセッサは、演算パイプライン及び恐らくスレッド特定のリソースのセットと組み合わせたキャッシュインフラストラクチャーのような共通プラットフォームから構成される。第１の位置では、各スレッドは、共有命令スケジューラーに呈示するための命令データを取得するための手段を要求する。これは、命令復号ハードウエアが後に続くキャッシュ又は組込みメモリから命令をフェッチするためのエンジンを含む。ここで考えられる特定的な例では、命令復号が、２つの部分、すなわち、事前復号及び事後復号に分割される。命令事前復号は、要求しているリソースを判断するために次の命令を調べることに関係する。リソースのこのリストは、スレッドがそのサイクルの実行に適するか否かを判断するために、いずれの所定のサイクルでも各ハードウエアスレッドで利用可能なリソースのリストに対して適合させることができる。命令事後復号は、可能なターゲットユニットの各々に送信するのに適する制御構造を形成するためのイッシューとしてマーク付けされている命令と協働することができる。
【００２４】
マルチスレッド命令スケジューリングは、所定のサイクルにおいて命令を出せるか否かを各命令スレッドから情報を取得し、次に、最も単純なものはラウンド−ロビン仲裁であり、最も複雑なものは動的な優先順位付けであるといういくつかの規則のいずれか１つに基づいて優勢イシュアを取り上げることによって機能する。この構成の一部は、図５に示されている。
【００２５】
図５は、３つのスレッド、すなわち、スレッド０、１、及びｎから命令を受信する命令スケジューラー２０を示している。
【００２６】
様々なスレッドに対する命令は、命令フェッチユニット２２によってフェッチされ、命令復号器及びリソースインターロック２４によって命令スケジューラー２０に送信される。命令は、命令ＲＡＭ２６から及び命令キャッシュ２８から優先順位アービター３０を使用してフェッチされる。
【００２７】
主な目的は、要求するリソースに適合するように特定のスレッドのサイズをスケーリングし、それが使用されるタスクを実行することができることである。例えば、複雑なシステムにおける１つのスレッドは、オペレーティングシステムを実行することに関わることができ、別のスレッドは、ユーザと対話することに関わることができ、別のスレッドは、ある一定のハードウエアリソース又はインタフェースを管理することに関わることができる。
【００２８】
スレッドがその目的に適合するように、セービングを実行することができる。例えば、１つのスレッドが、ある圧縮されたオーディオデータの復号のようなＤＳＰアルゴリズムを実行している場合、マイクロプロセッサのＤＳＰ機能の全てを使用することを要求することができるが、スレッドがオペレーティングシステムを実行しているか又はユーザを扱っている場合、汎用「Ｃ」プログラムの実行を要求できるだけで、デバイスのＤＳＰリソースのいずれの使用も決して要求することはない。この状況では、スレッドの必要性に適合するようにスレッドに利用可能なハードウエアリソースをスケーリングすることができる。例えば、ＤＳＰスレッドは、ＤＳＰプログラマーがどの時間にも（ソフトウエアパイプラインを通じて）フライト中により多くのデータ項目を維持することができるようにそのレジスタ（ｔ）ファイルに余分のレジスタを許容することができ、また、図１から分るように、ＤＳＰスレッドは、ＤＳＰ  ＲＡＭのような余分のリソースを有することができる。
【００２９】
リソースのこれらの種類をスケーリングしてデバイスを構築することだけでは十分でないことを理解することは重要である。マルチスレッド式マイクロプロセッサは、各スレッドが、実行される命令をそこからフェッチする独自のプログラムカウンタを有するように設計される。非ＤＳＰスレッドが、ＤＳＰプログラムで指示されたそのプログラムカウンタを有する場合、スレッドは、プログラムを実行するのに必要なリソースの全てを持たないので、プログラムが正確に作動する可能性は低い。
【００３０】
様々な機能のスレッドをサポートするのに必要なハードウエアの差異が図６に示されている。
【００３１】
これは、ＤＳＰスレッド及び非ＤＳＰスレッドを示している。ＤＳＰスレッド３２及び非ＤＳＰスレッド３４は、マルチスレッド命令スケジューラー３６に同時に命令を提供する。
【００３２】
ＤＳＰスレッド３２は、ハードウエアループサポートを含む命令フェッチユニット３８を有する。これは、命令事前復号ユニット４０に命令を提供し、次に、命令事前復号ユニット４０は、命令をレジスタ段４２に、次に、マルチスレッド命令スケジューラー３６に通す。非ＤＳＰスレッド３４は、類似の命令フェッチユニット４４を有するが、ハードウエアループサポートはない。これは、命令がそのスレッド上で実行することができるか否かを判断するための例外検出を含む命令事前復号ユニット４６に命令を提供し、次に、復号された命令を必要に応じてマルチスレッド命令スケジューラー３６にそこから命令を提供することができるレジスタ段４８に送信する。３６のスケジューラーを通過した命令は、命令事後復号ユニット５０に送られる。
【００３３】
図６から分るように、第１の基本的な変更は、非ＤＳＰスレッドが、このスレッドが必要なリソースを持たない時にこのスレッドによってサポートされない命令を検出するために余分の事前復号回路を必要とすることである。例えば、命令は、このスレッドに対して利用可能でないＤＳＰ  ＲＡＭの使用を要求することができ、代替的に、プログラムは、拡張されたレジスタセットを要求することができる。非ＤＳＰスレッドにおいて実行されるプログラムがこれらの機能を含む場合では、プログラムは、命令が違法であり、かつ実行してはならないことを指示する例外検出ユニットを通じて事前復号にフラグを発生させることになる。この違法命令フラグは、復号レジスタ段を通過し、スレッドがオフ（無効化）にされるか、又はソフトウエアにエラーの原因を判断させて最も適用可能なあらゆるアクションを取らせることができる違法命令に対する中断が提起されるかのいずれかの後で、このスレッドがこのサイクルを実行するために利用可能でないことを命令スケジューラーに指示する。最も極端な例では、非ＤＳＰスレッドが余分の命令を実行し、かつＤＳＰスレッドからの予測されるレジスタ又はＤＳＰ  ＲＡＭリソースの代わりにメモリを使用することにより、ＤＳＰスレッドの機能をエミュレートすることができる。これは、ＤＳＰスレッドで直接実行することに比べた時にこのようにＤＳＰプログラムを実行することが極めて非効率的であるので、最も一般的な手法ではないであろう。
【００３４】
図６から命令フェッチ及び復号領域における非ＤＳＰスレッドのためのハードウエアを領域に対して最適化することができることに注意することができる。この場合、このスレッドでサポートされないＤＳＰ機能セットの一部として分類することができるＤＳＰスレッドのためのハードウエアループを自動的にフェッチするのに使用されるハードウエアを取り除くことができる。一般的に、このタイプの機能は、命令フェッチを管理し、かつループがサービス提供された時にカウントを減分するための論理と共にループアドレス及びループカウントのための領域を必要とする。
【００３５】
演算パイプライン自体において、各スレッドの機能は、各スレッドに対して構築するためのリソースを判断するために使用することができる。一例として、様々なサイズのレジスタファイルをＤＳＰ及び非ＤＳＰスレッドに対して（様々な演算パイプラインの各々において）構築することができ、また、ＤＳＰ  ＲＡＭ及びワイドアキュムレータレジスタのようなＤＳＰ独自の機能をこれらの領域からゼロのような固定データパターンを常に戻す他のスレッドによって必要なスレッドに対してのみ構築することができる。
【００３６】
与えた特定の例は、ＤＳＰ機能を取り除くことによって縮小される一部のスレッドを備えたＤＳＰ及びＲＩＳＣ機能の両方が可能であるシステムのためのものである。代替として、様々なスレッドが様々な命令セットに対処することができるという可能性を考えることである。例えば、３２ビットＲＩＳＣマイクロプロセッサが、少量のメモリに適合するようにプログラムを圧縮することを可能にするので、より短い代替物によってこれらの命令セットを増強することは一般的である。しかし、代替の命令セットに対するサポートを追加することは、異なる命令フェッチ戦略を要求し、いくつかの小さな命令から大きな命令を形成するための余分な命令復号段のためにスレッドに対するより多くの領域を必要とする場合がある。この場合、デバイスの領域がその意図されたアプリケーションに適合するように制御することができるオプションとしてより小さな命令セットをサポートする機能を作ることが望ましい。
【００３７】
この考えの更に別の拡張は、スレッドが全く異なる命令セットで実行することができるということである。例えば、１つのスレッドは、マイクロプロセッサのための本来の命令セットを実行することができ、別のスレッドは、全く異なる命令セット、例えば、所定の機械アーキテクチャにおけるＪａｖａ（登録商標）バイトコードを実行するように作り変えられたものを使用することができる。
【００３８】
また、例で与えたＤＳＰ／非ＤＳＰ機能を超えて、ハードウエアの他の領域をスレッド特定にすることができる。マイクロプロセッサが浮動小数点ハードウエアを組み入れた場合、これは、スレッド毎に任意的とすることができる。ここでもまた、これは、領域に対して部分的に行われるが、この場合、浮動小数点ハードウエアはより複雑である場合があり、既存の演算は、使用される場合に低クロック速度をもたらす。可能性としてスレッドが浮動小数点ハードウエアへのアクセスを持たない場合、そのクロック速度は、ハードウエア浮動小数点を可能にする同程度のスレッドに比べて高く維持され、かつ高く留まることができる。
【符号の説明】
【００３９】
３２、３４  複数のハードウエアスレッド
３６  命令を実行するために利用可能であると判断されたスレッドが、その命令によって要求される利用可能なハードウエアリソースを有するか否かを判断する段階
３８、４４  複数の命令のストリームを受信する段階
４０、４６  どのハードウエアスレッドが実行のための命令を受信することができるかを判断する段階
５０  判断の結果に基づいて命令を実行する段階
【図１】
0005666473.tif 000002
【図２】
0005666473.tif 000003
【図３】
0005666473.tif 000004
【図４】
0005666473.tif 000005
【図５】
0005666473.tif 000006
【図６】
0005666473.tif 000007