(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5666473
(24)【登録日】2014年12月19日
(45)【発行日】2015年2月12日
(54)【発明の名称】マルチスレッド式データ処理システム
(51)【国際特許分類】
G06F 9/38 20060101AFI20150122BHJP
G06F 9/30 20060101ALI20150122BHJP
【FI】
G06F9/38 370B
G06F9/30 310B
【請求項の数】12
【全頁数】11
(21)【出願番号】特願2011-545792(P2011-545792)
(86)(22)【出願日】2010年1月18日
(65)【公表番号】特表2012-515386(P2012-515386A)
(43)【公表日】2012年7月5日
(86)【国際出願番号】GB2010000062
(87)【国際公開番号】WO2010082032
(87)【国際公開日】20100722
【審査請求日】2013年1月17日
(31)【優先権主張番号】0900769.1
(32)【優先日】2009年1月16日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】501176037
【氏名又は名称】イマジネイション テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100092093
【弁理士】
【氏名又は名称】辻居 幸一
(74)【代理人】
【識別番号】100082005
【弁理士】
【氏名又は名称】熊倉 禎男
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100143823
【弁理士】
【氏名又は名称】市川 英彦
(72)【発明者】
【氏名】ウェバー アンドリュー
【審査官】
三坂 敏夫
(56)【参考文献】
【文献】
特開2006−114036(JP,A)
【文献】
特開2003−015868(JP,A)
【文献】
特表2008−501191(JP,A)
【文献】
特表2001−516918(JP,A)
【文献】
国際公開第2004/012079(WO,A1)
【文献】
国際公開第2007/130798(WO,A1)
【文献】
特表2004−520650(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
異なるハードウエアリソースを備えた複数のハードウエアスレッドを有するマルチスレッド式プロセッサ上で命令を実行する方法であって、
複数のハードウエアスレッド上の実行のための命令の複数のストリームを受信する段階と、
どのハードウエアスレッドが実行のための命令を受信することができるかを判断する段階と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する段階と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階における前記判断の結果に基づいて前記命令を実行する段階と、
を含み、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階が、各ハードウエアスレッド上の命令を事前復号すること及び命令が前記ハードウエアスレッドによってサポートされていることを検出することを特徴とする方法。
【請求項2】
スレッドが命令によって要求される前記ハードウエアリソースを有するか否かを判断する前記段階は、該命令によって要求される該リソースを判断する段階と、これらを各利用可能なハードウエアスレッド上のリソースに対して比較する段階とを含むことを特徴とする請求項1に記載の方法。
【請求項3】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階は、各クロックサイクルで実施されることを特徴とする請求項2に記載の方法。
【請求項4】
前記事前復号することは、命令復号処理の事前復号部分で実施されることを特徴とする請求項2又は請求項3に記載の方法。
【請求項5】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断する前記段階の結果が命令を実行すべきではないという結果である場合に、事前符号化部分でフラグを発生させる段階を含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記命令がそのサイクルで実行するのに利用可能ではないことを指示するために前記フラグを命令スケジューラーに通す段階を含むことを特徴とする請求項5に記載の方法。
【請求項7】
異なるハードウエアリソースを備えた複数のハードウエアスレッド上で命令を実行するためのマルチスレッド式プロセッサであって、
複数のハードウエアスレッド上で実行するための命令の複数のストリームを受信するための手段と、
どのハードウエアスレッドが実行のための命令を受信することができるかを判断するための手段と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための手段と、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段における前記判断の結果に基づいて前記命令を実行するための手段と、
を含み、
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段が、各ハードウエアスレッド上の命令を事前復号するための手段、及び命令が前記ハードウエアスレッドによってサポートされているか否かを検出するための手段を含むことを特徴とするプロセッサ。
【請求項8】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段が、命令によって要求されるリソースのリストを各利用可能なハードウエアスレッド上の前記リソースと比較することを特徴とする請求項7に記載のマルチスレッド式プロセッサ。
【請求項9】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段における前記判断は、各クロックサイクルで行われることを特徴とする請求項8に記載のマルチスレッド式プロセッサ。
【請求項10】
命令を実行するのに利用可能であると判断されたハードウエアスレッドが、その命令によって要求されるハードウエアリソースを有するか否かを判断するための前記手段は、それが命令を実行すべきでないと判断した場合に事前復号手段においてフラグを発生させることを特徴とする請求項8又は請求項9に記載のマルチスレッド式プロセッサ。
【請求項11】
前記事前復号手段は、前記命令が利用可能でないことを指示するために前記フラグを命令スケジューラーに通すことを特徴とする請求項10に記載のマルチスレッド式プロセッサ。
【請求項12】
各ハードウエアスレッドが、命令フェッチ手段、事前復号命令を記憶するためのレジスタ段、及び命令事後復号手段を含み、各レジスタ段が、命令を該命令事後復号手段に提供する命令スケジューラーに連結されることを特徴とする請求項7に記載のマルチスレッド式プロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のハードウエアスレッドを備えたマルチスレッド式データプロセッサを構成する方法に関し、かつマルチスレッド式マイクロプロセッサ上で命令を実行する方法及び装置に関する。
【背景技術】
【0002】
本発明者の英国特許第2311882号明細書は、その内容が引用により本明細書に組み込まれ、マルチスレッド式プロセッサシステムを説明している。
【0003】
この早期の特許は、コプロセッサポートも組み込む複数のハードウエアスレッドを備えたシステムを説明している。このシステムでは、スレッドの全ては、それらの全てが機能の同じセット及びこれらに利用可能な同じリソースを有する点で同質である。様々なプロセッサは、プロセッサをそれが最も標準のRISCプロセッサのように作動するがDSPプロセッサに共通の機能も組み込むように改造することにより、このシステムの基礎の上に構築される。
【0004】
図1に示すのは、GB2311882に説明するタイプのマルチスレッド式マイクロプロセッサコアである。このマイクロプロセッサは、スレッドが1組の共通ハードウエア上で実行される命令の個別のストリームであるいくつかのスレッドの1つからパイプラインに出すことができる命令スケジューラーと共に、いくつかの演算パイプライン(例えば、データユニット(5)及びアドレスユニット(4))から構成される。特に注意すべきは、スレッドが一部の個別のリソースを有し、最も重要なことは、各スレッドが、全てがそれ自体のための1組のレジスタを有するという事実である。
【0005】
一般的に、複数のスレッドを備えたデバイスを作る場合、1つのスレッドに対する回路が設計され、次に、この回路が他のスレッドの全てに対して複製されることになる。当該の回路は、図で(2)で示すスレッド命令フェッチ、復号、及びスケジューリング構成要素、及びアドレス(4)及びデータユニット(5)に示すレジスタの実施を含む。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】英国特許第2311882号明細書
【特許文献2】GB2311882
【発明の概要】
【課題を解決するための手段】
【0007】
本発明の1つの態様の実施形態は、意図されたアプリケーションが、スレッドの全てが同じ機能の全てを有することを要求しない複数のスレッドを備えたマイクロプロセッサを構築する問題に対処する。それは、ハードウエアを個々のハードウエアスレッドに追加及び取り除くことが可能であり、同時に依然としてこれらのスレッドを統一されたプロセッサアーキテクチャに共存させることを可能にするシステムを提供する。
【0008】
自由な発想で、ハードウエアスレッドの全てが正確に同じようなマルチスレッド式プロセッサを設計することは最も明らか(及び普通)である。しかし、多くのプロセッサにおいて異なるスレッドは異なることを行い、一部のスレッドは、他のものよりも多くを行わなくてはならない。例えば、1つのスレッドは、作業の大部分を行う場合があり、一方、別のものは、ディスプレイパイプラインの管理を処理する軽い負荷を有する。
【0009】
一部のスレッドは、他よりも多くの処理機能を要求する場合がある。例えば、DAB無線「システムオンチップ(SoC)」を作る場合、一部のスレッドは、無線又はオーディオ信号を復号するのに必要なDSPを実行することができ、一方、他のスレッドは、ユーザインタフェースを実行することができる。したがって、スレッドに関連付けられたゲートが最適化された場合、ハードウエアブロックの領域及び電力要件の両方を最適化することができる。
【0010】
1組の最小ハードウエア要件まで既存のスレッドを切り落とすことに加えて、システムの残りの機能を超えて一部のスレッドを拡張することも望ましい。例えば、スレッドには、異なる命令セット又は全く異なるマイクロプロセッサ(例えば、x86、ARMなど)からの命令セットを一緒にサポートするように要求することができる。
【0011】
したがって、全てのスレッドが1組の機能を有する所定の開始ポイントから、一部のスレッドがその領域を低減する機能を減ずるか又は他のスレッドの機能を上げる(開始ポイントよりも)ように望む場合があると考えられる。
【0012】
本発明の実施形態によると、マイクロプロセッサを複数のハードウエアスレッドによって構築することができるが、これらのハードウエアスレッドの全てが同じである必要はなく、したがって、一部は、異なる命令セット、レジスタセット、又は他の機能を有する場合がある。これは、単一のプロセッサコア内に複数のスレッドを構築することを超えたステップであり、ハードウエアの低減及び/又は適切な場合にハードウエアの追加の両方をもたらす。
【0013】
スレッドをその全スレッド開始ポイントよりも機能を低下させる時に、取り除かれるハードウエアは、一般的に、スレッド特定のレジスタ及び命令復号器の一部の大きなセグメントなどであることになる。しかし、全スレッドハードウエアに対して許容されたソフトウエアが、縮小されたスレッドが組み込まない機能をそれが使用するのでその時点で違法であるかを検出するために、ハードウエアを追加する必要があることになる。これらのエラーを検出するためにこのスレッドによってサポートされない命令を検出する付加的なハードウエアを命令復号器に追加すべきである。次に、このハードウエアは、オペレーティングシステム又はソフトウエアスタックが適切なアクションを取ることができるように、ソフトウエアによって処理することができる例外を提起する必要があることになる。適切なアクションは、命令が、ソフトウエアにおけるこのスレッド上だけで現在違法であることを指示する段階、及びソフトウエアの作者にそれがこのスレッド上で実行できないことを通知するためにデバッガにエラーコードを送り返す段階を含む。
【0014】
例えば、2種類のスレッドが異なるSoCで使用されている。スレッドのこれらのタイプは、「DSP」及び「汎用」である。DSP及び/又はRISC(縮小命令セットコンピュータ)命令を実行することができるプロセッサでは、「DSP」スレッドは、命令の両方の種類を実行することができる全スレッドの例であるが、「汎用」スレッドは、RISC命令セットを実行することだけが許可されている縮小スレッドである。したがって、「汎用」スレッドは、スレッドがDSP機能を使用しようにと試みた時を検出し、かつこの試みに応答して例外を提起するためにそれらの命令復号器に追加されたハードウエアを有する。
【0015】
第1のインスタンスでは、スレッドの一部の領域を低減することにより、マルチスレッド式マイクロプロセッサの全体的なシリコン領域を低減することが望ましい。スレッドの領域の大きな部分は、そのレジスタセット、すなわち、プログラムにおいて参照されるか又はそのコンパイラによって使用することができるレジスタのセットである。レジスタの半分を有するスレッドに対してレジスタファイルを構築することを選択するのは非常に単純であるが、これは、例えば、プログラムが、利用可能なレジスタセットにそれ以上適合しなくなったスレッド上で実行される場合に対処すべき一部の問題を残す。これらの問題は、利用可能なリソース内に適合しないプログラムを検出し、かつこれらの問題に対する例外を提起するこれらの低減された領域スレッドのための回路の追加をもたらす。
【図面の簡単な説明】
【0016】
【
図1】上述のようなマルチスレッド式プロセッサを示すブロック図である。
【
図2】マルチスレッド式プロセッサを示す更に別のブロック図である。
【
図3】命令に対する命令パイプラインを通過する様々な機能を示す図である。
【
図4】スレッド上の実行ユニットを示すブロック図である。
【
図5】命令スケジューラー及びそれへの接続を示すブロック図である。
【
図6】本発明の実施形態における異なる機能のスレッドをサポートするのに必要なハードウエアの差異の例を示す図である。
【発明を実施するための形態】
【0017】
マイクロプロセッサのようなデータ管理システムは、任意的に、同じハードウエアで実行される命令の1つよりも多いストリームをサポートすることができる。このようなシステムは、「マルチスレッド式」と考えられる。上記に引用したこのようなシステムの例が
図1に示されている。
【0018】
1に示すように、このようなシステムは、1つ又はそれよりも多くの命令フェッチ及び復号ユニット2、マルチスレッドの命令の中から選択する単一共通命令スケジューラー1、いくつかの可能な実行ユニット4及び5(例えば、アドレスユニット、データユニット)、及び恐らく1つ又はそれよりも多くのキャッシュから構成される。一般的に、このようなシステムは、共通論理、例えば、実行ユニット、及び毎スレッド論理、例えば、レジスタセットに分割されることになる。実行パイプラインのような論理の多くが共有されるので、スレッドの最も明白な構成は、これらが全て同じ論理から構築されるということである。ここで、本発明者は、このような機械内の異なるスレッドが異なる論理から構築されるようにするという問題に対処し、したがって、機能の異なるレベルを可能にすることができる。
【0019】
基本的に、プロセッサは、システム(2)における異なるハードウエアスレッドの全てを仲裁する命令スケジューラー(1)から構成される。これらの命令は、キャッシュ及びMMU(3)、実行ユニット(4及び5)、及びレジスタ(6)のようないくつかの共通リソースをターゲットとする。このプロセッサがDSPオペレーションをサポートする場合、組込みDSP RAM及びアキュムレータのようなDSP機能が、実行ユニット(5)に構築されることになる。
【0020】
1に示すようなマルチスレッド式データ管理システムは、通常、全ての命令がそれを通じて移動する1つ又はそれよりも多くのパイプラインを有することになり、このようなパイプラインの例が
図3に示されている。この第1段は、命令フェッチ7及び次に命令復号8であり、これらは、
図2の命令フェッチ及び復号ユニット2によって実行される。次に、オペランドフェッチ9、命令のALU処理10、及び次に宛先への書込みの段階11が続く。
【0021】
本発明のこの実施形態では、本発明のシステムは、ある一定のスレッド特定の機能(例えば、所定のスレッドに対するマイクロプロセッサレジスタ)、並びにある一定のスレッド共通機能(例えば、共有レジスタ及び実行ユニットALU自体)をその各々が組み込むいくつかの実行ユニットを組み込んでいる。実行ユニットの例が
図4に示されている。
【0022】
図4から分るように、実行ユニットは、
図4の項目13、14、及び15が、
図3において9、10、及び11としてマーク付けされているパイプライン段、すなわち、オペランドフェッチ12、ALU14、及び出力レジスタ15との関係を維持するようにパイプライン化される。更に、実行ユニットが、ALUパイプラインに関連付けられた局所化レジスタファイル12を含むことが分る。レジスタファイルは、スレッドの全て(g)及び一部のスレッド特定のレジスタ(t)によってグローバルに共有されるいくつかのレジスタから構成される。本発明のこの実施形態では、レジスタ毎スレッドの数を様々なスレッドにおいて完全に異なるものにすることができる。更に、
図2の項目5に示すように、本発明の実施形態は、標準的なマイクロプロセッサ機能及びDSP機能の両方をサポートすることができる。この実施形態は、基本及びDSP機能へのアクセスに関して様々な機能の考えを組み込んでいる。
【0023】
マルチスレッド式マイクロプロセッサは、演算パイプライン及び恐らくスレッド特定のリソースのセットと組み合わせたキャッシュインフラストラクチャーのような共通プラットフォームから構成される。第1の位置では、各スレッドは、共有命令スケジューラーに呈示するための命令データを取得するための手段を要求する。これは、命令復号ハードウエアが後に続くキャッシュ又は組込みメモリから命令をフェッチするためのエンジンを含む。ここで考えられる特定的な例では、命令復号が、2つの部分、すなわち、事前復号及び事後復号に分割される。命令事前復号は、要求しているリソースを判断するために次の命令を調べることに関係する。リソースのこのリストは、スレッドがそのサイクルの実行に適するか否かを判断するために、いずれの所定のサイクルでも各ハードウエアスレッドで利用可能なリソースのリストに対して適合させることができる。命令事後復号は、可能なターゲットユニットの各々に送信するのに適する制御構造を形成するためのイッシューとしてマーク付けされている命令と協働することができる。
【0024】
マルチスレッド命令スケジューリングは、所定のサイクルにおいて命令を出せるか否かを各命令スレッドから情報を取得し、次に、最も単純なものはラウンド−ロビン仲裁であり、最も複雑なものは動的な優先順位付けであるといういくつかの規則のいずれか1つに基づいて優勢イシュアを取り上げることによって機能する。この構成の一部は、
図5に示されている。
【0025】
図5は、3つのスレッド、すなわち、スレッド0、1、及びnから命令を受信する命令スケジューラー20を示している。
【0026】
様々なスレッドに対する命令は、命令フェッチユニット22によってフェッチされ、命令復号器及びリソースインターロック24によって命令スケジューラー20に送信される。命令は、命令RAM26から及び命令キャッシュ28から優先順位アービター30を使用してフェッチされる。
【0027】
主な目的は、要求するリソースに適合するように特定のスレッドのサイズをスケーリングし、それが使用されるタスクを実行することができることである。例えば、複雑なシステムにおける1つのスレッドは、オペレーティングシステムを実行することに関わることができ、別のスレッドは、ユーザと対話することに関わることができ、別のスレッドは、ある一定のハードウエアリソース又はインタフェースを管理することに関わることができる。
【0028】
スレッドがその目的に適合するように、セービングを実行することができる。例えば、1つのスレッドが、ある圧縮されたオーディオデータの復号のようなDSPアルゴリズムを実行している場合、マイクロプロセッサのDSP機能の全てを使用することを要求することができるが、スレッドがオペレーティングシステムを実行しているか又はユーザを扱っている場合、汎用「C」プログラムの実行を要求できるだけで、デバイスのDSPリソースのいずれの使用も決して要求することはない。この状況では、スレッドの必要性に適合するようにスレッドに利用可能なハードウエアリソースをスケーリングすることができる。例えば、DSPスレッドは、DSPプログラマーがどの時間にも(ソフトウエアパイプラインを通じて)フライト中により多くのデータ項目を維持することができるようにそのレジスタ(t)ファイルに余分のレジスタを許容することができ、また、
図1から分るように、DSPスレッドは、DSP RAMのような余分のリソースを有することができる。
【0029】
リソースのこれらの種類をスケーリングしてデバイスを構築することだけでは十分でないことを理解することは重要である。マルチスレッド式マイクロプロセッサは、各スレッドが、実行される命令をそこからフェッチする独自のプログラムカウンタを有するように設計される。非DSPスレッドが、DSPプログラムで指示されたそのプログラムカウンタを有する場合、スレッドは、プログラムを実行するのに必要なリソースの全てを持たないので、プログラムが正確に作動する可能性は低い。
【0030】
様々な機能のスレッドをサポートするのに必要なハードウエアの差異が
図6に示されている。
【0031】
これは、DSPスレッド及び非DSPスレッドを示している。DSPスレッド32及び非DSPスレッド34は、マルチスレッド命令スケジューラー36に同時に命令を提供する。
【0032】
DSPスレッド32は、ハードウエアループサポートを含む命令フェッチユニット38を有する。これは、命令事前復号ユニット40に命令を提供し、次に、命令事前復号ユニット40は、命令を
レジスタ段42に、次に、マルチスレッド命令スケジューラー36に通す。非DSPスレッド34は、類似の命令フェッチユニット44を有するが、ハードウエアループサポートはない。これは、命令がそのスレッド上で実行することができるか否かを判断するための例外検出を含む命令事前復号ユニット46に命令を提供し、次に、復号された命令を必要に応じてマルチスレッド命令スケジューラー36にそこから命令を提供することができる
レジスタ段48に送信する。36のスケジューラーを通過した命令は、命令事後復号ユニット50に送られる。
【0033】
図6から分るように、第1の基本的な変更は、非DSPスレッドが、このスレッドが必要なリソースを持たない時にこのスレッドによってサポートされない命令を検出するために余分の事前復号回路を必要とすることである。例えば、命令は、このスレッドに対して利用可能でないDSP RAMの使用を要求することができ、代替的に、プログラムは、拡張されたレジスタセットを要求することができる。非DSPスレッドにおいて実行されるプログラムがこれらの機能を含む場合では、プログラムは、命令が違法であり、かつ実行してはならないことを指示する例外検出ユニットを通じて事前復号にフラグを発生させることになる。この違法命令フラグは、復号レジスタ段を通過し、スレッドがオフ(無効化)にされるか、又はソフトウエアにエラーの原因を判断させて最も適用可能なあらゆるアクションを取らせることができる違法命令に対する中断が提起されるかのいずれかの後で、このスレッドがこのサイクルを実行するために利用可能でないことを命令スケジューラーに指示する。最も極端な例では、非DSPスレッドが余分の命令を実行し、かつDSPスレッドからの予測されるレジスタ又はDSP RAMリソースの代わりにメモリを使用することにより、DSPスレッドの機能をエミュレートすることができる。これは、DSPスレッドで直接実行することに比べた時にこのようにDSPプログラムを実行することが極めて非効率的であるので、最も一般的な手法ではないであろう。
【0034】
図6から命令フェッチ及び復号領域における非DSPスレッドのためのハードウエアを領域に対して最適化することができることに注意することができる。この場合、このスレッドでサポートされないDSP機能セットの一部として分類することができるDSPスレッドのためのハードウエアループを自動的にフェッチするのに使用されるハードウエアを取り除くことができる。一般的に、このタイプの機能は、命令フェッチを管理し、かつループがサービス提供された時にカウントを減分するための論理と共にループアドレス及びループカウントのための領域を必要とする。
【0035】
演算パイプライン自体において、各スレッドの機能は、各スレッドに対して構築するためのリソースを判断するために使用することができる。一例として、様々なサイズのレジスタファイルをDSP及び非DSPスレッドに対して(様々な演算パイプラインの各々において)構築することができ、また、DSP RAM及びワイドアキュムレータレジスタのようなDSP独自の機能をこれらの領域からゼロのような固定データパターンを常に戻す他のスレッドによって必要なスレッドに対してのみ構築することができる。
【0036】
与えた特定の例は、DSP機能を取り除くことによって縮小される一部のスレッドを備えたDSP及びRISC機能の両方が可能であるシステムのためのものである。代替として、様々なスレッドが様々な命令セットに対処することができるという可能性を考えることである。例えば、32ビットRISCマイクロプロセッサが、少量のメモリに適合するようにプログラムを圧縮することを可能にするので、より短い代替物によってこれらの命令セットを増強することは一般的である。しかし、代替の命令セットに対するサポートを追加することは、異なる命令フェッチ戦略を要求し、いくつかの小さな命令から大きな命令を形成するための余分な命令復号段のためにスレッドに対するより多くの領域を必要とする場合がある。この場合、デバイスの領域がその意図されたアプリケーションに適合するように制御することができるオプションとしてより小さな命令セットをサポートする機能を作ることが望ましい。
【0037】
この考えの更に別の拡張は、スレッドが全く異なる命令セットで実行することができるということである。例えば、1つのスレッドは、マイクロプロセッサのための本来の命令セットを実行することができ、別のスレッドは、全く異なる命令セット、例えば、所定の機械アーキテクチャにおけるJava(登録商標)バイトコードを実行するように作り変えられたものを使用することができる。
【0038】
また、例で与えたDSP/非DSP機能を超えて、ハードウエアの他の領域をスレッド特定にすることができる。マイクロプロセッサが浮動小数点ハードウエアを組み入れた場合、これは、スレッド毎に任意的とすることができる。ここでもまた、これは、領域に対して部分的に行われるが、この場合、浮動小数点ハードウエアはより複雑である場合があり、既存の演算は、使用される場合に低クロック速度をもたらす。可能性としてスレッドが浮動小数点ハードウエアへのアクセスを持たない場合、そのクロック速度は、ハードウエア浮動小数点を可能にする同程度のスレッドに比べて高く維持され、かつ高く留まることができる。
【符号の説明】
【0039】
32、34 複数のハードウエアスレッド
36 命令を実行するために利用可能であると判断されたスレッドが、その命令によって要求される利用可能なハードウエアリソースを有するか否かを判断する段階
38、44 複数の命令のストリームを受信する段階
40、46 どのハードウエアスレッドが実行のための命令を受信することができるかを判断する段階
50 判断の結果に基づいて命令を実行する段階