(57)【要約】【解決手段】マイクロプロセッサに使用可能な複数の命令セットの間で選択を行うための方法と装置が提供されている。命令取出しアドレスが供給される。命令取出しアドレスの少なくとも１つの所定のビットを使用して、命令セットの間で選択が行われる。命令セットが選択されると、命令が取り出され、命令セットに適切な復号方式で復号される。【選択図】図１【特許請求の範囲】
【請求項１】
マイクロプロセッサに使用可能な複数の命令セットの間で選択を行うための方法であって、
命令取出しアドレスを供給する段階と、
前記命令取出しアドレスの少なくとも１つの所定のビットの状態を判定する段階と、
前記判定の結果に基づいて前記命令セットの間で選択する段階と、
前記選択された命令セットから命令を取り出す段階と、
取り出された命令を、前記命令セットに適切な復号方式で復号する段階と、
前記復号された命令を実行に備えて供給する段階と、
を含む方法。
【請求項２】
前記選択する段階は、
それぞれがマルチプレクサに接続された出力を有する少なくとも２つのデコーダーに前記取り出された命令を供給する段階と、
前記マルチプレクサの出力を、前記命令取出しアドレスの少なくとも１つの所定のビットで選択する段階と、
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記命令セットの第１のものは、前記命令セットの第２のものよりも少ない数のビットを有する
ことを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記第１の命令セットは、前記第２の命令セットのサブセットであることを特徴とする請求項３に記載の方法。
【請求項５】
マイクロプロセッサに使用可能な複数の命令セットの間で選択を行うための装置であって、
命令取出しアドレスを供給するための手段と、
前記命令取出しアドレスの少なくとも１つの所定のビットの状態を判定するための手段と、
前記判定の結果に基づいて前記命令セットの間で選択するための手段と、
前記選択された命令セットから命令を取り出すための手段と、
前記取り出された命令を、前記命令セットに適切な復号方式で復号するための手段と、
前記復号された命令を実行に備えて供給するための手段と
を備えたことを特徴とする装置。
【請求項６】
前記選択するための手段は、
それぞれがマルチプレクサに接続された出力を有する少なくとも２つのデコーダーに前記取り出された命令を供給するための手段を備えており、
前記マルチプレクサは、選択入力を有しており、前記命令取出しアドレスの前記少なくとも１つの所定のビットを受け取り、前記命令取出しアドレスの前記少なくとも１つの所定のビットに基づいて出力を選択することができる
ことを特徴とする請求項５に記載の装置。
【請求項７】
前記命令セットの第１のものは、前記命令セットの第２のものよりも少ない数のビットを有する
ことを特徴とする請求項５又は６に記載の装置。
【請求項８】
前記第１の命令セットは、前記第２の命令セットのサブセットであることを特徴とする請求項７に記載の装置。
【請求項９】
マイクロプロセッサに使用可能な複数の命令セットの間で選択を行うための方法であって、
命令取出しアドレスを供給する段階と、
前記命令取出しアドレスの少なくとも１つの所定のビットの状態を判定する段階と、
前記判定の結果に基づいて前記命令セットの間で選択する段階と、
前記選択された命令セットから命令を取り出す段階と、
取り出された命令を、前記命令セットに適切な復号方式で復号する段階と、
前記復号された命令を実行に備えて供給する段階と、
を含み、
前記命令取出しアドレスの前記少なくとも１つの所定のビットは、途中まで前記命令取出しアドレスを通して配置されている
ことを特徴とする方法。
【請求項１０】
前記命令取出しアドレスの前記少なくとも１つの所定のビットは、最も重要でないビットからは間隔を空けて配置され、前記命令取出しアドレスの最も重要なビットからは複数のビットだけ間隔を空けて配置されている
ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記命令取出しアドレスは、３２ビットの命令取出しアドレスを備えており、２つの所定のビットが、前記命令取出しアドレスのビット２０と２３に配置されている
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
マイクロプロセッサに使用可能な複数の命令セットの間で選択を行うための装置であって、
命令取出しアドレスを供給するための手段と、
前記命令取出しアドレスの少なくとも１つの所定のビットの状態を判定するための手段と、
前記判定の結果に基づいて前記命令セットの間で選択するための手段と、
前記選択された命令セットから命令を取り出すための手段と、
前記取り出された命令を、前記命令セットに適切な復号方式で復号するための手段と、
前記復号された命令を実行に備えて供給するための手段と、
を備え、
前記命令取出しアドレスの前記少なくとも１つの所定のビットは、途中まで前記命令取出しアドレスを通して、最も重要でないビットからは間隔を空けて配置され、前記命令取出しアドレスの最も重要なビットからは複数のビットだけ間隔を空けて配置されている
ことを特徴とする装置。
【請求項１３】
前記命令取出しアドレスの少なくとも１つのビットは、最も重要でないビットからは間隔を空けて配置され、前記命令取出しアドレスの最も重要なビットからは複数のビットだけ間隔を空けて配置されている
ことを特徴とする請求項１２に記載の装置。
【請求項１４】
前記命令取出しアドレスビットは、３２ビットのワードであり、２つの所定のビットが、前記命令取出しアドレスのビット２０と２３に配置されている
ことを特徴とする請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサと、その様なプロセッサによって使用される命令セットに、特に、マルチスレッド式プロセッサとその命令セットに関する。
【背景技術】
【０００２】
我々の英国特許第ＧＢ−Ａ−２３１１８８２号には、マルチスレッド式プロセッサが記載されている。そこでは、単一の処理ユニットが、プロセッサで実行されることになる複数の処理スレッドに対応する複数の入力と出力を有している。プロセッサは、スレッド間の仲裁を行って、どのスレッドを各ブロックサイクルで実行すべきかを決める。これは、通常、優先順位に基づいて実行される。これに関する更なる展開は、或るスレッドに関する実行開始からの時間、及びそのスレッドを実行しなければならない特定のデッドラインまでの時間の様な監視ファクターに関わっている。この考えは、汎用演算に向けられたプロセッサのみならず、デジタル信号プロセッサ（ＤＳＰ）の様なアプリケーション特定プロセッサでも具現化することができる。
【０００３】
複数の異なるスレッドを、これらのプロセッサの１つで実行するよう配置することができるが、ＤＳＰは、通常２つから４つの間のスレッドを使用する。スレッドの数は、チップの設計及び製造の段階で定義され、チップは適切な数の入力と出力で構成される。
【０００４】
代表的なプロセッサは、追加の命令を検索するのに使用されるテンプレート命令を介して拡張される３２ビットの命令セットを使用する。
【０００５】
（マルチスレッド式ではない）幾つかのプロセッサは、標準より小さい命令セットを備えて製作される。これは、この様なプロセッサで使用されるプログラムのコードサイズの低減に繋がる。プロセッサは、特別な命令を使用して、大きな命令セットと低減された命令セットの間で切り替わるように構成されることになる。新しい命令セットが追加される度に追加の切替命令を追加して、新しい命令セットにアクセスできるようにしなければならない。
【０００６】
マルチスレッド式プロセッサを設定できるアプリケーションの多くは、埋め込まれた低出力要件を含んでいる。その様な要件は、プログラムの様なデータのためにシステム内で使用できるメモリの量を制約する。その結果、マイクロプロセッサの製造業者は、プログラムコードを圧縮することによって、彼らの装置を改良しようと努めている。これは、大抵は、小さな命令セットが要求されるときに実施することのできる命令サブセットを支持することによって達成される。例えば、３２ビットの命令セットを備えているプロセッサは、プログラムを更に小さくできるようにするため特別な１６ビットの命令セットを支持することもできる。
【０００７】
ここでも、その様な命令セットの間の切替は、そのセットの間を切り替えるための特別な命令を使用することによって処理される。この場合も、これには、特別な命令と、切替を実行するための追加のクロックサイクルを必要とする。
【０００８】
【特許文献１】英国特許第ＧＢ−Ａ−２３１１８８２号
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明の好適な実施形態は、２つ以上の命令セットを支持することができるが、命令セットの間を切り替えるのに追加の命令を必要としないプロセッサを提供する。従って、命令アドレスビットの特定の組み合わせが、命令を特定のセットに属するものと識別するのに使用される。その結果、命令セットの間を切り替えるために、システムは、命令メモリの異なる領域の間をジャンプして、適切なセットから命令を検索する。
【００１０】
少なくとも２つの命令セットが提供されるのが望ましい。
【００１１】
本発明は、マルチスレッド式プロセッサで具現化することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の好適な実施形態を、例を挙げて詳細に説明する。
【００１３】
図３に示す命令スレッド用のプロセッサパイプラインは、５つの部分を備えている。最初は、命令取出し部分１である。これは、通常、命令メモリから取り出すべき命令のアドレスを含んでいる３２ビットの取出し命令である。この後に復号ステップ２が続き、ここでは、メモリから検索された命令が、マイクロプロセッサでの実行に備えて機械語コードに復号される。オペランド取出し３は、更なる取出しを備えている。これは、取り出されて復号された命令によって操作されることになるデータがあれば全て検索する。
【００１４】
４では、演算論理装置（ＡＬＵ）が、取り出し及び復号された命令をオペランド上で実行し、５では、実行された命令の結果が、それぞれのプロセッサ出力を介してメモリ内の宛先に書き込まれる。
【００１５】
本発明の或る実施形態では、取出し命令の特定のビットが、異なる命令セットを使用すべきであることを表示するのに使用される。この命令セットは、第１の命令セットと同じ命令メモリに記憶されているのが望ましいであろう。２つ又はそれ以上の命令セットを記憶することができ、その間で選択するのに適切な数のビットを使用することができる。この例では、ビット２０と２３が、２つの命令セットの間で選択するのに使用されている。ビット２０と２３の両方が１に設定されているとき、取出し命令は、命令メモリに記憶されている、第１の命令ではなく第２セットの命令からアドレス指定された命令を検索することになる。
【００１６】
両方の命令セットが命令メモリに記憶されているので、取出し命令のアドレス部分は、命令メモリの何処から命令が来るかを定義するが、ビット２０と２３は、取り出された命令に適用される復号の間で選択するため両方が１にセットされるときに、使用される。この様に、両方のビットが１にセットされているとき、第２命令セット用の命令デコーダーが使用される。この他の組み合わせは、全て第１命令セット用の命令デコーダーに帰着することになる。２つのビットを使えば合計４つの状態をサポートできるのは明かで、従って、これら２つのビットを使う間に合計４つの命令セットを選択することができる。それ以上の命令セットを使用したい場合は、追加のビットを含めるとよい。２つの命令セットを実施するだけであれば、その間で選択するのに、１セットしか必要ではない。
【００１７】
図２に示すこの取出しアドレスがシステムの作動に影響を及ぼす方式について、図１を参照しながら説明する。図１は、命令メモリ１０を備えている。命令は、この中から（図４に示すように）命令取出しアドレス１２に応じて検索される。命令アドレスは命令メモリ１０に供給され、命令メモリ１０は、適切な命令を読み出して、それを取り出された命令のユニット１４に送る。
【００１８】
同時に、ＡＮＤゲート１６は、命令のビット２０と２３を受け取る。この出力は、取出し命令ユニット１４の命令セット型式部分に供給される。命令セットの間の選択に３つ以上のビットが使用されている場合は、もっと複雑なゲート機能、恐らくはマルチプレクサが必要になるであろう。
【００１９】
ＡＮＤゲートの出力が１の場合、これは、ビット２０と２３が共に１にセットされ、従って命令セット型式が２つの命令セットの第２に対応していることを示している。
【００２０】
取り出された命令のユニット１４は、取り出された命令を２つの命令デコーダーＡとＢ、２０と１８それぞれに送る。これらは、取り出された命令を同時に復号し、代わりの復号された命令をそれらの出力に与える。
【００２１】
組み合わされたアドレスのビットが、命令セットの型式は第１命令セットＡであると表示している場合、命令デコーダーＡ２０の出力が要求される。命令セットの型式が、要求されているのは第２命令セットであると表示している場合、命令デコーダーＢ１８の出力が要求される。命令デコーダーＡとＢ、２０と１８の出力の間の選択は、マルチプレクサ２２で実行される。この選択入力は、取り出された命令のユニット１４の命令セット型式部分の出力によって制御される。先に説明したように、命令セットの型式は、ＡＮＤゲート１６からの組み合わされたアドレスのビットによって判定される。
【００２２】
選択され復号された命令は、次に、マルチプレクサからの出力として、通常の様式での実行のためにＡＬＵに提供される。
【００２３】
図１の配置の代替案は、取り出された命令データをその命令セット型式に適切な命令デコーダーに経路指定するだけということになる。これには、マルチプレクサを、取り出された命令データのユニット１４と２つの命令デコーダー２０及び１８の間に配置することを伴う。
【００２４】
図示の実施例では、第１命令セットには、通常、第１セットから３２ビット幅の命令、又は第２セットから１６ビットの命令が入っている。復号の後、全ての命令は、３２ビット幅形式であり、即ち、１６ビットの命令は、メインプロセッサ命令セットから適した命令、即ちこれらの命令のサブセットを形成するのに使用される。
【００２５】
これを、図４を参照しながら説明する。図示のように、特定の変換が、プログラムカウンターアドレス（ＰＣ）上で、命令取出しアドレスを得るために実行される。この変換の背後にある思想は、ＰＣアドレスは、常に一列の３２ビットのワードである（最下位ビットは共にゼロ）ということである。第２の１６ビット幅の命令に切り替えるよう決められると、より小さな２バイトの一列になったワードを使用する必要がある。この変換によって、ビット２２が１だけ論理シフトされ、新しいビットゼロがビット２２に挿入されることになる。これは、プログラムカウンターを一時に３２ビットではなく１６ビット増し、１６ビットのワードをメモリから検索できるようにする効果がある。
【００２６】
図２の配置は、多数の命令セットを使用している場合の、命令検索及び復号の代替表現を示している。外部命令メモリ１０は、ここでは示されていない。命令取出しユニット１２は、この場合も、命令取出し要求を命令メモリ１０に送るのに使用されている。この様にして検索された命令は、取り出された命令のユニット１４に供給される。ビット２０と２２は、この場合も、命令セット形式を判定し、マルチプレクサ２２を制御するためＡＮＤゲート１６で組み合わせられる。
【００２７】
取り出された命令は、ショート命令事前復号ユニット２４を介して、又は直接に、マルチプレクサ２２に送ることができる。
【００２８】
ショートになった１６ビットの命令セットを操作するのに使用されるショート命令セット事前復号ユニット２４の出力は、３２ビット幅のロング命令である。この様に、マルチプレクサ２２への両入力は、３２ビット幅である。次に、マルチプレクサは、これらの間で選択して、命令セット形式によって判定されたものをロング命令事前復号ユニットに送り、そこからそれはロング命令レジスター２８にロードされ、ロング命令事後復号ユニット３０に読み出され、そしてそこからそれは実行のためにＡＬＵに提供されることになる。この様な配置は、例えば、正常な３２ビット命令セットのサブセットと多くの共通点を有する新しい１６ビット命令セットが追加されたシステムで使用される。例えば、それは、命令セットの一部分の短縮形でもよい。ここで実施されるのは、１つ又は２つの１６ビットの命令ワードを使用して正常な３２ビット形を再び作り出すことである。例えば、丁度１つの１６ビットの命令ワードを使用する命令パターンのセットに嵌め込むために、最も普通の命令が注意深く選定される。しかしながら、全ての要求された正常な３２ビットの命令を、小さな１６ビットのワードを使って符号化できるようにするため、１つの命令を形成するために２つの１６ビットのワードを実際に使用することのできる追加の形式の１６ビットの命令が含まれている。これら２つの１６ビットワードの命令は、この例では、２つの形態の内１つを有している。第１セットでは、第２ワードを使用して、１つの１６ビットワード命令セット内の命令を拡張する。第２の形態は、２つの１６ビットワードから作られた新しい命令パターンである。本例において考えられているのは、１６ビットの命令セットは、遙かに大きな範囲の命令をサポートできるように、３２ビット命令セットの全てのビットを作り出せるように作り上げられるということである。これは、２つ以上の１６ビットの命令を一体にまとめて３２ビットの命令を形成できるようにすることによって行われる。これは、全て、命令データパターンに基づいて行われ、原理的には命令セットの選択には関係しない。
【００２９】
勿論、３２ビット命令のサブセットになる１６ビット命令セットには何の必要条件も無い。全く無関係の命令セットを、本発明によってサポートすることができる。
【００３０】
この様な配置を使用すれば、実際に実行される全ての命令は、３２ビット幅の命令で、これがシステムの標準的な命令デコーダーに供給されるのを保証することができる。しかしながら、この配置は、命令をロードするのにより多くのクロックサイクルを要し、又はサイクルタイムを制限することになるので、待ち時間を付け加えることになる。
【００３１】
上記実施形態を使用すると、１つのプログラムで使用される複数の命令セットを、異なる命令セットの間で選択し従って異なるコードのブロックの間で制御を伝達するのにアドレスビットの内の適切な１つを使用することによって、サポートすることができる。
【００３２】
命令セットを、全体命令セットの短縮されたセットとすることができ、或いは、命令セットを、部分的にのみ重複する、又は場合によっては全く重複しない代替命令セットにすることができる。
【００３３】
本発明の各実施形態は、図１及び図２に示す形式の命令入力パイプラインに適切な修正を施すことによって、マルチスレッド式マイクロプロセッサで実施することができる。
【図面の簡単な説明】
【００３４】
【図１】本発明の或る実施形態で使用するための、命令取出し及び復号ユニットの概略ブロック図である。
【図２】本発明の或る実施形態で使用するための、命令取出し及び復号ユニットの代替表現を示している。
【図３】或る命令用の代表的なプロセッサパイプラインを示している。
【図４】図１及び図２の配置で使用するための、命令取出しアドレスで使用される種類のビットマップを示している。
【図１】
2009526300.tif 000002
【図２】
2009526300.tif 000003
【図３】
2009526300.tif 000004
【図４】
2009526300.tif 000005
【国際調査報告】
2009526300.tif 000006
2009526300.tif 000007