JP2011503676A - マルチスレッドプロセッサにおける複合命令 - Google Patents

マルチスレッドプロセッサにおける複合命令 Download PDF

Info

Publication number
JP2011503676A
JP2011503676A JP2010520626A JP2010520626A JP2011503676A JP 2011503676 A JP2011503676 A JP 2011503676A JP 2010520626 A JP2010520626 A JP 2010520626A JP 2010520626 A JP2010520626 A JP 2010520626A JP 2011503676 A JP2011503676 A JP 2011503676A
Authority
JP
Japan
Prior art keywords
thread
instructions
execution
register means
instruction
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
JP2010520626A
Other languages
English (en)
Other versions
JP5425074B2 (ja
Inventor
ピーター リーバック
モリス バーグラス
Original Assignee
イマジネイション テクノロジーズ リミテッド
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 イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2011503676A publication Critical patent/JP2011503676A/ja
Application granted granted Critical
Publication of JP5425074B2 publication Critical patent/JP5425074B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30098Register arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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 or look ahead
    • 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 or 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
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

マルチスレッドプロセッサに使用するための複合命令、及びそのような命令を使用するプロセッサを提供する。本発明は、各スレッドがその実行に必要とするリソースの利用可能性に基づいて複数のスレッドを実行するためのマルチスレッドプロセッサを開示する。プロセッサは、どのスレッドを実行すべきかを判断するための手段と、判断結果に基づいて、各スレッドがスレッドの状態を格納するためにかつスレッド上で命令を実行するのに使用するためにそれぞれのレジスタ手段に結合されたスレッドの実行間で切り換えるための手段と、全てのスレッドによって共有され、実行中のスレッドが実行性能を改善するために使用する更に別のレジスタ手段と、内部レジスタ手段が使用されている間は別のスレッドへの実行の切り換えを防止するための手段とを含む。
【選択図】図2

Description

本発明は、マルチスレッドプロセッサに使用するための複合命令、及びそのような命令を使用するプロセッサに関する。
マルチスレッドプロセッサの例は、本出願人の米国特許第5、968、167号に説明している。これは、各スレッドがその実行に必要とするリソースの利用可能性に基づいて複数のスレッドの各々を実行するプロセッサを開示している。実行に対するスレッド間の選択は、どのスレッドを実行すべきかを判断し、適切にスレッド間で切り換える媒体制御コア又はアービターによって実施される。
そのようなマルチスレッドプロセッサは、いくつかのプログラム又は実行中のスレッドの各々に対するプログラム状態を格納する別の組のレジスタを有することになる。スレッドの1つによって要求されたリソースが利用可能でない、例えば、それがメモリアクセス待ちである時は、スレッドの続行が回避され、プロセッサは、スレッドが要求する全てのリソースが利用可能であり、従って実行を続けることができる別のスレッドに切り換える。スレッド間のアービトレーションは、プロセッサが何もしないのではなく可能な時はいつでも有用な命令を実行することができ、それによってプロセッサの使用が最適化されるように編成される。スレッドが実行していない時は、レジスタの組がその現在の状態を格納する。
プロセッサの最適な使用を達成する決定的な1つの要素は、スレッド間で実行を交換するのに必要な時間オーバーヘッドである。これがメモリアクセス待ちのような特定スレッドに対する待ち時間と類似している場合、実行中のスレッド間で切り換えるプロセッサ効率に正味の利得はない。したがって、プロセッサ効率を最適化するためにスレッド実行間の迅速な交換を必要とすることが認められてきた。迅速なスレッド交換は、各スレッドに対して格納されたプログラム状態のための別々の組のレジスタを有することによって助けられる。
上述のように、実行中のスレッドの状態は、1組のレジスタに格納される。これらのレジスタから最大性能を取得するために、それらが各クロックサイクル内で少なくとも2回読まれ、少なくとも1回書かれることが普通である。これは、機械語コード命令の構造に起因する。一例が「ADD」命令である。これは、2つのソースレジスタのコンテンツを取り、それらに加算を行い、次に、結果を再度レジスタストアに格納する。これが1クロックサイクル内で実行されるように、レジスタストレージは、2つの読取ポートと1つの書込ポートを必要とし、2つの読取ポートは、加算が行われる2つのデータ部分を提供し、書込ポートは、結果をレジスタに再度書き込むことを可能にする。これに伴う問題は、レジスタストア上のポート数が増加すると、ストアを生成するのに必要なシリコンの面積が有意に増加し、その結果、演算速度が低下することである。デバイスのコストも増加する。
マルチポートレジスタストレージは、迅速な切換機能を必要とするスレッドの数だけ深さを増加させなければならない。例えば、プロセッサが16個のレジスタを有しており、4つのスレッドを効率的に切り換えるべきであることが要求された場合、4掛ける16個のレジスタストレージが要求され、スレッド当たり16個のレジスタストアになる。したがって、レジスタストレージに必要なシリコン面積は、ポートの数及びスレッドの数の関数である。
一実施形態では、各スレッドがその実行に必要とするリソースの利用可能性に基づいて複数のスレッドを実行するためのマルチスレッドプロセッサを開示する。プロセッサは、どのスレッドを実行すべきかを判断するための手段と、判断結果に基づいて、各スレッドがスレッドの状態を格納するためにかつスレッド上で命令を実行するのに使用するためにそれぞれのレジスタ手段に結合されたスレッドの実行間で切り換えるための手段と、全てのスレッドによって共有された更に別のレジスタ手段とを含み、実行中のスレッドは、実行性能を改善する更に別のレジスタ手段を使用し、プロセッサは、内部レジスタ手段が使用されている間は別のスレッドへの実行の切り換えを防止するための手段を更に含む。
本発明の好ましい実施形態は、マルチスレッドプロセッサに対する主レジスタストアとは別の小さなレジスタストアを提供する。
これは、内部レジスタストアと呼ばれる。この内部レジスタストアと主レジスタストアの違いは、内部レジスタがスレッドの数に対して複写されず、すなわち、全てのスレッドによって共有されるただ1つの内部レジスタストアが提供されることである。内部レジスタストアは、どの実行中のスレッドによっても使用することができる。
内部レジスタストアにおける内部レジスタは、全てのスレッド間で共有され、プロセッサは、内部レジスタが使用されている間は別のスレッドの実行に切り換えることが防止される。内部レジスタは、命令の実行中に使用することができる追加レジスタを提供し、それによってデータへの同時アクセスが増加し、かつそれによってより機能的に豊富な命令の実行を可能にする。仮にこの数の余分なレジスタ及び読取/書込ポートが主レジスタストアに追加される場合、それらは、各スレッドに対して複写されるべきであり、それによってシリコンコストに相当に上乗せされるであろう。
好ましくは、実行中のスレッドは、少数の命令を複合命令にグループ分けすることになる。この複合命令が、そのスレッドの実行を停止させると考えられるいずれの命令も含まない場合、実行中のスレッドにおける切り換えを防止することによってCPU効率に損失はない。
したがって、好ましい実施形態は、より多くのポートを主レジスタストアに追加するコストなしに、より多くの読取/書込アクセスを有するプロセッサを提供する。複合命令を使用は、プロセッサ利用度の最適化を保証することに役立つものである。
従来技術の中央演算処理装置の簡略化したブロック図である。 本発明を具現化するプロセッサのブロック図である。 本発明の実施形態における命令のコンパイルの例を示す図である。 本発明の実施形態に使用するための命令フォーマットのレイアウトを示す図である。 図4のフォーマットに対する更なる詳細を与える図である。
図1には、中央演算処理装置(CPU)2が示されている。これは、メモリバス6によって外部メモリ4に結合される。このバス6は、外部メモリとの間でデータ及び命令を転送するのに使用される。
CPU2によって実施される処理は、算術論理演算ユニット(ALU)8内で行われる。Rは、外部メモリバス6を通じて外部メモリ4にメモリ及び命令要求を送り、かつ外部メモリバス6を通じて応答を受け取る。
ALUは、レジスタストア12に結合された1組の読取/書込ポート10を有する。この例では、4つのレジスタストア12がある。これは、CPU2が命令の4つのスレッドを処理するように使用され、それらの間を必要に応じて適切に切り換え、適切なレジスタストア12から各スレッドのステータスを取り出すのを可能にする。
図2は、更に別の組の読取/書込ポート16によってALU8に結合された内部レジスタストア14の追加によって修正された図1の構成を示している。この読取/書込ポートの組は、ALU8をレジスタストア12に結合する読取/書込ポートとは別である。しかし、ALU8上で実行しているいずれのスレッドも使用することができる内部レジスタストア14の1つのコピーが存在する。この例の目的に対して、レジスタストア12のために2つの読取ポートと1つの書込ポートがあるものと仮定する。レジスタストア12には、他の数の読取ポート及び書込ポートを提供することができる。更に、内部レジスタストア14内への2つの読取ポートと1つの書込ポートが存在する。CPUの異なる演算性能を必要とする場合、異なる数の読取ポート及び書込ポートを提供することができる。
ここで、内部レジスタストア14を有するCPUの演算をCPUが実施すべきである一般的な数学演算、すなわち、ベクトルドット積に関連して説明する。この演算の3次元バージョンは、下の式に示されている。
ドット積=Ax*Bx+Ay*By+Az*Bz
この式を実施するために、3つの乗算と2つの加算が必要である。ALU8には、単一サイクルの乗算及び加算論理が設けられている。したがって、上の式に示したドット積を3サイクルで実行することが可能であるはずである。これは、以下の理論的機械語命令に関連して示される。
MUL R6、R0、R1
MLA R6、R2、R3、R6
MLA R6、R4、R5、R6
「MUL R6、R0、R1」は、レジスタR0のコンテンツのレジスタR1のコンテンツとの乗算と、結果をレジスタR6に格納することを意味する。レジスタR0は、「Ax」を収容し、レジスタR1は、「Bx」を収容するであろう。
「MUL R6、R2、R3、R6」は、レジスタR2のコンテンツのレジスタR3のコンテンツとの乗算と、結果をレジスタR6に加算することを意味する。加算の結果は、レジスタR6に再度格納される。レジスタR2は、「Ay」を収容し、レジスタR3は、「By」を収容するであろう。
「MLA R6、R4、R5、R6」は、レジスタR4のコンテンツのレジスタR5のコンテンツとの乗算と、結果をレジスタR6に加算することを意味する。加算の結果は、レジスタR6に再度格納される。レジスタR4は、「Az」を収容し、レジスタR5は、「Bz」を収容するであろう。
これから、「MLA」命令に対して、3つのレジスタから読み取り、1つのレジスタに書き込む必要があることが分る。したがって、これは、レジスタ12に関して先に指摘したよりも1つ多い読取ポートを必要とする。したがって、仮にレジスタストア12だけが利用可能だとすれば、演算を3サイクル以内で実施することを可能にするには、読取ポイントポートが不十分であろう。この問題は、そのために使用することができる余分な読取/書込ポートを有する内部レジスタストア14を使用することによって克服することができる。したがって、内部レジスタストアを使用してこれを実行するための機械語命令は、以下の通りである。
MUL I0、R0、R1
MLA I0、R2、R3、I0
MLA R6、R4、R5、I0
これは、ドット積の中間結果がレジスタストアR6に格納されず、代わりに内部レジスタストア10に格納されるという点で最初の例と異なる。最終合計後の結果だけがR6に再度格納される。この構成を使用すると、2つの読取ポートと1つの書込ポートだけがレジスタストア12に必要とされることが保証され、これは、CPU2のこの特定の例に対する限界である。
図に示すように、外部レジスタの代わりに内部レジスタI0が使用され、それによってメモリアクセスの数が減少し、CPUによって実行すべきであるコード行の全数が生成される。
内部レジスタストア14が上述の機械語命令の実行に使用されている間、CPUは、異なるスレッドを実行するような交換が防止されることが必須である。これは、別のスレッドが内部レジスタストアを必要とする可能性があり、既に書き込まれた結果に上書きしてそれを破損させると考えられるためである。したがって、本発明の好ましい実施形態は、スケジュール変更不可ビットと呼ばれる単一ビットの命令を使用して交換を防止するように構成される。このビットが命令に対して設定されるときに、CPUは、その命令の終わりと次の命令との間でスレッドの交換が防止される。したがって、この例では、スケジュール変更不可ビットは、ドット積MULの第1の2つの命令、及びMLAの第1の発生に対して設定される。それは、MLAの第2の発生に対して設定されないが、CPUは、MLAの第2の発生の実行後まで、異なるスレッドへの交換が防止される。
複合命令は、いくつかの連続した命令に対してスケジュール変更不可ビットを設定することによって作成される。この組の連続命令又は複合命令がサイクルごとのベースで実行されると、レジスタストア12だけがアクセスされた場合にその他の方法で使用できたであろうよりも内部レジスタストアの書込/読取ポートを通じてより多くのデータ経路へのアクセスが可能である。これは、標準のプロセッサアーキテクチャと比べて有意な利点を提供する。標準のアーキテクチャを使用して同じ性能を達成するためには、レジスタストア12の4つのコピー各々に対して第3の読取ポイントの追加を必要とするであろう。これは、内部レジスタストアに必要とされるシリコン面積よりも相当に高価になると考えられる。
複合命令は、メモリから読み込まれてCPUによって実行される命令を供給するのに使用されるコンパイラ/アセンブラの関連において存在する1つの概念である。CPUは、通常命令と複合命令を区別しない。同様に、コンパイラ/アセンブラは、複合命令を収容するどの入力プログラムも受け取らないことになる。
コンパイラ/アセンブラによって実施される付加的な機能性は、入力プログラムの解析と、複合命令が使用されてCPU上で実行されるときにプログラムの性能を改善することができる位置の検索とである。そのような位置が見つかった状態で、コンパイラ/アセンブラは、内部レジスタストアを利用する一連のCPU命令を作成し、内部レジスタストアがそれ以上使用されなくなるまで停止中のそのスレッドの実行を防止するスケジュール変更不可フラグを設定することができる。
複合命令は、2つの連続CPU命令と同程度に簡単になるか、又は数十のCPU命令と同じくらい複雑になる可能性がある。複合命令がCPUに遭遇すると、スケジュール変更不可フラグが設定されている限り、複合命令の実行が持続する。
コンパイラ/アセンブラは、使用することができる複合命令の有無を判断するために2つの主要な方法で作動することができる。これらの第1のものは、入力プログラムのコンパイル、次に、実行する命令の数を低減するために内部レジスタストアを使用することができる状況の検索、及び続いて内部レジスタを使用するためにコンパイルした命令の変更を伴う。これらの第2のものは、内部レジスタシステムを使用するのに適する構成を識別するためにコンパイラ/アセンブラが入力プログラムを解析することを伴う。第1のものの例は、図3に示している。ここでは、入力プログラムが30で受け取られ、第1の通過の後は、32でコンパイル/アセンブルされる。33において、コンパイラ/アセンブラは、コンパイル/アセンブルプログラム内で最適化を検索する。ここでは、それは、2つの乗算及び加算と更に別の乗算及び加算を検出し、結果がレジスタR6に格納される。36において、コンパイル/アセンブルのCPUに対する出力は、スケジュール変更不可ビット設定を含む命令を含んでいる。図に見られるように、最初の2つの乗算及び加算は、図3では34であり、36の複合命令の最初の2行で実施される。34のその後の乗算及び加算は、次に、複合命令の3行目で実施される。
CPUそれ自体は、内部レジスタを使用するか又はスレッドスケジューリングを無効にするかを判断しない。代わりに、コンパイラ/アセンブラプログラムは、それがCPUによって提供された内部レジスタリソースを使用することができる状況を検出する。CPUの命令の組は、アセンブラが、内部レジスタを使用すること及びスレッドのスケジュール変更を無効にすることも既に選択したことを表示するための機構を提供する。
図4には、内部レジスタの使用をサポートするために、同じくスケジュール変更不可フラグを提供するために、適切なコンパイラ/アセンブラによってコンパイルすることができる命令設定フォーマットが示されている。命令フォーマットの各部分に提供されたデータが図5に示されている。図に見られるように、スケジュール変更不可ビットがビット20にある。
複合命令を設定するために、コンパイラ/アセンブラは、いつこれらの命令を使用することができるかを識別するように設計される。これは、コンパイラ/アセンブラを生成するときに実施することができる。例えば、典型的な命令の組をサポートするプロセッサを考えると、提供されるデータ経路命令は、加算、乗算、及び乗算−合計のような関数を含むことになる。その組から提供することができる命令は、プロセッサのハードウエア実施がサポートすることができるソース及び宛先引数の数によって完全に制限される。プロセッサが単に2つのソース引数をサポートする場合、プロセッサは、実施されるこれらのソース引数を必要とすることになるので、乗算−合計命令を持たないことになる。これらの制限は、これが命令の組を判断するものなので、プロセッサのハードウエアを設計するときに行われる決定によって実施される。例えば、レジスタへの2つの読取ポートだけを含むプロセッサを設計する者は、算術論理演算ユニットに乗算−合計サポートを入れないと考えられる。
本発明の実施形態は、典型的なプロセッサのソース及び宛先引数の数を増すものである(通常短い持続時間にわたって一部の制限付きで)。それは、改善した入力/出力データ境界の利点を利用する付加的な命令/演算の実施を可能にする。プロセッサ自体は、付加的な引数を使用する一部の命令をサポートするように設計されるが、それらを使用することができると考えられるあらゆる可能な命令を予期することができないのは明らかである。
1組内のある一定の命令は、暗黙にその命令の組に含められた余分な引数を使用するハードウエアプロセッササポート命令とすることができ、これらは、プロセッサ上に実施されるプログラムを設計する者に既知であることになる。コンパイラ/アセンブラは、ユーザの入力を取得してそれを命令の組にマップする。したがって、コンパイラ/アセンブラは、全ての命令の背景にある演算を理解するように設計される。このマッピングは、例えば、この命令が使用されるようにユーザがコンパイラ/アセンブラに入力することによって直接形成することができる。別の例のコンパイラ/アセンブラは、命令を検査し、適切な場合には、ユーザによって提供された命令を複合命令上にマップする。
以上の第1の例を考えると、これは、フィルタ命令をサポートするハードウエア実施とすることができる。フィルタ命令は、並行して5つのソース引数からフィルタデータと係数を読み取り、データを1つのスカラー出力までフィルタリングすることができる。これは、次に、映像復号アルゴリズムに使用することができる。映像復号器は、アセンブリ言語で書かれ、直接フィルタ命令を使用することになる。アセンブリは、これをハードウエアによって理解される機械語コードに変換することになる。すなわち、内部レジスタが存在すると、これの利点が利用され、複合命令が使用されることになる。
以上の第2の例では、コンパイラに伝えられるユーザの意図が、最初に2つの値を乗算して結果を第3の位置に格納する場合、2つの異なる値の乗算と別の新しい位置への格納がそれに続く。コンパイラは、これらの連続演算を識別してそれらを単一の二重乗算演算に変換するように構成され、この二重乗算演算は、ここでもまた、性能を改善するために付加的な内部レジスタストアを使用して、4つの値を並行して読み取り、乗算を実施し、結果を戻す。
したがって、内部レジスタストアの使用は、マルチスレッドプロセッサの性能を有意に改善し、実行中にスレッド交換が起こる可能性がない複合命令を作り出すことからより良い性能を得ることを可能にすることが認められるであろう。それによって性能が更に改善され、スレッド交換の結果としてデータの破損がないことが保証される。

Claims (7)

  1. 各スレッドによる実行に必要とされるリソースの利用可能性に基づいて複数のスレッドを実行するためのマルチスレッドプロセッサであって、
    どのスレッドが実行すべきかを判断する手段と、
    前記判断の結果に基づいて複数のスレッドの実行を切り換える手段と、
    を具備し、
    各スレッドが、該スレッドの状態を記憶しかつ該スレッドにおける命令の実行に用いられる対応するレジスタ手段に結合されており、
    さらに、
    前記複数のスレッドのすべてにより共有され、実行性能を向上させるために実行中の複数のスレッドにより利用される、別のレジスタ手段と、
    内部レジスタ手段が使用されている間、別のスレッドへの実行の切り換えを防止する手段と、
    命令内のスケジュール変更不可ビットを検出する手段と、
    を具備し、
    別のスレッドへの実行の切り換えを防止する前記手段が、スケジュール変更不可ビットの検出に応答して動作する、ことを特徴とするマルチスレッドプロセッサ。
  2. 複数の命令のシーケンスを含む複合命令が、その実行において前記別のレジスタ手段を利用し、
    別のスレッドへの実行の切り換えを防止する前記手段が、そのような命令のシーケンスに応答して該シーケンスが実行を完了するまで動作する、請求項1に記載のマルチスレッドプロセッサ。
  3. 前記別のレジスタ手段の使用は、前記複数の命令のシーケンスが実行を完了する前に終わる、請求項2に記載のマルチスレッドプロセッサ。
  4. スケジュール変更不可ビットが、前記シーケンスにおける各命令に対して設定され、別のスレッドへの実行の切り換えを防止する前記手段が、命令内のスケジュール変更不可ビットの検出に応答して動作する、請求項2又は請求項3に記載のマルチスレッドプロセッサ。
  5. 各スレッドの状態を記憶するレジスタ手段とすべてのスレッドによって使用される別のレジスタ手段とを有するマルチスレッドプロセッサ上で実行するための命令のスレッドをコンパイル/アセンブルする方法であって、
    スレッド内のどの命令が実行性能を向上させるために前記別のレジスタ手段を利用することができるかを判断する段階と、
    内部レジスタ手段を利用する命令が実行されるときに、実行中のスレッドにスケジュール変更不可ビットを設定する段階と、
    を含むことを特徴とする方法。
  6. スレッド内のどの命令が前記別のレジスタ手段を利用することができるかを判断する前記段階は、入力プログラムをコンパイルする段階と、必要とされる命令の数を低減するために該別のレジスタ手段を使用することができる状況を検索する段階と、該別のレジスタが使用されるときにスケジュール変更不可ビットを含む命令を含める段階と、を含む、請求項5に記載の方法。
  7. スレッド内のどの命令が前記別のレジスタ手段を利用することができるかを判断する前記段階は、該別のレジスタ手段を使用した実行に適した命令のための入力プログラムを解析する段階と、そのような構成が見つかったときに、該別のレジスタ手段を利用しかつスケジュール変更不可ビットを含む命令をコンパイルする段階と、を含む、請求項5に記載の方法。
JP2010520626A 2007-08-14 2008-08-14 マルチスレッドプロセッサにおける複合命令 Active JP5425074B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0715824.9 2007-08-14
GB0715824A GB2451845B (en) 2007-08-14 2007-08-14 Compound instructions in a multi-threaded processor
PCT/GB2008/002753 WO2009022142A1 (en) 2007-08-14 2008-08-14 Compound instructions in a multi-threaded processor

Publications (2)

Publication Number Publication Date
JP2011503676A true JP2011503676A (ja) 2011-01-27
JP5425074B2 JP5425074B2 (ja) 2014-02-26

Family

ID=38566352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010520626A Active JP5425074B2 (ja) 2007-08-14 2008-08-14 マルチスレッドプロセッサにおける複合命令

Country Status (5)

Country Link
US (1) US7904702B2 (ja)
EP (1) EP2179350B1 (ja)
JP (1) JP5425074B2 (ja)
GB (1) GB2451845B (ja)
WO (1) WO2009022142A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020109605A (ja) * 2018-12-31 2020-07-16 グラフコアー リミテッドGraphcore Limited マルチスレッドプロセッサのレジスタファイル

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8195909B2 (en) * 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US8943313B2 (en) 2011-07-19 2015-01-27 Elwha Llc Fine-grained security in federated data sets
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9710054B2 (en) * 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
US20220121486A1 (en) * 2020-10-20 2022-04-21 Micron Technology, Inc. Rescheduling a failed memory request in a processor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198247A (ja) * 1996-01-17 1997-07-31 Yamaha Corp プロセッサおよび該プロセッサの割込制御方法
JP2000509528A (ja) * 1996-04-04 2000-07-25 イマジネイション テクノロジーズ リミテッド データ処理マネージメントシステム
JP2005018224A (ja) * 2003-06-24 2005-01-20 Matsushita Electric Ind Co Ltd 競合制御装置
WO2006033078A2 (en) * 2004-09-22 2006-03-30 Koninklijke Philips Electronics N.V. Data processing circuit wherein functional units share read ports

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992007335A1 (en) * 1990-10-19 1992-04-30 Cray Research, Inc. A scalable parallel vector computer system
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
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
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
JP3209205B2 (ja) * 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6205543B1 (en) * 1998-12-03 2001-03-20 Sun Microsystems, Inc. Efficient handling of a large register file for context switching
US6539471B2 (en) * 1998-12-23 2003-03-25 Intel Corporation Method and apparatus for pre-processing instructions for a processor
US6952825B1 (en) * 1999-01-14 2005-10-04 Interuniversitaire Micro-Elektronica Centrum (Imec) Concurrent timed digital system design method and environment
US6785887B2 (en) * 2000-12-27 2004-08-31 International Business Machines Corporation Technique for using shared resources on a multi-threaded processor
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
GB2414839B (en) * 2001-09-28 2006-04-12 Intel Corp Controlling access by competing threads from a plurality of processors to a shared resource
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7472390B2 (en) * 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
US20050251662A1 (en) * 2004-04-22 2005-11-10 Samra Nicholas G Secondary register file mechanism for virtual multithreading
US8095921B2 (en) * 2005-10-12 2012-01-10 International Business Machines Corporation Identifying code that wastes time switching tasks
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US20070143582A1 (en) * 2005-12-16 2007-06-21 Nvidia Corporation System and method for grouping execution threads
US7577826B2 (en) * 2006-01-30 2009-08-18 Sony Computer Entertainment Inc. Stall prediction thread management
US7779235B2 (en) * 2007-02-06 2010-08-17 International Business Machines Corporation Using performance data for instruction thread direction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09198247A (ja) * 1996-01-17 1997-07-31 Yamaha Corp プロセッサおよび該プロセッサの割込制御方法
JP2000509528A (ja) * 1996-04-04 2000-07-25 イマジネイション テクノロジーズ リミテッド データ処理マネージメントシステム
JP2005018224A (ja) * 2003-06-24 2005-01-20 Matsushita Electric Ind Co Ltd 競合制御装置
WO2006033078A2 (en) * 2004-09-22 2006-03-30 Koninklijke Philips Electronics N.V. Data processing circuit wherein functional units share read ports
JP2008513878A (ja) * 2004-09-22 2008-05-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 機能単位が読み出しポートを共有するデータ処理回路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020109605A (ja) * 2018-12-31 2020-07-16 グラフコアー リミテッドGraphcore Limited マルチスレッドプロセッサのレジスタファイル

Also Published As

Publication number Publication date
GB0715824D0 (en) 2007-09-26
JP5425074B2 (ja) 2014-02-26
GB2451845A (en) 2009-02-18
US7904702B2 (en) 2011-03-08
EP2179350A1 (en) 2010-04-28
EP2179350B1 (en) 2017-05-10
GB2451845B (en) 2010-03-17
US20090063824A1 (en) 2009-03-05
WO2009022142A1 (en) 2009-02-19

Similar Documents

Publication Publication Date Title
JP5425074B2 (ja) マルチスレッドプロセッサにおける複合命令
Thistle et al. A processor architecture for Horizon
Goodman et al. PIPE: a VLSI decoupled architecture
Colwell et al. A VLIW architecture for a trace scheduling compiler
JP6159825B2 (ja) ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション
Sampson et al. Exploiting fine-grained data parallelism with chip multiprocessors and fast barriers
EP1550032B1 (en) Method and apparatus for thread-based memory access in a multithreaded processor
JPH03129433A (ja) 並列処理装置および並列処理方法
JP2003502728A (ja) プロセッサおよびコプロセッサを含むコンピュータ・システム
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JP2016504699A (ja) 並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション
JP4589305B2 (ja) Ilp及びtlpを利用する再構成可能なプロセッサアレイ
Jesshope Scalable instruction-level parallelism
US8732368B1 (en) Control system for resource selection between or among conjoined-cores
US9003168B1 (en) Control system for resource selection between or among conjoined-cores
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
JP3520372B2 (ja) メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除
JP5967646B2 (ja) レジスタレスアーキテクチャによるキャッシュレスマルチプロセッサ
JP2636821B2 (ja) 並列処理装置
McMahon et al. Advanced Microprocessor Architectures
Gibbons Towards better shared memory programming models
Ostheimer Parallel Functional Computation on STAR: DUST—
JP3102399B2 (ja) データ処理装置及び方法
JP2927281B2 (ja) 並列処理装置
JP2861234B2 (ja) 命令処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131126

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5425074

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250