JP2011503676A - Compound instructions in multithreaded processors - Google Patents

Compound instructions in multithreaded processors 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
Japanese (ja)
Other versions
JP5425074B2 (en
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/en
Application granted granted Critical
Publication of JP5425074B2 publication Critical patent/JP5425074B2/en
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
Provided are complex instructions for use in a multithreaded processor, and a processor using such instructions. The present invention discloses a multi-thread processor for executing multiple threads based on the availability of resources that each thread requires for its execution. The processor has a means for determining which thread to execute, and based on the determination result, each thread stores each thread's state and uses it to execute instructions on the thread. Used by means for switching between executions of threads coupled to register means, further register means shared by all threads and used by running threads to improve execution performance, and internal register means And means for preventing switching of execution to another thread.
[Selection] Figure 2

Description

本発明は、マルチスレッドプロセッサに使用するための複合命令、及びそのような命令を使用するプロセッサに関する。   The present invention relates to compound instructions for use in a multithreaded processor, and a processor that uses such instructions.

マルチスレッドプロセッサの例は、本出願人の米国特許第5、968、167号に説明している。これは、各スレッドがその実行に必要とするリソースの利用可能性に基づいて複数のスレッドの各々を実行するプロセッサを開示している。実行に対するスレッド間の選択は、どのスレッドを実行すべきかを判断し、適切にスレッド間で切り換える媒体制御コア又はアービターによって実施される。
そのようなマルチスレッドプロセッサは、いくつかのプログラム又は実行中のスレッドの各々に対するプログラム状態を格納する別の組のレジスタを有することになる。スレッドの1つによって要求されたリソースが利用可能でない、例えば、それがメモリアクセス待ちである時は、スレッドの続行が回避され、プロセッサは、スレッドが要求する全てのリソースが利用可能であり、従って実行を続けることができる別のスレッドに切り換える。スレッド間のアービトレーションは、プロセッサが何もしないのではなく可能な時はいつでも有用な命令を実行することができ、それによってプロセッサの使用が最適化されるように編成される。スレッドが実行していない時は、レジスタの組がその現在の状態を格納する。
An example of a multi-thread processor is described in Applicant's US Pat. No. 5,968,167. This discloses a processor that executes each of a plurality of threads based on the availability of resources that each thread requires for its execution. The selection between threads for execution is performed by a media control core or arbiter that determines which thread to execute and switches between threads appropriately.
Such a multi-threaded processor will have another set of registers that store the program state for each of several programs or running threads. If the resource requested by one of the threads is not available, for example when it is waiting for memory access, thread continuation is avoided and the processor will have all resources requested by the thread available. Switch to another thread that can continue execution. Arbitration between threads is organized so that the processor can execute useful instructions whenever possible, rather than doing nothing, thereby optimizing processor use. When a thread is not executing, a set of registers stores its current state.

プロセッサの最適な使用を達成する決定的な1つの要素は、スレッド間で実行を交換するのに必要な時間オーバーヘッドである。これがメモリアクセス待ちのような特定スレッドに対する待ち時間と類似している場合、実行中のスレッド間で切り換えるプロセッサ効率に正味の利得はない。したがって、プロセッサ効率を最適化するためにスレッド実行間の迅速な交換を必要とすることが認められてきた。迅速なスレッド交換は、各スレッドに対して格納されたプログラム状態のための別々の組のレジスタを有することによって助けられる。   One critical factor in achieving optimal processor usage is the time overhead required to exchange execution between threads. If this is similar to the latency for a particular thread, such as waiting for memory access, there is no net gain in processor efficiency switching between running threads. Thus, it has been recognized that rapid exchange between thread executions is required to optimize processor efficiency. Rapid thread exchange is aided by having a separate set of registers for the program state stored for each thread.

上述のように、実行中のスレッドの状態は、1組のレジスタに格納される。これらのレジスタから最大性能を取得するために、それらが各クロックサイクル内で少なくとも2回読まれ、少なくとも1回書かれることが普通である。これは、機械語コード命令の構造に起因する。一例が「ADD」命令である。これは、2つのソースレジスタのコンテンツを取り、それらに加算を行い、次に、結果を再度レジスタストアに格納する。これが1クロックサイクル内で実行されるように、レジスタストレージは、2つの読取ポートと1つの書込ポートを必要とし、2つの読取ポートは、加算が行われる2つのデータ部分を提供し、書込ポートは、結果をレジスタに再度書き込むことを可能にする。これに伴う問題は、レジスタストア上のポート数が増加すると、ストアを生成するのに必要なシリコンの面積が有意に増加し、その結果、演算速度が低下することである。デバイスのコストも増加する。   As described above, the state of the running thread is stored in a set of registers. In order to get maximum performance from these registers, they are usually read at least twice and written at least once within each clock cycle. This is due to the structure of machine language code instructions. An example is the “ADD” instruction. This takes the contents of the two source registers, adds them, and then stores the result back in the register store. Register storage requires two read ports and one write port so that this is done within one clock cycle, and the two read ports provide two data portions to be added and written The port allows the result to be written back to the register. The problem with this is that as the number of ports on the register store increases, the area of silicon required to create the store increases significantly, resulting in a decrease in computational speed. Device costs also increase.

マルチポートレジスタストレージは、迅速な切換機能を必要とするスレッドの数だけ深さを増加させなければならない。例えば、プロセッサが16個のレジスタを有しており、4つのスレッドを効率的に切り換えるべきであることが要求された場合、4掛ける16個のレジスタストレージが要求され、スレッド当たり16個のレジスタストアになる。したがって、レジスタストレージに必要なシリコン面積は、ポートの数及びスレッドの数の関数である。   Multi-port register storage must be increased in depth by the number of threads that require rapid switching capabilities. For example, if a processor has 16 registers and it is required that 4 threads should be switched efficiently, 4 times 16 register storage is required, and 16 register stores per thread. become. Thus, the silicon area required for register storage is a function of the number of ports and the number of threads.

一実施形態では、各スレッドがその実行に必要とするリソースの利用可能性に基づいて複数のスレッドを実行するためのマルチスレッドプロセッサを開示する。プロセッサは、どのスレッドを実行すべきかを判断するための手段と、判断結果に基づいて、各スレッドがスレッドの状態を格納するためにかつスレッド上で命令を実行するのに使用するためにそれぞれのレジスタ手段に結合されたスレッドの実行間で切り換えるための手段と、全てのスレッドによって共有された更に別のレジスタ手段とを含み、実行中のスレッドは、実行性能を改善する更に別のレジスタ手段を使用し、プロセッサは、内部レジスタ手段が使用されている間は別のスレッドへの実行の切り換えを防止するための手段を更に含む。   In one embodiment, a multi-thread processor is disclosed for executing multiple threads based on the availability of resources that each thread needs to execute. The processor has a means for determining which thread to execute, and based on the determination result, each thread stores each thread's state and uses it to execute instructions on the thread. Including means for switching between executions of threads coupled to the register means and further register means shared by all threads, wherein the executing thread has further register means for improving execution performance. In use, the processor further includes means for preventing execution switching to another thread while the internal register means is in use.

本発明の好ましい実施形態は、マルチスレッドプロセッサに対する主レジスタストアとは別の小さなレジスタストアを提供する。
これは、内部レジスタストアと呼ばれる。この内部レジスタストアと主レジスタストアの違いは、内部レジスタがスレッドの数に対して複写されず、すなわち、全てのスレッドによって共有されるただ1つの内部レジスタストアが提供されることである。内部レジスタストアは、どの実行中のスレッドによっても使用することができる。
The preferred embodiment of the present invention provides a small register store separate from the main register store for multithreaded processors.
This is called an internal register store. The difference between this internal register store and the main register store is that the internal registers are not duplicated for the number of threads, that is, only one internal register store is provided that is shared by all threads. The internal register store can be used by any running thread.

内部レジスタストアにおける内部レジスタは、全てのスレッド間で共有され、プロセッサは、内部レジスタが使用されている間は別のスレッドの実行に切り換えることが防止される。内部レジスタは、命令の実行中に使用することができる追加レジスタを提供し、それによってデータへの同時アクセスが増加し、かつそれによってより機能的に豊富な命令の実行を可能にする。仮にこの数の余分なレジスタ及び読取/書込ポートが主レジスタストアに追加される場合、それらは、各スレッドに対して複写されるべきであり、それによってシリコンコストに相当に上乗せされるであろう。   Internal registers in the internal register store are shared among all threads, preventing the processor from switching to the execution of another thread while the internal registers are used. Internal registers provide additional registers that can be used during instruction execution, thereby increasing concurrent access to data and thereby allowing execution of more functionally rich instructions. If this number of extra registers and read / write ports are added to the main register store, they should be duplicated for each thread, thereby adding significantly to the silicon cost. Let's go.

好ましくは、実行中のスレッドは、少数の命令を複合命令にグループ分けすることになる。この複合命令が、そのスレッドの実行を停止させると考えられるいずれの命令も含まない場合、実行中のスレッドにおける切り換えを防止することによってCPU効率に損失はない。
したがって、好ましい実施形態は、より多くのポートを主レジスタストアに追加するコストなしに、より多くの読取/書込アクセスを有するプロセッサを提供する。複合命令を使用は、プロセッサ利用度の最適化を保証することに役立つものである。
Preferably, the executing thread will group a small number of instructions into compound instructions. If this compound instruction does not include any instruction that would stop execution of that thread, there is no loss in CPU efficiency by preventing switching in the executing thread.
Thus, the preferred embodiment provides a processor with more read / write access without the cost of adding more ports to the main register store. The use of compound instructions helps to ensure optimization of processor utilization.

従来技術の中央演算処理装置の簡略化したブロック図である。It is the simplified block diagram of the central processing unit of a prior art. 本発明を具現化するプロセッサのブロック図である。FIG. 3 is a block diagram of a processor embodying the present invention. 本発明の実施形態における命令のコンパイルの例を示す図である。It is a figure which shows the example of the compilation of the instruction | indication in embodiment of this invention. 本発明の実施形態に使用するための命令フォーマットのレイアウトを示す図である。It is a figure which shows the layout of the instruction format for using for embodiment of this invention. 図4のフォーマットに対する更なる詳細を与える図である。FIG. 5 provides further details for the format of FIG.

図1には、中央演算処理装置(CPU)2が示されている。これは、メモリバス6によって外部メモリ4に結合される。このバス6は、外部メモリとの間でデータ及び命令を転送するのに使用される。
CPU2によって実施される処理は、算術論理演算ユニット(ALU)8内で行われる。Rは、外部メモリバス6を通じて外部メモリ4にメモリ及び命令要求を送り、かつ外部メモリバス6を通じて応答を受け取る。
ALUは、レジスタストア12に結合された1組の読取/書込ポート10を有する。この例では、4つのレジスタストア12がある。これは、CPU2が命令の4つのスレッドを処理するように使用され、それらの間を必要に応じて適切に切り換え、適切なレジスタストア12から各スレッドのステータスを取り出すのを可能にする。
FIG. 1 shows a central processing unit (CPU) 2. This is coupled to the external memory 4 by a memory bus 6. This bus 6 is used to transfer data and instructions to and from an external memory.
Processing performed by the CPU 2 is performed in an arithmetic logic unit (ALU) 8. R sends memory and command requests to the external memory 4 through the external memory bus 6 and receives responses through the external memory bus 6.
The ALU has a set of read / write ports 10 coupled to a register store 12. In this example, there are four register stores 12. This is used by CPU 2 to process four threads of instructions, allowing them to switch appropriately between them as needed and retrieve the status of each thread from the appropriate register store 12.

図2は、更に別の組の読取/書込ポート16によってALU8に結合された内部レジスタストア14の追加によって修正された図1の構成を示している。この読取/書込ポートの組は、ALU8をレジスタストア12に結合する読取/書込ポートとは別である。しかし、ALU8上で実行しているいずれのスレッドも使用することができる内部レジスタストア14の1つのコピーが存在する。この例の目的に対して、レジスタストア12のために2つの読取ポートと1つの書込ポートがあるものと仮定する。レジスタストア12には、他の数の読取ポート及び書込ポートを提供することができる。更に、内部レジスタストア14内への2つの読取ポートと1つの書込ポートが存在する。CPUの異なる演算性能を必要とする場合、異なる数の読取ポート及び書込ポートを提供することができる。   FIG. 2 shows the configuration of FIG. 1 modified by the addition of an internal register store 14 coupled to the ALU 8 by yet another set of read / write ports 16. This set of read / write ports is separate from the read / write ports that couple the ALU 8 to the register store 12. However, there is one copy of the internal register store 14 that can be used by any thread running on the ALU 8. For the purposes of this example, assume that there are two read ports and one write port for register store 12. The register store 12 may be provided with other numbers of read and write ports. In addition, there are two read ports and one write port into the internal register store 14. Different numbers of read ports and write ports can be provided if different computational performance of the CPU is required.

ここで、内部レジスタストア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
Here, the operation of the CPU having the internal register store 14 will be described in relation to a general mathematical operation that the CPU should perform, that is, a vector dot product. A three-dimensional version of this operation is shown in the equation below.
Dot product = Ax * Bx + Ay * By + Az * Bz
To implement this equation, three multiplications and two additions are required. ALU 8 is provided with single cycle multiplication and addition logic. Therefore, it should be possible to execute the dot product shown in the above equation in three cycles. This is shown in connection with the following theoretical machine language instruction.
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」を収容するであろう。
“MUL R6, R0, R1” means that the content of the register R0 is multiplied by the content of the register R1, and the result is stored in the register R6. Register R0 will contain “Ax” and register R1 will contain “Bx”.
“MUL R6, R2, R3, R6” means multiplication of the contents of the register R2 with the contents of the register R3 and adding the result to the register R6. The result of the addition is stored again in the register R6. Register R2 will contain “Ay” and register R3 will contain “By”.
“MLA R6, R4, R5, R6” means multiplication of the content of the register R4 with the content of the register R5 and adding the result to the register R6. The result of the addition is stored again in the register R6. Register R4 will contain “Az” and register R5 will contain “Bz”.

これから、「MLA」命令に対して、3つのレジスタから読み取り、1つのレジスタに書き込む必要があることが分る。したがって、これは、レジスタ12に関して先に指摘したよりも1つ多い読取ポートを必要とする。したがって、仮にレジスタストア12だけが利用可能だとすれば、演算を3サイクル以内で実施することを可能にするには、読取ポイントポートが不十分であろう。この問題は、そのために使用することができる余分な読取/書込ポートを有する内部レジスタストア14を使用することによって克服することができる。したがって、内部レジスタストアを使用してこれを実行するための機械語命令は、以下の通りである。
MUL I0、R0、R1
MLA I0、R2、R3、I0
MLA R6、R4、R5、I0
From this it can be seen that for the “MLA” instruction, it is necessary to read from three registers and write to one register. This therefore requires one more read port than previously pointed out for register 12. Thus, if only register store 12 is available, there will be insufficient read point ports to allow operations to be performed within 3 cycles. This problem can be overcome by using an internal register store 14 with an extra read / write port that can be used for it. Thus, the machine language instruction to do this using the internal register store is as follows:
MUL I0, R0, R1
MLA I0, R2, R3, I0
MLA R6, R4, R5, I0

これは、ドット積の中間結果がレジスタストアR6に格納されず、代わりに内部レジスタストア10に格納されるという点で最初の例と異なる。最終合計後の結果だけがR6に再度格納される。この構成を使用すると、2つの読取ポートと1つの書込ポートだけがレジスタストア12に必要とされることが保証され、これは、CPU2のこの特定の例に対する限界である。
図に示すように、外部レジスタの代わりに内部レジスタI0が使用され、それによってメモリアクセスの数が減少し、CPUによって実行すべきであるコード行の全数が生成される。
This is different from the first example in that the intermediate result of the dot product is not stored in the register store R6 but is instead stored in the internal register store 10. Only the result after the final sum is stored again in R6. Using this configuration ensures that only two read ports and one write port are required for the register store 12, which is a limitation for this particular example of CPU2.
As shown, the internal register I0 is used instead of the external register, thereby reducing the number of memory accesses and generating the total number of code lines that should be executed by the CPU.

内部レジスタストア14が上述の機械語命令の実行に使用されている間、CPUは、異なるスレッドを実行するような交換が防止されることが必須である。これは、別のスレッドが内部レジスタストアを必要とする可能性があり、既に書き込まれた結果に上書きしてそれを破損させると考えられるためである。したがって、本発明の好ましい実施形態は、スケジュール変更不可ビットと呼ばれる単一ビットの命令を使用して交換を防止するように構成される。このビットが命令に対して設定されるときに、CPUは、その命令の終わりと次の命令との間でスレッドの交換が防止される。したがって、この例では、スケジュール変更不可ビットは、ドット積MULの第1の2つの命令、及びMLAの第1の発生に対して設定される。それは、MLAの第2の発生に対して設定されないが、CPUは、MLAの第2の発生の実行後まで、異なるスレッドへの交換が防止される。   While the internal register store 14 is used to execute the machine language instructions described above, it is essential that the CPU be prevented from being exchanged to execute different threads. This is because another thread may need an internal register store, which will overwrite the already written result and corrupt it. Accordingly, the preferred embodiment of the present invention is configured to prevent exchange using a single bit instruction called the non-schedulable bit. When this bit is set for an instruction, the CPU is prevented from exchanging threads between the end of that instruction and the next instruction. Thus, in this example, the non-schedulable bit is set for the first two instructions of dot product MUL and the first occurrence of MLA. It is not set for the second occurrence of MLA, but the CPU is prevented from switching to a different thread until after the execution of the second occurrence of MLA.

複合命令は、いくつかの連続した命令に対してスケジュール変更不可ビットを設定することによって作成される。この組の連続命令又は複合命令がサイクルごとのベースで実行されると、レジスタストア12だけがアクセスされた場合にその他の方法で使用できたであろうよりも内部レジスタストアの書込/読取ポートを通じてより多くのデータ経路へのアクセスが可能である。これは、標準のプロセッサアーキテクチャと比べて有意な利点を提供する。標準のアーキテクチャを使用して同じ性能を達成するためには、レジスタストア12の4つのコピー各々に対して第3の読取ポイントの追加を必要とするであろう。これは、内部レジスタストアに必要とされるシリコン面積よりも相当に高価になると考えられる。   Compound instructions are created by setting the non-schedulable bit for several consecutive instructions. When this set of sequential or compound instructions are executed on a cycle-by-cycle basis, the internal register store write / read port rather than would otherwise be available if only the register store 12 was accessed. Access to more data paths is possible. This provides significant advantages over standard processor architectures. To achieve the same performance using a standard architecture would require the addition of a third read point for each of the four copies of register store 12. This is believed to be considerably more expensive than the silicon area required for the internal register store.

複合命令は、メモリから読み込まれてCPUによって実行される命令を供給するのに使用されるコンパイラ/アセンブラの関連において存在する1つの概念である。CPUは、通常命令と複合命令を区別しない。同様に、コンパイラ/アセンブラは、複合命令を収容するどの入力プログラムも受け取らないことになる。
コンパイラ/アセンブラによって実施される付加的な機能性は、入力プログラムの解析と、複合命令が使用されてCPU上で実行されるときにプログラムの性能を改善することができる位置の検索とである。そのような位置が見つかった状態で、コンパイラ/アセンブラは、内部レジスタストアを利用する一連のCPU命令を作成し、内部レジスタストアがそれ以上使用されなくなるまで停止中のそのスレッドの実行を防止するスケジュール変更不可フラグを設定することができる。
複合命令は、2つの連続CPU命令と同程度に簡単になるか、又は数十のCPU命令と同じくらい複雑になる可能性がある。複合命令がCPUに遭遇すると、スケジュール変更不可フラグが設定されている限り、複合命令の実行が持続する。
Compound instructions are one concept that exists in the context of a compiler / assembler used to provide instructions that are read from memory and executed by the CPU. The CPU does not distinguish between normal instructions and compound instructions. Similarly, the compiler / assembler will not accept any input program containing compound instructions.
Additional functionality implemented by the compiler / assembler is the analysis of the input program and the search for locations that can improve the performance of the program when compound instructions are used and executed on the CPU. With such a location found, the compiler / assembler creates a series of CPU instructions that make use of the internal register store and prevents execution of that thread that is suspended until the internal register store is no longer used. An unchangeable flag can be set.
Compound instructions can be as simple as two consecutive CPU instructions or as complex as dozens of CPU instructions. When a compound instruction encounters the CPU, execution of the compound instruction continues as long as the schedule change impossibility flag is set.

コンパイラ/アセンブラは、使用することができる複合命令の有無を判断するために2つの主要な方法で作動することができる。これらの第1のものは、入力プログラムのコンパイル、次に、実行する命令の数を低減するために内部レジスタストアを使用することができる状況の検索、及び続いて内部レジスタを使用するためにコンパイルした命令の変更を伴う。これらの第2のものは、内部レジスタシステムを使用するのに適する構成を識別するためにコンパイラ/アセンブラが入力プログラムを解析することを伴う。第1のものの例は、図3に示している。ここでは、入力プログラムが30で受け取られ、第1の通過の後は、32でコンパイル/アセンブルされる。33において、コンパイラ/アセンブラは、コンパイル/アセンブルプログラム内で最適化を検索する。ここでは、それは、2つの乗算及び加算と更に別の乗算及び加算を検出し、結果がレジスタR6に格納される。36において、コンパイル/アセンブルのCPUに対する出力は、スケジュール変更不可ビット設定を含む命令を含んでいる。図に見られるように、最初の2つの乗算及び加算は、図3では34であり、36の複合命令の最初の2行で実施される。34のその後の乗算及び加算は、次に、複合命令の3行目で実施される。   The compiler / assembler can operate in two main ways to determine the presence or absence of compound instructions that can be used. These first ones compile the input program, then search for situations where the internal register store can be used to reduce the number of instructions to execute, and then compile to use the internal registers With a change in the order. These second ones involve the compiler / assembler analyzing the input program to identify suitable configurations for using the internal register system. An example of the first is shown in FIG. Here, the input program is received at 30 and compiled / assembled at 32 after the first pass. At 33, the compiler / assembler searches for optimization within the compile / assemble program. Here it detects two multiplications and additions and yet another multiplication and addition and the result is stored in register R6. At 36, the output to the compiling / assembling CPU includes an instruction that includes a non-schedulable bit setting. As can be seen, the first two multiplications and additions are 34 in FIG. 3 and are performed in the first two rows of 36 compound instructions. Subsequent multiplication and addition of 34 is then performed on the third line of the compound instruction.

CPUそれ自体は、内部レジスタを使用するか又はスレッドスケジューリングを無効にするかを判断しない。代わりに、コンパイラ/アセンブラプログラムは、それがCPUによって提供された内部レジスタリソースを使用することができる状況を検出する。CPUの命令の組は、アセンブラが、内部レジスタを使用すること及びスレッドのスケジュール変更を無効にすることも既に選択したことを表示するための機構を提供する。   The CPU itself does not determine whether to use internal registers or disable thread scheduling. Instead, the compiler / assembler program detects situations where it can use internal register resources provided by the CPU. The CPU instruction set provides a mechanism for the assembler to indicate that it has already chosen to use internal registers and disable thread rescheduling.

図4には、内部レジスタの使用をサポートするために、同じくスケジュール変更不可フラグを提供するために、適切なコンパイラ/アセンブラによってコンパイルすることができる命令設定フォーマットが示されている。命令フォーマットの各部分に提供されたデータが図5に示されている。図に見られるように、スケジュール変更不可ビットがビット20にある。
複合命令を設定するために、コンパイラ/アセンブラは、いつこれらの命令を使用することができるかを識別するように設計される。これは、コンパイラ/アセンブラを生成するときに実施することができる。例えば、典型的な命令の組をサポートするプロセッサを考えると、提供されるデータ経路命令は、加算、乗算、及び乗算−合計のような関数を含むことになる。その組から提供することができる命令は、プロセッサのハードウエア実施がサポートすることができるソース及び宛先引数の数によって完全に制限される。プロセッサが単に2つのソース引数をサポートする場合、プロセッサは、実施されるこれらのソース引数を必要とすることになるので、乗算−合計命令を持たないことになる。これらの制限は、これが命令の組を判断するものなので、プロセッサのハードウエアを設計するときに行われる決定によって実施される。例えば、レジスタへの2つの読取ポートだけを含むプロセッサを設計する者は、算術論理演算ユニットに乗算−合計サポートを入れないと考えられる。
FIG. 4 shows an instruction setting format that can be compiled by a suitable compiler / assembler to provide the use of internal registers and also to provide a non-schedulable flag. The data provided for each part of the instruction format is shown in FIG. As can be seen in the figure, there is a non-schedulable bit in bit 20.
In order to set compound instructions, the compiler / assembler is designed to identify when these instructions can be used. This can be done when generating the compiler / assembler. For example, given a processor that supports a typical instruction set, the provided data path instructions will include functions such as add, multiply, and multiply-sum. The instructions that can be provided from the set are completely limited by the number of source and destination arguments that the hardware implementation of the processor can support. If the processor only supports two source arguments, it will have no multiply-sum instructions because it will need those source arguments to be implemented. These restrictions are enforced by decisions made when designing the processor hardware, since this determines the instruction set. For example, a person designing a processor that includes only two read ports to a register would not include multiply-sum support in the arithmetic logic unit.

本発明の実施形態は、典型的なプロセッサのソース及び宛先引数の数を増すものである(通常短い持続時間にわたって一部の制限付きで)。それは、改善した入力/出力データ境界の利点を利用する付加的な命令/演算の実施を可能にする。プロセッサ自体は、付加的な引数を使用する一部の命令をサポートするように設計されるが、それらを使用することができると考えられるあらゆる可能な命令を予期することができないのは明らかである。   Embodiments of the present invention increase the number of typical processor source and destination arguments (usually with some limitations over short durations). It allows additional instruction / operation implementations that take advantage of improved input / output data boundaries. The processor itself is designed to support some instructions that use additional arguments, but it is clear that it cannot anticipate every possible instruction that could use them .

1組内のある一定の命令は、暗黙にその命令の組に含められた余分な引数を使用するハードウエアプロセッササポート命令とすることができ、これらは、プロセッサ上に実施されるプログラムを設計する者に既知であることになる。コンパイラ/アセンブラは、ユーザの入力を取得してそれを命令の組にマップする。したがって、コンパイラ/アセンブラは、全ての命令の背景にある演算を理解するように設計される。このマッピングは、例えば、この命令が使用されるようにユーザがコンパイラ/アセンブラに入力することによって直接形成することができる。別の例のコンパイラ/アセンブラは、命令を検査し、適切な場合には、ユーザによって提供された命令を複合命令上にマップする。   Certain instructions within a set can be hardware processor support instructions that use extra arguments implicitly included in the set of instructions, which design a program to be implemented on the processor. Will be known to the person. The compiler / assembler takes user input and maps it to a set of instructions. Thus, the compiler / assembler is designed to understand the operations behind all instructions. This mapping can be formed directly, for example, by the user entering the compiler / assembler so that this instruction is used. Another example compiler / assembler examines instructions and, where appropriate, maps instructions provided by the user onto compound instructions.

以上の第1の例を考えると、これは、フィルタ命令をサポートするハードウエア実施とすることができる。フィルタ命令は、並行して5つのソース引数からフィルタデータと係数を読み取り、データを1つのスカラー出力までフィルタリングすることができる。これは、次に、映像復号アルゴリズムに使用することができる。映像復号器は、アセンブリ言語で書かれ、直接フィルタ命令を使用することになる。アセンブリは、これをハードウエアによって理解される機械語コードに変換することになる。すなわち、内部レジスタが存在すると、これの利点が利用され、複合命令が使用されることになる。   Considering the first example above, this can be a hardware implementation that supports filter instructions. The filter instruction can read the filter data and coefficients from five source arguments in parallel and filter the data to one scalar output. This can then be used for video decoding algorithms. The video decoder will be written in assembly language and will use filter instructions directly. The assembly will translate this into machine language code understood by the hardware. That is, the presence of internal registers takes advantage of this and uses compound instructions.

以上の第2の例では、コンパイラに伝えられるユーザの意図が、最初に2つの値を乗算して結果を第3の位置に格納する場合、2つの異なる値の乗算と別の新しい位置への格納がそれに続く。コンパイラは、これらの連続演算を識別してそれらを単一の二重乗算演算に変換するように構成され、この二重乗算演算は、ここでもまた、性能を改善するために付加的な内部レジスタストアを使用して、4つの値を並行して読み取り、乗算を実施し、結果を戻す。   In the second example above, if the user's intention communicated to the compiler is to first multiply two values and store the result in a third location, it will multiply the two different values and go to another new location. Storage follows. The compiler is configured to identify these consecutive operations and convert them to a single double multiplication operation, which again is an additional internal register to improve performance. Using the store, read the four values in parallel, perform the multiplication, and return the result.

したがって、内部レジスタストアの使用は、マルチスレッドプロセッサの性能を有意に改善し、実行中にスレッド交換が起こる可能性がない複合命令を作り出すことからより良い性能を得ることを可能にすることが認められるであろう。それによって性能が更に改善され、スレッド交換の結果としてデータの破損がないことが保証される。   Thus, it is recognized that the use of an internal register store can significantly improve the performance of multi-threaded processors and allow better performance from creating compound instructions that are unlikely to undergo thread exchange during execution. Will be done. This further improves performance and ensures no data corruption as a result of thread exchange.

Claims (7)

各スレッドによる実行に必要とされるリソースの利用可能性に基づいて複数のスレッドを実行するためのマルチスレッドプロセッサであって、
どのスレッドが実行すべきかを判断する手段と、
前記判断の結果に基づいて複数のスレッドの実行を切り換える手段と、
を具備し、
各スレッドが、該スレッドの状態を記憶しかつ該スレッドにおける命令の実行に用いられる対応するレジスタ手段に結合されており、
さらに、
前記複数のスレッドのすべてにより共有され、実行性能を向上させるために実行中の複数のスレッドにより利用される、別のレジスタ手段と、
内部レジスタ手段が使用されている間、別のスレッドへの実行の切り換えを防止する手段と、
命令内のスケジュール変更不可ビットを検出する手段と、
を具備し、
別のスレッドへの実行の切り換えを防止する前記手段が、スケジュール変更不可ビットの検出に応答して動作する、ことを特徴とするマルチスレッドプロセッサ。
A multi-thread processor for executing multiple threads based on the availability of resources required for execution by each thread,
A means of determining which thread should execute;
Means for switching execution of a plurality of threads based on the result of the determination;
Comprising
Each thread is coupled to a corresponding register means that stores the state of the thread and is used to execute instructions in the thread;
further,
Another register means shared by all of the plurality of threads and utilized by a plurality of executing threads to improve execution performance;
Means for preventing execution switching to another thread while the internal register means is in use;
Means for detecting a non-schedulable bit in the instruction;
Comprising
A multi-thread processor, wherein said means for preventing switching of execution to another thread operates in response to detection of a non-schedulable bit.
複数の命令のシーケンスを含む複合命令が、その実行において前記別のレジスタ手段を利用し、
別のスレッドへの実行の切り換えを防止する前記手段が、そのような命令のシーケンスに応答して該シーケンスが実行を完了するまで動作する、請求項1に記載のマルチスレッドプロセッサ。
A compound instruction comprising a sequence of instructions utilizes the additional register means in its execution;
The multithreaded processor of claim 1, wherein the means for preventing execution switching to another thread operates in response to a sequence of such instructions until the sequence completes execution.
前記別のレジスタ手段の使用は、前記複数の命令のシーケンスが実行を完了する前に終わる、請求項2に記載のマルチスレッドプロセッサ。   The multi-thread processor of claim 2, wherein the use of the another register means ends before the sequence of instructions completes execution. スケジュール変更不可ビットが、前記シーケンスにおける各命令に対して設定され、別のスレッドへの実行の切り換えを防止する前記手段が、命令内のスケジュール変更不可ビットの検出に応答して動作する、請求項2又は請求項3に記載のマルチスレッドプロセッサ。   A non-schedulable bit is set for each instruction in the sequence, and the means for preventing switching execution to another thread operates in response to detecting the non-schedulable bit in the instruction. The multi-thread processor according to claim 2 or claim 3. 各スレッドの状態を記憶するレジスタ手段とすべてのスレッドによって使用される別のレジスタ手段とを有するマルチスレッドプロセッサ上で実行するための命令のスレッドをコンパイル/アセンブルする方法であって、
スレッド内のどの命令が実行性能を向上させるために前記別のレジスタ手段を利用することができるかを判断する段階と、
内部レジスタ手段を利用する命令が実行されるときに、実行中のスレッドにスケジュール変更不可ビットを設定する段階と、
を含むことを特徴とする方法。
A method for compiling / assembling a thread of instructions for execution on a multi-thread processor having register means for storing the state of each thread and another register means used by all threads,
Determining which instructions in the thread can utilize the separate register means to improve execution performance;
Setting an unschedulable bit on a running thread when an instruction that uses internal register means is executed;
A method comprising the steps of:
スレッド内のどの命令が前記別のレジスタ手段を利用することができるかを判断する前記段階は、入力プログラムをコンパイルする段階と、必要とされる命令の数を低減するために該別のレジスタ手段を使用することができる状況を検索する段階と、該別のレジスタが使用されるときにスケジュール変更不可ビットを含む命令を含める段階と、を含む、請求項5に記載の方法。   The step of determining which instructions in a thread can utilize the separate register means comprises compiling an input program and the separate register means to reduce the number of instructions required 6. The method of claim 5, comprising: searching for a situation that can be used; and including an instruction that includes a non-schedulable bit when the another register is used. スレッド内のどの命令が前記別のレジスタ手段を利用することができるかを判断する前記段階は、該別のレジスタ手段を使用した実行に適した命令のための入力プログラムを解析する段階と、そのような構成が見つかったときに、該別のレジスタ手段を利用しかつスケジュール変更不可ビットを含む命令をコンパイルする段階と、を含む、請求項5に記載の方法。   Determining which instruction in the thread can utilize the other register means comprises analyzing an input program for instructions suitable for execution using the other register means; 6. A method as claimed in claim 5, including the step of compiling an instruction utilizing said another register means and including a non-schedulable bit when such a configuration is found.
JP2010520626A 2007-08-14 2008-08-14 Compound instructions in multithreaded processors Active JP5425074B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0715824A GB2451845B (en) 2007-08-14 2007-08-14 Compound instructions in a multi-threaded processor
GB0715824.9 2007-08-14
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 (en) 2011-01-27
JP5425074B2 JP5425074B2 (en) 2014-02-26

Family

ID=38566352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010520626A Active JP5425074B2 (en) 2007-08-14 2008-08-14 Compound instructions in multithreaded processors

Country Status (5)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020109605A (en) * 2018-12-31 2020-07-16 グラフコアー リミテッドGraphcore Limited Register files in multi-threaded processor

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
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
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US8930714B2 (en) 2011-07-19 2015-01-06 Elwha Llc Encrypted memory
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
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
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
US9710054B2 (en) * 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
US12020064B2 (en) * 2020-10-20 2024-06-25 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 (en) * 1996-01-17 1997-07-31 Yamaha Corp Processor and method for controlling interruption of the processor
JP2000509528A (en) * 1996-04-04 2000-07-25 イマジネイション テクノロジーズ リミテッド Data processing management system
JP2005018224A (en) * 2003-06-24 2005-01-20 Matsushita Electric Ind Co Ltd Conflict controller
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
DE69106384T2 (en) * 1990-10-19 1995-08-10 Cray Research Inc SCALABLE PARALLEL VECTOR CALCULATOR SYSTEM.
JPH096633A (en) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> Method and system for operation of high-performance multiplelogical route in data-processing system
JP2970553B2 (en) * 1996-08-30 1999-11-02 日本電気株式会社 Multi-thread execution method
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
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities 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 (en) * 1998-04-28 2001-09-17 日本電気株式会社 Inherit device of register contents in processor
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 (en) * 1996-01-17 1997-07-31 Yamaha Corp Processor and method for controlling interruption of the processor
JP2000509528A (en) * 1996-04-04 2000-07-25 イマジネイション テクノロジーズ リミテッド Data processing management system
JP2005018224A (en) * 2003-06-24 2005-01-20 Matsushita Electric Ind Co Ltd Conflict controller
WO2006033078A2 (en) * 2004-09-22 2006-03-30 Koninklijke Philips Electronics N.V. Data processing circuit wherein functional units share read ports
JP2008513878A (en) * 2004-09-22 2008-05-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Data processing circuit in which functional units share a read port

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020109605A (en) * 2018-12-31 2020-07-16 グラフコアー リミテッドGraphcore Limited Register files in multi-threaded processor

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5425074B2 (en) Compound instructions in multithreaded processors
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 (en) Solutions for branch branches in the SIMD core using hardware pointers
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
WO2000033185A2 (en) A multiple-thread processor for threaded software applications
JPH03129433A (en) Device and method for parallel processing
JP2003502728A (en) Computer system including processor and coprocessor
JP2004171573A (en) Coprocessor extension architecture built by using novel splint-instruction transaction model
JP2016504699A (en) Hardware and software solutions for branching in parallel pipelines
JP4589305B2 (en) Reconfigurable processor array utilizing ILP and 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
Kawano et al. Fine-grain multi-thread processor architecture for massively parallel processing
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
JP3520372B2 (en) Elimination of critical path in operation of memory control unit and input / output control unit
JP5967646B2 (en) Cashless multiprocessor with registerless architecture
JP2636821B2 (en) Parallel processing unit
McMahon et al. Advanced Microprocessor Architectures
Gibbons Towards better shared memory programming models
Ostheimer Parallel Functional Computation on STAR: DUST—
JP3102399B2 (en) Data processing apparatus and method

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