JP2004326767A - マルチスレッド・プロセッサにおいて命令スレッドのインタリービングをランダム化するための方法および装置 - Google Patents

マルチスレッド・プロセッサにおいて命令スレッドのインタリービングをランダム化するための方法および装置 Download PDF

Info

Publication number
JP2004326767A
JP2004326767A JP2004119604A JP2004119604A JP2004326767A JP 2004326767 A JP2004326767 A JP 2004326767A JP 2004119604 A JP2004119604 A JP 2004119604A JP 2004119604 A JP2004119604 A JP 2004119604A JP 2004326767 A JP2004326767 A JP 2004326767A
Authority
JP
Japan
Prior art keywords
thread
mask
instruction
priority
signal
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.)
Granted
Application number
JP2004119604A
Other languages
English (en)
Other versions
JP4086809B2 (ja
Inventor
Ronald N Kalla
ロナルド・エヌ・カラ
Minh Michelle Quy Pham
ミン・ミシェル・キュー・ファム
Shinharoi Bararamu
バララム・シンハロイ
Iii John W Ward
3世 ジョン・ダブリュー・ワード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004326767A publication Critical patent/JP2004326767A/ja
Application granted granted Critical
Publication of JP4086809B2 publication Critical patent/JP4086809B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

【課題】
【解決手段】プロセッサは優先規則に従って命令をインタリーブする。この優先規則は、それぞれのスレッドからの命令を選択し、その命令を、データ・プロセッサで処理するインタリーブされた命令ストリームに加える頻度を決定する。規則に従ってそれぞれのスレッドを選択する頻度は、命令スレッドに割り当てられた優先度に基づいて決定することができる。このインタリービング・プロセスにランダム化が挿入され、その結果、任意のクロック・サイクルでの命令スレッドの選択が、優先規則だけに基づいてなされるのではなしに、ランダムまたは擬似ランダム要素にも基づいて決定される。このランダム化は、さまざまな命令スレッドから命令を選択する順序が変更され、同時に、優先規則によって設定される全体的なスレッド選択の頻度(すなわちスレッドをどのくらい頻繁に選択するか)が維持されるような方法で、命令スレッド選択プロセスに挿入される。
【選択図】図2

Description

本発明は、複数の命令スレッドを処理する能力を有するプロセッサに関する。詳細には本発明は、処理のために命令スレッドをインタリーブする方法にランダム化を導入し、同時に命令スレッド間のインタリービングの全体的な比率または程度をある所望の比率または程度に維持する装置および方法に関する。
データ・プロセッサがソフトウェア・プログラムを実行する速度を向上させる目的にはいくつかの技法が使用される。これらの技法には、プロセッサのクロック速度を高めること、キャッシュ・メモリを使用すること、および分岐予測を使用することが含まれる。プロセッサのクロック速度を高めると、プロセッサは、与えられた時間内に相対的に多くの演算を実行できるようになる。キャッシュ・メモリは、プロセッサのすぐ近くに置かれ、メイン・メモリよりも速く動作する。これによってプロセッサがデータおよび命令にアクセスするのに要する時間が短縮される。分岐予測では、プロセッサが、以前の命令の結果に関する予測に基づいてある種の命令を実行することができ、そのため実結果を待つ必要がなくなり、これによって処理速度が向上する。
いくつかのプロセッサはさらに、パイプライン方式の命令実行を使用してシステム性能を強化している。パイプライン命令実行では、処理タスクが、いくつかのパイプライン・ステップまたはステージに分割される。パイプライン処理では、以前に発行された命令が特定のプロセスを完了させる前に後続の命令が処理を開始できるようにすることによって、処理速度を高めることができる。プロセッサは、ある命令が完全に処理されるのを待つことなく次の命令の処理を開始することができる。
パイプライン処理を使用するプロセッサは、プロセッサ内での異なるアクティビティに充てられる異なるいくつかのパイプラインを含むことができる。例えばプロセッサは、一連の命令を、フェッチ・ステージ、解読/ディスパッチ・ステージ、発行ステージ、実行ステージ、終了ステージおよび完了ステージで処理することができる。これらの個々のステージはそれぞれ、自体のパイプライン・ステージ・セットを使用して、所望の処理タスクを実行することができる。
マルチスレッド命令処理は、パイプライン処理とともに使用して処理速度を高めることができる追加の技法である。マルチスレッド命令処理は、1つのプログラム命令セットを、2つ以上の別個の命令群ないし命令スレッドに分割することを含む。このマルチスレッド技法では、何らかの理由で1つのスレッドが処理できない場合でも、その間に、別の1つのスレッドからの命令をパイプライン処理することができる。これによって、シングル・スレッド命令処理において遭遇する、例えば特定の命令を実行するのに必要なデータがすぐには使用できないキャッシュ・ミス状況などで特定の命令を実行できない間、全ての命令が停止される状況が回避される。複数の命令スレッドを処理する能力を有するデータ・プロセッサはしばしば、同時マルチスレッディング(simultaneous multithreading:SMT)プロセッサと呼ばれる。
ソフトウェア分野での用語「マルチスレッディング」の使用方法と、コンピュータ・アーキテクチャ分野での用語「マルチスレッディング」の使用方法とは異なることに留意されたい。ソフトウェア分野では用語「マルチスレッディング」が、複数の関連スレッドに細分されたある1つのタスクについて使用される。コンピュータ・アーキテクチャ分野では、用語「マルチスレッディング」が、互いに独立したスレッドを含むスレッドに対して使用される。本明細書では用語「マルチスレッディング」を、コンピュータ・アーキテクチャ分野で使用されている意味と同じ意味で使用する。
マルチスレッディングを容易にするため、異なるスレッドからの命令は、プロセッサ・パイプライン上のあるポイントで何らかの方法でインタリーブされる。SMTプロセッサで処理する命令をインタリーブする技法には一般に異なる2つの技法がある。1つの技法は、1つのスレッドの処理において遅延を引き起こすキャッシュ・ミスなどのある長い待ち時間事象(long latency event)に基づいてスレッドをインタリーブすることを含む。この技法では、ある長い待ち時間事象によって1つのスレッドの処理に遅延が生じるまで、全てのプロセッサ・リソースがその1つのスレッドに向けられる。長い待ち時間事象が出現すると、プロセッサはすぐに別のスレッドに切り替わり、そのスレッドに対してある長い待ち時間事象が生じるまで、または先のスレッドを停止させた状況が解決される場合、そのスレッドの処理を進める。
SMTプロセッサにおいて複数の命令スレッドからの命令をインタリーブするもう1つの一般的な技法は、命令を、あるインタリービング規則に従ってサイクル単位でインタリーブすることを含む。単純なサイクル単位のインタリービング技法は、異なるスレッドからの命令を1命令ずつ単純にインタリーブする。例えば2スレッドSMTプロセッサでは、第1のクロック・サイクルで第1のスレッドから1つの命令を取り出し、第2のクロック・サイクルで第2のスレッドから1つの命令を取り出し、第3のクロック・サイクルで第1のスレッドの別の命令を取り出し、...というように、2つの命令スレッド間で交互に命令を処理することができる。より複雑なサイクル単位のインタリービング技法は、それぞれの命令スレッドに優先度を割り当て(通常ソフトウェアを介して)、次いでインタリーブして、相対的なスレッド優先度に基づくある規則を執行することを含む。例えば、2スレッドSMTプロセッサにおいて、一方のスレッドに他方のスレッドよりも高い優先度が割り当てられている場合、単純なインタリービング規則は例えば、優先度が高いほうのスレッドからインタリーブされた命令ストリームに含める命令の数を、優先度が低いほうのスレッドから含める命令の数の2倍にすることを要求する。
現在使用されているより複雑なサイクル単位インタリービング規則では、それぞれのスレッドに「1」から「7」までの優先度を割り当て、優先度が低いほうのスレッドの要素を、関数1/(2|X−Y|+1)に基づいてインタリーブされた命令ストリームに入れる。ただし、X=ソフトウェアによって第1のスレッドに割り当てられた優先度、Y=ソフトウェアによって第2のスレッドに割り当てられた優先度、である。2つのスレッドの優先度が等しい場合、例えばX=3、Y=3のときには、この関数から比1/2が得られ、2つのスレッドからそれぞれ2クロック・サイクルに1回、1つの命令が、インタリーブされた命令ストリームに入れられる。スレッド優先度の差が2の場合、例えばX=2、Y=4のときには、この関数から比1/8が得られ、優先度の低いほうのスレッドから、8クロック・サイクルに1回、1つの命令が、インタリーブされた命令ストリームに入れられる。
しかし、優先規則の執行が、インタリーブされたストリームへのいずれかのスレッドの進入を妨げる競合を引き起こす、偶発的な状況またはシナリオがある。一般に「ライブ・ロック」状況と呼ばれるこれらの状況では、異なるスレッドからの命令が優先規則に従って、これらの異なる命令スレッドの全てが停止してしまう循環的な方法でインタリーブされる。例えば、マルチスレッド・プロセッサ内の異なる命令スレッドからの命令がともに、それらの間で共用されている1つのリソースを必要としているとする。この場合、さまざまなスレッドからの命令を優先規則に従って循環的にインタリーブさせると、これらの命令は、リソースにアクセスすることを互いに事実上妨害し、したがってプロセッサを停止させる可能性がある。
本発明は、データ・プロセッサにおいて複数の命令スレッドからの命令をインタリーブするための装置および方法を含む。命令は優先規則に従ってインタリーブされる。この優先規則は、それぞれのスレッドからの命令を選択し、その命令を、データ・プロセッサで処理するインタリーブされた命令ストリームに加える頻度を決定する。規則に従ってそれぞれのスレッドを選択する頻度は、命令スレッドに割り当てられた優先度に基づいて決定することができる。本発明によれば、このインタリービング・プロセスにランダム化が挿入され、その結果、任意のクロック・サイクルでの命令スレッドの選択が、優先規則だけに基づいてなされるのではなしに、ランダムまたは擬似ランダム要素にも基づいて決定される。このランダム化は、さまざまな命令スレッドから命令を選択する順序が変更され、同時に、優先規則によって設定される全体的なスレッド選択の頻度(すなわちスレッドをどのくらい頻繁に選択するか)が維持されるような方法で、命令スレッド選択プロセスに挿入される。スレッド選択プロセスにランダム化を挿入することによって、ライブ・ロック・シナリオの可能性が最小化し、優先規則によって決定されるスレッド選択の全体的な望ましい頻度が維持される。
優先規則とランダムまたは擬似ランダム要素の両方に基づいてスレッドを選択するスレッド選択出力は、インタリーブ規則執行構成要素とランダム化構成要素とを含む選択コントローラによって生成することができる。規則執行構成要素は、優先規則が組み込まれた基準スレッド選択出力信号を生成する。規則執行構成要素はこの基準スレッド選択出力信号をランダム化構成要素に送達する。ランダム化構成要素はランダム化を挿入して最終的な選択出力信号を生成する。したがって最終的な選択出力信号は、規則執行構成要素で確立された優先規則とランダム化構成要素によって挿入されたランダム化の両方を反映したものになる。
本発明は、別個の規則執行構成要素とランダム化構成要素とを使用して実施することができるが、本発明の好ましい一形態は、インタリーブ規則執行構成要素とランダム化構成要素とを結合した回路である。本発明の一形態では、結合されたこの回路が、マスクを含むスレッド選択信号を生成する。好ましい一実施態様では、マスク論理が、特定の命令スレッドに関連づけられた複数の優先度信号を使用してマスクを生成する。優先度信号は通常ソフトウェアによって生成され、優先度信号はそれぞれ、それぞれの命令スレッドに割り当てられた優先度を指示する。例えば、2つの優先度信号を使用してマスクを生成する場合には、一方の優先度信号が第1の命令スレッドの優先度を指示し、もう一方の優先度信号が第2の命令スレッドの優先度を指示する。本発明の少なくとも1つの例では、この2つの優先度信号を比較して2つの関連命令スレッドの優先度の差を求めることによってマスクが生成される。このように生成されたマスクは、両方の命令スレッドの優先度を考慮したものになり、マルチプレクサ・コントローラはこのマスクを使用して、所望の優先規則に基づくスレッド・インタリーブ比を設定することができる。
この結合された回路の一部である比較論理は、スレッド・インタリービング・プロセスにランダム化を挿入する。この比較論理は、乱数または擬似乱数発生器が発生させた乱数または擬似乱数を、マスク論理によって生成されたマスクと比較し、ランダム化されたマスクを生成する。このランダム化されたマスクはスレッド優先度を考慮し、同時に、処理する特定のスレッドがランダムに選択されることを保証する。
本発明のこれらの利点および特徴、ならびにその他の利点および特徴は、好ましい実施形態の以下の説明を添付の図面とともに検討することによって明白となろう。
図1に、本発明の原理を具体化したプロセッサ100を示す。プロセッサ100はマルチスレッディングに対応し、第1の命令待ち行列101(Queue_0)、第2の命令待ち行列102(Queue_1)、選択マルチプレクサ(MUX)105、および選択コントローラ106を含む。命令待ち行列101および102はそれぞれ、それぞれの命令スレッド中の命令の取扱いに携わる。具体的には、第1の命令待ち行列101は第1の命令スレッドT0からの命令を待ち行列に入れ、第2の命令待ち行列102は第2の命令スレッドT1からの命令を待ち行列に入れる。シーケンシャル・フェッチャ(sequential fetcher)120は、この2つの異なる命令スレッドを構成する命令群を、命令キャッシュ/メモリ管理ユニット(memorymanagement unit:MMU)118から命令待ち行列101および102に転送する。命令待ち行列101および102は最終的に、それぞれの命令を選択MUX105の2つの入力に供給する。選択コントローラ106は、この2つの異なる命令スレッドからの命令を、インタリーブされた処理のための単一の命令ストリームにインタリーブする選択MUX105を制御する。
図2および3を参照して後に詳細に説明するとおり、それぞれの命令スレッドには優先度が割り当てられ、選択コントローラ106は、これらの優先度を使用して、それぞれの待ち行列(101または102)からの命令を、インタリーブされた処理ストリームに入れる頻度に関する規則を執行する。インタリーブされた命令ストリームを処理する際のライブ・ロック・シナリオを防ぐため、選択コントローラ106はさらに、この命令スレッド選択にランダム化を追加する。選択コントローラ106の出力は、スレッド選択制御経路154に適用される制御信号を含む。スレッド選択制御経路154上のこの制御信号は、後段の処理のために特定の1クロック・サイクルの間に通過させるMUX105の入力を指定する。MUX105のそれぞれの入力は、異なるスレッドからの命令を含む命令待ち行列に結合されているので、MUX105の特定の入力を選択することは、処理をおこなう特定の命令スレッドを選択する効果を有する。
図1に示した例示的な実施形態では、プロセッサ100が、単一の集積回路スーパースカラ・マイクロプロセッサを含む。したがってプロセッサ100は、さまざまな実行ユニット、レジスタ、バッファ、メモリ・デバイスおよび他の機能単位を含む。これらは全て集積回路設計によって形成される。本明細書では、マイクロプロセッサに適用するとして本発明を説明しているが、当然ながら、この選択コントローラ配置はマイクロプロセッサだけに限定されず、他のタイプのプロセッサに実装することもできる。さらに、図1に示した全体プロセッサ配置は、第1の命令待ち行列101、第2の命令待ち行列102および選択MUX105に対する選択コントローラ106の動作を説明する際の例として示したに過ぎない。本明細書において説明し請求する選択コントローラは、複数の命令スレッドの同時処理をサポートする能力を有する実質的に任意のプロセッサ配置で利用することができることを当業者は理解されたい。
図1に示すプロセッサ100は、バス・インタフェース・ユニット(BIU)114およびプロセッサ・バス115を介してシステム・バス113に結合されている。システム・バス113およびプロセッサ・バス115はともに、個別に示されてはいないが、アドレス・バス、データ・バスおよび制御バスを含む。BIU114はバス裁定に関与して、プロセッサ100と、メイン・メモリ116、不揮発性大容量記憶装置117などのシステム・バス113に結合された他の装置との間の情報の転送を制御する。図1に示したデータ処理システムは、システム・バス113に結合した他の装置を含むことが好ましいが、本発明の理解にこれらの装置は不要であり、そのため無用な詳細によって本発明が不明瞭にならないようこれらは図面から除外した。
BIU114は、命令キャッシュ/MMU(メモリ管理ユニット)118およびデータ・キャッシュ/MMU119に接続されている。命令キャッシュ/MMU118およびデータ・キャッシュ/MMU119中のキャッシュなどの高速キャッシュは、メイン・メモリ116から以前にキャッシュに転送されたデータまたは命令のサブセットにプロセッサ100が相対的に高速にアクセスすることを可能にし、したがって全体的な処理速度を向上させる。それぞれデータ・キャッシュ119および命令キャッシュ118に記憶されたデータおよび命令は、メイン・メモリ116中のデータまたは命令の実アドレスに関係づけられた実効アドレスによって識別され、アクセスされる。
命令キャッシュ/MMU118はさらに、シーケンシャル・フェッチャ120に結合されている。シーケンシャル・フェッチャ120は、実行する命令を、各プロセッサ・サイクルの間に命令キャッシ/MMU118からフェッチする。シーケンシャル・フェッチャ120は、命令キャッシュ/MMU118からフェッチした分岐命令を、これを実行する分岐処理ユニット(BPU)121に伝送し、また、第1の命令待ち行列101および第2の命令待ち行列102中の一連の命令を一時的に記憶する。記憶された命令はいずれ、解読をする命令解読ユニット123、および実行ユニット130、140または150へのディスパッチする順序付けユニット124に転送される。
シーケンシャル・フェッチャ120は、第1の命令待ち行列101と第2の命令待ち行列102の両方に命令を供給する。命令待ち行列101および102はともに、後段の処理のために選択MUX105を通して解読ユニット123に命令が発行されるたびに、その中の命令を、1つの待ち行列位置から次の待ち行列位置へシフトさせるように構成されている。第1の命令待ち行列101の最後の記憶要素は第1のラッチ103(LCH_0)を含み、第2の命令待ち行列102の最後の記憶要素は第2のラッチ104(LCH_1)を含む。ラッチ103および104は、ラッチされた命令を、選択MUX105のそれぞれの入力で使用可能なように維持し、そのため、MUXの1つの入力が選択されると、選択された入力に存在する命令が命令解読ユニット123に転送される。なお、ラッチ103および104を含む図示のさまざまな要素は、一度に1つの命令だけを取り扱うように構成し、または複数の命令を取り扱うように構成することができることに留意されたい。本発明の好ましい一形態では、プロセッサ100の図示のさまざまな要素が、複数の命令を同時に取り扱うことができる。例えば、命令待ち行列101および102中のそれぞれの待ち行列位置、ならびにラッチ103および104は、5つの命令を収容するのに十分な記憶要素を含むことができる。したがってこの例では、それぞれの命令スレッド(T0およびT1)、ならびに選択MUX105の出力のインタリーブされた命令ストリームが実際に5つの命令に相当する幅を有する。本発明は、スレッドT0およびT1を通過する任意の命令幅を包含する。
プロセッサ100の実行回路は、一連の命令を実行する3つの別個の実行ユニット130、140および150を含む。個々の実行ユニット130、140および150はそれぞれ、特定の実行ユニットに固有の一連のパイプライン・ステージで命令を実行することが好ましい。この例示プロセッサの第1の実行ユニット130(EXU_1)および第2の実行ユニット140(EXU_2)はともに、固定小数点数値演算および論理演算、ならびにメモリからデータをロードするロード操作を実行するように適合させることができる。プロセッサ100の第3の実行ユニット150(EXU_3)は、複雑な固定小数点演算を実行するように適合させることができる。第3の実行ユニット150はさらに、メモリにデータを記憶する記憶操作を実行することができる。オペランドおよび演算結果を一時的に記憶するためにさまざまな汎用および浮動小数点レジスタが実行ユニット130、140および150に関連づけられていることを当業者は理解されたい。本発明の選択コントローラ配置を理解するのにこれらのレジスタの動作の理解は不要なので、図1にこれらのレジスタは示されていない。実行ユニット130、140および150には、命令のアウト・オブ・オーダ(out of order)実行をサポートするのに使用するさまざまな待ち行列、レジスタ、テーブルなど、他の数多くの要素を関連づけることができる。無用な詳細によって本発明が不明瞭にならないよう、これらの追加のプロセッサ要素も図1から除かれている。
プロセッサ100は一連のそれぞれの命令を、別個のパイプライン・ステージ、すなわちフェッチ、解読/ディスパッチ、発行/順序付け、実行、終了および完了ステージで処理する。それぞれ2つの命令待ち行列101および102に記憶された2つのスレッドT0およびT1からの命令は、解読/ディスパッチ・ステージの直前に、選択コントローラ106が執行する優先規則に従って単一の命令ストリームにインタリーブされる。2つのスレッドからの命令は、解読ユニット123によって実行される解読/ディスパッチ・ステージの前にサイクル単位でインタリーブされるので、解読/ディスパッチ以降の各ステージは、所与のクロック・サイクルに、いずれかのスレッドから命令を受け取ることができる。例えば、所与のクロック・サイクルに、プロセッサ100は、第1のスレッドからの命令を完了ユニット190で完了させ、第1または第2のスレッドからの命令を実行ユニット130、140および150で実行し、第2のスレッドからの命令を解読している。異なるスレッドからの命令を同時に処理することによって、一方の命令スレッドの中のある命令に関連した長い待ち時間事象によってその特定のスレッドが機能停止した場合でも、プロセッサ100は命令を処理し続けることができる。例えば、(第1の命令待ち行列101に入れられた)スレッドT0からの命令が、この命令がすぐに処理されるのを妨げるある長い待ち時間事象を経験しているとする。(第2の命令待ち行列102に入れられた)第2の命令スレッドT1からの命令はスレッドT0からの命令とインタリーブされているので、第2の命令スレッドからの命令は処理され続け、第2の命令待ち行列T1を通過することができる。
フェッチ・ステージの間に、シーケンシャル・フェッチャ120は、1つまたは複数のメモリ・アドレスに関連づけられた1つまたは複数の命令を命令キャッシュ/MMU118から取り出す。シーケンシャル・フェッチャ120は、命令キャッシュ/MMU118からフェッチした一連の命令を、第1の命令待ち行列101に記憶して第1の命令スレッドT0の一部とするか、または第2の命令待ち行列102に記憶して第2の命令スレッドTlの一部とする。両方のスレッドの分岐命令はシーケンシャル・フェッチャ120によって抜き取られ(removed or folded out)、実行のためBPU121に送られる。BPU121は、分岐予測機構(別個には示されていない)を含む。一実施形態では分岐予測機構が、分岐履歴テーブルなどの動的予測機構(図示せず)を含む。この分岐履歴テーブルによってBPU121は、分岐するかか否かを予測することによって未解決の条件付き分岐命令を推測で実行することができる。
第1および第2の命令待ち行列101および102を通過した2つの命令スレッドからの命令は単一の命令ストリームにインタリーブされ、後段の処理のために命令解読ユニット123に送達される。命令解読ユニット123はこれらの命令を解読し、順序付けおよび実行ユニット130、140および150へのディスパッチをおこなう順序付けユニット124に渡す。実行ユニット130、140および150は、順序付けユニット124から発行された命令を実行する。発行された命令が完全に実行されると、実行ユニット130、140および150は、結果があればそれを関連汎用レジスタまたは他のレジスタ(図示せず)に記憶し、さらに、命令の実行が終了したことを完了ユニット190に通知する。
図1に示した特定のプロセッサ構造は単に例示目的で示したに過ぎないこと、および本発明に基づくランダム化された指示スレッド選択はこの特定の構造とともに使用することだけに限定されないことを理解されたい。例えば、プロセッサ100には、シーケンシャル・フェッチャ120が命令ストリームから抜き取った分岐命令が示されているが、別のプロセッサ構造はこの分岐命令ユニットを、他の実行ユニット130、140および150と一緒の別の実行ユニットとして取り扱うことができる。いずれにせよ、本発明に基づくランダム化された指示スレッド選択は、任意の同時マルチスレッド・プロセッサに組み込むことができる。
さらに、図示のプロセッサ100は、2つの命令スレッドT0とT1をインタリーブして、フェッチ・ステージ後の各種プロセッサ・パイプライン・ステージで処理するインタリーブされた単一のストリームとするように適合されているが、他の実施形態では、2つ以上の命令スレッドをインタリーブして、インタリーブされた単一の命令ストリームとするように適合させることもできることに留意されたい。同時に処理している命令スレッドの数に関わらず、所与のクロック・サイクルにインタリーブされた命令ストリームに渡すことができる命令は一般に、単一のスレッドからの命令(またはパイプラインが複数の命令に相当する幅を有する場合には命令セット)だけであることに留意されたい。したがって、MUX105などの選択装置を介して2つ以上のスレッドをインタリーブする場合には、装置は、MUXを通して転送する特定の1つのスレッドを選択するのに適したMUX制御信号を生成する論理を含んでいなければならない。図1に示した本発明の2スレッド形態では、信号経路154を通してMUX制御信号を適用することができる。しかし、2つ以上の入力を有する選択MUXに対する制御信号には、必要なMUX制御信号を収容する追加の信号経路が必要となる。
さらに、本発明のある実施形態は、一方または両方の命令スレッドT0、T1からの命令を保留し、それによって保留されたそれぞれのスレッドからの有効な命令が渡されて処理されないようにする能力を有することができることに留意されたい。この保留能力は、2つのラッチ103および104に適用された保留信号によって実装することができる。図1には、選択コントローラ106からそれぞれのラッチ103および104への破線152および153が示されている。保留能力が実装されている場合には、選択コントローラ106を使用して、必要な保留信号をそれぞれのスレッドに対して生成し、破線152および153にそれらの信号を適用することができる。
図2に、本発明の一形態に基づく選択コントローラ106を示す。選択コントローラ106は、2つの異なる命令スレッドのインタリービングを制御するように適合されており、ランダム化構成要素210に結合されたインタリーブ規則執行構成要素205を含んでいる。図示の選択コントローラ106はさらに、2つの入力220、225と、少なくとも1つの出力154とを含んでいる。追加の出力は、図1に関して先に論じた出力152および153に適用される保留信号を含むことができる。選択コントローラ106の入力は、インタリーブ中の2つのスレッドの優先度を指示する優先度信号を含む。例えばそれぞれの優先度信号は、ソフトウェアによって特定の命令スレッドに割り当てられた1から7の処理優先度を指示することができる。選択コントローラ106の出力154は、この2つのスレッドのインタリービングを制御するのに使用する制御信号を含む。選択コントローラ106のこれらの構成要素は、データ・プロセッサによって実行されている命令スレッドのインタリービングが、複数のスレッドから個々の命令が選択される頻度が短期的にはランダム化され、長期的には優先規則に従うような方法で実施されることを保証する。
インタリーブ規則執行構成要素205は、処理中のそれぞれの命令スレッドの優先度信号を受け取る。図2に示した実施形態では、これらの優先度信号が、入力220にT0 Priority Inないし第1のスレッド優先度を、入力225にT1 Priority Inないし第2のスレッド優先度を含む。本発明の好ましい一形態では、入力220の第1のスレッド優先度および入力225の第2のスレッド優先度がそれぞれ、7つの異なる優先度レベルのうちの1つを指示する3ビット論理信号を含む。インタリーブ規則執行構成要素205はこれらの優先度を使用して、それぞれの命令スレッドに割り当てるべきプロセッサ・タイムの部分、したがって複数の命令スレッドからの命令をインタリーブされた単一のストリームにインタリーブする頻度を決定する。例えば、220の第1のスレッド優先度が、第1の命令スレッドの優先度が4であることを指示し、225の第2のスレッド優先度が第2の命令スレッドの優先度が1であることを指示している場合、望ましい優先規則は、第1の命令スレッドの命令を、第2の命令スレッドの命令よりも高い頻度で(すなわちより頻繁に)選択してインタリーブされたストリームに入れるよう指示する。
インタリーブ規則は、単純な比率に従って命令をインタリーブするよう指示することができる。例えば、第1のスレッドの優先度が6、第2のスレッドの優先度が3であるとする。本発明に基づく1つのインタリーブ規則は、これらのスレッドの優先度を単純な比2対1、すなわち第1のスレッドの命令2に第2のスレッドの命令1の比に約分する。インタリーブ規則執行構成要素205によって執行される好ましい1つの規則は、式1/2(|X−Y|+1)を使用する。ただし、Xは第1のスレッド優先度、Yは第2のスレッド優先度である。優先度が高いほうのスレッドに対して優先度6、優先度が低いほうのスレッドに対して優先度3を使用するとこの式の答えは1/16となり、これは、16個の命令をインタリーブされたストリームに含める間に、優先度が低いほうのスレッドから1つの命令がこのストリームにインタリーブされることを意味する。本発明は、インタリーブ規則執行構成要素205によって執行されるこの特定の優先規則に限定されないことを理解されたい。さらに、これまでの例は、命令スレッドを1サイクル単位でインタリーブすることを含むが、インタリーブされたスレッドに他の方法でプロセッサ・タイムを割り当てる他のさまざまな優先規則を使用することができる。例えば、ある規則に従って、1サイクル単位ではなしにいくつかのサイクルごとに命令スレッドをインタリーブすることができる。
使用する優先規則とは無関係に、インタリーブ規則執行構成要素205の出力は、処理する特定のスレッドを選択するのに使用することができる出力信号を供給する。ランダム化構成要素210は、インタリーブ規則執行構成要素205から選択信号出力を入力として受け取り、次いでこれにランダム化を挿入して、ランダム化された選択信号を選択コントローラ出力154に生成する。ただし、全体に見れば、ランダム化構成要素210は、インタリーブ執行構成要素205が執行した優先規則を変更しない。
図3に、命令スレッド・インタリービング規則を執行し、インタリービング制御出力にランダム化を挿入する選択コントローラ106の好ましい一形態を示す。図3に示した回路は、図2に示したインタリーブ規則執行構成要素205の機能と図2に示したランダム化構成要素210の機能とを単一のインタリーブ規則執行/ランダム化回路として統合したものである。この好ましい選択コントローラ回路106は、入力220の第1のスレッド優先度信号(T0 Priority In)および入力225の第2のスレッド優先度信号(T1 Priority In)からマスクを生成するマスク論理、乱数または擬似乱数を発生させる乱数または擬似乱数発生器、乱数または擬似乱数をマスクと比較するための論理、ならびにこの比較の結果を結合してスレッド選択出力を生成するための論理を含む。
図3に示した選択コントローラ106の配置は2本のブランチ(枝)からなる。一方のブランチは、第1のスレッドT0および入力220の第1のスレッドの優先度信号に関連する。この回路106のブランチを第1のスレッドまたはT0ブランチと呼ぶ。他方のブランチは第2のスレッドT1および入力225の第2のスレッドの優先度信号に関連する。このブランチは入力225に関連し、第2のスレッドまたはT1ブランチと呼ぶ。T0ブランチとT1ブランチは同じ構成要素を含み、同じ機能を果たすので、特に指摘しない限り、T0ブランチを以下の議論の基礎として使用する。図3の左端を参照すると、第1のスレッド優先度信号を伝える入力220がラッチ302に結合されている。ラッチ302の出力は、スレッド選択制御回路106のブランチT0の入力ノード306に適用される。ラッチ302は、第1のスレッドないしT0スレッドの優先度が変化しない限り、その第1のスレッド優先度信号を入力ノード306のところにラッチする。このスレッド優先度はソフトウェアの制御の下で設定され、変更される。スレッド優先度はハードウェア制御によって変更することもできる。スレッド優先度入力のハードウェア変更は、本出願と同時に提出された「マルチスレッド・プロセッサにおいて処理する命令スレッドを選択するための方法および装置(METHOD AND APPARATUS FOR SELECTING AN INSTRUCTION THREAD FORPROCESSING IN A MULTI-THREAD PROCESSOR)」という名称の関連米国特許出願の主題である。
ノード306はエキスパンダ312の入力に接続されている。エキスパンダ312は、第1のスレッドの優先度値をビットごとに展開して、展開された優先度信号を生成する。図示の実施形態では、ノード306の優先度信号が、1から7までの優先度を指示する3ビットの2進化信号である。エキスパンダ312は、ノード306の3ビット信号を展開して、ノード313に、その優先度値に対応したいくつかのビットがセットされた7ビットの論理信号を生成する。例えば、ノード306の第1のスレッドの優先度が5、すなわち3ビット2進値が101の場合、ノード313の展開された7ビット信号は0011111となる。第1のスレッドの優先度が3の場合、ノード306の3ビット論理信号は011、ノード313の展開された7ビット信号は0000111となる。
エキスパンダ312が、展開された7ビットの第1の優先度信号をノード313に生成すると、インバータ316が、この展開された優先度信号をビットごとに反転させ、反転された信号を、ノード317を介して、T1ブランチの一部であるANDゲート322の入力に導く。同様に第2のスレッドの優先度値を展開して展開された信号をノード315に生成し、この第2のスレッドの優先度信号をインバータ318で反転させたT1ブランチは、反転されたT1の優先度信号をノード319を介してANDゲート320の入力に導く。ANDゲート320は、ビットごとの論理AND演算を実行して、展開され反転された第2のスレッドの優先度信号と展開された第1のスレッドの優先度信号とを結合し、本明細書ではT0マスクと呼ぶ信号をノード321に生成する。ノード321の7ビットAND演算の結果は、第1のスレッドの優先度値と第2のスレッドの優先度値の差を表すことに留意されたい。
ノード321の7ビット信号は、ANDゲート324の一方の入力およびインバータ328の入力に入力される。ノード321の信号はさらにORゲート352の入力に結合される。ORゲート352は、後に詳細に説明するように両方のブランチT0およびT1のMUXコントローラの働きをする。ゲート324のもう一方の入力は、線形帰還シフト・レジスタ(LFSR)336の出力から供給される。LFSR336の出力は、1クロック・サイクルごとに生成される長さ7ビットまでの擬似乱数を含む。図3のランダム化スレッド選択制御回路106には、乱数または擬似乱数を発生させるLFSR336が示されているが、LFSR336の代わりに他の適当な乱数または擬似乱数発生器を使用することができることを理解されたい。どんな方法で擬似乱数または乱数を発生させるにせよ、ANDゲート324は、この擬似乱数または乱数とノード321のT0マスクとの間のビットごとの論理AND演算を実行して、ランダム化されたマスク信号をノード325に生成する。例えば、LFSR336が発生させた擬似乱数が0001001、T0マスクが0001000である場合、ノード325のランダム化されたマスク信号は0001000となる。
ノード325のランダム化されたマスク信号は、ORゲート332の一方の入力に入力される。インバータ328の出力は反転されたマスク信号をノード329に生成する。この信号はORゲート332のもう一方の入力を表す。ORゲート336の入力はともに7ビット長であることに留意されたい。ORゲート336は、これらの2つの7ビット入力(ランダム化されたノード325のマスク信号および反転されたノード329のマスク信号)にビットごとの論理OR演算を実行し、その7ビット出力をノード333に適用する。このOR演算の結果、反転されたT0マスクまたはランダム化されたT0マスクの特定のビット位置が論理1を含む場合、ノード333の信号の同じビット位置も論理1を含む。
図3の回路106はさらに、回路106を含むプロセッサの1クロック・サイクルごとに論理状態間を交互にトグルする1ビット論理信号を生成するトグル配置337を含む。トグルスイッチ配置337の出力はノード339に適用され、関連インバータ338によって反転されて、ノード339aに1ビット信号を生成する。ノード339aのこの1ビット信号はノード333の7ビット信号に追加され、ノード341に、結合ANDゲート(combining AND gate)340の入力となる8ビット入力が生成される。ANDゲート340は、ノード341の8ビット信号に論理AND演算を実行して、ノード345に1ビット出力を生成する。
図3に示した回路106のT0ブランチの議論をさらに進める前に、この回路のT1ブランチはT0ブランチと同様の回路要素を含み、入力225に適用された第2のスレッドの優先度信号に対して対応する演算を実行することに留意されたい。ラッチ304は3ビット優先度信号を保持し、エキスパンダ308はこの優先度値を展開してノード315に7ビット信号を生成する。ANDゲート322は、ノード315の7ビット信号とノード317の反転された7ビット信号のビットごとの論理積をとり、その7ビット出力をノード323に適用する。ノード323の信号は、入力225に適用した第2のスレッドの優先度の7ビット・マスクを表す。ANDゲート326は、LFSR336からの擬似乱数とノード323の信号のビットごとの論理積をとることによってランダム化された第2のスレッド・マスクを生成し、ORゲート334で、このランダム化されたノード327の第2のスレッドのマスク出力とインバータ330からのノード331の反転された信号の論理和をとって、ノード335の7ビット信号を生成すること。ノード339の1ビットをノード335の7ビット信号に追加して、結合ANDゲート342の入力となる8ビット信号をノード343に生成する。ノード343で追加されるビットと、T0ブランチのノード341で追加されるビットとは常に逆であることに留意されたい。結合ANDゲート340で実行した演算と同様に、結合ANDゲート342はノード343の8ビット入力の論理積をとり、ノード347に1ビット出力を生成する。
ノード345の1ビット信号はT0ブランチのMUX353の一方の入力となり、ノード347の1ビット信号はT1ブランチのMUX355の一方の入力となる。T0ブランチMUX353の第2の入力は、ノード347の信号をインバータ350で反転させることによって生成された反転された信号を含む。同様に、T1ブランチMUX355の第2の入力は、ノード345の信号をインバータ348で反転させることによって生成された反転された信号を含む。ORゲート352は、ノード321の第1のスレッドのマスク信号の論理和をとって1ビットのMUX選択信号を生成する。この信号は、MUX353および355を制御するために適用される。ORゲート352の出力は、第1のスレッドの優先度(入力220のT0スレッドの処理優先度)が第2のスレッドの優先度(入力225のT1スレッドの処理優先度)よりも大きいときに1になることに留意されたい。この2つの入力優先度が等しいか、または第2のスレッドの優先度が第1のスレッドの優先度よりも大きいときに、ORゲート352の出力は0になる。このMUX選択信号は、MUX353およびMUX355を制御して、それぞれがそれぞれの出力ノード354および356に1つの入力を接続するようにする。
出力ノード354の信号は、図1に示した選択MUX105を制御するのに使用することができる2進信号を含む。したがって、ノード354の信号は、図1および2に示したノード154の選択制御信号を表す。ノード356の信号は、ノード354の信号の2進数の補数を表し、したがって、制御信号であるノード354の信号とともに使用される論理に関してMUXの論理を単に逆にすることによって、ノード356の信号を、図1のスレッド選択MUX105を制御する図1および2のノード154の制御信号として使用することもできる。
後に説明する実施例に示すとおり、出力354または356を使用して、2(|X−Y|+1)プロセッサ・クロック・サイクルに1度の割合で優先度が低いほうのスレッドを選択する命令インタリーブ規則を執行することができる。ただし|X−Y|は、第1の命令スレッドに割り当てられた優先度値と第2の命令スレッドに割り当てられた優先度値の差の絶対値である。マスク値とLFSR336で発生した擬似乱数との比較によって導入されるランダム化のため、出力ノード354および356の値はサイクルごとに予測不能に変化する。すなわち、ノード321または323のマスクがそれぞれの出力ノード354および356での値を決める場合、このランダム化によって、出力は、所望の命令インタリーブ規則に従って決定されるはずのものとは反対の出力にランダムに変化する。ただし、このランダム化によってノード354および356の最終的な出力が変更される確率と変更されない確率は同じなので、所望の命令インタリーブ規則は時間が経過しても維持される。
ノード354およびノード356のどちらかの信号を使用して、図1に示した第1および第2の待ち行列101および102からの命令を通過させるMUX105を制御することができる。図3に示した特定の回路の論理では、ノード354の値0によって、MUX105は第1のスレッドを選択し、所与のクロック・サイクルに第1の待ち行列101からの1つまたは複数の命令を通過させる。ノード354の値1によって、MUX105は、所与のクロック・サイクルに第2の待ち行列102からの命令を通過させる。ノード356の信号を使用してMUX105を制御する場合には、ノード356の値0によって、MUX105は、所与のクロック・サイクルに第2の待ち行列102からの命令を通過させ、ノード356の値1によって、MUX105は、所与のクロック・サイクルに第1の待ち行列101からの命令を通過させる。ノード354および356の信号を使用して、図1に示した152および153に適用される制御信号を生成することもできる。本明細書と同時に提出された「マルチスレッド・プロセッサにおいて処理する命令スレッドを選択するための方法および装置(METHOD AND APPARATUS FOR SELECTING AN INSTRUCTION THREAD FORPROCESSING IN A MULTI-THREAD PROCESSOR)」という名称の関連米国特許出願には、ノード354および356の信号を2つの命令待ち行列101および102の制御信号として使用する本発明の一実施形態が記載されている。
3つ以上の命令スレッドをインタリーブする本発明のいくつかの形態では、インタリーブされた命令ストリームにインタリーブする1つの命令スレッドを選択する追加の論理が必要であることを理解されたい。この追加の論理はいくつかの異なる方法で実装することができる。例えば、2スレッドを1組として命令スレッドを取り扱うことができる。こうすると、4つの命令スレッドをインタリーブするプロセッサでは、選択コントローラが図3に示した回路を2組使用し、追加の論理によって単一の命令スレッドの選択を執行することができる。
以下の実施例は、図3に示した特定の回路実装の動作のより完全な理解を提供する。
ノード220の第1のスレッド優先度T0 Priority Inが、第1のスレッドT0の優先度が3であることを指示し、ノード225の第2のスレッド優先度T1 Priority Inが、第2のスレッドT1の優先度が2であることを指示していると仮定する。その場合、ノード306の信号は011、ノード308の信号は010となる。エキスパンダ312および314はこれらの信号を展開し、その結果、ノード313の信号は0000111、ノード315の信号は0000011となる。なお、この実施例では、優先度3が展開されると1が3つの7ビット信号となり、優先度2が展開されると1が2つの7ビット信号となる。インバータ316および318がこれらの信号をビットごとに反転させ、その結果、反転されたノード317の信号は1111000となり、反転されたノード319の信号は1111100となる。次いでANDゲート320がその2つの入力、すなわちノード313の0000111とノード319の1111100のビットごとの論理AND演算を実行する。このビットごとの論理AND演算の結果、ノード321のT0マスクないし第1のスレッド・マスク信号は0000100となる。同様にANDゲート322がその2つの入力、すなわちノード317の1111000とノード315の0000011のビットごとの論理AND演算を実行し、その結果、ノード323のT1マスクないし第2のスレッド・マスクは0000000となる。
LFSR336は、所与のクロック・サイクルに擬似乱数、例えば1100100を発生させ、これをANDゲート324の一方の入力に転送する。LFSR336によって出力された7つのビットのうち、T0マスクの論理1と同じ位置のビットだけが意味のある効果を有することに留意されたい。ANDゲート324のもう一方の入力は、値0000100を有するノード321の信号である。ANDゲート324はその2つの入力信号にビットごとの論理AND演算を実行して、値0000100を有する信号をノード325に生成する。インバータ328はノード321の信号を反転させて、ノード329に出力1111011を生成する。次いでORゲート332が、ノード329の信号とノード325の信号にビットごとの論理OR演算を実行して、ノード333に、値1111111を有するランダム化された7ビットのマスク信号を生成する。
この特定のクロック・サイクルでのトグル337の出力が0であると仮定する。これによってインバータ338は1を生成する。この値1が、ランダム化された7ビットのマスク信号に追加され、ノード341に、ランダム化された8ビットのマスク信号11111111が生成される。最後に、ANDゲート340が、ランダム化されたこの8ビット・マスクに論理AND演算を実行し、この8ビット比較出力を結合して値1を有する1ビット信号をノード345に生成する。
次にT1ブランチのノード323に移る。このノードは、先に説明したとおり値0000000を保持している。LFSR336の出力値はやはり1100100なので、ANDゲート326への入力は1100100および0000000となり、ノード327に出力0000000が生成される。インバータ330はノード331に出力1111111を生成し、ORゲート334が実行するビットごとの論理OR演算によって、ノード335に、ランダム化された7ビット・マスク信号1111111が生成される。対応するクロック・サイクルの間、トグル337は0にトグルされているので、ランダム化されたこの7ビット・マスク信号に0が追加されて、ノード341に、ランダム化された8ビット・マスク信号11111110が生成される。最後に、ANDゲート342がノード343の8ビット比較出力信号を結合して、値0を有する1ビット信号をノード347に生成する。
ノード345および347の信号の値が決定されると、インバータ348および350が、これらの信号を反転した信号をマルチプレクサ353および355に交差結合する。この交差結合によって、MUX353の両方の入力に論理1が入力され、MUX355の両方の入力に論理0が入力される。ORゲート352の入力は0000100なのでその出力は1である。MUX353および355の制御入力に1が置かれると、ノード354に1が出力され、ノード356に0が出力される。ノード354の信号とノード356の信号のうちの一方の信号を選択して、選択制御信号として使用することができる。
図3に示した回路の動作を明らかにするためにT0スレッドの処理優先度(T0 Priority In)を4と仮定する他は、以下の実施例では実施例1を踏襲する。T1スレッドの処理優先度(T1 Priority In)は2のままである。これらのスレッド優先度が与えられると、ノード306の信号は100、ノード308の信号は010となる。エキスパンダ312および314はこれらの信号を展開し、その結果、ノード313の信号は0001111、ノード315の信号は0000011となる。なお、優先度4が展開されると1が4つの7ビット信号となり、優先度2が展開されると1が2つの7ビット信号となる。インバータ316および318がこれらの信号をビットごとに反転させ、その結果、反転されたノード317の信号は1110000となり、反転されたノード319の信号は1111100となる。次いでANDゲート320がその2つの入力、すなわちノード313の0001111とノード319の1111100のビットごとの論理AND演算を実行する。このビットごとの論理AND演算の結果、ノード321のT0マスクないし第1のスレッド・マスク信号は0001100となる。同様にANDゲート322がその2つの入力、すなわちノード317の1110000とノード315の0000011のビットごとの論理AND演算を実行する。その結果、ノード323のT1マスクないし第2のスレッド・マスクは、実施例1と全く同じ0000000となる。
比較のため、LFSR336が実施例1で使用したと同じ擬似乱数を発生させたと仮定する。したがって、LFSR336は値1100100を有する信号を生成し、この信号をANDゲート324の一方の入力に供給すると仮定する。ANDゲート324のもう一方の入力は、値0001100を有するT0マスクである。ANDゲート324はその2つの入力信号にビットごとの論理AND演算を実行して、実施例1と同じ値0000100を有する信号をノード325に生成する。インバータ328はT0マスクを反転させて、ノード329に出力1110011を生成する。次いでORゲート332が、ノード329の信号とノード325の信号にビットごとの論理OR演算を実行して、ノード333に、値1110111を有するランダム化された7ビットのマスク信号を生成する。LFSR336が発生させた擬似乱数の第3および第4ビット位置によって追加されたランダム化のために、この実施例ではノード333に、実施例1とは異なる信号が生成されることに留意されたい。LFSR336からの擬似乱数の第3および第4ビット位置がともに1であれば、ノード333の結果は1111111となる。
トグル配置337の出力が実施例1と同じく0であると仮定する。これによってインバータ338は反転されたトグル・ビット1を生成する。この反転されたトグル・ビットが、ランダム化された7ビットのT0マスク信号に追加されて、ノード341に、ランダム化された8ビットのT0マスク信号11101111が生成される。最後に、ANDゲート340が、ランダム化されたこの8ビット・マスクに論理AND演算を実行し、この8ビット比較出力を結合して値0を有する1ビット信号をノード345に生成する。この値を、ノード345の信号の値が1である実施例1と比べられたい。
この回路のT1ブランチは、第2のスレッド優先度に関して対応する演算を実行する。LFSR336がやはり値1100100の擬似乱数を発生させると仮定すると、ANDゲート326の入力は1100100と0000000となる。ノード327のANDゲート326の出力は実施例1と同じ0000000である。インバータ330はノード331に出力1111111を生成する。ORゲート334が実行するビットごとの論理OR演算によって、ノード335に、ランダム化された7ビット・マスク信号1111111が生成される。トグル337の出力は0なので、ランダム化されたこの7ビットT1マスク信号7に0が追加されて、ノード341に、ランダム化された8ビットT1マスク信号11111110が生成される。最後に、ANDゲート342がノード343の8ビットT1比較出力信号を結合して、論理値0を有する1ビット信号をノード347に生成する。
ノード345および347の信号の値が決定されると、インバータ348および350が、これらの信号を反転した信号をマルチプレクサ353および355に交差結合する。MUX353の両方の入力が論理1、MUX355の両方の入力が論理0である実施例1とは違い、このケースでは、MUX353の入力1が0、MUX353の入力0が1、MUX355の入力1が1、MUX355の入力0が0である。このケースでは、ORゲート352の入力が0001100であり、実施例1のORゲート352の入力とは異なる。しかし入力は異なっても出力は同じ1となり、これがMUX353および355の制御入力に適用される。MUX353および355の制御入力に1が置かれると、MUXはその1入力をノード354または356に接続する。その結果、ノード354には0が置かれ、ノード356には1が置かれる。これは実施例1の結果とは正反対であることに留意されたい。このように、実施例1に比べて実施例2のほうが第1の命令スレッドの優先度が高く、したがって、実施例1と同じ命令スレッドが選択されると予測される場合であっても、マスクとLFSR336からの擬似乱数の比較によって導入されるランダム化によって、スレッド選択の結果は実施例1とは異なってくる。
以上の実施例および図3に示した回路の説明から、回路のそれぞれのブランチが適当な出力を生成して所望のインタリーブ比を執行することに留意されたい。ただし、ブランチT0とT1からなる並行構造のブランチはそれぞれ、T0とT1の値が等しくない場合のインタリーブ比の代替の可能性を計算する。T0がT1よりも大きい場合、またはT1がT0よりも大きい場合の2つの可能性がある。MUX353および355によって提供される最終的なMUX選択によって、より大きな優先度値を有するスレッドが執行されたインタリーブ比でより頻繁に選択される。スレッド選択をランダム化し、同時に所望のインタリーブ規則を全体として維持する本発明の方法は、この特定の並行ブランチ回路に限定されないことを理解されたい。本発明は、図3に示すような並行ブランチ回路を使用するか否かに関わらず所望のインタリーブ規則の範囲内でスレッド選択をランダム化する任意の回路、または所望のスレッド選択信号を生成する並行ブランチを含まない回路を包含する。
以上に記載した好ましい実施形態は、本発明の原理を説明することを意図したものであり、本発明の範囲を限定しようとするものではない。当業者であれば、上記請求項の範囲から逸脱することなく、他のさまざまな実施形態およびこれらの好ましい実施形態に対するさまざまな変更が可能である。例えば、図示の論理および他の回路は、開示の発明を実現する方法の具体的な例を提供するが、開示の回路は正または負論理で実現することもできる。さらに、異なる組合せの論理ゲートを使用して同じ結果を得ることができ、このような変更は開示の構造と等価であるとみなされるべきである。多数の異なる配置を使用して、所望のランダム化をスレッド選択方法に挿入し、または異なるスレッド間の選択を実施することができる。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)データ・プロセッサにおいて複数の命令スレッドを処理する方法であって、
(a)第1の命令スレッドからの命令と少なくとも1つの追加の命令スレッドからの命令を、前記第1の命令スレッドと前記少なくとも1つの追加の命令スレッドの間の優先規則に従ってインタリーブする段階と、
(b)前記インタリービング段階にランダム化を挿入し、同時に前記優先規則を維持する段階と
を含む方法。
(2)命令をインタリーブする前記段階がサイクル単位で実施される、上記(1)に記載の方法。
(3)優先規則に従って命令をインタリーブする前記段階が、処理するスレッドを指示するスレッド選択信号を生成する段階を含む、上記(1)に記載の方法。
(4)ランダム化を挿入する前記段階が、前記スレッド選択信号をランダム化する段階を含む、上記(3)に記載の方法。
(5)前記スレッド選択信号をランダム化する前記段階が、
(a)前記第1の命令スレッドに関連づけられた第1のスレッド優先度信号および追加の命令スレッドにそれぞれ関連づけられたそれぞれの追加のスレッド優先度信号から、マスクを生成する段階と、
(b)乱数または擬似乱数を発生させる段階と、
(c)前記マスクと前記乱数または擬似乱数とを比較して、ランダム化されたマスクを生成する段階と
を含む、上記(4)に記載の方法。
(6)命令をインタリーブする前記段階が、
(a)前記マスクを反転させて反転されたマスクを生成する段階と、
(b)前記ランダム化されたマスクと前記反転されたマスクを比較する段階と
を含む、上記(5)に記載の方法。
(7)データ・プロセッサにおいて、処理する命令を複数の命令スレッドから選択する際に使用するスレッド選択出力を生成する方法であって、
(a)前記複数の命令スレッドに関連づけられ、前記複数の命令スレッドのそれぞれのスレッドの優先度を指示する優先度信号からマスクを生成する段階と、
(b)前記マスクと比較するのに適した乱数または擬似乱数を発生させる段階と、
(c)前記マスクと前記乱数または擬似乱数を比較してランダム化されたマスクを生成する段階と、
(d)前記ランダム化されたマスクから前記スレッド選択出力を生成する段階と
を含む方法。
(8)マスクを生成する前記段階が、第1の優先度信号を第2の優先度信号と比較する段階を含む、上記(7)に記載の方法。
(9)第1の優先度信号を第2の優先度信号と比較する前記段階の前に、前記第1の優先度信号および前記第2の優先度信号のうちの一方を反転させる段階をさらに含む、上記(8)に記載の方法。
(10)乱数または擬似乱数を発生させる前記段階が線形帰還シフト・レジスタを用いて実行される、上記(7)に記載の方法。
(11)マスクを生成する前記段階の前に前記優先度信号をビットごとに展開する段階をさらに含む、上記(7)に記載の方法。
(12)前記ランダム化されたマスクから前記スレッド選択出力を生成する前記段階がさらに、
(a)前記マスクを反転させて反転されたマスクを生成する段階と、
(b)前記ランダム化されたマスクと前記反転されたマスクを比較する段階と
を含む、上記(7)に記載の方法。
(13)前記ランダム化されたマスクと前記反転されたマスクの前記比較の結果を結合する段階をさらに含む、上記(12)に記載の方法。
(14)前記ランダム化されたマスクと前記反転されたマスクの前記比較の結果に、プロセッサのクロック・サイクル周波数で論理レベルが変化するトグル・ビットを結合する段階をさらに含む、上記(13)に記載の方法。
(15)同時マルチスレッド・プロセッサにおいて、処理する命令を選択する際に使用するスレッド選択出力を生成する回路であって、
(a)前記マルチスレッド・プロセッサ内の第1の命令スレッドのスレッド優先度を指示する第1の優先度信号、および前記マルチスレッド・プロセッサ内の追加の命令スレッドのスレッド優先度を指示する追加の優先度信号を受け取り、前記第1の優先度信号のマスクを生成するマスク論理と、
(b)前記マスクと比較するのに適した乱数または擬似乱数を発生させる乱数発生器と、
(c)前記マスク論理および前記乱数発生器に結合され、前記マスクと前記乱数または擬似乱数とを比較してランダム化されたマスクを生成する比較論理と、
(d)前記比較論理に結合され、前記ランダム化されたマスクから前記スレッド選択出力を生成する結合論理と
を含む回路。
(16)前記マスク論理が、前記第1の優先度信号を、前記追加の優先度信号の反転された値を表す反転された優先度信号と比較する優先度信号比較器を含む、上記(15)に記載の回路。
(17)前記マスク論理が、前記第1の優先度信号を展開して展開された第1の優先度信号を生成する第1のエキスパンダと、前記追加の優先度信号を展開して展開された追加の優先度信号を生成する第2のエキスパンダとを含む、上記(15)に記載の回路。
(18)前記結合論理が、
(a)反転されたマスクを生成するマスク・インバータと、
(b)前記ランダム化されたマスクと前記反転されたマスクを比較して比較出力を生成するマスク比較器と
を含む、上記(15)に記載の回路。
(19)前記結合論理が、前記比較出力のビットに論理AND演算を実行する結合AND装置を含む、上記(18)に記載の回路。
(20)トグル・ビットを発生させ、前記トグル・ビットを前記比較出力に追加するトグル・ビット発生器をさらに含み、前記トグル・ビットが、前記結合AND装置が実行する前記論理AND演算に含まれる、上記(19)に記載の回路。
(21)同時マルチスレッド・プロセッサにおいて、処理する命令を選択する際に使用するスレッド選択出力を生成する回路であって、
(a)インタリーブ規則執行出力を生成するインタリーブ規則執行構成要素と、
(b)前記インタリーブ規則執行出力を受け取り、前記同時マルチスレッド・プロセッサ内の複数の命令スレッド間のスレッド選択を制御するランダム化されたスレッド選択出力を生成するランダム化構成要素と
を含む回路。
本発明の原理を具体化した命令インタリービング配置を使用したプロセッサのブロック図である。 本発明の原理を具体化したスレッド選択コントローラのブロック図である。 図2に示したスレッド選択コントローラのインタリーブ規則執行要素とランダム化要素とを結合した回路の概略図である。
符号の説明
100 プロセッサ
101 第1の命令待ち行列
102 第2の命令待ち行列
103 第1のラッチ
104 第2のラッチ
105 選択マルチプレクサ
106 選択コントローラ
113 システム・バス
114 バス・インタフェース・ユニット
115 プロセッサ・バス
116 メイン・メモリ
117 不揮発性大容量記憶装置
118 命令キャッシュ/メモリ管理ユニット
119 データ・キャッシュ/メモリ管理ユニット
120 シーケンシャル・フェッチャ
121 分岐処理ユニット
123 命令解読ユニット
124 順序付けユニット
130 実行ユニット
140 実行ユニット
150 実行ユニット
152 保留信号経路
153 保留信号経路
154 スレッド選択制御経路
190 完了ユニット
205 インタリーブ規則執行構成要素
210 ランダム化構成要素
220 選択コントローラの入力
225 選択コントローラの入力
302 ラッチ
304 ラッチ
312 エキスパンダ
314 エキスパンダ
316 インバータ
318 インバータ
320 ANDゲート
322 ANDゲート
324 ANDゲート
326 ANDゲート
328 インバータ
330 インバータ
332 ORゲート
334 ORゲート
336 線形帰還シフト・レジスタ
337 トグル
338 インバータ
340 ANDゲート
342 ANDゲート
348 インバータ
350 インバータ
352 ORゲート
353 マルチプレクサ
355 マルチプレクサ

Claims (21)

  1. データ・プロセッサにおいて複数の命令スレッドを処理する方法であって、
    (a)第1の命令スレッドからの命令と少なくとも1つの追加の命令スレッドからの命令を、前記第1の命令スレッドと前記少なくとも1つの追加の命令スレッドの間の優先規則に従ってインタリーブする段階と、
    (b)前記インタリービング段階にランダム化を挿入し、同時に前記優先規則を維持する段階と
    を含む方法。
  2. 命令をインタリーブする前記段階がサイクル単位で実施される、請求項1に記載の方法。
  3. 優先規則に従って命令をインタリーブする前記段階が、処理するスレッドを指示するスレッド選択信号を生成する段階を含む、請求項1に記載の方法。
  4. ランダム化を挿入する前記段階が、前記スレッド選択信号をランダム化する段階を含む、請求項3に記載の方法。
  5. 前記スレッド選択信号をランダム化する前記段階が、
    (a)前記第1の命令スレッドに関連づけられた第1のスレッド優先度信号および追加の命令スレッドにそれぞれ関連づけられたそれぞれの追加のスレッド優先度信号から、マスクを生成する段階と、
    (b)乱数または擬似乱数を発生させる段階と、
    (c)前記マスクと前記乱数または擬似乱数とを比較して、ランダム化されたマスクを生成する段階と
    を含む、請求項4に記載の方法。
  6. 命令をインタリーブする前記段階が、
    (a)前記マスクを反転させて反転されたマスクを生成する段階と、
    (b)前記ランダム化されたマスクと前記反転されたマスクを比較する段階と
    を含む、請求項5に記載の方法。
  7. データ・プロセッサにおいて、処理する命令を複数の命令スレッドから選択する際に使用するスレッド選択出力を生成する方法であって、
    (a)前記複数の命令スレッドに関連づけられ、前記複数の命令スレッドのそれぞれのスレッドの優先度を指示する優先度信号からマスクを生成する段階と、
    (b)前記マスクと比較するのに適した乱数または擬似乱数を発生させる段階と、
    (c)前記マスクと前記乱数または擬似乱数を比較してランダム化されたマスクを生成する段階と、
    (d)前記ランダム化されたマスクから前記スレッド選択出力を生成する段階と
    を含む方法。
  8. マスクを生成する前記段階が、第1の優先度信号を第2の優先度信号と比較する段階を含む、請求項7に記載の方法。
  9. 第1の優先度信号を第2の優先度信号と比較する前記段階の前に、前記第1の優先度信号および前記第2の優先度信号のうちの一方を反転させる段階をさらに含む、請求項8に記載の方法。
  10. 乱数または擬似乱数を発生させる前記段階が線形帰還シフト・レジスタを用いて実行される、請求項7に記載の方法。
  11. マスクを生成する前記段階の前に前記優先度信号をビットごとに展開する段階をさらに含む、請求項7に記載の方法。
  12. 前記ランダム化されたマスクから前記スレッド選択出力を生成する前記段階がさらに、
    (a)前記マスクを反転させて反転されたマスクを生成する段階と、
    (b)前記ランダム化されたマスクと前記反転されたマスクを比較する段階と
    を含む、請求項7に記載の方法。
  13. 前記ランダム化されたマスクと前記反転されたマスクの前記比較の結果を結合する段階をさらに含む、請求項12に記載の方法。
  14. 前記ランダム化されたマスクと前記反転されたマスクの前記比較の結果に、プロセッサのクロック・サイクル周波数で論理レベルが変化するトグル・ビットを結合する段階をさらに含む、請求項13に記載の方法。
  15. 同時マルチスレッド・プロセッサにおいて、処理する命令を選択する際に使用するスレッド選択出力を生成する回路であって、
    (a)前記マルチスレッド・プロセッサ内の第1の命令スレッドのスレッド優先度を指示する第1の優先度信号、および前記マルチスレッド・プロセッサ内の追加の命令スレッドのスレッド優先度を指示する追加の優先度信号を受け取り、前記第1の優先度信号のマスクを生成するマスク論理と、
    (b)前記マスクと比較するのに適した乱数または擬似乱数を発生させる乱数発生器と、
    (c)前記マスク論理および前記乱数発生器に結合され、前記マスクと前記乱数または擬似乱数とを比較してランダム化されたマスクを生成する比較論理と、
    (d)前記比較論理に結合され、前記ランダム化されたマスクから前記スレッド選択出力を生成する結合論理と
    を含む回路。
  16. 前記マスク論理が、前記第1の優先度信号を、前記追加の優先度信号の反転された値を表す反転された優先度信号と比較する優先度信号比較器を含む、請求項15に記載の回路。
  17. 前記マスク論理が、前記第1の優先度信号を展開して展開された第1の優先度信号を生成する第1のエキスパンダと、前記追加の優先度信号を展開して展開された追加の優先度信号を生成する第2のエキスパンダとを含む、請求項15に記載の回路。
  18. 前記結合論理が、
    (a)反転されたマスクを生成するマスク・インバータと、
    (b)前記ランダム化されたマスクと前記反転されたマスクを比較して比較出力を生成するマスク比較器と
    を含む、請求項15に記載の回路。
  19. 前記結合論理が、前記比較出力のビットに論理AND演算を実行する結合AND装置を含む、請求項18に記載の回路。
  20. トグル・ビットを発生させ、前記トグル・ビットを前記比較出力に追加するトグル・ビット発生器をさらに含み、前記トグル・ビットが、前記結合AND装置が実行する前記論理AND演算に含まれる、請求項19に記載の回路。
  21. 同時マルチスレッド・プロセッサにおいて、処理する命令を選択する際に使用するスレッド選択出力を生成する回路であって、
    (a)インタリーブ規則執行出力を生成するインタリーブ規則執行構成要素と、
    (b)前記インタリーブ規則執行出力を受け取り、前記同時マルチスレッド・プロセッサ内の複数の命令スレッド間のスレッド選択を制御するランダム化されたスレッド選択出力を生成するランダム化構成要素と
    を含む回路。
JP2004119604A 2003-04-25 2004-04-14 マルチスレッド・プロセッサにおいて命令スレッドのインタリービングをランダム化するための方法および装置 Expired - Fee Related JP4086809B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/424,533 US7401208B2 (en) 2003-04-25 2003-04-25 Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor

Publications (2)

Publication Number Publication Date
JP2004326767A true JP2004326767A (ja) 2004-11-18
JP4086809B2 JP4086809B2 (ja) 2008-05-14

Family

ID=33299382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004119604A Expired - Fee Related JP4086809B2 (ja) 2003-04-25 2004-04-14 マルチスレッド・プロセッサにおいて命令スレッドのインタリービングをランダム化するための方法および装置

Country Status (2)

Country Link
US (2) US7401208B2 (ja)
JP (1) JP4086809B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007110906A1 (ja) * 2006-03-27 2007-10-04 Hitachi, Ltd データ処理装置
CN101493496B (zh) * 2008-01-22 2012-09-19 致茂电子股份有限公司 可程控ic检测机台的程序规划方法
JP2015162115A (ja) * 2014-02-27 2015-09-07 大日本印刷株式会社 情報処理装置、及び情報処理方法

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR100542099B1 (ko) * 2003-06-30 2006-01-11 삼성전자주식회사 밴드폭 제어장치 및 방법
US20050047439A1 (en) * 2003-08-26 2005-03-03 Madajczak Tomasz Bogdan System to process packets according to an assigned sequence number
KR101061906B1 (ko) * 2004-02-19 2011-09-02 삼성전자주식회사 전력분석공격에 안전한 기본 연산 장치 및 방법
DE102004009610B4 (de) * 2004-02-27 2007-08-16 Infineon Technologies Ag Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
US7913206B1 (en) * 2004-09-16 2011-03-22 Cadence Design Systems, Inc. Method and mechanism for performing partitioning of DRC operations
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7904852B1 (en) 2005-09-12 2011-03-08 Cadence Design Systems, Inc. Method and system for implementing parallel processing of electronic design automation tools
US8015565B2 (en) * 2005-11-21 2011-09-06 International Business Machines Corporation Preventing livelocks in processor selection of load requests
US8275942B2 (en) * 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
US8127082B2 (en) * 2006-02-01 2012-02-28 International Business Machines Corporation Method and apparatus for allowing uninterrupted address translations while performing address translation cache invalidates and other cache operations
WO2007099613A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited コマンド選択方法、装置、コマンド投入方法、及び装置
US8448096B1 (en) 2006-06-30 2013-05-21 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7904704B2 (en) * 2006-08-14 2011-03-08 Marvell World Trade Ltd. Instruction dispatching method and apparatus
US20100211955A1 (en) * 2006-09-07 2010-08-19 Cwi Controlling 32/64-bit parallel thread execution within a microsoft operating system utility program
WO2008031054A2 (en) 2006-09-07 2008-03-13 Black Lab Security Systems, Inc. Creating and using a specific user unique id for security login authentication
US7657856B1 (en) 2006-09-12 2010-02-02 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
US7773621B2 (en) 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7961745B2 (en) 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
US7720921B2 (en) * 2007-08-27 2010-05-18 International Business Machines Corporation System and method for soliciting and retrieving a complete email thread
US7949812B1 (en) 2007-09-07 2011-05-24 Marvell International Ltd. Priority arbitration of coexisting wireless topologies
US7747803B2 (en) * 2007-11-28 2010-06-29 International Business Machines Corporation Device, system, and method of handling delayed transactions
JP5173711B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
US8930907B2 (en) * 2009-12-01 2015-01-06 Microsoft Corporation Concurrency software testing with probabilistic bounds on finding bugs
US8533682B2 (en) 2010-11-05 2013-09-10 Microsoft Corporation Amplification of dynamic checks through concurrency fuzzing
CN102325281B (zh) * 2011-07-18 2014-03-12 成都优博创技术有限公司 一种利用可编程逻辑单元对OLT光模块RSSI Trigger时序的处理装置和方法
JP5861354B2 (ja) 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9904616B2 (en) 2011-12-14 2018-02-27 International Business Machines Corporation Instruction output dependent on a random number-based selection or non-selection of a special command from a group of commands
US9411642B2 (en) * 2014-01-17 2016-08-09 Nvidia Corporation Using high priority thread to boost CPU clock rate
EP3032416A1 (en) * 2014-12-10 2016-06-15 Gemalto SA Method to execute a sensitive computation using multiple different and independent branches
JPWO2021255926A1 (ja) * 2020-06-19 2021-12-23

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4514803A (en) * 1982-04-26 1985-04-30 International Business Machines Corporation Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
US4642756A (en) * 1985-03-15 1987-02-10 S & H Computer Systems, Inc. Method and apparatus for scheduling the execution of multiple processing tasks in a computer system
US5644742A (en) * 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
EP0790557A2 (en) 1996-02-14 1997-08-20 Matsushita Electric Industrial Co., Ltd. Task managemant apparatus
JPH09282184A (ja) 1996-02-14 1997-10-31 Matsushita Electric Ind Co Ltd 同優先度タスクの急増に伴う実行確率の変動を吸収することができるタスク管理装置
JP3760035B2 (ja) 1996-08-27 2006-03-29 松下電器産業株式会社 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6061749A (en) * 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
JP4048638B2 (ja) 1998-04-27 2008-02-20 ソニー株式会社 スケジューリング装置及び方法並びに記録媒体
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
GB9907280D0 (en) * 1999-03-31 1999-05-26 Philips Electronics Nv A method of scheduling garbage collection
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
CA2378088A1 (en) * 1999-06-25 2001-01-04 Massively Parallel Computing, Inc. Massive collective network processing system and methods
US6438671B1 (en) * 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US7007153B1 (en) 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US20020103990A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Programmed load precession machine
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
US7210134B1 (en) * 2001-09-06 2007-04-24 Sonic Solutions Deterring reverse-engineering of software systems by randomizing the siting of stack-based data
KR100860660B1 (ko) * 2002-01-09 2008-09-26 삼성전자주식회사 통신시스템의 인터리빙 장치 및 방법
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007110906A1 (ja) * 2006-03-27 2007-10-04 Hitachi, Ltd データ処理装置
JP5024899B2 (ja) * 2006-03-27 2012-09-12 株式会社日立製作所 データ処理装置
CN101493496B (zh) * 2008-01-22 2012-09-19 致茂电子股份有限公司 可程控ic检测机台的程序规划方法
JP2015162115A (ja) * 2014-02-27 2015-09-07 大日本印刷株式会社 情報処理装置、及び情報処理方法

Also Published As

Publication number Publication date
US20040215947A1 (en) 2004-10-28
US7401208B2 (en) 2008-07-15
JP4086809B2 (ja) 2008-05-14
US8145885B2 (en) 2012-03-27
US20080209426A1 (en) 2008-08-28

Similar Documents

Publication Publication Date Title
JP4086809B2 (ja) マルチスレッド・プロセッサにおいて命令スレッドのインタリービングをランダム化するための方法および装置
JP4179555B2 (ja) マルチスレッド・プロセッサにおいてスレッドの優先度を調整するための装置および方法
JP6526609B2 (ja) プロセッサ
JP3547482B2 (ja) 情報処理装置
KR100227276B1 (ko) 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서
JP3781419B2 (ja) パイプライン方式のプロセッサにおける例外処理
TWI525537B (zh) 具有為向量衝突指令與置換指令所共享的全連接互連的處理器
US20080162904A1 (en) Apparatus for selecting an instruction thread for processing in a multi-thread processor
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
KR20160118329A (ko) 결정론적 및 기회적 멀티스레딩
May The xmos xs1 architecture
TW201741872A (zh) 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統
US20150074353A1 (en) System and Method for an Asynchronous Processor with Multiple Threading
US20040034759A1 (en) Multi-threaded pipeline with context issue rules
JP2009099097A (ja) データ処理装置
US10732976B2 (en) Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
US20060064448A1 (en) Continuous multi-buffering random number generator
US20210124607A1 (en) User mode event handling
JP2007233457A (ja) リオーダリング装置
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
Moisuc et al. Hardware event treating in nMPRA
US10133578B2 (en) System and method for an asynchronous processor with heterogeneous processors
US20230244491A1 (en) Multi-threading microprocessor with a time counter for statically dispatching instructions
May XMOS XS1 Architecture

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061222

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061222

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20061222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070927

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070927

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: 20080214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080214

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080219

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110228

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110228

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120229

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees