JP3760035B2 - 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ - Google Patents
複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ Download PDFInfo
- Publication number
- JP3760035B2 JP3760035B2 JP23097697A JP23097697A JP3760035B2 JP 3760035 B2 JP3760035 B2 JP 3760035B2 JP 23097697 A JP23097697 A JP 23097697A JP 23097697 A JP23097697 A JP 23097697A JP 3760035 B2 JP3760035 B2 JP 3760035B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- priority
- stream
- issued
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は複数の命令流から命令を並列に発行することによって、複数の演算ユニットを効率よく使用する情報処理装置に関する。
【0002】
【従来の技術】
従来例としては、一つのプロセッサ内で複数の命令流を同時に処理するマルチスレッド・プロセッサがある。マルチスレッド・プロセッサの方式については、"A Multithreaded Processor Architecture with Simultaneous Instruction Issuing," In Proc. of ISS'91:International Symposium on Supercomputing, Fukuoka, Japan, pp.87-96, November 1991 に詳細に述べられている。
【0003】
図15は、この従来例のマルチスレッドプロセッサの構成を示すブロック図である。同図において、マルチスレッドプロセッサは、命令キャッシュ500、3個の命令フェッチユニット501、3個の解読ユニット502、12個のスタンバイステーション503、4個の命令スケジューリングユニット504、4個の機能ユニット505、レジスタセット506を備え、同図における命令フェッチユニットと命令解読ユニットとの組みに対応する3つの命令流を同時に独立して実行するよう構成されている。ここで命令流とは、命令フェッチユニットと命令解読ユニットとの組みによる処理の流れに対応する。
【0004】
同図において、命令フェッチユニット501は、それぞれ異なる命令流の命令を命令キャッシュ500から読み込む。
解読ユニット501は、それぞれの命令流の命令を解読し、当該命令を処理可能な機能ユニット505に接続されているスタンバイステーション503に命令の解読結果(以下単に命令という)を格納する。
【0005】
命令スケジューリングユニット504は、スタンバイステーション503から適当な命令を選択し、空いている機能ユニット505に送る。一の機能ユニットに対する異なる命令流の命令解読結果がスタンバイステーション503に格納されている場合には、固定的な順番で命令が選択される。これにより命令流間の公平が図られている。
【0006】
機能ユニット505は、それぞれ命令を実行する演算器であり、スタンバイステーション503からの命令をレジスタセット506を用いて実行する。各機能ユニットは同じものでよいが、例えばロード/ストアユニット、整数演算ユニット、浮動小数点演算ユニット、乗除算ユニットなどの演算種類別に備える場合が多い。
【0007】
上記のように構成されたマルチスレッド・プロセッサにおいて、その動作を簡単に説明する。
同図のマルチスレッドプロセッサでは命令フェッチユニット501と解読ユニット502とが三組み備えられているので、3つの命令流を並列にフェッチ・解読することができる。3つの命令流と命令キャッシュ500(又は図外のメインメモリ)中のプログラムとの対応関係については、1つのプログラムが1つの命令流に対応する場合(3つのプログラムから3つの命令流が生成される場合)や、1つのプログラムが複数の命令流に対応する場合(1つのプログラムから3つの命令流が生成される場合)などがある。後者は、例えば1つの画像処理プログラムを異なる画像データに対して同時に複数の命令流として実行させる場合である。
【0008】
解読ユニット502に解読された命令は、スタンバイステーション503、命令スケジューリングユニット504を介して、当該命令に対応する機能ユニットに発行される。各機能ユニットは、どの命令流からの命令であっても発行された命令を実行する。
このように、マルチスレッド・プロセッサの特徴は、複数の命令流を演算器を共有して同時に実行することである。
【0009】
なお、マルチスレッド・プロセッサは一つのプロセッサ内部で複数の命令流を扱うが、一つの命令流を実行する単位を論理プロセッサと呼ぶことにする。
論理プロセッサは各々独立に命令流を扱えるように解読ユニットや命令のシーケンス制御機構やレジスタセットなどを有する。複数の論理プロセッサにより使用される機能ユニットやキャッシュメモリなどは論理プロセッサ間で共有される。
【0010】
一方、論理プロセッサに対して全体のプロセッサを物理プロセッサと呼ぶことにする。
また、マルチスレッド・プロセッサと既存のスーパースカラ方式のプロセッサとを比べると、スーパースカラ・プロセッサは、機能ユニットのみの多重化(複数化)がなされているため、同時に処理可能な命令流は1つであり、命令間の依存関係によりパイプラインインタロックが頻繁に発生し、その結果機能ユニットの使用効率は上がらず性能向上が困難であった。これに対して、上記のマルチスレッドプロセッサは、複数の命令流の命令を並列に実行することにより、各機能ユニットの使用効率を上げ、性能向上を実現できる。
【0011】
【発明が解決しようとする課題】
しかしながら上記マルチスレッドプロセッサの構成では、下記の問題点を有していた。
第1に、複数の論理プロセッサが機能ユニットを共有しているため、複数の命令流から発行される命令が機能ユニットにおいて競合することがあり、このため、ある一定の期間で、特定の論理プロセッサの命令発行が他の論理プロセッサの命令発行に比べて極端に少なくなる場合があり、その特定の論理プロセッサの性能が極端に低下するという問題がある。また、論理プロセッサ間で負荷が大きく異なる場合には、各論理プロセッサに同じ処理内容の(同一プログラムから生成される)命令流を割り付けた場合であっても、特定の命令流だけ処理が遅れることになり、処理の終了時間がばらつき、全体として速度が上がらない場合も起こる。
【0012】
第2に、論理プロセッサにそれぞれ異なる命令流が割り付けられ、特定の命令流だけ早く実行したい場合が発生しても、特定の論理プロセッサの処理速度を相対的に上げたり、命令キャッシュなどの共有資源を占有してしまうことができないため、全体の性能が低下してしまう。たとえば、緊急を要する割り込み処理などが発生した場合などがこれに当たる。
【0013】
上記問題点に鑑み本発明の目的は、複数の命令流間で各命令流の処理性能を柔軟に調整することができ、かつ全体の処理効率を向上させたマルチスレッド・プロセッサを提供することを目的とする。
【0014】
【課題を解決するための手段】
上記目的を達成するマルチスレッドプロセッサは、それぞれ命令を実行する複数の機能ユニットと、命令流に対応して設けられ、それぞれ命令を解読して、当該命令を実行すべき機能ユニットを指定するとともに当該機能ユニットに解読された命令を発行すベきことを要求する命令発行要求を作成する複数の命令解読手段と、命令流毎に命令流の優先度を保持する保持手段と、2以上の命令発行要求が同時に一の機能ユニットを指定している場合に、保持手段に保持された優先度に従って、当該機能ユニットに発行すべき解読された命令を決定する制御手段とを備えて構成される。
【0015】
この構成によれば、各機能ユニットに発行すべき命令(命令の解読結果)が前記優先度に従って決定されるので、複数の命令流間で負荷のばらつきを優先度に応じて柔軟に調整することができ、命令流毎に必要とされる処理性能を適切に実現し、かつ全体の処理効率を向上させることができるという効果がある。
ここで前記保持手段は、さらに、命令によって設定可能な、命令流毎に命令流を停止すべきか実行すべきかを示すフラグ群を保持し、
前記制御手段は、前記決定を行う調停手段と、停止を示すフラグが設定されている場合には、そのフラグに対応する命令流の命令発行要求を除外して前記決定を行うことにより、当該命令流を停止する停止手段とを備えてもよい。
【0016】
この構成によれば、さらに、命令流がその実行過程においてアイドル状態や待ち状態にある場合には、その命令流を停止状態とすることができる。つまりその結果、他の命令流を優先して実行させることができるので、さらに全体の処理性能を向上させることができる。
【0017】
【発明の実施の形態】
<マルチスレッド・プロセッサの構成>
図1は、本発明の実施形態におけるマルチスレッド・プロセッサの主要部の構成を示すブロック図である。
本マルチスレッド・プロセッサは、命令解読部1〜3、機能ユニットA20、機能ユニットB21、機能ユニットC22、機能ユニットD23、命令発行判断部30、命令発行調停部40、命令発行禁止部50、優先順位制御部60、命令選択部70を有し、論理プロセッサの実行状態、命令流の優先度及び外部要因に応じて各機能ユニットへの命令発行を調停するように構成されている。
【0018】
また、本マルチスレッド・プロセッサは、図15に示した命令キャッシュ、命令フェッチユニット、レジスタファイルなどを当然に備えているが、従来例と同じなので図1では省略している。同様に機能ユニットのパイプライン段数などの詳細な構成等についても本発明と関係しないので説明を省略する。また、説明をわかりやすくするために本実施形態では、各命令解読部は命令流1個につき1命令を解読し、一度に発行できる命令も1個であるものとする。
【0019】
図1において、命令解読部1〜3は、それぞれ命令流の命令を解読し、解読結果として、命令発行判断部30に命令発行要求を、命令選択部70に命令内容(オペレーション等)を出力する。ここで、命令発行要求は、命令発行を要求するフラグ(以下、要求フラグと呼ぶ)と、当該命令を実行すべき機能ユニットの種類を示す情報(以下機能ユニット番号と呼ぶ)とを含む。命令解読部1〜3は、独立に命令流を解読するので、それぞれ上記の論理プロセッサに対応する。本実施形態では1つの物理プロセッサに3つの論理プロセッサを内蔵させるために命令解読部が3つ設けられている。以降、命令解読部1〜3に対応する論理プロセッサを論理プロセッサ1〜3と呼んで区別する。同様に論理プロセッサ1〜3に対応する命令流を命令流1〜3と呼ぶ。
【0020】
機能ユニットA20、B21、C22、D23(以下、機能ユニットA、B、C、Dと呼ぶ)は、命令解読部1〜3から命令選択部70を介して発行された命令(解読結果)を受けて、当該命令実行、すなわちデータアクセス処理や演算処理などを行う。各機能ユニットの機能は、全て同じでよいが理解をし易いようにするためその処理内容を例示する。
【0021】
すなわち、機能ユニットAはメモリアクセス命令を処理するロードストアユニット、機能ユニットBは整数演算を処理する整数演算ユニット、機能ユニットCは浮動小数点の加減算や整数と浮動小数点間の変換を行なう浮動小数点ユニット、機能ユニットDは浮動小数点の乗除算を行なう浮動小数点ユニットである。さらに本実施形態では機能ユニットBは、整数演算の一処理内容として、優先度の設定に関する命令を処理する機能を有している。これらの機能ユニットは、論理プロセッサ1〜3の構成要素ではあるが論理プロセッサと1対1に対応するわけではなく、論理プロセッサ1〜3に共用される。また、各機能ユニットは、命令を処理中か否かに応じて、命令を受け付けられる状態(以下、単にreadyと呼ぶ)にあるか受け付けられない状態(以下、単にnot readyと呼ぶ)にあるかを命令発行判断部30に通知する。
【0022】
命令発行判断部30は、命令解読部1〜3からの命令発行要求(上記要求フラグと機能ユニット番号)を受けて、命令の発行先とすべき機能ユニットを判断し、さらに、各機能ユニットからのreadyか否かを示す通知と、優先順位制御部60からの各論理プロセッサが停止状態にあるか実行状態にあるかを示す通知とを受けて、機能ユニットA〜D毎に、命令を発行可能か否かを判断する。
【0023】
命令発行調停部40は、1つの機能ユニットに対して発行可能と判断された命令発行要求が複数あって競合する場合には、優先順位制御部60からの指定される論理プロセッサ毎の優先度に応じて、複数の命令発行要求を調停して、発行すべき命令を1つ決定する。
命令発行禁止部50は、命令発行調停部40の調停結果に対して、当該命令を発行するか否かを最終的に判断し、判断の結果、発行すべき命令を命令選択部70に指示する。具体的には、論理プロセッサ毎に緊急を要する処理が要求された場合には、当該論理プロセッサの命令流の命令については発行を一時的に禁止し、そうでない場合には、発行を命令選択部70に指示する。命令発行禁止部50が一時的に命令発行を禁止しているのは、命令発行判断部30及び命令発行調停部40による処理の後に上記の緊急を要する処理が発生した場合に、それを最優先するためである。命令発行禁止部50は、命令発行調停部40により発行するべき命令が決定された後に当該命令の発行を禁止することができるので、緊急を要する処理の発生タイミングが命令発行調停部40による決定後であっても、有効に禁止することができる。例えば、緊急を要する処理の発生タイミングが、マシンサイクルの期間の遅い時点であっても有効に禁止することができる。
【0024】
優先順位制御部60は、論理プロセッサ毎の優先度の管理、及び論理プロセッサ毎に実行状態にあるか停止状態にあるかを示す情報を管理し、命令発行調停部40に対して上記優先度を通知し、命令発行判断部30に対して上記実行状態か否かを通知する。さらに、優先順位制御部60は、特定の命令実行時に、当該論理プロセッサを所定数の連続サイクルの間優先させる機能(以下、連続サイクル優先機能と呼ぶ)を有している。上記優先度および実行状態か否か示す情報を管理するため、優先順位制御部60は、3本の制御レジスタすなわち優先順位指定レジスタ、内部割込みレジスタ、排他停止レジスタを備える。これらのレジスタは、命令流中の命令に従ってその値が設定される。
【0025】
命令選択部70は、命令発行禁止部50から発行元の命令解読部及び発行先の機能ユニットを指示する命令発行指示に従って、命令解読部1〜3により解読された命令(オペレーション等)を機能ユニットA〜Dに発行する。
<優先順位制御部60:優先順位指定レジスタ>
図3は、優先順位制御部60に内蔵される優先順位指定レジスタ(以下PRIレジスタと呼ぶ)のビット構成を示す説明図である。
【0026】
同図のように、PRIレジスタは、MYID、PRI3、PRI2、PRI1、MYPRIの各フィールドを有し、論理プロセッサ毎の優先順位及び停止状態か否かを示す情報を保持している。
MYIDフィールドは、論理プロセッサにおいて本PRIレジスタの読み出し命令が実行されたときに、当該読み出し命令を実行した論理プロセッサのIDを示すフィールドである。例えば、論理プロセッサ3において当該読み出し命令が実行された場合には、論理プロセッサ3を示すID(例えば100)が読み出される。
【0027】
PRI3フィールドは、論理プロセッサ3の優先順位及び停止状態か否かを示すフィールドである。
PRI2、PRI1フィールドは、それぞれ論理プロセッサ2、1についてPRI3と同様である。
MYPRIフィールドは、論理プロセッサにおいて本PRIレジスタの読み出し命令が実行されたときに、当該読み出し命令を実行した論理プロセッサの優先順位を示すフィールドである。例えば、論理プロセッサ1において当該読み出し命令が実行された場合には、PRI1フィールドの内容がMYPRIフィールドにコピーされて読み出される。
【0028】
図4は、PRIレジスタ中のPRI3〜PRI1フィールドそれぞれの下位2ビットのビット割当てを示す説明図である。同図ではPRI3〜1をPRIxと略し、フィールド内のビット位置を[ ]内に付記している。ただしxは、論理プロセッサ番号(又はスレッド番号)を示す。
同図のようにPRIx[1:0]は、低(lowest)、中(middle)、高(highest)の3レベルの優先順位を表す。2ビットで3レベルの優先順位を表しているのは、PRIx[1]をスーパーバイザモード用、PRIx[0]をユーザモード用として個別に設定を可能にするためである。この優先順位の設定は、次に示す専用命令(ニーモニック表記)に従って機能ユニットBによって行われる。
「inc pri」;この命令は、優先順位を上げる、つまりスーババイザモードではPRIx[1]を1に、ユーザモードではPRIx[0]を1に設定する。
「dec pri」;この命令は、優先順位を下げる、つまりスーババイザモードではPRIx[1]を0に、ユーザモードではPRIx[0]を0に設定する。
【0029】
これらの命令は、通常のレジスタ間のデータ転送命令とは異なり、オペランドを必要とせず、オペレーションコードのみからなる命令なので、どの命令流においても同じ命令を利用できることになる。例えば、1つのプログラムから複数の命令流を生成し、各命令流に異なるデータを分担させて並列に処理する場合に有用である。
【0030】
また、前記一の機能ユニットによって当該命令が属する命令流の優先度を変更するので、異なる命令流の優先度を誤って書換えることもなくなり、誤動作を防止することができる。例えば、RGBカラー画像の色別画像データに同一の画像処理を施す場合、つまり、画像処理用の1つのプログラムを3つの命令流として独立かつ同時に実行させる場合、情報の隠蔽(プログラムはRGBのどれかを区別する必要がない)することができ、かつ命令流の独立性を保証することができ、その結果OSやシステム全体の信頼性が向上する。
【0031】
これらの命令及び同図のビット割当てによれば、例えば、ユーザモードからスーパーバイザモードに移行して優先順位を変更した場合でも、ユーザモードへ復帰したときに以前の優先度が保存されることになる。例えば、ユーザーモードで割り込みが発生し、スーパーバイザーモードに一時的に遷移しても、割り込み処理からユーザーモードに戻る前に、PRIx[1]を元に戻すことにより、ユーザーモードでの優先順位が保存されることになる。
【0032】
図5は、優先順位を示すフィールドPRIレジスタ中のPRI3〜1フィールドそれぞれの上位1ビットのビット割当てを示す説明図である。
同図のようにPRIx[2]は、論理プロセッサが実行状態か停止状態かを示している。実行状態から停止状態への設定は、次に示す専用命令(ニーモニック表記)に従って機能ユニットBによって行われる。
「halt」;この命令は、発行元の論理プロセッサを停止状態にする。つまり、当該論理プロセッサのPRIx[2]を1に設定する。また、この命令による停止状態を他の命令による停止状態と区別するときは自己停止状態と呼ぶ。
【0033】
自己停止状態の解除(実行状態への復帰)は、命令によるのではなく、当該論理プロセッサに対する割込み入力による。つまりマルチスレッドプロセッサでは割込み処理は論理プロセッサ個別に発生するので自己停止状態にある論理プロセッサに対して割込み(外部割込み、内部割込み等)が発生した時点で解除される。
<優先順位制御部60:内部割込みレジスタ>
図6は、優先順位制御部60に内蔵される内部割込みレジスタ(以下IRレジスタと呼ぶ)のビット構成を示す説明図である。ここでいう内部割込みとは、論理プロセッサ間の割込み、つまり一の論理プロセッサから他の論理プロセッサへかける割込みをいう。内部割込みがかけられた論理プロセッサは、自己停止状態にある場合に自己停止状態が解除されるので、例えば論理プロセッサ間で同期して処理する場合や同期通信する場合に用いられる。
【0034】
同図に示すようにIRレジスタは、MYIDフィールドとIR3〜IR1ビットとを有し、他の論理プロセッサに対して内部割込みを要求するためのレジスタである。
MYIDフィールドは、既に説明した図5と同様であるので省略する。
IR3ビットは、論理プロセッサ3に対して他の論理プロセッサが内部割込みを要求するビットである。このビットがONになると、その割込み要求を受けた命令解読部3の制御によってPR3[2]が0に設定されるとともにIR3もOFFに戻される。ここでPR3[2]が0に設定されることにより論理プロセッサ3の自己停止状態が解除される。
【0035】
IR2、IR1ビットも、それぞれ論理プロセッサ2、1に対する割り込み要求ビットであり、IR3ビットと同様である。
IR3〜IR1ビットの設定は、通常のレジスタ転送命令に従って行われる。通常のレジスタ転送命令命ではIR3〜IR1のビット位置に直接書き込む必要があるので、各命令流は自身の論理プロセッサIDと割込み先の論理プロセッサIDとを区別する必要があるが、上記のMYIDフィールドを読み出すことによって各命令流において論理プロセッサIDの操作を可能にしている。
<優先順位制御部60:排他停止レジスタ>
図7は、優先順位制御部60に内蔵される排他停止レジスタ(以下EXCLレジスタと略す)のビット構成を示す説明図である。ここで、排他的停止とはある1つのプロセッサ以外の論理プロセッサを停止させることをいう。ただし、2つ以上の論理プロセッサが同時に排他的停止状態にはなることはできない。
【0036】
同図に示すようにEXCLレジスタは、MYIDフィールドとEXCL3〜EXCL1の各ビットとを有し、1つの論理プロセッサのみを実行状態にし、他の論理プロセッサを停止状態にすることを要求するためのレジスタである。
MYIDフィールドは、図3及び図6と同様なので説明を省略する。
EXCL3ビットは、このビットがONのとき論理プロセッサ3が排他的停止を実行していることを示す。この場合実行できるのは論理プロセッサ3のみで、論理プロセッサ2および論理プロセッサ1は停止状態になる。
【0037】
EXCL2、EXCL1の各ビットも、同様である。
これらのEXCL3〜EXCL1の各ビットは、次に示す専用命令(ニーモニック表記)に従って機能ユニットBによって設定及び解除がなされる。
「excsv」;この命令は、発行元の論理プロセッサに対する排他停止の設定つまり発行元以外の全論理プロセッサを停止させる命令である。例えば、論理プロセッサ1がこの命令を実行した場合、EXCL1がONに、EXCL2及びEXCL3がOFFに設定される。また、仮に複数の論理プロセッサが同時にこの命令を発行したとしても、全論理プロセッサが動作を停止することはない。なぜなら、この命令は機能ユニットBにのみ実行されるので、実行時点では1つに限定されるからである。
「retex」;この命令は、発行元の論理プロセッサに対する排他停止の解除、つまり他の全論理プロセッサを元の状態に復帰させる命令である。例えば、論理プロセッサ1がこの命令を実行した場合、EXCL1がOFFに設定される。
【0038】
これらの命令も、上記incpr命令、decpr命令と同様、オペランドを必要としない、どの命令流においても同じ命令を利用できる。
上記のPRIレジスタ、IRレジスタ、EXCLレジスタの3つの制御レジスタは、物理的な実体はそれぞれ1つずつであるが、各レジスタのMYIDフィールドとPRIレジスタのMYPRIフィールドは、自論理プロセッサ自身の値を表示するため、各論理プロセッサからは論理プロセッサごとに異なるレジスタが存在するかように見える。また、これらの制御レジスタのアドレシングはすべての論理プロセッサから同じため、同じ命令を実行してもそれぞれ自論理プロセッサ自身のIDや優先順位を見ることができる。
<命令発行判断部30>
図8は、図1の命令発行判断部30のより詳細な構成例を示すブロック図である。この命令発行判断部30は、停止判断部310、分配部320、発行判断部330を備える。
【0039】
停止判断部310は、命令解読部1〜3のそれぞれに対応する3組のNOR回路とAND回路を備える。NOR回路とAND回路との各組は、命令解読部から上述した命令発行要求(要求フラグと機能ユニット番号)を受けて、各論理プロセッサ毎に自己停止状態(PRIレジスタのPRIx[2]がON)又は排他停止により停止状態になっている(EXCLxビットがON)場合には、要求フラグの信号(以下要求有無信号と呼ぶ)を強制的にOFFにし、実行状態でかつ排他停止により停止されていない場合には、要求有無信号をそのまま出力する。
【0040】
分配部320は、命令解読部1〜3のそれぞれに対応する3つのデマルチプレクサを備える。各デマルチプレクサは、停止判断部310を介して入力される要求有無信号を、機能ユニット番号に従って当該命令を実行すべき機能ユニットに分配する。その結果、機能ユニット毎に各命令解読部からの要求有無信号が出力される。
【0041】
発行判断部330は、機能ユニットA〜Dのそれぞれに対応する4組のAND回路群を備える。各AND回路群は、分配部320により分配された要求有無信号を、機能ユニットが上述したready状態である場合には、そのまま出力し、not ready状態である場合にはOFFにして出力する。ここで、ready状態で有ることを示すready_n信号(nはA、B、C又はD)は、対応する機能ユニットが命令を受け付けられる状態にあることを示し、論理プロセッサ1〜3に対応して機能ユニットxから出力される3ビットの信号である。発行判断部330からの出力信号(1A〜3A、1B〜3B、1C〜3C、1D〜3D)については、いずれも論理”1”のとき有効(命令発行可能)であり、例えば、出力信号1Aは発行元が命令解読部1で発行先が機能ユニットAを、出力信号3Bは発行元が命令解読部3で発行先が機能ユニットBを意味する。
<命令発行調停部40>
図9は、図1の命令発行調停部40のより詳細な構成例を示すブロック図である。この命令発行調停部40は、機能ユニットA〜Dのそれぞれ対応する調停部40A〜40Dを備える。各調停部は同じ動作をするので、ここでは調停部40Aを代表として説明する。調停部40Aは、優先順位判定部41Aと判定補助部42Aとを備える。
【0042】
優先順位判定部41Aは、発行判断部330からの出力される信号1A、2A、3Aと、各論理プロセッサの優先順位PRI1[1:0]、PRI2[1:0]、PRI3[1:0]を受けて、有効な要求有無信号のうち優先順位が最も高いものを出力する。優先順位判定部41Aにおいて、この機能を実現するための制御論理を図10に示す。
図10(a)では、PRIレジスタ中のPRI1、PRI2、PRI3フィールドに指定された論理プロセッサ1〜3の優先順位がPRI1>PRI2>PRI3の場合、つまり優先レベルでは(PRI1、PRI2、PRI3)=(高、中、低)の場合の入力1A、2A、3Aと、出力1A´、2A´、3A´とを示している。また、図示していないが、優先順位がPR1>PR3>PR2の場合、PR2>PR1>PR3の場合、PR2>PR3>PR1の場合、PR3>PR1>PR2の場合、PR3>PR2>PR1の場合にも、いずれもの信号名を読み換えるだけで全く同じ制御論理になるので、説明を省略する。
【0043】
図10(b)では、優先順位がPRI1=PRI2>PRI3の場合、つまり優先レベルでは(PRI1、PRI2、PRI3)=(高、高、中)、(高、高、低)又は(中、中、低)の場合を示している。図示していないが、優先順位がPR1=PR3>PR2の場合、PR2=PR1>PR3の場合、PR2=PR3>PR1の場合、PR3=PR1>PR2の場合、PR3=PR2>PR1の場合にも、いずれも信号名を読み換えるるだけで全く同じ制御論理になるので、説明を省略する。また、図中の波線を付した出力信号のように、入力信号のうち優先順位が最も高く、かつ有効な信号が2つ以上存在する場合には、優先順位判定部41Aはそれらを一応”1”として出力する。
【0044】
図10(c)では、優先順位がPRI1>PRI2=PRI3の場合、つまり(PRI1、PRI2、PRI3)=(高、中、中)、(高、低、低)又は(中、低、低)の場合を示している。また、図示していないが、優先順位がPR1>PR3=PR2の場合、PR2>PR1=PR3の場合、PR2>PR3=PR1の場合、PR3>PR1=PR2の場合、PR3>PR2=PR1の場合にも、いずれもの信号名を読み換えるだけで全く同じ制御論理になるので、説明を省略する。
【0045】
また、優先順位判定部41Aは、優先順位がPRI1=PRI2=PRI3の場合には、有効な入力信号が2つ以上ある場合には、有効な信号を全て一応”1”として出力する。
判定補助部42Aは、PRIレジスタにおいて優先順位が同じに設定されている論理プロセッサが同時に命令発行要求を出した場合、つまり、優先順位判定部41Aの出力(1A´、2A´、3A´)において”1”が2つ以上ある場合、論理プロセッサ間で命令発行が偏らないように調整するため、何れを”1”するか判定する。例えば、判定補助部42Aは、(1)サイクル(1サイクル又は数サイクル)毎に”1”とする論理プロセッサを変更する(2)以前命令発行をできなかった論理プロセッサを優先する(3)固定的に何れかを決めておく。また、これらを切り替えるようにしてもよい。
<命令発行禁止部50>
図11は、図1の命令発行禁止部50のより詳細な構成例を示すブロック図である。この命令発行禁止部50は、機能ユニットA〜Dのそれぞれ対応する禁止部50A〜50Dと、発行通知部55とを備える。各禁止部は同じ動作をするので、ここでは禁止部50Aを代表として説明する。
【0046】
禁止部50Aは、緊急を要する処理として、外部割込み要求、内部割り込み要求、キャッシュミスやメモリアクセスエラー等のアクセス例外、トラップ命令などが発生した場合に、その発生元の論理プロセッサIDを検出し、当該論理プロセッサに対する命令発行を1サイクルの間の禁止するよう制御する禁止制御部51Aと、禁止制御部51Aの指示に従って調停部40Aの出力信号(1AA〜3AA)をゲートした結果を命令選択部70に対する命令発行指示(1AAA〜3AAA)を出力する3個のAND回路と、機能ユニットAに対して命令発行を通知するOR回路とからなる。
【0047】
発行通知部55は、命令解読部1〜3に対応する3個のOR回路からなり、禁止部51A〜51Dから各論理プロセッサの命令発行指示が出力される毎に、対応する命令解読部に次の命令を発行してもよいことを通知する発行通知を出力する。
<機能ユニットB>
機能ユニットBは、整数演算命令を実行するほか、上述した各種の専用命令と、PRIレジスタ、EXCLレジスタ、IRレジスタを読み出す命令とを実行するように構成されている。
【0048】
なお、上記専用命令等については、本実施形態では機能ユニットBが実行するが、他の機能ユニットが実行するように構成してもかまわない。
図12に、機能ユニットBによる上記専用命令及び読み出し命令の実行内容を示す説明図を示す。同図において、「x」は当該命令の発行元の論理プロセッサ番号を、「y」は当該命令の発行元以外の論理プロセッサIDを示す。この論理プロセッサ番号は、禁止部50Bから出力される信号(図11の1BBB〜3BBB)により機能ユニットBに通知される。
【0049】
同図に示すように機能ユニットBは、「inc pri」命令に対して、スーパバイザモードではPRIレジスタのPRIx[1]ビットを1に、ユーザモードではPRIx[0]ビットを1を設定する。
「dec pri」命令に対しては、スーパバイザモードではPRIx[1]を0に、ユーザモードではPRIx[0]ビットを0に設定する。
【0050】
「halt」命令に対しては、当該論理プロセッサのPRIレジスタのPRIx[2]ビットに1を設定する。
「excsv」命令に対しては、EXCLレジスタのEXCLxビットを1に、EXCLyビットを0に設定する。例えば、論理プリセッサ2が本命令の発行元である場合、機能ユニットBは、EXCL2ビットを1に、EXCL3ビットおよびEXCL1ビットを0に設定する。
【0051】
「retex」命令に対しては、EXCLxビットを0に設定する。
このように上記の専用命令は、同じ命令であっても当該命令発行元の論理プロセッサに応じてレジスタ中の異なるビットが操作される。
また、図12に示した各mov命令については、機能ユニットBは以下のように実行する。
【0052】
「mov PRI,R0」命令は、PRIレジスタの内容をR0レジスタに転送する命令である。この命令に対して機能ユニットBは、以下のように命令を実行する。
PRIレジスタ中のMYIDフィールド(=PRI[31:29])については、その命令の発行元の論理プロセッサIDをR0[31:29]の各ビットに書き込む。
PRIレジスタ中のPRI[11:3](=PRI3,PRI2,PRI1フィールド)の各ビットについては、そのデータを読み出してR0レジスタ中の[11:3]に転送する。
【0053】
PRI[2:0](=MYPRIフィールド)については、PRI3,PRI2,PRI1フィールドのうちその命令の発行元の論理プロセッサIDに対応するPRIxをR0[31:29]の各ビットに書き込む。
「mov IR,R0」命令は、IRレジスタの内容をR0レジスタに転送する命令である。この命令に対して機能ユニットBは、IRレジスタ中のMYIDフィールド(=IR[31:29])については、その命令の発行元の論理プロセッサIDをR0[31:29]の各ビットに書き込む。IR[2:0](=IR3,IR2,IR1ビット)の各ビットについては、その値を読み出してR0[2:0]の各ビットに書き込む。
【0054】
「mov EXCL,R0」命令は、EXCLレジスタの内容をR0レジスタに転送する命令である。この命令についての機能ユニットBの実行内容は、上記「mov IR,R0」に比べて、転送元がIRレジスタであること以外同様である。
上記の読み出し命令を実行することにより、各論理プロセッサは、読み出されたMYIDフィールドから自身の論理プロセッサIDの値と、他の論理プロセッサの状態(優先順位、自己停止状態、排他停止状態など)とを得ることができる。
<優先順位制御部60の詳細構成>
図13は、優先順位制御部60の詳細な構成を示すブロック図である。
【0055】
優先順位制御部60は、PRIレジスタ61、IRレジスタ62、EXCLレジスタ63、セレクタ64、連続サイクル優先部69を備える。
PRIレジスタ61、IRレジスタ62、EXCLレジスタ63は、図3、図6、図7においてそのビット構成を既に説明したので、ここでは、そのハードウェア構成を説明する。
【0056】
これらのレジスタ61〜63は、本マルチスレッドプロセッサの内部バスに接続され、内部バスを介して機能ユニットBに読み出し書き込みがなされる。
これらのレジスタの上位3ビット(MYIDフィールド)は、データを保持する機能を有せず、レジスタの読み出し命令実行時に、論理プロセッサIDをトランスパレントに内部バスに出力する。このとき論理プロセッサIDの値は、禁止部50Bから出力される信号(図11の1BBB〜3BBB)により通知される。
【0057】
またPRIレジスタ62の下位3ビットは、PRIレジスタの読み出し命令実行時に、セレクタ64の出力をトランスパレントに内部バスに出力する。
セレクタ64は、PRIレジスタの読み出し命令実行時に、PRIレジスタ62中のPRI3,PRI2,PRI1フィールドのうち、その命令発行元の論理プロセッサIDに対応するものを選択して、IRレジスタ62中の「MYPRI」フィールドを介して内部バスに出力する。
【0058】
連続サイクル優先部69は、特定の命令列が実行される間、その優先度を一時的に高く変更する機能を有する。ここで、特定の命令列とは、例えば他の論理プロセッサと共有する資源の読み出しと書き込みを実行する場合など、連続サイクルで実行される必要がある命令列をいう。
特定の命令列の一例を以下に示す。ただし命令はニーモニック表記で表している。また;以下は命令内容を示すコメントである。
LOOP:
;ラベル
aldst MEM[100],R0
;アトミック(Atomic LoaD STart)命令とも呼ぶ。
【0059】
;メモリ(100番地)のデータをROに転送する
test R0
;R0=0ならばゼロフラグを1にセットする
beq LOOP
;ゼロフラグが1ならラベルLOOPへ分岐する
store R1,MEM[100]
;レジスタR1のデータをメモリ100番地に転送する
上記の特定命令列は、メモリの100番地を読み出し、もし読み出したデータが0であれば、レジスタR1のデータをメモリの100番地に書き込む。もし読み出したデータが0でなければ、0になるまで繰り返し読み出すループ処理を表している。この特定命令列が連続サイクルで実行される必要があるのは、例えばメモリ100番地が複数の論理プロセッサの共有資源として用いられている場合である。つまり、ある論理プロセッサが上記特定命令列の実行中には、他の論理プロセッサがメモリ100番地を書き換えてはならない。
【0060】
このような特定命令列が連続するサイクルで実行されることを保証するために、連続サイクル優先部69は、一の機能ユニットで上記特定命令列の先頭命令の実行開始を検出したとき、その命令の実行サイクルから連続する所定数のサイクルの間、その命令発行元の論理プロセッサ(命令流)の優先順位が他の論理プロセッサよりも高くなるように優先順位制御部60の優先順位を一時的に変更する。
<連続サイクル優先部69>
連続サイクル優先部69は、図13のように特定命令検出部65、カウンタ66、コンパレータ67、セレクタ68を備える。
【0061】
同図において特定命令検出部65は、特定命令列の先頭命令(以下特定命令と呼ぶ)の実行が開始されたことを検出する。上記の特定命令列の例では、aldst命令が特定命令として検出される。より具体的には特定命令検出部65は、命令解読部1〜3から特定命令を解読した旨の通知と、特定命令を命令発行禁止部50がその一の機能ユニットに発行した旨の通知とを受けて、両通知をともに受けたことをもって特定命令の実行開始を検出する。
【0062】
カウンタ66は、特定命令の実行開始が検出されたとき、特定命令列の実行に要するサイクル数をカウントする。上記の例ではカウンタ66は、aldst命令に続く3命令の実行に要する3サイクルをカウントするため、特定命令の実行開始が検出されたときに初期値3がロードされ、0までダウンカウントする。これにより上記store R1,MEM[100]の実行サイクルで0になる。また、上記特定命令列がループ処理になっている場合には、カウンタ66はaldst命令が検出される度に初期値3からカウントすることになる。
【0063】
コンパレータ67は、カウンタ66のカウント値が0と一致するか否かを判定する。つまり特定命令列の連続サイクルの期間でないかどうかを判定する。
セレクタ68は、6ビット長の4入力1出力のセレクタであり、連続サイクルの期間において優先順位を一時的に変更するために用いられている。
図14に、セレクタ68に入力される選択信号と、出力値との関係を表した説明図を示す。セレクタ68の入力値は、同図では省略されているが、図13に示したように「PRI[11:3](=PRI3[1:0],PRI2[1:0],PRI1[1:0]」、「110000」、「001100」、「000011」の4つである。
【0064】
同図によれば、セレクタ68の出力は、通常のとき、つまり連続サイクルの期間でない場合(カウント値=0に一致するとき)、PRIレジスタ中のPRI[11:3](=PRI3,2,1フィールド)に指定されている優先順位を出力する。
連続サイクルの期間である場合(カウント値=0に一致しないとき)、セレクタ68は、その特定命令の発行元が論理プロセッサ3であれば「110000」、論理プロセッサ2であれば「001100」、論理プロセッサ1であれば「000011」を、「PRI[11:3](=PRI3'[1:0],PRI2'[1:0],PRI1'[1:0]」として出力する。
【0065】
これにより連続サイクルの期間中、特定命令の発行元の論理プロセッサの優先順位が最も高くなるように一時的に変更される。
以上のように構成された本実施形態のマルチスレッドプロセッサについて、その動作を説明する。
<優先順位、自己停止状態、排他停止の設定動作>
本実施形態のマルチスレッドプロセッサでは、命令流(論理プロセッサ)毎の優先順位の設定・変更用にincpr命令及びdecpr命令、自己停止用にhalt命令、排他停止用にexcsv命令及びretex命令という専用命令が用意されている。これらの専用命令は、命令流の生成元のプログラム中に予め適宜設定されている必要がある。
【0066】
たとえば、プログラム中の優先順位を上げて処理すべき部分では、当該プログラム部分の直前にincpr命令を、直後にdecpr命令を設定しておけばよい。このように設定されたincpr命令及びdecpr命令は、機能ユニットBによって次のように実行される。すなわち、機能ユニットBは、論理プロセッサ1〜3の何れが発行元であるかに応じて、PRIレジスタの対応するPRxフィールドに対してユーザモードのときはPRIx[0]ビットを対象に、スーパーバイザモードのときはPRIx[1]を対象にして1又は0を設定する。これにより論理プロセッサ毎に優先順位を必要に応じて動的に変更させることができる。
【0067】
また、他の論理プロセッサを停止させて自身の論理プロセッサのみを動作させて処理すべきプログラム部分では、当該プログラム部分の直前にexcsv命令を、直後にretex命令を設定しておくことになる。これらの命令も、機能ユニットBによって上記と同様に実行される。
逆に、他の論理プロセッサを優先させて自身の論理プロセッサを停止させる場合には、halt命令を設定することになる。この命令も機能ユニットBによって実行される。但し、停止状態の論理プロセッサは、当該論理プロセッサに対する割り込み要求によって停止状態が解除されるので、割り込み要求が適宜入力される必要がある。例えば論理プロセッサ間の内部割込みは、IRレジスタによる。つまり、割込みをかける論理プロセッサは、事前に通常のレジスタ転送命令によりIRレジスタ、PRIレジスタまたはEXCLレジスタを読み出して自身のMYIDを読み出して、さらに割込み先の論理プロセッサに対応するIRxビットを決定してから、通常の転送命令によりIRレジスタに内部割り込み要求をセットすることになる。
<全体動作>
例えば、命令解読部1の解読の結果、機能ユニットBに対する命令発行要求(要求フラグと機能ユニットBの番号)を出力した場合、論理プロセッサ1が自己停止状態または他の論理プロセッサの排他停止による停止状態にある場合には、命令発行判断部30内の停止判断部310によって要求フラグ自体が無効として出力されなくなる。これにより他の論理プロセッサ2及び3が機能ユニットを使用できることになる。
【0068】
論理プロセッサ1が自己停止状態でもなく他の論理プロセッサの排他停止による停止状態でもない場合には、命令発行判断部30内の分配部320において機能ユニットBへ分配され、さらに、機能ユニットBが論理プロセッサ1に対してready状態であれば発行判断部330によって発行可能と判断され、not ready状態であれば発行不可と判断される。
【0069】
次に、命令発行調停部40は、命令発行判断部30からの機能ユニットごとの命令発行要求を受けて、優先順位制御部60からの論理プロセッサごとの優先順位を用いて、機能ユニットに発行できる論理プロセッサを決定する。例えば、機能ユニットBに対して命令解読部1からの命令発行要求のみが出力されている場合(図9の1B〜3Bのうち1Bのみ有効な場合)には、命令発行調停部40は、その命令発行要求を有効(図9の1BB〜3BBのうち1BBのみ有効)とする。
【0070】
例えば、命令解読部1が機能ユニットAに対する命令を解読し、命令解読部2は機能ユニットBに対する命令を解読し、命令解読部3が機能ユニットCに対する命令を解読し、かつ、すべての機能ユニットが命令をready状態にある場合には、命令発行調停部40において3個の命令発行要求がすべて有効になる。
一方、命令解読部1が機能ユニットAに対する命令を解読し、命令解読部2も機能ユニットAに対する命令を解読した場合(図9の1Aと2Aとが同時に有効な場合)には、どちらかの命令しか発行できないので、優先順位判定部41Aは、優先順位制御部60内にPRIレジスタより優先順位を判断し、優先順位の高いものから命令を発行する。もし、この場合に論理プロセッサ1と論理プロセッサ2の優先順位が同じであれば、判定補助部42Aにより何れかの命令発行要求のみを有効にする。
【0071】
さらに、命令発行禁止部50は、命令発行調停部40で発行されることが決定した命令に対し、論理プロセッサの何れかで緊急を要する処理が発生した場合に当該論理プロセッサの命令発行を禁止する。
命令発行判断部30と命令発行禁止部50とは、何れも命令発行要求を命令発行の候補から外す機能を有しているが、機能分担しているのは次の理由による。
【0072】
すなわち、早い段階で命令の受け入れができないことがわかる要因については、命令発行判断部30において、受け入れができない論理プロセッサの命令を発行不可と判断し命令発行の候補から外すことができるが、もし、遅い段階でしかわからない要因についてまで、命令発行判断部30において、命令発行の候補から外そうとすると、命令発行可能か否かの最終判断が遅れてしまい、プロセッサの周波数向上に影響するからである。
【0073】
例えば、命令発行判断から命令発行禁止までを1サイクルで行なうとした場合に、サイクルの最後の方で命令発行不可要因が命令発行判断部30に通知されると、その時点から命令発行の候補から外す必要がある。この場合にはサイクル長を十分長く取る必要があり、クロック周波数の向上を阻害する大きな要因となる。そこで、遅い段階でしかわからない命令発行禁止の要因については、命令発行禁止部50において、発行を禁止する。もちろん、命令発行禁止部50である論理プロセッサの命令発行が禁止された場合は、それ以外の論理プロセッサからの命令を発行できるとしても、その命令を代わりに発行することはしない。既にそれぞれの機能ユニットA〜Dに対して、発行すべき命令が1つに絞り込まれた後だからである。
【0074】
この後、命令選択部70は、命令解読部1〜3に解読された命令内容やオペレーションを、命令発行禁止部50からの命令発行指示(図11の1AAA〜3AAA、1BBB〜3BBB、1CCC〜3CCC、1DDD〜3DDD)に従って機能ユニットA〜Dに発行する。
なお、本実施形態では論理プロセッサが3つ、機能ユニットが4つの場合を説明したが、これらの数は任意に変更すること当然可能である。
【0075】
また、PRIレジスタの内容を複数のレジスタで分担する用にしてもよい。例えば、自己停止用の各PRIx[2]ビットと、優先順位用の各PRIx[1:0]フィールドとは別個のレジスタとしてもよい。逆に、PRIレジスタとIRレジスタとEXCLレジスタとは、これらの全部の組み合わせ又は一部の組み合わせを1本のレジスタとして構成してもよい。
【0076】
また、特定命令検出部65は、特定命令の実行開始を検出を、その命令の実行を開始した機能ユニットからその旨の通知を受けることにより行ってもよい。
本実施形態では複数の論理プロセッサが機能ユニットに対して命令発行が競合する場面に本発明を適用する例を示したが、機能ユニット以外であっても、複数の論理プロセッサが共有する資源であれば適用することができる。これを他の実施形態として説明する。
<他の実施形態>
本実施形態では、複数の論理プロセッサが共有する資源にアクセスする場合の調停にも論理プロセッサ間の優先順位を用いることが可能であり、その一例を示す。
【0077】
図2は、本発明の他の実施形態におけるマルチスレッドプロセッサの構成を示すブロック図である。
本マルチスレッドプロセッサは、キャッシュメモリ100、命令解読部111〜113、レジスタ群131〜133、命令フェッチ制御部140、命令発行制御部150、優先順位制御部60、機能ユニットA20〜D23、レジスタ制御部170を備えて構成される。図1と同じ番号の構成要素は、同じなので説明を省略して、異なる点を中心に説明する。
【0078】
図2において、キャッシュメモリ100は、命令流が生成される元のプログラム用のキャッシュメモリである。
命令解読部111〜113は、それぞれ図1の命令解読部1〜3と同等であるが、命令フェッチ制御部140の制御を受ける点が異なっている。
レジスタ群131〜133は、それぞれ複数レジスタからなるレジスタファイルであり、命令解読部111〜113に1対1に対応して設けられている。従って論理プロセッサ1〜3にも1対1に対応している。
【0079】
命令フェッチ制御部140は、図1に示した命令発行調停部40及び命令発行禁止部50に対して、命令発行要求ではなく命令フェッチ要求の競合を調停及び禁止する点が異なる点を除いて同様の機能を有する。すなわち、優先順位制御部60からの論理プロセッサごとの優先順位の指定などを入力とし、キャッシュメモリ100に対して複数の命令解読部が同時に命令フェッチ要求が出された場合に、優先順位に応じてフェッチする順序を決定したり、また、特定の論理プロセッサの実行を停止する場合には、その論理プロセッサの命令解読部からの命令フェッチを停止する。
【0080】
命令発行制御部150は、図1に示した命令発行判断部30、命令発行調停部40、命令発行禁止部50および命令選択部70を1つの構成要素として記しており、それらを併せた機能と同等であるので説明を省略する。
レジスタ制御部170は、図1に示した命令発行判断部30および命令発行調停部40に対して、命令発行要求ではなくレジスタアクセス要求の競合を停止及び調停する点が異なる点を除いて同様の機能を有する。すなわち、優先順位制御部60からの論理プロセッサごとの優先順位の指定などを入力とし、同一のレジスタ群に対して同時に複数の機能ユニットがデータを書き込む要求を出力した場合に、優先順位に応じて書き込む順序を決定する命令発行制御部である。
【0081】
上記の構成により機能ユニットに対する論理プロセッサの競合だけでなく、キャッシュメモリへの命令フェッチ要求の競合、レジスタ群へのデータアクセス要求の競合の場面でも、優先順位に応じた調停や停止を実施することができる。
なお、上記の実施形態では、複数の命令流および論理プロセッサの数を3、機能ユニットの数を4としたが、この数はいくらでもかまわない。
【0082】
また、優先順位のレベルは2ビット3レベルとしたが、実際には幾つでもよい。さらに、制御レジスタを32ビット幅にしたが、他のビット幅でもかまわない。
また、複数の論理プロセッサで同時に分岐が発生した場合に、アドレス計算のための資源やキャッシュなど共有しているものについても、他の実施形態と同様に優先順位によって調停することができる。
【0083】
さらに、上記実施形態では、PRIレジスタには専ら専用命令により優先順位を変更するように構成されているが、専用命令以外にハードウェアにより設定・変更するように構成してもよい。この場合、各命令流の優先順位を予め定められたタイミングにより、又は命令流の状態を監視してその状態により、ハードウェアの外部的要因や内部的要因をトリガーにして優先順位を変更するようにしてもよい。
【0084】
また、上記実施形態では図9の優先順位判定部41Aにおいて、2つ又は3つの優先順位が同じ場合に、一応それらを全部有効にして出力するようにしているが、何れか1つを有効にして出力するようにしてもよい。その場合、判定補助部42Aを削除することができる。
また、図9の判定補助部42Aは優先順位判定部41Aの後段に設けられているが、優先順位制御部60と優先順位判定部41Aの間に設けて、同じ優先順位が複数ある場合には、優先順位を動的に変更するように構成してもよい。
【0085】
さらに、上記実施形態においてPRIレジスタ中のMYPRIフィールドは、PRIレジスタの読み出し命令を発行元の優先順位を出力しているが、これと同様にして例えばMYDATAフィールドを設けて、論理プロセッサ毎に状態を示すデータ(ステータスデータ、エラー情報など)を出力するようにしてもよい。
禁止部50Aが検出している緊急を要する処理は、各種イベントや各種例外処理であってもよい。ここで各種イベントとは外部割込みや内部割込みなどである。各種例外処理とはキャッシュミスやメモリアクセスエラーなどのアクセス例外、トラップ命令、演算例外、演算実行エラーなどである。
【0086】
また、上記実施形態では、各命令解読部は命令流1個につき1命令を解読し、一度に発行できる命令も1個であるものとしていた。これに限らず、命令解読部が命令流1個につき複数の命令を解読し、同時に複数の命令を発行する場合であってもよい。
【0087】
【発明の効果】
本発明のマルチスレッドプロセッサは、それぞれ命令を実行する複数の機能ユニットと、命令流に対応して設けられ、それぞれ命令を解読して、当該命令を実行すべき機能ユニットを指定するとともに当該機能ユニットに解読された命令を発行すベきことを要求する命令発行要求を作成する複数の命令解読手段と、命令流毎に命令流の優先度を保持する保持手段と、2以上の命令発行要求が同時に一の機能ユニットを指定している場合に、保持手段に保持された優先度に従って、当該機能ユニットに発行すべき解読された命令を決定する制御手段とを備えて構成される。
【0088】
この構成によれば、各機能ユニットに発行すべき命令(命令の解読結果)が前記優先度に従って決定されるので、複数の命令流間で負荷のばらつきを優先度に応じて柔軟に調整することができ、命令流毎に必要とされる処理性能を適切に実現し、かつ全体の処理効率を向上させることができるという効果がある。
ここで前記保持手段は、さらに、命令によって設定可能な、命令流毎に命令流を停止すべきか実行すべきかを示すフラグ群を保持し、
前記制御手段は、前記決定を行う調停手段と、停止を示すフラグが設定されている場合には、そのフラグに対応する命令流の命令発行要求を除外して前記決定を行うことにより、当該命令流を停止する停止手段とを備えてもよい。
【0089】
この構成によれば、さらに、命令流がその実行過程においてアイドル状態や待ち状態にある場合には、その命令流を停止状態とすることができる。つまりその結果、他の命令流を優先して実行させることができるので、さらに全体の処理性能を向上させることができる。
ここで前記制御手段は、さらに何れかの命令流に対して緊急を要する処理が発生した場合に、当該命令流に属する命令であって前記制御手段において発行すべきであると決定された命令について、機能ユニットへの命令発行を一時的に禁止する禁止手段を備えてもよい。
【0090】
この構成によれば、ある命令流(論理プロセッサ)に対して緊急を要する処理が発生した場合に、禁止手段により当該論理プロセッサの命令発行が一時的に禁止する。つまり緊急を要する処理に移行するまで要するサイクル数だけ一時的に命令発行を禁止する。これにより、割込み処理への移行を高速化することができる。\uしかも、禁止手段は、調停手段により発行するべき命令が決定された後に当該命令の発行を禁止することができるので、緊急を要する処理の発生タイミングが調停手段による決定後であっても、有効に禁止することができる。例えば、緊急を要する処理の発生タイミングが、マシンサイクルの期間の遅い時点であっても有効に禁止することができるという効果がある。
【0091】
ここで機能ユニットの1つは、優先度の変更を指示する専用命令を受け、保持手段に保持された優先度のうち、当該専用命令が属する命令流の優先度を変更するように構成してもよい。
ここで前記専用命令は、優先度を上げる又は下げることを指示するオペレーションコードのみからなり、
前記機能ユニットの1つは、専用命令の解読結果が発行された場合、当該専用命令を発行した命令解読手段を判別して、判別された命令解読手段に対応する命令流の優先度を上げ又は下げるように構成してもよい。
【0092】
この構成によれば、さらに、上記専用命令では、命令流のIDや命令流を特定するためのビット位置を示すオペランドを必要としないので、どの命令流においても同一の命令により自身の命令流の優先度を簡単に変更することができる。
また、前記一の機能ユニットによって当該命令が属する命令流の優先度を変更するので、異なる命令流の優先度を誤って書換えることもなくなり、誤動作を防止することができる。例えば、RGBカラー画像の色別画像データに同一の画像処理を施す場合、つまり、画像処理用の1つのプログラムを3つの命令流として独立かつ同時に実行させる場合、情報の隠蔽(プログラムはRGBのどれかを区別する必要がない)することができ、かつ命令流の独立性を保証することができ、その結果OSやシステム全体の信頼性が向上する。
【0093】
ここで前記保持手段は、読み出し専用の第1フィールドを有する制御レジスタを含み、
前記機能ユニットの1つは、制御レジスタの読み出し命令の解読結果が発行された場合、当該読み出し命令を発行した命令解読手段を判別して、当該命令解読手段に対応する命令流のIDを第1フィールドの読み出しデータとして内部バス上に出力するように構成してもよい。
【0094】
この構成によれば、さらに、上記のように1つのプログラムを3つの命令流として独立かつ同時に実行させる場合に、実際は1つのプログラムではあるが3つの仮想的なプログラムが並列実行されていることになる。それぞれの仮想的なプログラム(または命令流)は、それぞれ第1フィールドを読み出すことにより命令流自身のIDを容易に知ることができる。
【0095】
ここで前記保持手段は、制御レジスタを有し、
前記制御レジスタは、さらに、命令流固有のデータを保持するための命令流毎の個別フィールドと、読み出し専用の第2フィールドとを有し、
前記機能ユニットの1つは、前記制御レジスタの読み出し命令の実行に際して、さらに、命令流毎の個別フィールドを読みだすとともに、当該読み出し命令を発行した命令解読手段に対応する命令流の固有のデータを第2フィールドの読み出しデータとして内部バス上に出力するように構成してもよい。
【0096】
この構成によれば、上記の仮想的なプログラム(または命令流)は、第2フィールドを読み出すことにより自身の優先度を容易に知ることができる。
ここで前記保持手段は、命令流毎の優先度を保持する優先度フィールドを有し、
前記優先度フィールドは、命令流の実行モード別の優先度を示す小フィールドからなり、
前記機能ユニットの1つは、専用命令の解読結果が発行された場合、当該専用命令を発行した命令解読手段を判別して、判別された命令解読手段に対応する命令流の優先度フィールドのうち現在の実行モード用の小フィールドの優先度を上げ又は下げるように構成してもよい。
【0097】
この構成によれば、実行モード、例えばユーザモードとスーパーバイザモードとで独立して優先度を設定することができ、他のモードに移行してから復帰した場合に元の優先度をそのまま保存することができる。
ここでマルチスレッドプロセッサは、さらに
機能ユニットに1つが特定の命令を実行開始したことと、当該特定命令の解読結果をどの命令解読手段が発行したかを検出する特定命令検出手段と、
特定命令の実行開始が検出されたとき、その特定命令を発行した命令解読手段に対応する命令流の優先度を予め定められた期間一時的に変更する。その命令流の優先度は他の命令流よりも高い優先度に変更される一時変更手段とを備えるように構成してもよい。
【0098】
この構成によれば、一時変更手段が一時的に優先度を変更するので、命令流中の
特定命令を先頭とする命令列を、連続したサイクルで実行することを保証することができる。
ここでマルチスレッドプロセッサは、さらに
命令流毎に他の命令流を排他的に停止状態にすべきか否かを示す排他停止データを保持する排他停止データ保持手段とを備え、
前記停止手段は、さらに前記排他停止データにより停止状態とされている命令流に対応する命令解読部から調停手段への命令発行要求の通知を停止するように構成してもよい。
【0099】
この構成によれば、ある命令流が他の命令流の処理を強制的に停止させることができる。したがって命令流間の処理性能の調整を大きな範囲でおこなうことができる。
また、上記目的を達成するマルチスレッドプロセッサは、複数の命令流を同時かつ独立に並列実行するマルチスレッドプロセッサであって、前記複数の命令流の命令を一時記憶する命令キャッシュと、前記複数の命令流に対応して設けられ、命令キャッシュから命令流の命令をフェッチする複数の命令フェッチ手段と、前記複数の命令流毎に優先度を指定する優先度指定手段と、二以上の命令キャッシュ手段から同時に命令フェッチ要求が出された場合には、前記優先度制御回路の優先度に従って、命令フェッチ要求を調停する命令フェッチ制御手段とを備える。
【0100】
この構成によれば、命令キャッシュに対して複数の命令フェッチ手段からの命令フェッチ要求が競合した場合に優先度に応じて調停するので、マルチスレッドプロセッサの上流の処理において、命令流毎の処理性能を動的に調整することができるという効果がある。
また、上記目的を達成するマルチスレッドプロセッサは、命令を実行する複数の機能ユニットと、命令キャッシュから命令を取り出して解読し当該命令を実行すべき機能ユニットを指定して命令発行要求を出力する複数の命令解読部と、命令解読部と同数のレジスタセットを有し、命令解読部と同数の複数の命令流を同時かつ独立に実行するマルチスレッドプロセッサであって、命令流中の命令によって命令流毎に設定可能な、命令流の優先度を保持する保持手段と、複数の命令流によって共有される資源に対して、二以上の命令流が同時に競合した場合に、前記優先度に従って調停する制御手段とを備え、前記共有資源に対する競合は、一の機能ユニットに対する二以上の命令解読部からの命令発行要求の競合、命令キャッシュに対する二以上の命令解読部からの命令取り出し要求の競合、一のレジスタセットに対する二以上の機能ユニットからのアクセス要求の競合の何れかであるように構成されている。
【0101】
この構成によれば、命令流によって共有される資源に対して複数の命令流からの処理要求が競合した場合に、優先度に応じて調停するので、命令流毎の処理性能を柔軟に調整することができるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施形態におけるマルチスレッドプロセッサの構成を示すブロック図である。
【図2】本発明の他の実施形態におけるマルチスレッドプロセッサのブロック図である。
【図3】本発明の実施形態における命令流制御装置の優先順位指定レジスタの説明図である。
【図4】同実施形態における命令流制御装置の優先順位指定レジスタの下位2ビットの説明図である。
【図5】同実施形態における命令流制御装置の優先順位指定レジスタの上位1ビットの説明図である。
【図6】同実施形態における命令流制御装置の内部割り込みレジスタの構成図である。
【図7】同実施形態における命令流制御装置の排他停止レジスタの構成図である。
【図8】同実施形態における命令発行判断部のより詳細な構成例を示すブロック図である。
【図9】同実施形態における命令発行調停部のより詳細な構成例を示すブロック図である。
【図10】同実施形態における優先順位判定部の制御論理を示す説明図である。
【図11】同実施形態における命令発行禁止部のより詳細な構成例を示すブロック図である。
【図12】機能ユニットによる専用命令及び制御レジスタの読み出し命令の実行内容を示す説明図を示す。
【図13】優先順位制御部の詳細な構成を示すブロック図である。
【図14】連続サイクル優先部内のセレクタに入力される選択信号と、出力値との関係を表した説明図を示す。
【図15】従来のマルチスレッドプロセッサの構成を示すブロック図である。
【符号の説明】
1 命令解読部
2 命令解読部
3 命令解読部
20 機能ユニットA
21 機能ユニットB
22 機能ユニットC
23 機能ユニットD
30 命令発行判断部
40 命令発行調停部
50 命令発行禁止部
60 優先順位制御部
70 命令選択部
Claims (36)
- 複数の命令流を実行するマルチスレッドプロセッサであって、
それぞれ命令を実行する複数の機能ユニットと、
命令流に対応して設けられ、それぞれ命令を解読して、当該命令を実行すべき機能ユニットを指定するとともに当該機能ユニットに解読された命令を発行すベきことを要求する命令発行要求を作成する複数の命令解読手段と、
命令流毎に命令流の優先度を保持する保持手段と、
2以上の命令発行要求が同時に一の機能ユニットを指定している場合に、保持手段に保持された優先度に従って、当該機能ユニットに発行すべき解読された命令を決定する制御手段と
を備え、
前記保持手段は、さらに、命令によって設定可能な、命令流毎に命令流を停止すべきか実行すべきかを示すフラグ群を保持し、
前記制御手段は、
前記決定を行う調停手段と、
停止を示すフラグが設定されている場合には、そのフラグに対応する命令流の命令発行要求を除外して前記決定を行うことにより、当該命令流を停止する停止手段と
を備えることを特徴とするマルチスレッドプロセッサ。 - 前記制御手段は、さらに
何れかの命令流に対して緊急を要する処理が発生した場合に、当該命令流に属する命令であって前記制御手段において発行すべきであると決定された命令について、機能ユニットへの命令発行を一時的に禁止する禁止手段
を備えることを特徴とする請求項1記載のマルチスレッドプロセッサ。 - 前記緊急を要する処理は、割込み要求、キャッシュミス発生を知らせるイベントの何れかである
ことを特徴とする請求項2記載のマルチスレッドプロセッサ。 - 複数の命令流を実行するマルチスレッドプロセッサであって、
それぞれ命令を実行する複数の機能ユニットと、
命令流に対応して設けられ、それぞれ命令を解読して、当該命令を実行すべき機能ユニットを指定するとともに当該機能ユニットに解読された命令を発行すベきことを要求する命令発行要求を作成する複数の命令解読手段と、
命令流毎に命令流の優先度を保持する保持手段と、
2以上の命令発行要求が同時に一の機能ユニットを指定している場合に、保持手段に保持された優先度に従って、当該機能ユニットに発行すべき解読された命令を決定する制御手段と
を備え、
機能ユニットの1つは、優先度の変更を指示する専用命令を受け、保持手段に保持された優先度のうち、当該専用命令が属する命令流の優先度を変更する
ことを特徴とするマルチスレッドプロセッサ。 - 前記専用命令は、優先度を上げ又は下げることを指示するオペレーションコードのみからなり、
前記機能ユニットの1つは、専用命令の解読結果が発行された場合、当該専用命令を発行した命令解読手段を判別して、判別された命令解読手段に対応する命令流の優先度を上げ又は下げる
ことを特徴とする請求項4記載のマルチスレッドプロセッサ。 - 前記保持手段は、読み出し専用の第1フィールドを有する制御レジスタを含み、
前記機能ユニットの1つは、制御レジスタの読み出し命令の解読結果が発行された場合、当該読み出し命令を発行した命令解読手段を判別して、当該命令解読手段に対応する命令流のIDを第1フィールドの読み出しデータとして内部バス上に出力する
ことを特徴とする請求項5記載のマルチスレッドプロセッサ。 - 前記制御レジスタは、さらに前記優先度を保持するための命令流毎の優先度フィールドを有し、
前記機能ユニットの1つは、制御レジスタの読み出し命令の解読結果が発行された場合、さらに各優先度フィールドを読み出す
ことを特徴とする請求項6記載のマルチスレッドプロセッサ。 - 前記保持手段は、制御レジスタを有し、
前記制御レジスタは、さらに、命令流固有のデータを保持するための命令流毎の個別フィールドと、読み出し専用の第2フィールドとを有し、
前記機能ユニットの1つは、前記制御レジスタの読み出し命令の実行に際して、さらに、命令流毎の個別フィールドを読みだすとともに、当該読み出し命令を発行した命令解読手段に対応する命令流の固有のデータを第2フィールドの読み出しデータとして内部バス上に出力する
ことを特徴とする請求項5記載のマルチスレッドプロセッサ。 - 前記命令流固有のデータは、優先度であることを特徴とする請求項8記載のマルチスレッドプロセッサ。
- 前記保持手段は、命令流毎の優先度を保持する優先度フィールドを有し、
前記優先度フィールドは、命令流の実行モード別の優先度を示す小フィールドからなり、
前記機能ユニットの1つは、専用命令の解読結果が発行された場合、当該専用命令を発行した命令解読手段を判別して、判別された命令解読手段に対応する命令流の優先度フィールドのうち現在の実行モード用の小フィールドの優先度を上げ又は下げる
ことを特徴とする請求項5記載のマルチスレッドプロセッサ。 - 複数の命令流を実行するマルチスレッドプロセッサであって、
それぞれ命令を実行する複数の機能ユニットと、
命令流に対応して設けられ、それぞれ命令を解読して、当該命令を実行すべき機能ユニットを指定するとともに当該機能ユニットに解読された命令を発行すベきことを要求する命令発行要求を作成する複数の命令解読手段と、
命令流毎に命令流の優先度を保持する保持手段と、
2以上の命令発行要求が同時に一の機能ユニットを指定している場合に、保持手段に保持された優先度に従って、当該機能ユニットに発行すべき解読された命令を決定する制御手段と
を備え、
機能ユニットに1つが特定の命令を実行開始したことと、当該特定命令の解読結果をどの命令解読手段が発行したかを検出する特定命令検出手段と、
特定命令の実行開始が検出されたとき、その特定命令を発行した命令解読手段に対応する命令流の優先度を、他の命令流よりも高い優先度に予め定められた期間一時的に変更する一時変更手段と
を備えることを特徴とするマルチスレッドプロセッサ。 - 複数の命令流を実行するマルチスレッドプロセッサであって、
それぞれ命令を実行する複数の機能ユニットと、
命令流に対応して設けられ、それぞれ命令を解読して、当該命令を実行すべき機能ユニットと、当該機能ユニットに解読された命令を発行すベきことを要求する命令発行要求を作成する複数の命令解読手段と、
命令流毎にその優先度を保持する優先度保持手段と、
命令流毎に命令流を実行状態にすべきか停止状態にすべきかを示す自己停止データを保持する自己停止データ保持手段と、
複数の命令解読部から通知される命令発行要求を受けて、2以上の命令発行要求が同時に一の機能ユニットを指定している場合に、優先度保持手段に保持された優先度に従って、当該機能ユニットに発行すべき解読された命令を決定する調停手段と、
複数の命令解読部から前記調停手段に通知される命令発行要求のうち、前記自己停止データにより停止状態とされている命令流に対応する命令解読部から調停手段への命令発行要求の通知を停止する停止手段と
を備えることを特徴とするマルチスレッドプロセッサ。 - 前記マルチスレッドプロセッサは、さらに命令流毎に他の命令流を排他的に停止状態にすべきか否かを示す排他停止データを保持する排他停止データ保持手段を備え、
前記停止手段は、さらに前記排他停止データにより停止状態とされている命令流に対応する命令解読部から調停手段への命令発行要求の通知を停止する
ことを特徴とする請求項12記載のマルチスレッドプロセッサ。 - 前記機能ユニットの1つは、優先度の変更を指示する専用命令の解読結果が発行された場合、当該命令に従って優先度を変更する
ことを特徴とする請求項12記載のマルチスレッドプロセッサ。 - 前記専用命令は、優先度を上げる又は下げることを指示するオペレーションコードのみからなり、
前記機能ユニットの1つは、専用命令の解読結果が発行された場合、当該専用命令を発行した命令解読手段を判別して、判別された命令解読手段に対応する命令流の優先度を上げ又は下げる
ことを特徴とする請求項14記載のマルチスレッドプロセッサ。 - 前記保持手段は、読み出し専用の第1フィールドを有する制御レジスタを含み、
前記機能ユニットの1つは、制御レジスタの読み出し命令の解読結果が発行された場合、当該読み出し命令を発行した命令解読手段を判別して、当該命令解読手段に対応する命令流のIDを第1フィールドの読み出しデータとして内部バス上に出力する
ことを特徴とする請求項15記載のマルチスレッドプロセッサ。 - 前記制御レジスタは、さらに前記優先度を保持するための命令流毎の優先度フィールドを有し、
前記機能ユニットの1つは、制御レジスタの読み出し命令の解読結果が発行された場合、さらに各優先度フィールドを読み出す
ことを特徴とする請求項16記載のマルチスレッドプロセッサ。 - 前記保持手段は、制御レジスタを有し、
前記制御レジスタは、さらに、命令流固有のデータを保持するための命令流毎の個別フィールドと、読み出し専用の第2フィールドとを有し、
前記機能ユニットの1つは、前記制御レジスタの読み出し命令の実行に際して、さらに、命令流毎の個別フィールドを読みだすとともに、当該読み出し命令を発行した命令解読手段に対応する命令流の固有のデータを第2フィールドの読み出しデータとして内部バス上に出力する
ことを特徴とする請求項15記載のマルチスレッドプロセッサ。 - 前記命令流固有のデータは、優先度であることを特徴とする請求項18記載のマルチスレッドプロセッサ。
- 前記保持手段は、命令流毎の優先度を保持する優先度フィールドを有し、
前記優先度フィールドは、命令流の実行モード別の優先度を示す小フィールドからなり、
前記機能ユニットの1つは、専用命令の解読結果が発行された場合、当該専用命令を発行した命令解読手段を判別して、判別された命令解読手段に対応する命令流の優先度フィールドのうち現在の実行モード用の小フィールドの優先度を上げ又は下げる
ことを特徴とする請求項18記載のマルチスレッドプロセッサ。 - 機能ユニットに1つが特定の命令を実行開始したことと、当該特定命令の解読結果をどの命令解読手段が発行したかを検出する特定命令検出手段と、
特定命令の実行開始が検出されたとき、その特定命令を発行した命令解読手段に対応する命令流の優先度を、他の命令流よりも高い優先度に予め定められた期間一時的に変更する一時変更手段と
を備えることを特徴とする請求項12記載のマルチスレッドプロセッサ。 - 複数の命令流を同時かつ独立に並列実行するマルチスレッドプロセッサであって、
それぞれ同時かつ独立に命令を実行する複数の機能ユニットと、
前記複数の命令流の対応して設けられる、それぞれは命令流の命令を取り出して解読し、前記機能ユニットのうち発行先とすべき機能ユニットを特定する複数の命令解読手段と、
前記複数の命令流毎の優先度を指定する優先度指定手段と、
命令を受け入れ可能か否かを示す機能ユニット毎の状態に基づいて、前記発行先とすべき機能ユニットに、解読された命令を発行可能か否かを判断する命令発行判断手段と、
一の機能ユニットに対して二以上の命令が発行可能と判断された場合には、前記優先度指定手段に指定される優先度に従って当該二以上の命令を調停して当該一の機能ユニットに発行すべき一命令を決定する命令発行調停手段と、
どれかの命令流に対して緊急を要する処理が発生した場合に、当該命令流に属する命令であって前記命令発行調停手段において既に発行すべきであると決定された命令について、機能ユニットへの命令発行を一時的に禁止する命令発行禁止手段と
を備えることを特徴とするマルチスレッドプロセッサ。 - 前記緊急を要する処理は、割込み要求、キャッシュミス発生を知らせるイベントの何れかである
を備えることを特徴とする請求項22記載のマルチスレッドプロセッサ。 - 前記優先度指定手段は、命令流毎に命令流の優先度を保持する制御レジスタを備え、
前記優先度は、命令流中の命令によって設定される
ことを特徴とする請求項22記載のマルチスレッドプロセッサ。 - 前記機能ユニットの1つは、優先度の変更を指示する専用命令を受け、保持手段に保持された優先度のうち、当該専用命令が属する命令流の優先度を変更することを特徴とする請求項24記載のマルチスレッドプロセッサ。
- 前記命令発行調停手段は、さらに一の機能ユニットに対して二以上の命令が発行可能と判断され、かつ、当該二以上の命令が属する命令流が同順位の優先度である場合には、当該一の機能ユニットに発行すべき命令を所定の手順で決定する
ことを特徴とする請求項25記載のマルチスレッドプロセッサ。 - 前記命令発行調停手段は、
前記所定の手順として、周期的に異なる命令流が優先されるように決定する手順と、命令流の実行の履歴より前回と異なる命令流の命令を発行すべき命令と決定する手順と、固定的に何れかの命令流の命令を決定する手順との何れかに従って発行すべき命令を決定する補助判定手段を備える
ことを特徴とする請求項26記載のマルチスレッドプロセッサ。 - 前記制御レジスタは、命令流毎に実行モード別の優先度フィールドを有し、
前記命令発行調停手段は、命令流の実行モードに応じた優先度フィールドを参照して前記調停を行う
ことを特徴とする請求項24記載のマルチスレッドプロセッサ。 - 前記優先度指定手段は、
命令流中の専用命令によって命令流毎に実行モード別の設定可能な優先度フィールドを有する制御レジスタを備え、
機能ユニットの1つは、前記専用命令の発行元の命令解読手段に対応する命令流及びその実行モードを検出して、検出された命令流及び実行モードに対応する優先度フィールドに専用命令に従って優先度を設定する
ことを特徴とする請求項22記載のマルチスレッドプロセッサ。 - 前記専用命令は、オペレーションコードのみからなり、優先度の上昇又は下降の何れかを指示する
ことを特徴とする請求項29記載のマルチスレッドプロセッサ。 - 複数の命令流を同時かつ独立に並列実行するマルチスレッドプロセッサであって、
同時かつ独立に命令を実行する複数の機能ユニットと、
前記複数の命令流の対応して設けられる、命令流の命令を取り出して解読し、前記機能ユニットのうち発行先とすべき機能ユニットを解読する複数の命令解読手段と、
前記複数の命令流毎の優先度と、命令流毎に実行状態にあるか停止状態にあるかを指定する優先度指定手段と、
命令を受け入れ可能か否かを示す機能ユニット毎の状態に基づいて、前記発行先とすべき機能ユニットに、解読された命令を発行可能か否かを判断する命令発行判断手段と、
一の機能ユニットに対して二以上の命令が発行可能と判断された場合には、前記優先度指定手段に指定される優先度に従って当該二以上の命令を調停して当該一の機能ユニットに発行すべき一命令を決定する命令発行調停手段と
を備えることを特徴とするマルチスレッドプロセッサ。 - 前記優先度指定手段は、
第1の命令によって設定可能な命令流毎の優先度を保持する第1レジスタと、
第2の命令によって設定可能な、命令流が実行状態か停止状態かを示す命令流毎の状態フラグを保持する第2レジスタと、
第3の命令によって設定可能な、他の全命令流を停止することを示す命令流毎の排他停止フラグを保持する第3レジスタと
を備え、
前記命令発行判断手段は、前記状態フラグ及び排他停止レジスタに従って停止中の命令流の命令を発行不可と判断する
ことを特徴とする請求項31記載のマルチスレッドプロセッサ。 - 前記第1の命令は、優先度を上げる又は下げることを指示するオペレーションコードのみからなる命令であり、
前記第2の命令は、停止状態に入ることを指示するオペレーションコードのみからなる命令であり、
前記第3の命令は、他の命令流を停止させることを指示するオペレーションコードのみからなる命令であり、
前記機能ユニットの1つは、第1、第2又は第3の命令が発行されたとき、当該命令の発行元の命令解読手段に対応する命令流を検出して、検出された命令流対応する優先度、状態フラグ又は排他停止フラグを変更する
ことを特徴とする請求項32記載のマルチスレッドプロセッサ。 - 複数の命令流を同時かつ独立に並列実行するマルチスレッドプロセッサであって、
前記複数の命令流の命令を一時記憶する命令キャッシュと、
前記複数の命令流に対応して設けられ、命令キャッシュから命令流の命令をフェッチする複数の命令フェッチ手段と、
前記複数の命令流毎に優先度を指定する優先度指定手段と、
二以上の命令フェッチ手段から同時に命令フェッチ要求が出された場合には、前記優先度制御回路の優先度に従って、命令フェッチ要求を調停する命令フェッチ制御手段と
を備えることを特徴とするマルチスレッドプロセッサ。 - 命令を実行する複数の機能ユニットと、命令キャッシュから命令を取り出して解読し当該命令を実行すべき機能ユニットを指定して命令発行要求を出力する複数の命令解読部と、命令解読部と同数のレジスタセットを有し、命令解読部と同数の複数の命令流を同時かつ独立に実行するマルチスレッドプロセッサであって、
命令流中の命令によって命令流毎に設定可能な、命令流の優先度を保持する保持手段と、
複数の命令流によって共有される資源に対して、二以上の命令流が同時に競合した場合に、前記優先度に従って調停する制御手段と
を備え、
前記共有資源に対する競合は、一の機能ユニットに対する二以上の命令解読部からの命令発行要求の競合、命令キャッシュに対する二以上の命令解読部からの命令取り出し要求の競合、一のレジスタセットに対する二以上の機能ユニットからのアクセス要求の競合の何れかである
ことを特徴とするマルチスレッドプロセッサ。 - 前記機能ユニットの1つは、優先度を上げる又は下げることを指示する命令を受け、保持手段に保持された優先度のうち当該命令が属する命令流の優先度を変更する
ことを特徴とする請求項35記載のマルチスレッドプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23097697A JP3760035B2 (ja) | 1996-08-27 | 1997-08-27 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22472096 | 1996-08-27 | ||
JP8-224720 | 1996-08-27 | ||
JP23097697A JP3760035B2 (ja) | 1996-08-27 | 1997-08-27 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10124316A JPH10124316A (ja) | 1998-05-15 |
JP3760035B2 true JP3760035B2 (ja) | 2006-03-29 |
Family
ID=26526223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23097697A Expired - Fee Related JP3760035B2 (ja) | 1996-08-27 | 1997-08-27 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3760035B2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237093B1 (en) | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US7020879B1 (en) | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
JP2000284970A (ja) * | 1999-03-29 | 2000-10-13 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
US6889319B1 (en) * | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
JP2004518183A (ja) | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
JP3769249B2 (ja) | 2002-06-27 | 2006-04-19 | 富士通株式会社 | 命令処理装置および命令処理方法 |
US7401208B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor |
US7360062B2 (en) | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
US7401207B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Apparatus and method for adjusting instruction thread priority in a multi-thread processor |
JP2005182791A (ja) * | 2003-12-12 | 2005-07-07 | Sharp Corp | 汎用組込みプロセッサ |
US7748001B2 (en) * | 2004-09-23 | 2010-06-29 | Intel Corporation | Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time |
US8607235B2 (en) * | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
JP4557748B2 (ja) * | 2005-02-28 | 2010-10-06 | 株式会社東芝 | 演算処理装置 |
WO2006129767A1 (ja) * | 2005-06-02 | 2006-12-07 | Keio University | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 |
JP2007109057A (ja) | 2005-10-14 | 2007-04-26 | Hitachi Ltd | プロセッサ |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP2008191856A (ja) * | 2007-02-02 | 2008-08-21 | Nec Computertechno Ltd | 情報処理システム |
WO2008155797A1 (ja) | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算装置 |
WO2009107462A1 (ja) | 2008-02-26 | 2009-09-03 | 日本電気株式会社 | 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム |
JP5173714B2 (ja) | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ及びその割り込み処理方法 |
CN102428441B (zh) | 2009-05-18 | 2015-04-08 | 松下电器产业株式会社 | 处理器 |
JP5548037B2 (ja) * | 2010-06-11 | 2014-07-16 | パナソニック株式会社 | 命令発行制御装置及び方法 |
JP5803972B2 (ja) * | 2013-04-18 | 2015-11-04 | 株式会社デンソー | マルチコアプロセッサ |
KR102177871B1 (ko) * | 2013-12-20 | 2020-11-12 | 삼성전자주식회사 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
JP7298624B2 (ja) * | 2018-12-11 | 2023-06-27 | サンケン電気株式会社 | プロセッサ及びパイプライン処理方法 |
DE102020117505A1 (de) * | 2019-07-27 | 2021-01-28 | Analog Devices International Unlimited Company | Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger |
CN112000019B (zh) * | 2020-07-24 | 2024-04-26 | 青岛海尔空调器有限总公司 | 用于共享设备指令控制的方法、装置及设备 |
-
1997
- 1997-08-27 JP JP23097697A patent/JP3760035B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10124316A (ja) | 1998-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3760035B2 (ja) | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ | |
EP0827071B1 (en) | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream | |
US8145884B2 (en) | Apparatus, method and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
KR100436675B1 (ko) | 멀티쓰레드 프로세서에서 공유 파이프라인 및 다른파이프라인 스테이지의 선택적인 플러쉬 | |
US6061710A (en) | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads | |
US8195922B2 (en) | System for dynamically allocating processing time to multiple threads | |
JP3093639B2 (ja) | プロセッサ内の資源割当て追跡方法及びそのシステム | |
EP0495165B1 (en) | Overlapped serialization | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
US7603543B2 (en) | Method, apparatus and program product for enhancing performance of an in-order processor with long stalls | |
WO1996034335A1 (en) | Apparatus for detecting and executing traps in a superscalar processor | |
JP2006039815A (ja) | マルチスレッドプロセッサおよびレジスタ制御方法 | |
JPH0721021A (ja) | 情報処理装置 | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
JPH10301778A (ja) | レジスタの名前変更を管理する方法および装置 | |
US20080010426A1 (en) | Processor system and processing method for operating system program in processor system | |
JPH10283178A (ja) | 命令を発行するための方法及びシステム | |
JPH0769825B2 (ja) | 並列処理装置 | |
JP2000020310A (ja) | プロセッサ | |
EP2843543B1 (en) | Arithmetic processing device and control method of arithmetic processing device | |
JPS58205258A (ja) | デ−タ処理装置 | |
JPH09160777A (ja) | データ処理装置 | |
JPH04353928A (ja) | 演算処理装置 | |
JP2003241977A (ja) | 中央演算処理装置及び情報処理装置 | |
JPH0240722A (ja) | 演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040819 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050628 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050818 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050913 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051109 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060106 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090113 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100113 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110113 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110113 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120113 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130113 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130113 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |