JP2001236221A - Pipe line parallel processor using multi-thread - Google Patents

Pipe line parallel processor using multi-thread

Info

Publication number
JP2001236221A
JP2001236221A JP2000042696A JP2000042696A JP2001236221A JP 2001236221 A JP2001236221 A JP 2001236221A JP 2000042696 A JP2000042696 A JP 2000042696A JP 2000042696 A JP2000042696 A JP 2000042696A JP 2001236221 A JP2001236221 A JP 2001236221A
Authority
JP
Japan
Prior art keywords
thread
processor
data
cache
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000042696A
Other languages
Japanese (ja)
Inventor
Keisuke Shindo
啓介 進藤
Original Assignee
Keisuke Shindo
啓介 進藤
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 Keisuke Shindo, 啓介 進藤 filed Critical Keisuke Shindo
Priority to JP2000042696A priority Critical patent/JP2001236221A/en
Publication of JP2001236221A publication Critical patent/JP2001236221A/en
Application status is Pending legal-status Critical

Links

Abstract

PROBLEM TO BE SOLVED: To establish both frequency performance and parallel performance by shortening memory wiring in a system for successively operating plural threads by arithmetic units arranged in a row in a processor using a multi- thread program, and to prevent inter-node data transfer interrupting the parallel processing performance and waiting through synchronization. SOLUTION: Plural caches for storing data are loaded on a processor carried by patent gazette 1999-287662, and each cache is connected to several arithmetic executing units. The contents of the cache are transferred and duplicated according to the progress of threads. When the contents of the cache can not completely transferred, one thread is executed by a single arithmetic executing unit. Moreover, access to the designated address is detected by using a virtual storage mechanism and the shared mechanism of the caches, and the threads are resumed.

Description

【発明の詳細な説明】 DETAILED DESCRIPTION OF THE INVENTION

【0001】 [0001]

【発明の属する技術分野】本発明は、ソフトウェアによって動的に機能を変更できるプロセッサに属し、特にスレッドと呼ばれる単位で分割されたソフトウェアを利用するプロセッサに属する。 The present invention relates belongs to a processor that can dynamically change the functions by software belonging to a processor that utilizes a software which is divided in units especially called threads.

【従来例】(半導体技術の進化とマイクロプロセッサの性能向上) [Conventional] (improving the performance of evolution and the microprocessor of semiconductor technology)

【0002】半導体技術の進化により、ここ20年はトランジスタ、配線の微細化が常に同じペースで進んできた。 [0002] The evolution of semiconductor technology, the past 20 years transistor, miniaturization of wiring have always progressed at the same pace. DRAMのようにトランジスタ数がそのまま容量につながる素子では、単に微細化によって素子数が増えるだけで、微細化と同じペースで性能を向上できた。 In element number of transistors is connected directly to capacity as DRAM, simply the number of elements is increased by miniaturization, could improve performance at the same pace as the miniaturization.

【0003】ところが、マイクロプロセッサに代表される論理LSIに関しては、性能向上には2つの方法がある。 [0003] However, with respect to the logic LSI typified by the microprocessor, there are two ways to improve the performance. 1つは動作周波数の向上。 One improvement of the operating frequency. そしてもう1つは動作周波数あたりの仕事量である。 And the other one is the amount of work per operating frequency.

【0004】まず、微細化によってトランジスタのスイッチング速度の向上し、前者の動作周波数の向上が可能になった。 [0004] First, improving the switching speed of the transistor miniaturization has become possible to improve the former operating frequency. さらに、後者の動作周波数あたりの仕事量の増加は、利用できるトランジスタの増加により、規模の大きい高速レイテンシ回路、およびスーパースカラなどの並列方式の採用が可能になったことで実現できた。 Furthermore, an increase in the workload per latter operating frequency, an increase in available transistors, can be realized by enabled to employ a parallel system, such as scale of large fast latency circuit, and super scalar.

【0005】これまでは、マイクロプロセッサはこの2 [0005] In the past, the microprocessor this 2
つの要素によって飛躍的な性能向上を可能にした。 It allowed the dramatic performance improvement by One element. しかし、この2つの要素が、特に後者が限界を迎えつつある。 However, the two elements, in particular the latter is being reached the limit. この限界を打破しなければ、今後のマイクロプロセッサの性能向上は見込めない。 Unless overcome this limitation, it not expected performance improvement of future microprocessors.

【0006】(配線のリスクの相対的増加) [0006] (a relative increase in the risk of wiring)

【0007】近年の半導体の微細化技術、プロセスの進歩により、トランジスタの動作速度は飛躍的に増大し、 [0007] Recent semiconductor miniaturization technology, advances in process, the operation speed of the transistor is greatly increased,
その大きさ、消費電力も飛躍的に減少した。 Its size, power consumption was greatly reduced. これによって、少なくともトランジスタ単位では、従来では考えられない周波数の動作が可能になった。 Thus, at least in the transistor unit has enabled the operation of the frequency which is not considered in the prior art.

【0008】しかし、配線の遅延時間はそれほど改善されてはいない。 [0008] However, the delay time of the wiring has not been much improvement. 配線長は、トランジスタのサイズに比例して高速化するわけではない。 Wiring length, not to speed in proportion to the size of the transistor. さらに、微細化された分だけトランジスタの数を増やす場合は配線遅延はかえって増大する。 Further, the wiring delay is increased rather if increasing the number of only the transistor amount which is reduced. この傾向は深刻に受け止められてきており、配線が最小となるユニット配置を行うことは常識となっている。 This trend has been taken very seriously, the wiring is carried out a unit arrangement which minimizes has become the norm. 配線自体のプロセスによる改善も行われている。 Improvement due to wiring itself processes are also performed. 多層配線やCu配線などがそれである。 Such as multi-layer wiring and the Cu wiring is it. しかし、 But,
それだけでは拡大を続けるトランジスタと配線の速度差を埋めることはできない。 It just can not fill the speed difference between the transistors the growing wire.

【0009】今後は、配線遅延の増加を押さえて動作周波数の向上比率を維持するためには、常に回路全体に最短配線するという考え方を改め、レイテンシ性能を低下させてでも最短距離の配線で伝送することが必要となる。 [0009] In the future, in order to maintain the improved ratio of the operating frequency while holding the increase in wiring delay is always changed the concept of the shortest line across the circuit, transmitted in the shortest distance of the wiring even reduce the latency performance it is necessary to.

【0010】(データ転送スループットとデータ転送レイテンシ) [0010] (data transfer throughput and data transfer latency)

【0011】データ転送性能の向上には、データ転送スループットの向上とデータ転送レイテンシの短縮の双方が必要になる。 [0011] In order to improve data transfer performance, both shortening of improving the data transfer latency of the data transfer throughput is required. 前者のデータの転送スループットの増加は比較的たやすい。 Increase in transfer throughput of the former data is relatively easy. それに対して、転送レイテンシは性能低下を押さえるのが精一杯で、数倍以上の改善は見込めない。 In contrast, the transfer latency is utmost that suppress performance degradation, not expected improvement of more than several times.

【0012】レイテンシ向上の方法としては、キャッシュ、プリフェッチなどによる確率的な方法があるが、それは回路規模を必要とする割にたいした性能向上を果たせない。 [0012] As a method of the latency improvement, cache, but there is a stochastic method such as by prefetching, it does not fulfill the much improved performance in spite of requiring a circuit scale. 演算能力と低速なメモリとのレイテンシの開きは拡大の一途をたどり、キャッシュミスにおけるペナルティーを相対的に増大させ、最終的には処理時間のほとんどすべてを占めることになる。 Open latency of computing power and the slow memory follows the steadily enlarged, by relatively increasing the penalty in the cache miss, and ultimately will account for almost all of the processing time. ということは、なんらかの形でレイテンシを隠蔽することが必須になる。 It is possible to hide the latency in some form is mandatory that.

【0013】そのために現在はアウトオブオーダースーパースカラ、VLIWという方式が存在する。 [0013] For this reason the current is out-of-order superscalar, is a system that VLIW exist. データのロードが終わっていなくても、データの必要のない命令を先に動作させるプロセッサである。 Even if not finished loading the data, is a processor to operate the instruction without the need for data first. だが、この方式は先に実行させることができる命令を発見する回路が巨大になりすぎ、周波数性能向上に限界がある。 However, this method too huge circuit to discover instructions that can be executed first, there is a limit to the frequency performance improvement.

【0014】よって、レイテンシの隠蔽は今後さらに重要になる。 [0014] Thus, the concealment of the latency becomes more important in the future. だが、アウトオブオーダースーパースカラやVLIWなどの命令レベル並列では、現在以上のレイテンシ隠蔽は不可能である。 But, at the instruction level parallelism, such as out-of-order superscalar and VLIW, it is impossible latency hiding of current or more.

【0015】(演算ユニットの使用頻度のばらつきと共有) [0015] (shared with variations in the frequency of use of arithmetic units)

【0016】マイクロプロセッサには、加算、論理演算、シフト、分岐、ロードストア、乗算、除算、浮動小数点演算、SIMD型演算、SIMDデータの入れ替え処理など、多くの処理が必要とされる。 [0016] microprocessor, addition, logical operations, shifts, branches, the load store, multiply, divide, floating-point arithmetic, SIMD type operation, such as replacement process of SIMD data, more processing is required. これらの動作の実現には、それぞれ専用の回路を設けるのが一番効率が良い。 To realize these operations, the most efficient of providing a dedicated circuit, respectively. ところが、マイクロプロセッサはこれらの全てを同時に必要とするわけではない。 However, the microprocessor does not require all of these simultaneously. 稼動率が低いユニットも多く存在する。 Operating rate also exist many low unit.

【0017】このマイクロプロセッサを同時に複数使用する方式を、マルチプロセッサと呼ぶ。 [0017] The method using a plurality of the microprocessor at the same time, referred to as a multiprocessor. 現在のマルチプロセッサでは、これらの演算ユニットが全て複数搭載される。 In the current multi-processor, these operation units are all plural mounted. ということは、全体としてはほとんど稼動していない回路が増加することになる。 It is, so that the circuit has not been nearly operation as a whole is to increase that. 仮に、マルチプロセッサの間であまり使用されない演算ユニットを共有できれば、システム全体の回路の利用効率を高めることができ、本当に数の必要な演算ユニットを増やすことができる。 Suppose if share infrequently used operation unit between the multiple processors, it is possible to enhance the utilization efficiency of the circuit of the entire system, you can really increase the required calculation unit number.

【0018】(消費電力の増大) [0018] (increase in power consumption)

【0019】近年のマイクロプロセッサの動作周波数の向上によって、消費電力は飛躍的に増大した。 [0019] The improved operating frequency of recent microprocessors, power consumption is greatly increased. その増大を抑制するために、動作電圧を低減させ、低い電圧で性能を維持するための回路技術が開発された。 In order to suppress the increase, to reduce the operating voltage, circuit technology for maintaining the performance it has been developed at a low voltage. しかし、回路素子数、周波数性能はさらに向上を続けるものと考えられる。 However, the number of circuit elements, frequency performance is believed to continue to further improve. さらなる低消費電力の手段が必要になる。 A further low power consumption means is required.

【0020】CMOS回路は、信号のレベルが変化するときに電力を消費する。 The CMOS circuit consumes power when the signal level of the changes. ということは、信号のレベルの変化の少ない回路がもっとも消費電力の低い回路となる。 It is less circuits change in the level of the signal is the most low power consumption circuit that. 回路構成のレベルでは、演算ユニットやクロック信号制御など、信号変化を低減する手段が多く利用されている。 At the level of the circuit arrangement, such as arithmetic unit and the clock signal controlling the means for reducing the signal change are widely used. しかし今後は、さらに上位のアーキテクチャにおいても、最小の電力で演算を行うための手段が必要になると考えられる。 But in the future, even in yet higher architecture, believed to be a need for a means for performing the operation with a minimum of power.

【0021】回路的に考えると、同じ仕事を連続して行うことができれば、回路の状態の変動も最小限となり、 [0021] When the circuit to think, if it is possible to perform the same work continuously, also becomes a minimum fluctuation of the state of the circuit,
動作する回路も最小限となる。 Circuit which operates also minimized. そして、トランジスタ数あたりの性能が向上できれば、逆にいえば性能あたりの消費電力が低減できるということである。 Then, if improved performance per number of transistors, is that Conversely power consumption per performance can be reduced.

【0022】(演算内容の巨大化、分散化) [0022] (giant of the content of operation, decentralized)

【0023】前の演算の終了を待ち、その結果を利用して演算を行うことを、データ依存関係と呼ぶ。 [0023] wait for the end of the previous operation, to carry out the operation by utilizing the result is referred to as a data-dependent relationship. 互いにデータ依存関係のある演算は原理的に同時実行ができず、 Operation with a data-dependent relationship with each other can not theoretically concurrency,
並列化を阻害する最大の要因である。 The largest obstacles to parallelization. いかなる方式もこれを解消することはできない。 Any manner not even be able to solve this problem.

【0024】ソフトウェアの構造上、このデータ依存関係がもっとも大きいのは連続した命令の近傍であり、現在のスーパースカラやVLIWに代表される、命令レベル並列の対象とされる部分である。 The software structural, a vicinity of the instruction the the data dependency largest is continuous, typified by the current superscalar and VLIW, a portion that is an instruction level parallelism of the subject. すなわち、命令レベル並列はもっとも並列化しにくい部分をあえて並列化する方法であり、性能向上に限界が生じる。 That is, the instruction level parallelism is a method for dare parallelize most parallelization difficult part, limit occurs in the performance improvement.

【0025】一般的に仕事の単位をうまく分割できれば、分業が効率が良いのは言うまでもない。 [0025] If you can generally divide the unit of work successfully, division of labor that efficiency is good of course. そして、巨大なソフトウェアでは、その動作内容が全て密接に結合し、全ての命令、データが同じ確率で利用されるということはありえない。 Then, in the huge software, linked to close its operation content is all, all of the instruction, is unlikely that the data is available in the same probability. 現に、ソフトウェアは、オブジェクトと呼ばれる独立性の高い単位で分割できることは良く知られている。 In fact, the software is well known can be divided in a unit highly independent called objects.

【0026】(データスループットの爆発的な増大) [0026] (explosive increase in data throughput)

【0027】メディア処理は、巨大なデータ転送能力を要求し、キャッシュの内部で実行できない代表的な処理である。 [0027] The media processing requests a huge data transfer capability, which is a typical process that can not be performed inside the cache. この処理の多くは巨大なデータ転送スループットを要求する。 Much of this process requires a large data transfer throughput. それに対して、メディア処理は全体としてはさしてレイテンシを要求しない。 In contrast, media processing does not require much that latency as a whole. 要求されるレイテンシはどんなに小さくても1ミリ秒程度がせいぜいである。 It required latency no matter how small the order of 1 ms at most. レイテンシを犠牲にして並列処理を行うのにこれほど向いた用途はない。 Not so much toward the application to perform the parallel processing at the expense of latency.

【0028】局所的なレイテンシがそのまま総和される現在のプロセッサの方式では、プロセッサバスのレイテンシがそのまま加算され、全体の性能向上も頭うちになる。 [0028] In method of the current processor local latency is the sum as it is, the latency of the processor bus is added as it is, also while the head overall performance improvements. それに対して、レイテンシをなんらかの手段で隠蔽することができれば、メモリアクセスの並列化などの方法によってスループットを確保することができる。 In contrast, if it is possible to conceal by some means latency, it is possible to secure throughput methods such as parallelism of memory accesses. そのためにマルチスレッドと呼ばれるソフトウェアモデルを導入して、レイテンシの累積を防止する。 By introducing a software model called multithreading Therefore, to prevent the accumulation of latency. スレッド単体のレイテンシが多少大きくてもメディア処理に要求されるレイテンシよりはるかに小さいため、結果的にメディア処理に要求される性能を全て満足することができる。 Much smaller than the latency latency thread itself is required to media processing be somewhat large, it is possible to satisfy all the performance required for a result to media processing.

【0029】(演算の繰り返しの増加) [0029] (repeated increase of the operation)

【0030】長時間動作するプログラムは、その全ての時間に渡ってまったく違う命令を実行することは考えられない。 The long-term operation to the program, is not possible to run a completely different instruction across all of its time. そのため、長い時間の動作の中では、何らかの形で同じコードを再利用して同じ動作を繰り返していることになる。 Therefore, in the operation of a long time, it means that by repeating the same operation by reusing the same code in some form.

【0031】この傾向を利用することにより、同じ動作を行う部分を同時にまとめて実行することで、同じ動作で共有される命令メモリ、データメモリなどの資源を共有することができる。 [0031] By utilizing this tendency, by executing a part for performing the same operation at the same time together, instruction memory shared by the same operation, it is possible to share resources such as data memory. しかも、まったく同じ動作を時間的にわずかにずらして実行することにより、同じ資源を同時に利用することも簡単に防ぐことができる。 Moreover, quite by performing the same operation temporally slightly offset, it is possible to prevent it easy to use the same resources at the same time.

【0032】(IPユニットの内蔵と、それを結合する性能の要求) [0032] (and the built-in IP unit, performance requirements that binds it)

【0033】汎用プロセッサは、32ビットなどの桁の多い数値演算や、大容量メモリ全域を利用した処理、動的に変わる処理に関しては他の手段では実現不可能な性能を発揮できる。 The general purpose processor, often math and a digit, such as 32-bit, processing using the large-capacity memory throughout by other means can exhibit unrealizable performance with respect to process change dynamically. しかし、少数の複雑なビット処理演算に関しては依然として弱く、目的に応じて最適化された回路の方が常に性能が上である。 However, still weak with respect to a small number of complex bitwise always performance better optimized circuit is above depending on the purpose. ということは、システム全体の性能向上のためには、依然として良く利用されるビット演算を担う回路、IP回路を内蔵することが望ましい。 It is, for the entire system performance improvement, circuit responsible for bit operation is still frequently used, it is desirable that a built-in IP circuit called.

【0034】ところが、IP回路は、その前後の動作がなければ十分な性能が発揮できない。 [0034] However, IP circuit, sufficient performance can not be exhibited If there is no before and after the operation. IP回路同士を直接連結すると、その回路の動作の種類を制限することになる。 When connecting the IP circuit together directly, thereby limiting the types of operation of the circuit. プログラマブルでかつ高速なアプリケーションの動作を実現するためには、複数の最小限度のIP回路と、IP間のデータの中継を行う十分な演算処理能力が最良の組みあわせである。 In order to realize the operation of the programmable and fast application includes IP circuits of a plurality of minimum, sufficient processing power for relaying data between IP is a combination of the best.

【0035】(スーパースカラ、VLIW方式) [0035] (superscalar, VLIW system)

【0036】スーパースカラ方式、VLIW方式は、命令レベル並列とよばれ、同時に複数の命令を実行することで、性能を向上させることを狙った方式である。 The superscalar architecture, VLIW system, called instruction level parallelism by executing multiple instructions simultaneously, a method aimed at improving the performance.

【0037】まず、スーパースカラ方式は、複数の命令の組みあわせを自動的に抽出してくれる方式である。 [0037] First of all, superscalar system is a us to automatically extract system a combination of a plurality of instructions. ところが、自動的に抽出できる命令の範囲、命令ウィンドウは限定されており、特に、条件分岐命令の後に実行される命令の抽出が非常に難しい。 However, automatic extraction can range instruction, the instruction window is limited, in particular, is very difficult extraction of the instruction to be executed after the conditional branch instruction. そのため、プログラム全体の並列性を生かすことができず、隣接した数個の命令を実行するのがせいぜいである。 Therefore, it is not possible to utilize the parallelism of the whole program, it is best to run the several instructions that are adjacent.

【0038】図2に、従来のプロセッサ例としてVLI [0038] Figure 2, as a conventional processor Example VLI
W方式のプロセッサの構造模式図を示す。 W shows a structural schematic diagram of a processor of the system. VLIW方式は、この命令の抽出の手間をコンパイラに任せ、並列可能な命令を明示して命令メモリに格納する方法である。 VLIW system, let the time of the extraction of this instruction the compiler is a method of storing the instruction memory with an explicit parallel instructions.
しかし、並列化の対象となるのはプログラム内部で隣接した数個の命令であることには変わりない。 However, no difference is that the subject to parallelization is several instructions adjacent program internally.

【0039】201は複数の命令を同時に格納する命令キャッシュである。 [0039] 201 is an instruction cache for storing a plurality of instructions simultaneously. 命令発行ユニット208は、命令キャッシュ201から同時に複数の命令を読み込み、送られた命令を実行できる演算ユニットにそれぞれ命令を分配する。 Instruction issue unit 208 reads a plurality of instructions simultaneously from the instruction cache 201, respectively distributes instructions to the arithmetic unit capable of executing instructions sent. 演算ユニット202、演算ユニット203、分岐ユニット204、ロードストアユニット205は、同時に独立した動作ができる。 Operation unit 202, arithmetic unit 203, branch unit 204, load store unit 205 may operate independently at the same time. 演算ユニット202、演算ユニット203は、共有レジスタファイル206から複数の値を取り出して演算を行い、結果をレジスタファイル206に返す。 Operation unit 202, arithmetic unit 203 performs an arithmetic operation retrieves the plurality of values ​​from the shared register file 206, and returns the result to the register file 206. 分岐ユニット204は、命令キャッシュ201に対してPCアドレスを変更させる。 Branch unit 204 to change the PC address to instruction cache 201. ロードストアユニット205は、データキャッシュ207からレジスタファイル206にデータを読み込む。 The load store unit 205 reads the data from the data cache 207 to the register file 206. あるいは逆に、レジスタファイル206の値をデータキャッシュ2 Or conversely, the data value of the register file 206 Cache 2
07に転送する。 And transfers it to the 07.

【0040】(マルチプロセッサ方式) [0040] (multi-processor system)

【0041】図3に、従来例としてマルチプロセッサ方式を示す。 [0041] FIG. 3 shows a multi-processor system as a conventional example. マルチプロセッサ方式は、既存のパイプライン、スーパースカラ、VLIWのいずれかの方式で作成されたプロセッサを複数接続して利用する方法である。 Multiprocessor system, existing pipeline, superscalar, a method of utilizing a processor that is created by one of the methods of the VLIW was connected.
飽和しつつある命令レベル並列を補うために用いられる。 Used to compensate for instruction-level parallelism which is becoming saturated.

【0042】そのために、ソフトウェアをプロセス、あるいはスレッドとよばれる独立した単位に分割して、それぞれのプロセッサに割り当てる。 [0042] Therefore, by dividing the software process or in a separate unit called a thread, is assigned to each processor. それぞれのプロセッサはそれぞれ独立したスレッドを実行することで、命令レベル並列に対して演算ユニット間の通信を抑制することができる。 Each processor by executing the independent threads, it is possible to suppress the communication between the arithmetic units with respect to instruction level parallelism.

【0043】図3にマルチプロセッサの構造を示す。 [0043] showing the structure of a multiprocessor in FIG. プロセッサ301、302、303、304は、共有バス305に接続される。 The processor 301, 302 is connected to the shared bus 305. プロセッサ306、307、30 Processor 306,307,30
8も同様に共有バス309に接続される。 8 is also connected to the shared bus 309 as well. 共有バス30 Shared bus 30
5には二次キャッシュ310が接続され、プロセッサ3 5 secondary cache 310 is connected to the processor 3
01のメモリは基本的には二次キャッシュ310から取得する。 01 of the memory is basically obtained from the secondary cache 310. 2つの二次キャッシ310、311は、共有メモリバス312に接続され、二次キャッシュとメインメモリ313の内容を同一にする。 Two secondary cache 310 and 311, are connected to the shared memory bus 312, to the same contents of the secondary cache and the main memory 313.

【0044】プロセッサ301〜304、306〜30 [0044] processor 301~304,306~30
8は、それぞれ独自に命令動作を行い、命令、データをメインメモリ313からキャッシュを介して取得する。 8 each perform their own instruction operation instruction, to get through the cache data from the main memory 313.
他のプロセッサと同一アドレスのデータを共有しない限り、プロセッサ間通信は行われない。 Unless sharing data from other processors in the same address, inter-processor communication is not performed.

【0045】これらのプロセッサ、二次キャッシュ31 [0045] These processor, secondary cache 31
0,311は、半導体のチップに全て搭載することが可能である。 0,311 may be mounted all the semiconductor chips. 半導体チップの微細化によって、同じコストでもより多くの回路の搭載が可能になったため、複数のプロセッサを1つのチップに搭載することで、コストに対する性能を向上させることになる。 Miniaturization of the semiconductor chip, since the mounting more circuits for the same cost becomes available, by mounting a plurality of processors on a single chip, will improve the performance against cost.

【0046】(従来のPMT方式) [0046] (formerly known as PMT system)

【0047】図4に、命令レベル方式、およびマルチプロセッサ方式の欠点を解消するための従来の方式を示す。 [0047] Figure 4 shows a conventional method for eliminating the drawbacks of the instruction-level method, and a multiprocessor system. 以下、この方式をPMT方式と呼称する。 Hereinafter referred to as the scheme as PMT system. PMT方式についての詳細は特許広報平9−287662に記載されている。 For more information on PMT method disclosed in Patent Public Rights 9-287662.

【0048】このPMT方式は、前述のマルチプロセッサ方式で利用されるプロセス、スレッドをほぼそのまま用いる。 [0048] The PMT system is substantially used as a process, a thread is used in a multiprocessor system described above. そして、演算ユニット間の通信を最小限にすることにより、演算ユニットの増加に対して周波数性能の低下を抑制し、動作周波数を維持しつつ大量の演算ユニットの搭載を可能にし、飛躍的な性能向上を可能にする。 Then, by minimizing the communication between the operation units, suppressing a decrease in frequency performance with an increase in arithmetic unit, to enable mounting of a large number of arithmetic units while maintaining the operating frequency, breakthrough performance to allow for improvement. さらに、演算ユニットなどの回路を可能な限り共有することによって、最小の回路規模で最大の並列規模を達成できる。 Furthermore, by sharing as much as possible circuits such as arithmetic units can achieve maximum parallel scale with a minimum circuit scale.

【発明が解決しようとする課題】 [Problems that the Invention is to Solve

【0049】(VLIW方式の欠点) [0049] (disadvantage of VLIW system)

【0050】VLIW方式の欠点を示す。 [0050] show the shortcomings of the VLIW system. まず、命令レベル並列は、プログラムの局所的な領域だけで実行できる命令を選択する方式である。 First, the instruction level parallelism is a method of selecting an instruction that can be executed only in a localized area of ​​the program. 理由は、プログラムはその場の演算結果によって命令の流れが頻繁に変更されるため、演算が終了するまで次に実行すべき命令を特定することはできない。 Reason, the program therefore the flow of instructions through the operation result field is changed frequently, it is impossible operation to identify the next instruction to be executed until the end. それをある程度克服するために分岐予測と呼ばれる機構があるが、それでも複数の分岐の先を予測することは難しい。 There is a mechanism called branch prediction in order to overcome it somewhat, but still it is difficult to predict ahead of the plurality of branches. そのため、命令キャッシュ3 Therefore, the instruction cache 3
01の幅を広げても、同時に実行できる命令をプログラムから大量に選択できないため、性能向上率が飽和する。 Even widen 01, can not be selected in large quantities from the program instructions that can be executed concurrently, the performance improvement rate is saturated.

【0051】さらに、複数のデータ依存関係が発生するということは、それらの命令の間のデータの自由な転送が必要になるということである。 [0051] Furthermore, the fact that a plurality of data dependency occurs, is that the free transfer of data between these instructions is required. 一般的に、命令実行ユニットのN倍の増加に対して、実行ユニット間の配線の遅延時間はN倍以上、回路規模はNの二乗の規模で増加する。 Generally, with an increase of N times of instruction execution units, the delay time of the wiring between the execution unit N times, the circuit scale increases on a scale of the square of the N. そのため、命令実行を増やしても、それ以上に周波数性能が低下するというデメリットが生じる。 Therefore, increasing the instruction execution, disadvantage occurs more frequency performance is degraded.

【0052】以上の理由によってVLIW方式は性能向上に限界がある。 [0052] By the above reasons the VLIW system there is a limit to the performance improvement.

【0053】そのため、命令発行ユニット208の幅を広げるのはあきらめて、複数の明示的に独立したスレッドを1つのプロセッサで同時に実行するのも必要と考えられるようになった。 [0053] Therefore, given up widen up instruction issue unit 208, now considered necessary to perform simultaneously a plurality of explicitly separate thread in a single processor. そのため、小規模なVLIWを複数搭載し、個々のVLIWで個別のスレッドをそれぞれ動作させるという方法が考案されている。 Therefore, a small VLIW plurality equipped, have been devised method of operating each individual thread in each VLIW. ところがそれでは、次に述べるマルチプロセッサ方式の問題が発生する。 But then, the problem of multi-processor system to be described below may occur.

【0054】(マルチプロセッサ方式の欠点) [0054] (disadvantage of the multi-processor system)

【0055】次に、マルチプロセッサ方式の4つの欠点を示す。 Next, it shows four of the disadvantages of the multi-processor system.

【0056】まず、マルチプロセッサでは、負荷の高いプロセッサから負荷の低いプロセッサへプロセス、あるいはスレッドを移すのに非常に時間がかかる(以下、このプロセス、スレッドの移動をプロセス移住、スレッド移住と呼ぶ)。 [0056] First, in the multiprocessor, the process from heavily loaded processor to a lower processor load or thread the very time to transfer such, (hereinafter, this process, a process immigration thread movement, referred to as thread immigration) .

【0057】次に、マルチプロセッサにはプロセッサ間通信が必要になる。 Next, it is necessary to communicate between processors in a multiprocessor. 複数のプロセス、スレッドがまったく独立したデータを利用することはまれであるためである。 It is because it is rare that a plurality of processes, threads utilize completely independent data. ところが、1つのデータを全てのプロセッサが利用すると、データ通信の量はプロセッサの数にほぼ比例して増加する。 However, when all processors of one data is utilized, the amount of data communication increases substantially in proportion to the number of processors. そして、通信の量が増えるということは、 Then, the fact that the amount of communication increases,
単体のプロセッサから見てもメモリのアクセスが通信、 Even when viewed from a single-processor communication access of memory,
同期によって制限されることになり、単体のプロセッサにおいても、システム全体においても性能が飽和する。 Will be limited by the synchronization, even in a single processor, also the performance is saturated in the entire system.

【0058】次の問題は、プロセッサ間の同期である。 [0058] The next problem is the synchronization between processors.
あるプロセスがほかのプロセスの特定の処理を待つために停止し、別のプロセスからの処理終了の伝達によって再開するのが同期である。 Stop one process to wait for a specific treatment of other processes, it is synchronized to resume the processing transfer completion from another process. このための最も原始的な手法は、待ち状態のプロセスが定期的に別のプロセスの状態を監視することである(スピンロックと呼ばれる)。 The most primitive method for this, the process of wait states (called spin lock) at which to monitor the status of the regular another process. しかし、これでは待ち状態のプロセスがプロセッサ、メモリバスなどの資源を占有するために非常に効率が悪い。 However, this process is processor of a wait state is very inefficient in order to occupy the resources such as memory bus.
そのために、OSレベルのソフトウェアで同期処理を管理する方法などがあるが、そのためのソフトウェア処理が大規模な並列における性能向上を阻害するという問題がある。 Therefore, there is a method of managing the synchronization process at the OS level software, there is a problem that the software processing for inhibits performance improvement in the parallel large-scale.

【0059】最後に、マルチプロセッサは、メモリ、複数の演算ユニットをすべて搭載するプロセッサを、さらに複数搭載する。 [0059] Finally, multi-processor, a memory, a processor for mounting all the plurality of arithmetic units, further more equipped. そのため、それぞれの演算ユニット、 Therefore, each of the arithmetic units,
メモリの稼動率にもかかわらず、すべてのコピーがプロセッサの数だけ搭載されることになる。 Despite the rate of operation of the memory, all the copy is to be mounted by the number of processors. そのため、回路規模の点で無駄が多い。 Therefore, wasteful in terms of the circuit scale.

【0060】(従来のPMT方式の欠点) [0060] (disadvantages of the prior of the PMT system)

【0061】PMT方式は、以上で述べた、VLIWに代表される命令レベル方式の性能の限界、およびマルチプロセッサ方式の回路規模的な欠点を解消するための方式である。 [0061] PMT scheme, mentioned above, is a method for eliminating the circuit scale disadvantages performance limitations, and multi-processor system of instruction-level system represented by VLIW.

【0062】まず、複数のスレッドを常に全てのユニットで巡回させることで、スレッド発行ユニットを演算ユニット間で共有できる。 [0062] First, by cyclically always all units multiple threads can share the thread issuing unit between arithmetic units. さらに、全てのスレッドを空いた演算ユニットに対して即座に発行することができ、スレッドを中断した場合も、スレッドの移住を行わなくてもその場で再開が可能である。 Furthermore, it can be immediately issued to vacated arithmetic units all threads, even if interrupted threads, it is possible to also resume on the spot without having to thread migration. これによって、レイテンシを隠蔽するためのスレッドの切り替えを高速に行うことができる。 This makes it possible to switch the thread to hide the latency fast.

【0063】複数のスレッドを動作させる際には、データキャッシュの内容を共有することが多い。 [0063] When operating the plurality of threads, often share the contents of the data cache. そのため、 for that reason,
スレッド間で同じデータキャッシュを共有することで、 By sharing the same data cache among threads
全てのキャッシュへ同じデータを転送する必要が無くなり、ブロードキャスト型のデータの転送を最小限にすることができる。 There is no need to transfer the same data to all of the cache, the transfer of broadcast type of data can be minimized.

【0064】同じ種類のスレッドは、同じ命令、データメモリ、演算ユニットを利用する傾向が強い。 [0064] the same type of thread, the same instruction, data memory, is a strong tendency to use the arithmetic unit. この性質を利用して、1つの命令キャッシュ、データキャッシュ、特殊演算ユニットを複数のスレッドから共有させることで回路を削減することができる。 By utilizing this property, one instruction cache, data cache, it is possible to reduce the circuit by the covalent special arithmetic unit from a plurality of threads.

【0065】だが、従来例に挙げた図4のPMT方式には、以下の欠点がある。 [0065] However, the PMT system of FIG. 4 mentioned conventional example has the following drawbacks.

【0066】まず、コンテキストスイッチのために、メモリにレジスタの値の退避が常に必要になる。 [0066] First, for a context switch, saving the value of the register in the memory is always required. キャッシュミスのように、もとの演算ユニットでスレッドを再開できるような処理では、演算ユニットにレジスタを保持しておけば、スレッドの移住は必要ない。 As a cache miss, the processing that can resume thread under operation unit, if holding register to the arithmetic unit, no thread migration is required. そのために、 for that reason,
複数のスレッドを同時に管理するレジスタファイルが必要になる。 Register file for managing a plurality of threads at the same time is required.

【0067】次に、分岐命令ごとにコンテキストスイッチが必要になる。 Next, it is necessary to context switch for each branch instruction. 理由は、命令アドレスに対して、実行される演算ユニットが常に決定されているために、命令アドレスが昇順に実行されない場合はスレッドの移動が必要になるためである。 Reason, the instruction address, to the arithmetic unit to be performed is always determined, if the instruction address is not executed in the ascending order is because it is necessary to thread movement. 分岐命令はソフトウェア全体で4分の1を占めるともいわれるため、このようなスレッドの移動は大きく性能を低下させる。 Branch instructions for also said to account for one-quarter the entire software, such movement of the thread decreases the performance significantly. ソフトウェアのインライン展開によってある程度分岐を減少させることは可能であるが、汎用的なソフトウェアで性能が出る構造が望ましい。 It is possible to reduce to some extent the branch by inlining software, structure performance comes in a generic software is desired.

【0068】次に、命令アドレスによって実行される演算ユニットが決定されるため、命令の配置によっては演算ユニットの稼動率にバラ付きが生じる。 Next, since the operation units are executed by the instruction address is determined, depending on the arrangement of the instruction with roses is caused in the operation factor of the operational units. 同じようにソフトウェアのインライン展開でうまく大半の演算ユニットを利用することはできるが、汎用的なソフトウェアで負荷分散が出来る構造が理想的である。 Although it is possible to use the well most of the arithmetic unit in the same way software inlining, structures in general software load balancing can be ideal.

【0069】従来のPMT方式では、キャッシュ間でデータのコピーを持たせないために、全ての実行ユニットが全てのキャッシュメモリと接続するように配線させる必要がある。 [0069] In the conventional PMT system, in order not to have a copy of the data between the cache, it is necessary to wire such that all execution units to connect with all of the cache memory. そのため、実行ユニットのN倍の増大にしたがってNの二乗で規模が増大する。 Therefore, scale increases with the square of N with increasing N times of the execution units. 配線遅延が深刻化する現在では、このような配線は確実に周波数性能を低下させる。 Now the wiring delay is serious, such wiring surely reduce the frequency performance. ところが、性能向上の為には実行ユニットを増加させることが不可欠である。 However, in order to improve the performance it is essential to increase the execution unit. そのため、キャッシュのコピーを各実行ユニットに持たせる必要があり、キャッシュ間の内容の整合性を取るハードウェアを実装する必要がある。 Therefore, it is necessary to have a copy of the cache to the execution unit, it is necessary to implement the hardware matching of the contents between caches.

【0070】従来のPMT方式では、キャッシュのコピーを一切行わないため、全てのキャッシュのアクセスは順序が入れ変わることはない。 [0070] In the conventional PMT system, because it does not perform any copy of the cache, access of all of the cache is not that the order is changed into. ところが、キャッシュのコピーを持たせる構造にすると、キャッシュのアクセス順序を保持できなくなる。 However, when the structure to have a copy of the cache, not to hold the access order of the cache. そのため、新たなハードウェアによる同期機構によって、キャッシュのアクセス順序を保証する必要がある。 Therefore, the synchronization mechanism according to new hardware, there is a need to guarantee access order of the cache.

【0071】最後に、全てのスレッドは全ての資源に無制限にアクセス可能であり、同時に独立したプロセスを動作させることができない。 [0071] Finally, all of the thread is capable of unlimited access to all of the resources, it is not possible to operate the process independent at the same time. そのためには仮想記憶機構によるプロセス間保護の実装が必要である。 This requires the implementation of interprocess protection virtual memory mechanism. ところが、 However,
キャッシュメモリを分散させると、仮想記憶機構はキャッシュメモリの数だけ必要になる。 Distributing the cache memory, the virtual memory mechanism is required for the number of cache memory. キャッシュメモリは複数のプロセスが混在するため、単体の仮想記憶の容量も増大する。 Cache memory because a plurality of processes coexist, also increases the capacity of a single virtual memory. 更に、仮想記憶機構を分散させると仮想記憶の規模が膨大なものになる。 Furthermore, a scale of virtual memory becomes enormous and dispersing the virtual memory mechanism.

【0072】以上が従来のPMT方式の欠点である。 [0072] The above is the drawback of the conventional PMT system. P
MT方式の持つ長所を維持しつつ、これらの欠点を解消するのが本発明の目的である。 While maintaining the advantages possessed by the MT method, it is an object of the present invention to overcome these drawbacks.

【課題を解決するための手段】 In order to solve the problems] 【作用】 [Action]

【0073】(コンテキストスイッチ) [0073] (context switch)

【0074】本発明のプロセッサはマルチスレッドを利用する。 [0074] processor of the present invention utilizes multi-threading. マルチスレッドは大規模なレイテンシを隠蔽する唯一の方法と言ってよい。 Multi-thread may be said that the only way to hide the large-scale latency. このマルチスレッドの管理は、従来のマルチプロセッサなどではOSの仕事となっているが、それがスレッドの数に比例して処理時間を増大させて、マルチスレッドの長所をほとんど発揮できない要因となっている。 Management of this multithreading, although in such conventional multiprocessor has a work OS, it increases the threading time in proportion to the number of, it is a factor hardly exhibit the advantages of multi-threaded there. ハードウェアで極力マルチスレッド動作を実現するのが望ましい。 To achieve as much as possible multi-threaded operating in the hardware is desirable.

【0075】図16にマルチプロセッサにおけるマルチスレッドの実行例を示す。 [0075] shows an example of executing multi-threaded in a multiprocessor in FIG. スレッドAからスレッドBへの切り替えを行うスケジューリングは、常にプロセッサの資源を消費する。 Scheduling for switching to the thread B from the thread A is always consumes resources of the processor. さらに、キャッシュミスの期間には、他のスレッドの動作ができず、各プロセッサはアイドリング状態となる。 Furthermore, the duration of a cache miss, can not operate the other threads, each processor becomes idle.

【0076】図17に、本発明のプロセッサにおけるマルチスレッドの実行例を示す。 [0076] Figure 17 shows an example of executing a multithreaded in the processor of the present invention. 本発明のプロセッサでは、複数のスレッドがストールしない限り。 The processor of the present invention, as long as the plurality of threads does not stall. スケジューリングを全てハードウェアで行うため、常に演算ユニットを実際の動作に利用することができる。 To perform in all scheduling hardware, it is possible to always use the calculation unit to the actual operation. キャッシュミスの場合も、別のスレッドがかわりに動作することができる。 In the case of a cache miss, it is possible to act on behalf another thread. キャッシュの入れ替え動作が終了した後は、別の任意のスレッドのストールによって、スレッドを再開することができる。 After the replacement operation of the cache is finished, by the stall of any other thread, it is possible to resume the thread.

【0077】結論として、本発明のプロセッサは、マルチプロセッサ方式に対してコンテキストスイッチ、スケジューリングの時間が不要である。 [0077] In conclusion, the processor of the present invention, the context for multi-processor system switch, time scheduling is not necessary. さらに、本発明のプロセッサはあらゆるスレッドの待ち時間に他のスレッドが動作可能であり、どんなに並列度を上げても演算資源をほぼ常時利用することができる。 Furthermore, the processor of the present invention is operable other threads wait for any thread can no matter how increasing the degree of parallelism almost always use the computational resources. これは、現在の命令レベル並列では、数並列程度でも演算資源の利用率が半分以下であるのと対照的である。 This is because the current instruction level parallelism, in contrast to utilization of computing resources in several parallel not more than half.

【0078】複数のスレッドを同時に動かす際には、待ち状態のスレッドの中から演算能力に相当する数のスレッドを選択することが必要になる。 [0078] When moving the plurality of threads simultaneously, it is necessary to select the number of threads corresponding to the computing capacity from the pending thread. スレッドには、例外や割り込み要求の応答など、即座に実行を要求されるものと、比較的実行遅延が許されるものとが混在している。 A thread, such as the response of the exception or interrupt request, and what is immediately asked to perform, and those relatively execution delay is allowed are mixed. このため、スレッドの優先順位を設け、それを自動的に選択する機構が必要になる。 Therefore, the thread priority provided, automatically selecting a mechanism is needed it.

【0079】本発明のプロセッサにおけるスレッドは1 [0079] thread in the processor of the present invention is 1
6段階のプライオリティーを有する。 With a 6 stage of priority. スレッド発行ユニットは、実行待機状態のスレッドを格納し、スレッドのプライオリティーをハードウェアで判定して選択して、 Thread issue unit stores the thread of execution wait state, and selects the thread of priority is determined by hardware,
同時に1つのスレッドを発行する。 To issue a single thread at the same time. また、既存のスレッドよりもバッファ上のスレッドの優先度が高い場合は、 Also, if a higher priority of the thread in the buffer than the existing thread,
無条件で既存のスレッドを休止して新規のスレッドを発行する。 To pause the existing thread unconditionally to issue a new thread. プライオリティーが同一の場合はとくに優先制御、負荷分散制御を行う必要はない。 Particularly priority control when priority is the same, it is not necessary to perform load balancing control.

【0080】なお、実行ユニットの稼働率が高く、新規のスレッドを発行できない場合は、隣接するスレッド発行ユニットに順にスレッド状態を転送する。 [0080] Note that a high rate of operation of the execution unit, when it is not possible to issue a new thread transfers the thread state in order to thread issue unit adjacent.

【0081】スレッド発行ユニットが発行すべきスレッドを選択する際に、前に実行したスレッドと共通の命令を利用するものが理想的である。 [0081] When selecting a thread to issue thread issuing unit, which utilizes a common instruction as the thread that was previously executed it is ideal. 理由は、命令が同一であれば利用するデータも同じである確率が高いこと。 The reason is, the instruction to have a high probability that the data is also the same to be used if they are identical. そして、命令などの状態が等しければ、制御回路などの状態の変更が最小限となり、状態信号が変化しなければC Then, equal states, such as instructions, state changes, such as the control circuit is minimized, if the state signal is changed C
MOS回路の特質上消費電力が最小となるためである。 Characteristically power consumption of the MOS circuitry is because the minimum.

【0082】そのために、前に発行したスレッドの命令アドレスを控えておく。 [0082] To that end, keep a note of the address of the instruction issued by the thread before. そして、次に発行するスレッドの命令アドレスと、控えておいた前のスレッドの命令アドレスを比較し、同一であればスレッドを即座に発行する。 Then, it compares the instruction address of the thread to be next issued thread instruction address before had refrained issues a thread immediately if they are identical. アドレスが同一でない場合は、今のスレッドとプライオリティーが同一以上のスレッドがない場合に限り用意したスレッドを発行する。 If the address is not the same, issuing a thread now of threads and priority was prepared only if there is no same or more threads.

【0083】PMT方式では、そのままではスレッドのライン間の移動によって演算ユニットの間で負荷のばらつきが生じる。 [0083] In PMT system, as is the variation in the load among operation unit by the movement between threads of the line occurs. そのため、ある演算ユニットは負荷が極端に高く、どうしてもほかのスレッドの要求を受け付けられない状態が発生する。 Therefore, there is calculation unit load is extremely high, the state can not accept the absolutely required for another thread occurs. そういう場合は、空いた1つの演算ユニットを有効活用するために、その演算ユニットを単一プロセッサとみなしてスレッドの実行を行う(今後、この動作を局所SMP実行モードと称する)。 If such, in order to effectively utilize a single arithmetic unit vacated, the execution of the thread considers the operation unit with a single processor (hereafter, referred to the operation as local SMP execution mode).
こうして、PMT方式とSMP方式を混在させて、スレッドが充填されない演算ユニットを最大限に活用する。 Thus, a mix of PMT method and SMP scheme, thread take full advantage of the operational units that are not filled.
プライオリティーの高い別のスレッドの要求によって、 By priority of high another thread requests,
局所SMP実行モードは解除される。 Local SMP execution mode is canceled.

【0084】スレッド発行ユニットが4つの演算ユニットで共有される場合は、局所SMP実行モードは4つの演算ユニットを順に利用して行う。 [0084] If the thread issuing unit is shared by four arithmetic units, local SMP execution mode is performed by utilizing the four arithmetic units sequentially. この場合、4つのスレッドが同時に動作することになるが、相互の演算ユニット間のレジスタ、データ転送は不要である。 In this case, although the four threads operate simultaneously, the register between each other arithmetic unit, the data transfer is not required.

【0085】コンテキストスイッチを高速化するために、従来のPMT方式にあったレジスタのメモリへの待避の必要性をなくす。 [0085] The context switching to speed, eliminating the need for conventional retracted into a register of the memory in the PMT system. そのために、レジスタファイルには複数のスレッドの情報を共存させ、そのうちの1つだけを利用する。 Therefore, the register file coexist information of a plurality of threads, using only one of them. コンテキストスイッチは、利用するレジスタファイルのバンクを切り替えるだけで良く、即座にスレッドを切り替えることができる。 Context switching may just switching the bank of the register file to be used, it is possible to instantly switch between threads.

【0086】PMT方式では、スレッドは基本的には一定方向に移動する。 [0086] In the PMT method, the thread is basically moving in a certain direction. しかし、命令、データの共有を実現するためには、すでに命令が保持してある演算ユニットにスレッドを移すことが望ましい。 However, the instruction, in order to realize the sharing of data, it is desirable to previously move the thread computation unit instruction are held. あるいは、すでに負荷の高い演算ユニットに到達したときは、負荷の低いラインに移動する必要がある。 Alternatively, when already reached the high computing unit load, it is necessary to move to the low load line. そのために、演算ユニット間でスレッドを移動させる、スレッド移住機構を設ける。 Therefore, to move the thread between arithmetic units, providing a thread immigration mechanism. スレッド移住は以下の手順で行う。 Thread migration will be made in the following procedure.

【0087】(1)実行ユニットからストール要求。 [0087] (1) stall request from the execution unit. 同時にレジスタバンクを別のスレッドに切り替える。 At the same time switching the register bank to another thread.

【0088】(2)スレッド発行ユニットは待機してあるスレッドを供給。 [0088] (2) thread issue unit supplies a thread that is waiting.

【0089】(3)データキャッシュにレジスタの内容を退避。 [0089] (3) saves the contents of the register into the data cache. 直接二次キャッシュに対して送られる。 It is sent directly to the secondary cache.

【0090】(4)目的のノードにスレッド情報転送。 [0090] (4) thread information transfer for the purpose of the node.

【0091】(5)データキャッシュ階層を通って、目的のノードに近い二次キャッシュからレジスタの読み込みを行う。 [0091] (5) through the data cache hierarchy, reads the registers from the secondary cache closer to the desired node. データキャッシュ間の転送は、後述のキャッシュコヒーレンシ機構を用いる。 Transfers between the data cache uses a cache coherency mechanism described later.

【0092】なお、本発明では、負荷分散のためのスレッドの移住は基本的には不要である。 [0092] In the present invention, thread migration for load balancing is basically unnecessary. 待ち状態のスレッドは一定場所にとどまっていれば、いつかは他のスレッドが使用していない空いたパイプラインが流れてくるためである。 If the thread of the waiting state is long remained constant location, someday is to come empty pipeline flow that other thread is not being used.

【0093】図22に、スレッド移住における動作を示す。 [0093] FIG. 22 shows the operation of Thread immigration. 横軸は演算ユニットの列であり、縦軸は時間経過である。 The horizontal axis is the column of arithmetic units, the vertical axis represents the elapsed time. 斜線が個別のスレッドの実行を示す。 Diagonal lines show the execution of a separate thread.

【0094】7番の演算ユニットへのスレッドの移住によって、7番から10番の演算ユニットはメモリからレジスタを読み込む。 [0094] by the thread migration to seventh arithmetic unit, arithmetic unit 10 from No. 7 No. reads register from memory. 11番の演算ユニットから実際のスレッドが再開される。 Actual thread from the 11th of the operation unit is restarted.

【0095】プライオリティーの低いスレッドは、7番の演算ユニットがプライオリティーの高い別のスレッドによって占有されたことを検出して、2番の演算ユニットの時点でスレッドを停止させる。 [0095] low priority thread seventh arithmetic unit detects that it is occupied by another thread with high priority, and stops the thread at the point of operation unit No. 2. 3番から6番の演算ユニットではレジスタ状態をメモリに待避する。 In the sixth arithmetic unit from the third to retract the register state in memory. 7番の演算ユニットから別のスレッドの移住が始まる。 Another thread migration from the 7th of arithmetic unit begins.

【0096】一般的にサブルーチンコールでは、それまでのレジスタをスタックに保持して、リターンの直前に退避したレジスタを読み込む操作が必要になる。 [0096] In general, a subroutine call, retains the register until then to the stack, the operation is necessary to read the registers saved just before the return. 本発明のプロセッサでは、サブルーチンコールはレジスタを隣接転送する際に、元のレジスタを破棄せずに、サブルーチンコールを実行した演算ユニットのレジスタバンクに保持しておくだけで実現できる。 The processor of the present invention, the subroutine call in the adjacent transfer register, without destroying the original register, can be realized only holds the register bank of the arithmetic unit executes the subroutine call. そしてリターンはその保持されていたレジスタバンクを再利用して、帰り値を示す1つのレジスタだけを代入すれば良い。 The return reuse register bank has been its retention, it may be only substituting one register indicating return value.

【0097】図20に、サブルーチンコールの動作例を示す。 [0097] Figure 20 shows an example of the operation of the subroutine call. CALL命令がサブルーチンへの分岐、RET命令がサブルーチン終了を示す命令である。 Branch CALL instruction to a subroutine, RET instruction is an instruction showing a subroutine completion.

【0098】CALL命令のように、元の命令アドレスに戻り、元のスタックの値を利用する処理においては、 [0098] As in the CALL instruction, return to the original instruction address, in the process of using the value of the original stack,
CALL命令の位置にレジスタ値を残しておくだけで良い。 It may only leave the register value to the position of the CALL instruction. レジスタはコール先の命令にも複製されて継承される。 Register is inherited also be replicated to the call destination of the instruction.

【0099】RET命令の実行によって、帰り値だけがCALL命令に送られる。 [0099] by the execution of the RET instruction, only the return value is sent to the CALL instruction. それ以外のレジスタは、元のレジスタの値をそのまま利用すればよい。 All other registers may be used as it is the value of the original register.

【0100】保持してあるレジスタバンクをほかのスレッドが利用するときは、前述のスレッド移住機構におけるレジスタ同期機構によって、自動的にメモリへの退避が行われる。 [0100] When the holding other thread register banks are to use, depending on the register synchronization mechanism in the above-described thread immigration mechanism, automatically saving to memory are performed.

【0101】割り込みユニットやTLBは、蓄積されたスレッドIDをスレッド発行ユニットに伝達し、指定されたスレッドを動作させることができる。 [0102] The interrupt unit and TLB may transmit the stored thread ID to the thread issuing unit, it is possible to operate the specified thread.

【0102】そして、TLBからのスレッド生起は、ページフォルトなどのTLB例外によるコンテキストスイッチを高速化するとともに、OSカーネルサービスの並列化を実現する。 [0102] Then, thread the occurrence of the TLB, along with the speed of a context switch by the TLB exceptions such as page faults, to achieve the parallelism of the OS kernel services.

【0103】本発明のプロセッサは大量のスレッドを利用する。 [0103] processor of the present invention takes advantage of the large number of threads. そのためには、現在進行しているスレッドの演算能力を極力利用せずに、大量のスレッドを発行しなくてはならない。 To do so, without as much as possible using the thread of computing power that is currently in progress, it must be issued a large number of threads. そのために、スレッドが必要なスレッドID、スタックなどの情報(スレッド構造体と呼ぶ)はハードウェアで管理して、スレッドの生成によって自動的に転送する。 Therefore, the thread must thread ID, (referred to as a thread structure) information such as the stack is managed by hardware, automatically transferred by the thread generation of. 実装としては、まとめてスレッドIDとスタックポインタを格納するバッファだけを設ける。 The implementation, collectively providing the only buffer which stores the thread ID and stack pointer. バッファの内容の管理はまとめてソフトウェアで行う。 Management of the contents of the buffer will be made in the software together.

【0104】スレッドを発行する場合は、スレッドバッファから空き状態のスレッド構造体を要求する。 [0104] When issuing a thread requests the thread structure of the vacant state from the thread buffer. スレッドバッファにスレッド構造体が無い場合は、現在のスタックポインタをそのまま返し、これ以上マルチスレッドで実行できないことをプログラムに通達する。 If the thread buffer there is no thread structure, returns as it is the current stack pointer, the notification to the program can not be run in more multi-threaded.

【0105】こうして、スレッド発行命令は新規のスレッド構造体を取得する命令だけで済むようになり、スレッド発行におけるソフトウェアオーバーヘッドを削減できる。 [0105] Thus, the thread issued instruction becomes only need instructions to get the new thread structure, it is possible to reduce the software overhead in thread issues.

【0106】(演算パイプライン) [0106] (operation pipeline)

【0107】本発明のプロセッサは、レジスタファイルを隣接する複数の演算ユニットで共有する。 [0107] processor of this invention is shared by a plurality of arithmetic units adjacent register files. 4つの演算ユニットでレジスタファイルを共有する場合は、4つのレジスタファイルと4つの演算ユニットとの間で自由にアクセスするためのクロスバ接続バスを設ける。 When sharing a register file with four arithmetic unit is provided with a crossbar connection bus for free access between the four register file and four arithmetic units.

【0108】こうして、従来のPMT方式が常にすべてのレジスタの値を隣接するユニットに転送を必要としたのに対して、隣接するレジスタファイルへの転送を数クロックに1回に抑制することができる。 [0108] Thus, while the conventional PMT scheme always the values ​​of all registers require transfer to the adjacent unit can be suppressed to once every few clock forwarding to an adjacent register file .

【0109】レジスタファイルには複数のスレッドの情報が混在するが、一度に送るのは1つのスレッドのさらに4分の1の内容で十分となり、実行ユニット全体でも、1つのスレッド分のレジスタ転送だけで良い。 [0109] The register file information of a plurality of threads are mixed, but send at once becomes sufficient with one of the contents of the additional 4 minutes of one thread, even the whole execution unit, only register transfer of one thread min good at.

【0110】なお、同一の命令を利用するスレッドを連続して動作させている場合は、転送する信号の変化はスレッド間のレジスタ値の違いだけとなる。 [0110] Incidentally, if you are running continuously a thread to use the same instruction, the change of the signal to be transferred is the only difference between register values ​​between threads. この違いだけがCMOS回路における消費電力となる。 The only difference is the power consumption in CMOS circuits.

【0111】本発明のプロセッサは浮動小数点演算ユニットを搭載することができるが、このユニットは整数演算に比べてレイテンシが大きくなるという特徴がある。 [0111] processor of this invention can be equipped with a floating-point unit, this unit is characterized in that the latency is larger than the integer arithmetic.
その間、依存関係のない別の整数演算命令を実行することで、浮動小数点演算のレイテンシを隠蔽できる。 Meanwhile, by executing another integer arithmetic instruction having no dependencies, you can hide the latency of the floating point operations.

【0112】同一の命令を用いるスレッドを連続動作させる場合では、長レイテンシ演算も1つのユニットを使いまわすことになる。 [0112] In case of continuous operation the thread using the same instructions would reuse a single unit is also long latency operation. この場合は、1クロック分の演算が終了した時点で、隣接する別の長レイテンシ演算ユニットに中間値を渡し、並行して演算を行う。 In this case, when the operation of one clock is completed, it passes the intermediate value to another long latency operation units adjacent performs calculations in parallel. こうして、 In this way,
長レイテンシ演算のスループットを向上させる。 Improve the throughput of the long latency operation.

【0113】本発明のプロセッサは、一般的なパイプラインプロセッサと同じく、パイプラインを停止するパイプラインストールを発生する機能を有する。 [0113] processor of this invention, as well as the common pipeline processor has a function of generating a pipeline stall stop the pipeline. ただし、パイプラインプロセッサと違う点は、ストールする対象が単独のスレッドに限られ、ほとんどの種類のストールの間に待ち状態の別のスレッドを再開できる点である。 However, the point different from the pipeline processor, subject to stall is limited to a single thread, is that it can resume another thread of a wait state between most types of stalls.

【0114】パイプラインストールは、一般的にはあるスレッドの要求する演算ユニット、あるいは転送バスなどの資源を取得できなかった場合に発生する。 [0114] pipeline stall, the arithmetic unit thread requests that are typically present, or occur if it can not obtain the resources such as transfer bus. そして、 And,
ストール状態のスレッドは、その原因が解決された時点で、プライオリティーの低い別のスレッドの動作を中断することができる。 Thread stall state, at the time the cause is resolved, it is possible to interrupt the operation of the lower separate thread of priority.

【0115】パイプラインストールは、すでに実行してしまった演算内容を1,2命令分キャンセルする必要がある。 [0115] pipeline stall, it is necessary to 1, 2, cancel the instruction content the content of operation that has already run. たとえばロード命令に対して、ロード命令が利用するキャッシュへのインバリッドの伝達が間に合わなかった場合、そのロード命令を無効にする必要がある。 For example, for the load instruction, if the load instruction is not in time the transmission of the invalid to the cache to be used, it is necessary to disable the load instruction.

【0116】図21は、パイプラインストールの動作例である。 [0116] FIG. 21 is an example of the operation of the pipeline stall. スレッドAのEXステージの実行が失敗して、 The execution of the EX stage of the thread A fails,
別のEX'ステージによる実行が必要になる。 Execution by another EX 'stage is required. スレッドAの待避したパイプラインスロットには、前にパイプラインストールを起こした別のスレッドが入り込み、結果を格納する。 The retracted the pipeline slot of thread A, another thread enters that caused the pipeline stall before, to store the results.

【0117】EX'の具体的な動作は64ビット演算や浮動小数点除算などである。 [0117] Specific operation of the EX 'is such as 64-bit operations and floating-point division. 演算自体は数クロックで終了し、再開待ち状態となる。 Operation itself is completed in a few clock, the resumption waiting state. スレッドEのパイプラインストールによって、スレッドEのかわりにスレッドAが入り込み、スレッドAの命令を終了させる。 By pipeline stall of thread E, thread A enters in place of the thread E, to end the instruction of the thread A.

【0118】パイプライストールごとにスレッドを切り替えることによって、パイプラインを間断無く動作させることができる。 [0118] by switching the thread for each pie price toll, it is possible to operate the pipeline without interruption. ただし、パイプラインストールが発生した命令が、前にパイプラインストールが発生した命令より後である場合は、パイプラインに空きが生じる。 However, the instruction pipeline stall has occurred, the case is later than the instruction pipeline stall occurs before, for space to become available in the pipeline. ただしその幅は最大4クロックである。 However, the width is up to 4 clock. しかも、同一命令を利用するスレッドを連続動作させる場合は、パイプラインストールを起こす命令も同一である確率が高いため、大きなペナルティーにはならない。 Moreover, if operated continuously a thread to use the same instruction, the probability instruction is also the same that causes a pipeline stall is high, not a big penalty.

【0119】(ディレクトリ方式階層キャッシュ) [0119] (directory system hierarchy cache)

【0120】大量の演算ユニットを搭載するには、それに対応するだけのデータ転送能力が必要になる。 [0120] To mount a large number of arithmetic units, it is necessary to transfer data capacity large enough to accommodate them. ところが、1つのメモリから大量のデータを供給することは不可能である。 However, it is not possible to supply a large amount of data from one memory. 何らかの形でメモリを分散するしかない。 No choice but to distribute the memory in some way.
ところが、本発明の方式では、全ての演算ユニットから全てのメモリを高速に参照する必要がある。 However, in the method of the present invention, it is necessary to refer all memory at a high speed from all operation units. そのために、分散したメモリの間でコピーを持つ必要がある。 Therefore, it is necessary to have a copy between the distributed memory.

【0121】分散されたメモリは、本来のメモリのコピーを自動的に格納するキャッシュの形態を取る。 [0121] The distributed memory, take the form of cash to automatically store a copy of the original memory. このとき、キャッシュ間で同じデータのコピーを持つ場合は、 At this time, if that has a copy of the same data between the caches,
あるキャッシュへの書きこみを、別のキャッシュへと転送しなくてはならない。 A write to a cache, must be transferred to another cache. このコピー間のデータの整合性を取る機構を、キャッシュコヒーレンシ機構と呼ぶ。 A mechanism for taking data consistency among the copies, called the cache coherency mechanism.

【0122】ところが、キャッシュの数が増大すると、 [0122] However, when the number of cache is increased,
キャッシュの間の転送量も増大し、配線の量、遅延時間も増大する。 Transfer amount between the cache also increases, the amount of wiring, the delay time also increases. キャッシュ間で接続されるバス信号の数を最小限度にし、かつキャッシュ間の転送スループットを確保するために、階層型キャッシュ構造を取る。 The minimum number of bus signals connected between caches, and to ensure the transfer throughput between caches, assume a hierarchical cache structure.

【0123】演算ユニットには専用の一次キャッシュが接続され、複数の一次キャッシュに対して1つの二次キャッシュが接続される。 [0123] The arithmetic unit is connected to a dedicated primary cache, one secondary cache for a plurality of primary cache are connected. 遠距離の一次キャッシュへの転送に関しては、二次キャッシュを介して転送される。 For the transfer of the long distance to the primary cache, it is transferred via the secondary cache. 一次キャッシュと二次キャッシュの間のデータバスの接続はクロスバ接続であり、転送スループットを確保する。 Connection of the data bus between the primary cache and the secondary cache is crossbar connection, to ensure the transfer throughput.
ただし、クロスバ接続の組みあわせは4つ程度に限定し、配線規模の増大を防ぐ。 However, combination of crossbar connections is limited to the extent of four, prevent an increase of the wiring scale.

【0124】本発明のプロセッサにおいては、隣接しないキャッシュ間の転送は即座には行われない。 [0124] In the processor of the present invention, the transfer between non-adjacent cache is not performed immediately. 二次キャッシュにいったん格納されてから伝達される。 It is transmitted after being temporarily stored in the secondary cache.

【0125】ここで、データの書きこみを行ったスレッド自身が同じデータを読み込む場合を考える。 [0125] In this case, consider the case where the thread itself was writing of data is read the same data. キャッシュ間の転送が間に合わなければ、自分自身のデータも読めないことになる。 If in time the transfer between the cache, it will not be read also data of their own. しかし、キャッシュ間の転送はスレッドの進行に間に合えば良いため、多少のレイテンシの遅れは許される。 However, transfer between the cache because it Maniae to thread progression of, delay of some of the latency is allowed.

【0126】特に、二次キャッシュ間の長距離配線、大容量の二次キャッシュは動作レイテンシが遅くなる傾向がある。 [0126] In particular, long-distance wiring between the secondary cache, the secondary cache of large capacity tend to operate latency becomes slow. ところが、二次キャッシュアクセスを長距離の演算ユニットの間の転送に用いれば、その距離の間のスレッドの進行に間に合えば良いため、キャッシュ動作レイテンシを隠蔽できる。 However, the use of the secondary cache access transfer between the long-distance operation unit, since it Maniae thread progression between the distance can be concealed cache operation latency.

【0127】異なるスレッド間では、スレッド間の同期を行わない限りデータの即座な転送を保証する必要はない。 [0127] In between the different threads, it is not necessary to guarantee the immediate transfer of data as long as that does not perform synchronization between threads. 同期を行う場合は後述する。 When performing the synchronization will be described later.

【0128】二次キャッシュは複数の一次キャッシュ、 [0128] The secondary cache includes a plurality of primary cache,
そして隣接する二次キャッシュ、三次キャッシュからの要求をすべて受理することになる。 The adjacent secondary cache, will accept all requests from the L3 cache. これらの転送スループットは膨大なものとなり、同時に複数の要求を受理しなくてはならない。 These transfer throughput becomes enormous, it must accept multiple requests at the same time. しかし、同時に複数の要求を完全に受理できる、マルチポートのメモリ回路は規模も大きく、速度も遅い傾向がある。 However, it is completely accept multiple requests at the same time, the memory circuit of the multi-port scale is large, speed tends to be slower.

【0129】そのために、一次キャッシュは複数のロードストアユニットに接続する。 [0129] To this end, the primary cache is connected to a plurality of load store unit. 逆に1つのロードストアユニットからは、複数の一次キャッシュをアドレスによって選択する。 From one load store unit Conversely, selected by the address a plurality of primary cache. 二次以上のキャッシュは複数のバンクに分割し、同様にアクセスするアドレスによってバンクを選択する。 Secondary or more cache is divided into a plurality of banks, it selects a bank by the address to be accessed as well. 同時に同じバンクへのアクセスが重なった場合は、片方のアクセスを停止させる必要がある。 If the access to the same bank are overlapped with each other at the same time, it is necessary to stop the one of access. ただし、本発明のプロセッサのキャッシュ間のデータ伝送は、スレッドの進行に間に合えば良いため、多少の衝突による遅れは許容される。 However, the data transmission between the processor of the present invention the cache, since it Maniae thread progression are tolerant of delays due to slight collision. この機構によって、確率的に多ポートのキャッシュに近いスループットを確保できる。 This mechanism can be secured throughput close to stochastically multi-port cache.

【0130】データのコピーを持つ別のキャッシュを特定するためには、バススヌープ方式とディレクトリ方式の2つの方法がある。 [0130] To identify the different cache with a copy of the data, there are two ways bus snoop method and directory method. バススヌープ方式は、共有の可能性のあるデータを共通のバスに出力し、全てのプロセッサが共有状態かどうかを判定する方式である。 Bus snooping method outputs data that may share a common bus, all the processors is a system determines whether the shared state. このバススヌープ方式の利点は、共有判定のための外部回路が単純であること、複数のプロセッサへの同時転送が可能であることである。 The advantage of this bus snoop protocol is that the external circuitry for sharing determination is simple, is that it is possible to simultaneously transfer to a plurality of processors. 欠点は、すべての外部メモリアクセスがメモリバスを占有して、全体の転送スループット性能を低下させる点と、すべてのプロセッサが自身のキャッシュをアクセスしてコピーを持つかどうかのチェックを行う必要があるという点である。 The disadvantage is, all external memory accesses is occupying the memory bus, it is necessary to perform a point to reduce the overall transfer throughput performance, whether checking all processors have a copy by accessing its own cache is that. 市販されているスーパースカラ型マイクロプロセッサはバススヌープ方式を採用することが多い。 Superscalar microprocessor available often employ a bus snoop protocol.

【0131】これに対して本発明のプロセッサは、データの転送スループットが重要であり、かつデータの転送相手を限定する必要がある。 [0131] processor of this invention, on the other hand, the transfer throughput of data is important, and it is necessary to limit the transfer destination of the data. そのため、共有するプロセッサを明示的に指定するディレクトリ方式を採用する。 Therefore, employing a directory-based protocol to explicitly specify the processor to be shared.
ディレクトリ方式は、キャッシュの内部にデータの共有相手を特定するための情報を持つ。 Directory system has information for identifying who to share data within the cache.

【0132】図23にディレクトリ方式階層キャッシュのロードにおける挙動を示す。 [0132] shows the behavior in the load of the directory system hierarchy cache in Figure 23. 演算ユニットからのロードの場合、一次キャッシュ内部にデータがない場合に限り、二次キャッシュから一次キャッシュに向けてデータを転送し、二次キャッシュに共有状態を設定する。 For load from the arithmetic unit, only if there is no Primary cache data therein, and transfers the data to the primary cache from the secondary cache, set the shared state in the secondary cache. すでに二次キャッシュのデータが共有状態となっている場合は、ディレクトリビットの示す一次キャッシュに対して共有状態を設定する。 If you already data in the secondary cache is a shared state, setting the shared state to the primary cache indicated by the directory bits.

【0133】図24は、ディレクトリ方式階層キャッシュのストアにおける挙動である。 [0133] FIG. 24 is a behavior in the directory system hierarchy cache of the store. 一次キャッシュへの書きこみの際に、一次キャッシュのエントリが共有状態となっている場合は二次キャッシュに書きこみを通達する。 During writing to the primary cache, if an entry in the primary cache is in the shared state to notice the write to the secondary cache. 二次キャッシュはディレクトリビットの示す共有相手に対してのみ、直接キャッシュエントリの無効化(インバリッド)を通知する。 Secondary cache is only to share with the indicated directory bits, and notifies invalidation (invalid) directly cache entry.

【0134】ディレクトリの指定により、一次キャッシュには確実にデータのコピーがあることが判明するため、一次キャッシュのタグの比較を行う必要なく、直接書き込みを行うことができる。 [0134] The specified directory, to find that there is a reliable copy of the data in the primary cache, it is possible to perform without the need to compare the tag of the primary cache, a write directly. ただし、セットアソシアティブキャッシュの場合は、ディレクトリビットは単体のキャッシュ内部のどのバンクにデータが格納されているかを指定する必要がある。 However, if the set associative cache, directory bit needs to specify whether data to a single which bank cache inside is stored.

【0135】同じ命令を利用するスレッドは、たとえアクセスするアドレスが異なっても命令間のデータの流れは等しい場合が多い。 [0135] threads utilize the same instruction, if there are many equal flow of data between even instruction different address if access. レジスタの場合は明示的にプログラムで示されるが、メモリに対しても同じことが言える。 While in the case of the register indicated by explicitly programmed, same is true with respect to memory. 特に、スタック、ヒープなどを利用する命令では、 In particular, stack, in order to use such as heap,
アドレスは異なっても命令間のデータの流れは等しい場合が多い。 Address data flow between instructions be different often equal.

【0136】本発明のプロセッサでは、同一スレッド内部でのキャッシュミスを極力減らすために、たとえキャッシュの共有情報がなくても、ストアされたデータを可能な限り事前にロード命令に渡す必要がある。 [0136] In the processor of the present invention, in order to reduce cache misses within the same thread as much as possible, even without sharing information cache, it is necessary to pass to the load instruction in advance as possible stored data.

【0137】そのために、命令アドレスに対してデータフロー予測情報と呼ぶ情報を設ける。 [0137] For this purpose, provided the information is referred to as a data flow prediction information to the instruction address. データフロー予測情報がマークされた命令は、ロード、ストア命令で使用したのデータを自動的に次のロード命令に伝達する。 Instruction data flow prediction information is marked transmits loads, automatically following the load instruction data used by the store instruction. そのために、データフロー予測情報には、伝達先のキャッシュを特定する値が格納される。 Therefore, the data flow prediction information, the value for identifying the transmission destination of the cache are stored. データフロー予測情報は、命令によって明示的に組み込むことも、自動的にプロセッサが書きこむことも可能である。 Data flow prediction information, it can also be automatically processor writes incorporated explicitly by the instruction.

【0138】データフロー予測情報は、プログラムで明示的に記述するのが簡単だが、既存のソフトウェアとの互換性、そして条件によってデータアドレスが動的に変更される場合に対処するために、ハードウェアで自動的に設定するのが望ましい。 [0138] Data flow prediction information, but easy to explicitly written in the program, in order to cope with the case where the data address is dynamically changed by the compatibility, and the conditions of the existing software, hardware in automatically it is desirable to set.

【0139】図19に、データフロー予測情報の書きこみ動作を示す。 [0139] FIG. 19 shows a write operation of the data flow prediction information. ロードストアユニット1907における、最初の命令実行でキャッシュミスを起こした命令は、キャッシュの共有状態からデータの実体の位置を知る。 In the load store unit 1907, the instruction that caused the cache miss at the first instruction execution, know the location of the entity of data from the shared state of the cache. そして、データの実体のあるキャッシュ1904からデータを取得すると同時に、データの実体を持つキャッシュ1904に向けて、自分の演算ユニット1906 Then, at the same time to retrieve data from the cache 1904 with a physical data, toward the cache 1904 with the entity of data, their operation units 1906
を示す値を送る。 Send a value that indicates. こうして、データの実体のあるキャッシュ1904は命令キャッシュ1901にデータフロー予測情報を書きこむ。 Thus, the cache 1904 with a physical data writes the data flow prediction information in instruction cache 1901.

【0140】(命令キャッシュ) [0140] (instruction cache)

【0141】本発明のプロセッサでは、複数のスレッドが同じ命令を利用し、同じ命令は同じ演算ユニット、データキャッシュを利用するのが望ましい。 [0141] In the processor of the present invention, multiple threads using the same instruction, the same operation unit is the same instruction, it is desirable to utilize a data cache. そのためには、発行されたスレッドがプログラムカウンタから命令キャッシュの場所を特定し、自由にスレッドを移動させることが必要になる。 For this purpose, it issued thread to locate the instruction cache from the program counter, becomes freely be necessary to move the thread.

【0142】図18は、分岐によるスレッド移住の方法を示す模式図である。 [0142] Figure 18 is a schematic diagram showing a method of thread immigration by the branch. 一次キャッシュ1803などに格納された命令は、二次キャッシュ1801に格納されたディレクトリに共有状態を設定する。 Instructions stored like the primary cache 1803, sets the shared state in the directory stored in the secondary cache 1801. 命令キャッシュ1 The instruction cache 1
808の命令キャッシュミスか、分岐命令1806による要求によって二次キャッシュ1801にアクセスしたスレッドは、ディレクトリビットによって該当する命令が格納されている命令キャッシュ1802の位置を知り、その命令キャッシュに向けてスレッドを移住させる。 808 or instruction cache miss, the thread that accesses the secondary cache 1801 by a request by the branch instruction 1806, to know the position of the instruction cache 1802 applicable instructions by the directory bits are stored, the thread toward the instruction cache to immigration.

【0143】どの命令キャッシュにも命令が格納されていない場合は、スレッドの情報を動かさずに、分岐命令の直後、あるいはキャッシュミスを起こしたキャッシュ1808に対してスレッドを再発行を行う。 [0143] which instruction when the instruction is also in the cache is not stored, without moving the thread information, to re-issue a thread for immediately after the branch instruction or a cache 1808 that caused the cache miss. 二次キャッシュ1801あるいは外部メモリから取得した命令は、 The instructions obtained from the secondary cache 1801 or the external memory,
命令キャッシュ1808に格納されて、スレッドを再開する。 Stored in the instruction cache 1808, to resume the thread. 次に同一の命令を実行する場合には、命令キャッシュ1808にすでに分岐先の命令が格納されていて、 When executing the same instructions it will already be stored branch target instruction is in the instruction cache 1808,
分岐のペナルティーも発生しない。 Penalty of the branch does not occur.

【0144】スレッド管理ユニット1807が、他の優先順位の高いスレッドが充満していて空きがない場合は、やはりスレッドの移住を行う。 [0144] thread management unit 1807, if there are no free is thread other high priority is not filled, still perform the thread migration. その場合は、スレッド管理ユニットからの通信で、スレッドの負荷の低いスレッド管理ユニット1809を探し出し、スレッドを移住させる。 In that case, the communication from the thread management unit, locate the lower thread management unit 1809 of the thread load, thereby resettled thread.

【0145】この機構によって、同一命令を最大限に再利用することができる。 [0145] This mechanism can be reused the same instruction to the maximum. さらに、従来のPMT方式と異なり、スレッドは命令アドレスにかかわりなく、自由に演算ユニットに分配できる。 Furthermore, unlike the conventional PMT method, the thread irrespective of the instruction address can be distributed freely arithmetic unit.

【0146】本発明のプロセッサは、厳密な分岐命令にスレッドの移住が必要であるため、分岐命令の実行の頻発を避ける必要がある。 [0146] processor of this invention, since it is necessary to thread migration strict branch instruction, it is necessary to avoid the frequent execution of the branch instruction. 分岐はマルチスレッドによって隠蔽は可能であるが、スレッドの発行能力には上限があるためである。 Branch is susceptible is hidden by multi-thread, the thread issuing capability of is because there is an upper limit.

【0147】そのために、命令アドレスとは無関係に命令を配置する。 [0147] To this end, to place the independent instruction and the instruction address. 格納される命令の順序は、確率的に命令が実行されると予測される順序である。 The order of instructions stored is the order in which they are expected to stochastically instruction is executed. そして、予測された分岐方向を示す分岐予測情報をキャッシュのタグメモリに配置する。 Then, place the branch prediction information indicating the predicted branch direction in the tag memory of the cache. 分岐予測情報は演算ユニットに送られ、分岐命令の実行結果と照合されて不一致の場合はスレッドを停止させる。 Branch prediction information is sent to the arithmetic unit, is matched with the execution result of the branch instruction is not matched to stop the thread.

【0148】キャッシュのタグメモリに次の命令アドレスを示す値を置くことで、分岐命令の実行前に隣接する命令キャッシュから命令を取得させることもできる。 [0148] By placing a value indicating the next instruction address in the tag memory of the cache, it is also possible to obtain the instruction from the instruction cache adjacent before execution of the branch instruction. この機構によって、PC相対分岐だけではなく、レジスタの示すアドレスへの分岐を予測することもできる。 This mechanism not only PC relative branch, it is also possible to predict a branch to the address indicated by the register.

【0149】同時に、前述のデータフロー同期情報も命令キャッシュのタグメモリに格納する。 [0149] At the same time, also stored in the tag memory of the instruction cache data flow synchronization information described above. これによって、 by this,
同じ命令を利用する限りは、すべてのスレッドから1つの分岐予測、データフロー予測情報を共有することができる。 As long as using the same instructions, one branch prediction from all threads, it is possible to share data flow prediction information.

【0150】図13に、本発明の命令キャッシュにおけるタグメモリの構造を示す。 [0150] Figure 13 shows the structure of a tag memory in the instruction cache of the present invention. 命令キャッシュにはそれぞれ命令ごとに数ビットの分岐予測情報、あるいはデータフロー予測情報が格納されている。 Branch prediction information of several bits per each of the instruction cache instruction or data flow prediction information is stored. 発行された命令が分岐命令の場合は、分岐予測情報として使用し、発行された命令がロードストア命令の場合は、データフロー予測情報として利用する。 If issued instruction is a branch instruction is used as the branch prediction information, the issued instruction is the case of a load store instruction is used as the data flow prediction information. 命令ごとの予測情報のビット幅は、実行ユニットの数から決定される。 Bit width of prediction information for each instruction, is determined from the number of execution units. データフローユニットが目的とする実行ユニットを特定するためである。 Data flow unit is because to identify the execution unit of interest.

【0151】また、分岐命令の実行とは独立して次の命令キャッシュのアドレスを特定するために、次の命令アドレスを示す値が格納されている。 [0151] Further, independently of the execution of a branch instruction in order to identify the address of the next instruction cache, a value that indicates the next instruction address is stored. この値によって、条件分岐だけではなく、オブジェクト指向言語の仮想関数に代表される、レジスタ値への分岐も予測することができる。 This value not only conditional branch, represented by the virtual function object-oriented languages, a branch to the register values ​​can be predicted.

【0152】(仮想記憶と同期) [0152] (virtual memory and synchronization)

【0153】仮想記憶ユニットは、可能であれば全ての演算ユニットから共有することが望ましい。 [0153] Virtual memory unit, it is desirable to share all of the arithmetic units if possible. 理由は、複数のプロセスが共存する場合は、要求される仮想記憶のエントリの数も増大するためである。 Because, when a plurality of processes coexist, the number of the virtual storage entry is also required in order to increase. 更に、仮想記憶ユニットが分散した場合は、その内容のほとんどが重複するためである。 Further, when the virtual storage units are dispersed, because most of the contents overlap.

【0154】本発明のプロセッサは、内蔵するキャッシュをすべて仮想空間で管理する。 [0154] processor of the present invention, managed by all of the cache to be built in the virtual space. メモリへのアクセスの時だけ、物理アドレスに変換するためにグローバルTL Only when access to the memory, the global TL in order to convert the physical address
Bを用いる。 Using B.

【0155】仮想キャッシュは、複数のプロセスが共存するために、異なるプロセス空間のキャッシュをアクセスしない機構が必要になる。 [0155] virtual cache, since a plurality of processes coexist, it is necessary mechanism not access the cache of a different process space. そのために、キャッシュのタグメモリにはプロセスIDの情報を持たせ、キャッシュヒットの確認ごとにプロセスIDの一致確認を行う。 Therefore, in the tag memory of the cache to have information of a process ID, performs match verification process ID for each confirmation of a cache hit.

【0156】(データフロー同期) [0156] (data flow synchronization)

【0157】一般的にマルチスレッドの同期は、あるスレッドからの書き込みをトリガにして直接別のスレッドを起動する方式がもっとも単純かつ有効である。 [0157] Synchronization of generally multi-thread, a method of starting a direct another thread by writing from one thread to the trigger is most simple and effective. この方式はデータフロー方式とよばれ、プログラムモデルから見てもっとも単純な方式である。 This method is referred to as data flow system, it is the most simple manner as viewed from the program model. プログラム上では、あるアドレスへのデータライトを自動的に感知してスレッドを再開するように設定するだけである。 In the program, it is only set to resume a thread sensing the data write to a certain address automatically.

【0158】この機構の実装のために、仮想記憶とデータキャッシュに特別な機構を設ける。 [0158] for the implementation of this mechanism, providing a special mechanism in the virtual storage and data cache. 仮想記憶には、あるアドレスのライトアクセスがあった場合にスレッドを生起する情報を書き込んでおく。 The virtual memory, is written information that occurs threads when there is a write access certain addresses. そのアドレスを含むデータメモリをデータキャッシュに読み込む際に、データフロー参照がある情報も同時に取得する。 When reading data memory containing the address to data cache, also simultaneously acquired information with data flow references.

【0159】データキャッシュ側には共有ビットを書き込むだけとなる。 [0159] the only writing the shared bit in the data cache side. 形としては、TLBのデータフロー同期エントリとデータを共有するという形になる。 The shape, made in the form of sharing data flow synchronization entry and data TLB. これによって、各キャッシュエントリにはデータフロー同期情報を持たせる必要はない。 Thus, it is not necessary to have a data flow synchronization information in each cache entry. 前述のディレクトリ共有機構で十分であり、TLBから二次キャッシュに向けてデータフロー同期の開始を伝達する。 Is sufficient in the above directory share mechanism, it transmits the start of data flow synchronization towards a secondary cache from TLB.

【0160】厳密なメモリ共有機構では、ある時点での共有メモリの状態は、どのプロセッサから見ても同じであることが要求される。 [0160] with a strong memory sharing mechanism, the state of the shared memory at some point, even when viewed from any processor that is the same is required. ところが、この厳密なメモリ共有は、キャッシュの搭載や、メモリの階層分割によって現実には不可能になりつつある。 However, the exact memory sharing is mounted and cache becoming impossible in reality by a hierarchical division of the memory. そのため、近年ではプロセッサの仕様の方を変更し、同期命令前後のデータアクセスの順序だけを維持するように定義を変えた。 Therefore, in recent years it changed towards the specification of the processor, changing the definition to maintain only the order of the data access before and after the synchronization instruction. プロセッサの種類によって細かい違いはあるが、基本的にはこれをルーズコンシステンシと呼ぶ。 There is a fine difference depending on the type of processor, but basically this is referred to as a loose consistency.

【0161】本発明のプロセッサでは、同期命令は他の演算ユニットからのデータの書きこみを待ち、すべて到達した時点でスレッドを再開する。 [0161] In the processor of the present invention, the synchronization instruction waits for write data from the other arithmetic unit resumes a thread at all when it reaches. ところが、遠距離の演算ユニットには制御信号が即座に届かないため、同期命令までに実行されたストアかどうかの判定は厳密には不可能である。 However, since the control signal for long distance operation unit it does not reach the real determination of whether the store is performed until the synchronization instruction is strictly impossible.

【0162】そのために、同期命令における「同時」の定義を変更する。 [0162] For this reason, to change the definition of "simultaneous" in synchronization instruction. たとえ実時間では後に実行されたストア命令も、同期命令の再開までに伝達が間に合った場合には時勢的に前だとみなす。 Even store instruction executed later in real time, regarded that it prior to the times manner if in time for the transmission until the resumption of the synchronization instruction.

【0163】そして、同期とは、PMTパイプラインを一周回分待ち合わせて、他のスレッドの、「同時」の時間以前に実行された全てのストアを受理するまで待つこととする。 [0163] The synchronization and is waiting around times the PMT pipeline, the other thread, and wait until you accept all of the store, which is the execution time to the previous "simultaneous". これによって、単体のスレッドの場合と同じく、全てのスレッドのデータ転送はスレッドの移動に間に合えば良い。 Thus, as in the case of a single thread, the data transfer of all threads may Maniae thread movement. パイプラインが一周した時点でスレッドを再開させるが、その時点では同期命令「以前」の全てのストアは実行され、再開地点以降のデータキャッシュに格納されている。 Although the pipeline to resume the thread at the time of the round, that is all of the store of the synchronization instruction at the time "before" is performed, is stored in the data cache after the resumption point.

【0164】この方法によって、全てのスレッドにわたって、同期変数の前後のメモリアクセスの順序を保持することができる。 [0164] By this method, across all threads, it is possible to preserve the order of the front and rear memory access synchronization variables. なおかつ、同期中に他のスレッドの動作が可能になり、性能へのペナルティーも隠蔽できる。 Yet, it allows the operation of the other threads during synchronization, can also hidden penalty on performance.

【0165】図25に本発明のプロセッサにおける同期の動作を示す。 [0165] A synchronization operation in the processor of the present invention in FIG. 25. スレッドBからのStoreAは、スレッドAのLoadAで読み込むことが出来る。 StoreA from the thread B can be read by LoadA of thread A. スレッドAのSYNC命令より実時間的には後に実行されているにもかかわらず、SYNC命令の再開までにキャッシュの伝達が終了しているためである。 Despite being executed after the real-time than the SYNC instruction in the thread A, it is because the transmission of the cache until the resumption of the SYNC instruction is completed. 仮想時間的に前かどうかの判断基準は、前のSYNC命令のパイプラインの到達よりも早いかどうかで決定すれば十分である。 Criteria whether before virtually time, it is sufficient to determine on whether earlier or than the arrival of the previous pipeline SYNC instruction. こうして、複数のSYNC命令間で、SYNC命令前後のデータ格納順序を保つことができる。 Thus, among a plurality of SYNC instruction, it is possible to keep the data storage order before and after the SYNC instruction.

【0166】さらに、従来のプロセッサと異なり、SY [0166] In addition, unlike the conventional processor, SY
NC命令で他のスレッドを止める必要はなく、SYNC It is not necessary to stop the other threads in the NC instruction, SYNC
命令の伝達もスレッドと同じ速度で伝達すれば十分である。 Transfer instruction is also sufficient transmission at the same speed as the thread.

【0167】図26に、ソフトウェアモデルから見た同期の動作について示す。 [0167] FIG. 26 illustrates the synchronization of operations as seen from the software model. スレッドAのSYNC命令の前に実行されたスレッドBのStoreAは、仮想時間では前に実行されたSYNC命令のさらに前に行われているため、スレッドAから読み込むことができる。 StoreA execution thread B before the SYNC instruction in the thread A is because it is done more before the SYNC instruction executed before the virtual time, it can be read from the thread A.

【0168】スレッド間の同期は、同期変数へのアクセスに対して、明示的にOSのソフトウェアによるスケジューラを起動して管理することが多い。 [0168] The synchronization between threads, for access to the synchronization variable, explicitly is often manage to start the scheduler by the software of the OS. しかし、前述のデータフロー同期機構を自動的に利用すれば最も高速である。 However, it is fastest if automatically use the aforementioned data flow synchronization mechanism.

【0169】具体的には、あるデータをロードする同期命令の実行によって、データフロー同期ユニットにそのスレッドの状態とロードアドレスを転送する。 [0169] Specifically, by execution of the synchronization instruction to load certain data, and transfers the state and load address for the thread to the data flow synchronization unit. スレッドはその時点でスリープする。 Thread to sleep at that time. データのストアはデータフロー同期ユニットとディレクトリ方式キャッシュコヒーレンシによって判定されて、待ち状態のスレッドを直接起こすことができる。 Store data is determined by the data flow synchronization unit and a directory system cache coherency, can cause thread wait state directly.

【0170】(パケット制御信号) [0170] (packet control signal)

【0171】既存のスーパースカラ、VLIW方式に代表される命令レベル方式では、信号は可能な限り速く伝達することを要求される。 [0171] Existing superscalar, the instruction-level system represented by VLIW system, signals are required to transmit as fast as possible. ところが、回路規模が大きくなるとそれは現実的には不可能になる。 However, when the circuit scale becomes large it would be practically impossible. 理由は主に3つある。 The reason is mainly threefold. まず、微細化が進むと、配線遅延の比率が大きくなる。 First, the miniaturization, the ratio of the wiring delay is increased. さらに回路規模が大きくなると、回路間の配線が爆発的に増大する。 When the addition circuit scale is increased, wiring between circuit is increased explosively. さらに、周波数が高くなると、隣接する配線間のクロストークやグラウンドバウンスが問題となる。 Furthermore, as the frequency increases, the crosstalk and ground bounce between adjacent wirings becomes a problem. 前者の対処としては、配線を短縮するか、配線間の距離を大きくとりシールドする必要が出てくる。 The former of the deal, or to shorten the wiring, it becomes necessary to increase take shield the distance between the wiring. 後者の対処には、電源配線を配線に対して最適化して、電流ループの大きさを最小限にする必要がある。 The latter in the deal, and a power supply wire optimized for wiring, it is necessary to minimize the magnitude of the current loop.

【0172】それに対して、PMT方式は、隣接するユニットを除き、制御信号の伝達は多少の遅れが許される。 [0172] In contrast, PMT scheme, except for the adjacent units, the transmission of the control signal is allowed some delay. ということは、長距離の信号伝達に使用される信号線を、複数の信号が共有することができる。 That is, the signal lines used in the signal transmission long distance, a plurality of signals can be shared. こうして、 In this way,
長距離の配線の本数を最小限にする。 To minimize the number of long-distance wiring.

【0173】更に、長距離の配線は一気に送ってしまうのではなく、中継する回路で受け止めてシフトレジスタ的に順に送ることができる。 [0173] In addition, long-distance wiring is not from being sent at once, it can be sent to the shift register to order received by the circuit to relay. こうして、1クロックの間で伝送するのはルーター間の距離だけで済み、制御信号が動作周波数の向上を阻害することは無くなる。 Thus, only need a distance between the routers to transmit between one clock, which eliminates the control signal inhibits the improvement of the operating frequency. 中継のためのルーターやラッチの規模が大きくなるという欠点はあるが、それは半導体のプロセスの向上の恩恵をそのまま受けることが出来て、相対的な影響は少なくなる。 There is disadvantage that a scale of a router or a latch for relay increases, but it is able to receive as a benefit of improvement of semiconductor process, the relative impact is reduced.

【0174】個々の配線を最小限の長さにして、信号伝送の多少の遅れを許容することにより、その配線のドライブを行うトランジスタの駆動電流を不必要に上げる必要がなくなり、信号の高周波成分の増加を抑制することができる。 [0174] Individual wiring with minimum length, by allowing some delay of signal transmission, it is unnecessary to increase the driving current of the transistor for driving the wires unnecessarily, the high frequency component of the signal it is possible to suppress the increase of the. これはクロストークやグランドバウンスなどの抑制につながり、これらの対策に必要な回路の増加を防ぐこともできる。 This leads to suppression of such cross talk and ground bounce, it is also possible to prevent an increase of the circuit required for these measures.

【0175】遅延時間に関しては、PMT方式の隣接ユニット以外の転送レイテンシを許容する特性によって問題にならなくなる。 [0175] For delay time is not a concern with characteristics that permit the transfer latency of the non-adjacent units of the PMT system. こうして、並列度を維持し、回路規模を最小限に維持しながら周波数性能の向上を可能にする。 Thus, to maintain a degree of parallelism, allowing a higher frequency performance while maintaining the circuit scale to a minimum.

【0176】パケット制御信号は、データ転送などの目的ではアドレス、データとともに送られる。 [0176] packet control signal, for the purpose of data transfer address is sent along with the data. すなわち、 That is,
アドレス、データを転送するパケットは、アドレスバス、データバスの空きをスレッドバッファで待ち合わせることになる。 Address, the packet forwarding data would wait address bus, data bus free thread buffer. これによって、各バスのアービトレーションはパケットルーターが一括して処理することができる。 Thus, for each bus arbitration can be a packet router collectively processes.

【0177】本発明のプロセッサは、命令キャッシュ、 [0177] processor of the present invention, the instruction cache,
演算ユニット、外部インターフェースなどのユニットごとにパケットルーターを随所に配置し、遠距離の制御信号の伝達の中継を行う。 Operation unit, arranged packet router throughout each unit such as an external interface, to relay the transmission of long distance of the control signal. パケットルーターには、複数のパケットルーターと送受信を行うためのバスを持ち、必要に応じてデータバスなどの補助的なバスを並行して設ける。 The packet router has a bus for a plurality of packets router and reception, provided in parallel auxiliary bus, such as a data bus as required.

【0178】個々のパケットルーターは一意の番号を割り振られる。 [0178] The individual packet router is assigned a unique number. 番号はスレッドの進行方向にあわせて昇順に割り振られ、付随するバス信号、伝達先のユニットによって一意にルーティングの方法も決定される。 Numbers are assigned in ascending order in accordance with the traveling direction of the thread, associated bus signals, a method of uniquely routed by the transmission destination unit is determined.

【0179】このパケット制御信号によって、隣接するユニットを除く全てのユニットへの制御が行われる。 [0179] This packet control signal, control to all units except the adjacent units is performed.

【0180】本発明のプロセッサにおけるパケットは、 [0180] packet in the processor of the present invention,
到達予定時間の情報をパケット情報に含む。 Including the information of the scheduled arrival time to the packet information. この時間とパケットルーターの持つタイミングカウンタを照合することにより、パケットが予定通り伝達されているかどうかを判定する。 By matching the timing counter with the the time and packet router determines whether the packet is transmitted as scheduled.

【0181】パケットが遅滞している場合は、並行して走るスレッドに対して即座にパイプラインストールを要求して、スレッドを止める。 [0181] If the packet is delay may request the immediate pipeline stall for the thread that runs in parallel, to stop the thread. パケット遅延の例外処理を発行して、OSレベルのソフトウェアが対処を行ってスレッドを再開させる。 By issuing the exception processing of packet delay, OS-level software is to resume the thread corrective action.

【0182】本発明のプロセッサは、各ユニットの内部状態を全ての演算ユニットから監視、改変することを可能にする。 [0182] processor of this invention, monitors the internal state of each unit from all arithmetic units, makes it possible to alter. そのために、演算ユニットからの要求をパケットに変換し、パケットルーターを利用して順次伝達する。 Therefore, to convert a request from the arithmetic unit to the packet, sequentially transmitted using a packet router. 伝達先のユニットは、内部状態を含んだパケットを送信元の演算ユニットに伝送する。 Units of the transmission destination, transmits the packet including the internal state to the source of the operation unit. なお、ロードのためのレイテンシは無論マルチスレッドで隠蔽される。 In addition, the latency for the load is concealed in the course multi-threaded.

【0183】(プロセッサ間通信) [0183] (inter-processor communication)

【0184】本発明のプロセッサを複数利用する際に、 [0184] The processor of the present invention at the time of multiple use,
本発明の内部の演算ユニットと同じように、プロセッサをリング状に連結すれば、プロセッサ間転送スループットを最大にすることができる。 As with the interior of the arithmetic unit of the present invention, when connecting the processor to the ring, inter-processor transfer throughput can be maximized. これによって、1つのスレッドは複数のプロセッサにわたって展開することができ、命令、データ共有の利点を最大限に生かすことができる。 Thus, one thread can be deployed across multiple processors can be exploited instruction, the benefits of data sharing as possible.

【0185】だが、本発明のプロセッサの内部と同じく、データの転送にはパイプラインの隣接転送だけではなく遠距離の転送も考えられる。 [0185] However, as with the internal processor of the present invention, long distance transport are also contemplated as well as the adjacent transfer pipeline for data transfer. リング方式転送の欠点は遠距離に伝送するのが難しいという点である。 A disadvantage of the ring method transfer is that it is difficult to transmit a long distance. そのために、遠距離の演算ユニット間同士でショートカットパスで伝送することは、全体の転送速度を大きく向上させる。 Therefore, it improves significantly the overall transfer rate for transmitting the shortcut path between long distance arithmetic unit.

【0186】このような転送はレイテンシ時間が増大するものであるが、複数のプロセッサ間での通信はそれらの間のパイプライン全てを通過する時間で行われれば良いため、数十クロック以上のレイテンシが許される。 [0186] Such transfer is to increase the latency time, because the communication between multiple processors may if done in time through the pipeline every therebetween, several tens or more clock cycles latency It is allowed. このため、プロセッサ外の低速インターフェースには最適である。 Therefore, the low-speed interface outside processor is optimal.

【0187】本発明のプロセッサでは制御信号をパケット化しているため、同じ制御信号を複数のプロセッサに分配できる。 [0187] Since the processor of the present invention are packetized control signals, can distribute the same control signal to a plurality of processors. ユニットを指定するための識別コードを拡張し、全てのプロセッサを一意に表現することで、マルチプロセッサに向けて自由に制御信号パケットを伝送できる。 Extends the identification code for specifying unit, by uniquely represent all of the processors, it can be transmitted freely control signal packet to the multiprocessor.

【0188】本発明のプロセッサを複数利用する際には、個々のプロセッサに個別にメモリを接続する。 [0188] When use of multiple processors of the present invention, connects the memory individually to individual processors. 各プロセッサがデータの実体の場所を特定するために、個々のプロセッサが持つ仮想記憶を利用する。 For each processor to identify the location of the entity of data, using virtual memory with the individual processors. この場合、仮想記憶のエントリはそれぞれコピーを持つことになり、 In this case, the respective entries of the virtual storage having a copy,
キャッシュと同じ共有管理を行うことになる。 It will be performed the same shared management and cache. そのために、仮想記憶には共有状態を示すビットを設ける。 Therefore, the provision of a bit indicating shared state in the virtual storage. ただし、オリジナルは常にメモリに接続された仮想記憶となる。 However, the original will always be connected to virtual storage in the memory.

【0189】仮想記憶の改変の際には、キャッシュのフラッシュと同時に、他の仮想記憶に改変を直接伝達する。 [0189] When the modification of the virtual storage is simultaneously transmitted with the cache flush, modifications to other virtual storage directly. 改変を伝達された仮想記憶は、共有状態に応じてそれぞれキャッシュのフラッシュを実行する。 Virtual memory transfer modification, respectively executes cache flushing in accordance with the shared state.

【0190】本発明のプロセッサ同士で、データの共有がある場合は、仮想記憶のページ単位でデータの共有情報を設定する。 [0190] In the processor between the present invention, when there is a sharing of the data sets shared information data in units of pages of virtual memory. キャッシュラインごとのビットを持つことができないため、ページ全体が共有状態の場合はその都度内部キャッシュのタグにアクセスして確認する必要がある。 It is not possible to have a bit for each cache line, if the entire page of the shared state needs to be confirmed by accessing the tag of each time internal cache.

【0191】まず、プロセッサから外部にロードストア要求を行うケースについて述べる。 [0191] First of all, we describe the case to perform a load store request from the processor to the outside. まず、ロード命令では、キャッシュにエントリがない場合、あるいはTLB First, in the load instruction, if there is no entry in the cache, or TLB
に対して共有状態が指定されている場合は、TLBを介してプロセッサ外部からデータを取得する。 If the shared state is specified, it acquires data from the processor outside via the TLB against. TLBにアクセスを行い、ローカルメモリではなく外部のメモリとデータを共有している場合は、プロセッサ外部にリード要求を出す。 For accesses to TLB, when sharing the external memory and data rather than the local memory issues a read request to the processor outside.

【0192】ストア命令では、二次キャッシュにTLB [0192] In the store instruction, TLB to the secondary cache
への共有状態が設定されていることにより、TLBへのアクセスを行う。 By sharing state to have been set, and accesses the TLB. 共有状態に設定されている場合は、データのコピーの無効化(インバリッド)を通達する。 If set to shared state, the notification disabling copying of data (invalid).

【0193】次に、プロセッサ外部からロード要求を受理した場合について述べる。 [0193] Next, we describe the case of acceptance of load request from the outside of the processor. 受理した仮想アドレスに対して内部のTLBへのアクセスを行う。 Providing access to the inside of the TLB against acceptance virtual address. 内部キャッシュで共有状態に設定されている場合は、内部のキャッシュに仮想アドレスでアクセスして、プロセッサ外部にデータを伝達する。 If it is set to the shared state in the internal cache, and access a virtual address within the cache, to transfer the data to the processor outside.

【0194】次に、プロセッサ外部からインバリッド要求を受理した場合も、同様に受理した仮想アドレスに対して内部のTLBへのアクセスを行う。 [0194] Next, the case of acceptance of invalid request from the processor externally, provide access to the interior of the TLB for the virtual address received in the same manner. 内部キャッシュで共有状態に設定されている場合は、内部のキャッシュに仮想アドレスでアクセスして、内部キャッシュにインバリッドを伝達する。 If it is set to the shared state in the internal cache, and access a virtual address within the cache, transmitting invalid in the internal cache.

【0195】なお、TLBのエントリがない場合は、O [0195] It should be noted that, when there is no TLB entries, O
Sによる仮想記憶処理を行う。 Carry out the virtual memory processing by S.

【実施例】 【Example】

【0196】(第一実施例) [0196] (the first embodiment)

【0197】図1に、本発明の第一実施例を示す。 [0197] Figure 1 shows a first embodiment of the present invention. 10 10
1は本発明のプロセッサである。 1 is a processor of the present invention.

【0198】命令発行ユニット102は、スレッド発行ユニット103、命令キャッシュ104を内蔵する。 [0198] The instruction issue unit 102, the thread issuing unit 103, a built-in instruction cache 104. スレッド発行ユニット103は、命令キャッシュ104にプログラムポインタ値を伝達して、実行ユニット105 Thread issuing unit 103 transmits the program pointer value to the instruction cache 104, an execution unit 105
に実行すべき命令を伝送する。 Transmitting instructions to be run on.

【0199】実行ユニット105は、4つの共有レジスタファイル106と、4つの16ビット演算ユニット1 [0199] Execution unit 105 includes four shared register file 106, four 16-bit arithmetic unit 1
07と、複数の特殊演算ユニット108から構成される、共有レジスタファイル106と16ビット演算ユニット107、および特殊演算ユニット108は、オペランドクロスババスで相互に接続されている。 07, composed of a plurality of specific operation unit 108, the shared register file 106 and 16-bit arithmetic unit 107 and the special arithmetic unit 108, are connected to each other at the operand crossbar bus. スレッドのレジスタ値などの状態は全て、隣接する実行ユニット1 All threads state, such as register values, run adjacent units 1
05に伝送される。 05 is transmitted to. ただし、従来のPMT方式と異なり、1つのスレッドの状態は4クロックで転送される。 However, unlike the conventional PMT method, one thread state is transferred in four clocks.
末端に到達した状態は、スレッド状態信号132によって最初の実行ユニットに伝送される。 States reached the end is transmitted to the first execution unit by the thread state signal 132. 実行ユニットからのスレッド生成、分岐発行は、分岐発行制御信号10 Threads produced from the execution unit, the branch issued, the branch issuing control signals 10
9、134によってスレッド発行ユニット103に伝達される。 It is transmitted to the thread issuing unit 103 by 9,134.

【0200】一次データキャッシュ111は8つ搭載され、そのうちの4つが1つの実行ユニット105に接続されている。 [0200] Primary data cache 111 is mounted eight, four of its being connected to one of the execution units 105. 接続にはクロスババスが使用され、同時に4つの一次データキャッシュへの任意のアクセスを可能にしている。 The connection Kurosubabasu is used, allowing any access to the same time the four primary data cache. ただし、同じデータキャッシュへの複数のアクセスがかち合った場合には、1つのアクセスだけを行い、他のアクセスを行ったスレッドをストールさせる。 However, when a plurality of accesses to the same data cache is clashed performs only one access, stalling the thread that was other access. なお、従来のPMT方式と異なり、4つの一次キャッシュはアドレス値によって特定でき、1つのスレッドからすべてのバンクに自由にアクセスできる。 Unlike the conventional PMT system, four of the primary cache can be identified by address value, free access to all banks from one thread.

【0201】4つの一次データキャッシュ111〜11 [0201] Four of the primary data cache 111-11
4は、1つのアクセスバッファ115に接続され、隣接するライトバッファと、やはり隣接する二次キャッシュ116へのデータのやり取りを行う。 4 is connected to one access buffer 115, and adjacent the write buffer, also exchanges data to adjacent secondary cache 116.

【0202】二次キャッシュ116は、2つの一次キャッシュからのアクセスバッファ115、131と、TL [0202] The secondary cache 116, the access buffer 115 and 131 from two of the primary cache, TL
Bなどのに接続されたアクセスバッファ117から要求を受理する。 To accept a request from the access buffer 117, which is connected to, such as B. 二次キャッシュユニット116は一次キャッシュと異なり、命令もデータも格納する。 The secondary cache unit 116 is different from the primary cache, also be stored data instructions. そして、二次キャッシュも複数の要求を受理するために複数のバンクに分けられてる。 The secondary cache is also divided into a plurality of banks in order to accept multiple requests.

【0203】アクセスバッファ117は、二次キャッシュ116からの要求によって外部とのアクセスを行う際に、データのバッファリングを行う。 [0203] access buffer 117, when performing access to the outside by a request from the secondary cache 116 performs buffering of data.

【0204】新規スレッド発行ユニット127は、割り込み信号126の入力に応じて、内部に蓄積した待機状態のスレッドを発行する。 [0204] new thread issuing unit 127, in response to the input of the interrupt signal 126, and issues a thread in a wait state accumulated therein. あるいは、実行ユニット10 Alternatively, the execution unit 10
5からの直接のスレッド生成要求によってスレッドを発行する。 Issuing a thread by direct thread generation request from 5. そのために、スレッド発行ユニット127は、 Therefore, the thread issuing unit 127,
スレッド発行ユニット103に向けてスレッド発行制御信号133を出力する。 And it outputs a thread issuance control signal 133 towards the thread issuing unit 103.

【0205】グローバルTLB120は、仮想アドレス信号の物理アドレスに変換し、物理アドレスをローカルメモリインターフェース122に伝送する。 [0205] Global TLB120 converts the physical address of the virtual address signals, transmits the physical address to the local memory interface 122. 外部バスは基本的には仮想アドレスであることに注意。 Note that the external bus is basically a virtual address.

【0206】ローカルメモリインターフェース122 [0206] local memory interface 122
は、グローバルTLB120からの要求に応じて、ローカルメモリバス信号123を通じて外部メモリとのデータアクセスを行う。 In response to the request from the global TLB 120, performs data access to the external memory through a local memory bus signal 123. I/Oもローカルメモリインターフェース122によってアクセスできる。 I / O can also be accessed by the local memory interface 122.

【0207】共有バスインターフェース124は、共有バス信号125を通じて他のプロセッサに対してデータを送受信する。 [0207] shared bus interface 124 sends and receives data to the other processors via the shared bus signal 125. 共有バス信号125から受理されたローカルメモリアクセス要求に対して、グローバルTLB1 For local memory access request received from the shared bus signal 125, global TLB1
20でプロセッサ内部でデータを共有しているかどうかの判定を行う。 And it determines whether to share data within the processor 20.

【0208】(第二実施例) [0208] (second embodiment)

【0209】図5に、本発明の第二の実施例の模式図を示す。 [0209] FIG. 5 shows a schematic diagram of a second embodiment of the present invention.

【0210】501は本発明の第二の実施例のプロセッサである。 [0210] 501 is a processor of a second embodiment of the present invention. 命令発行ユニット102と、実行ユニット1 An instruction issue unit 102, execution unit 1
05と、4つの一次キャッシュ111、二次キャッシュ116は隣接して配置される。 05, four primary cache 111, the secondary cache 116 are adjacently disposed. この組が全体に8つ配置されることで、この第二実施例のプロセッサは32のスレッドを同時に動作させることができる。 By this set are arranged eight in total, the processor of the second embodiment can be operated 32 threads simultaneously. 本発明のプロセッサには、ユニットの搭載数に上限はない。 The processor of the present invention is not limit to the number of mounted units.

【0211】この第二実施例の個々のユニットは、本発明の第一の実施例に搭載されているユニットとほとんど共通であり、ユニットの組み合わせがだけが異なる。 [0211] Individual units of the second embodiment is almost the same as unit mounted to the first embodiment of the present invention, the combination of the unit only is different.

【0212】前段プロセッサ接続インターフェース50 [0212] pre-stage processor connection interface 50
2は、別のプロセッサからのデータ転送を受理する。 2, to accept data transfer from another processor. 実アドレスで要求されたアクセスを、TLB120を用いて内部のキャッシュ、ローカルメモリで共有されているかどうかを判定する。 The access requested by the real address, the internal cache using TLB 120, determines whether the shared local memory.

【0213】IPユニット504はソフトウェアよりもハードウェアの方が効率が良い処理を行うためのユニットである。 [0213] IP unit 504 is a unit for better hardware to perform efficient processing than software. これらはそれぞれ演算ユニットの近傍に配置される。 These are located in the vicinity of the respective arithmetic units. 演算ユニットはIPユニットの出力データをソフトウェアで即座に整形するため、IPとプロセッサ間の転送が最小限になる。 Arithmetic unit for shaping immediately output data of the IP units in software, transfer between IP and processor are minimized.

【0214】2つのローカルメモリインターフェース1 [0214] Two local memory interface 1
22は、二次キャッシュからのメモリアクセス要求を受理して同時にメモリとのアクセスを行う。 22 performs access to the memory at the same time accepting a memory access request from the secondary cache. アクセスの前にはグローバルTLB120を利用して物理アドレスへの変換を行う。 In front of the access performs the conversion to the physical address using the global TLB120.

【0215】I/Oバスインターフェース510はプロセッサに直接接続されたローカルなI/Oへのインターフェースである。 [0215] I / O bus interface 510 is an interface to a local I / O connected directly to the processor.

【0216】新規スレッド発行ユニット127は、スレッド発行命令の要求に応じてスレッド発行を行うとともに、割り込み信号126、ソフトウェア例外などの要求に応じて休眠状態のスレッドを生起する。 [0216] new thread issuing unit 127 performs a thread issued in response to a request thread issued instruction, an interrupt signal 126, occurring threads dormant state in response to a request such as a software exception.

【0217】この実施例のプロセッサは、通常のマルチスレッドプログラムを利用して、浮動小数点命令を含めて32並列動作を可能にしながら、規模的には単一プロセッサの8倍強の素子数で実現できる。 [0217] processor in this embodiment utilizes a conventional multithreaded program, while allowing the 32 parallel operations including floating point instruction, the scale realization by the element number of eight times little uniprocessor it can. 個々のキャッシュは小容量だが、全てのキャッシュの内容を全てのスレッドから共有することができるので、個々のスレッドが1つの高速大容量キャッシュを持つのに等しい。 Individual cash but small capacity, it is possible to share the contents of all caches from all threads, each thread is equal to with one high-speed large-capacity cache.

【0218】(命令発行ユニット) [0218] (instruction issue unit)

【0219】図6は、命令発行ユニット102の内部構造の模式図である。 [0219] Figure 6 is a schematic diagram of an internal structure of the instruction issue unit 102.

【0220】パケットルーター601は、スレッドを制御する制御パケット信号603を受理し、このスレッド発行ユニットで受理可能であるかを判定する。 [0220] packet router 601 accepts a control packet signal 603 for controlling the thread determines whether is acceptable in this thread issue unit.

【0221】制御パケット信号の内容がスレッドの受理の場合は、プライオリティー選択ユニット604に制御信号を伝達する。 [0221] If the contents of the control packet signal thread receiving, transmitting a control signal to the priority selection unit 604. 制御信号の内容がキャッシュの直接制御の場合は命令キャッシュ制御ユニット605に制御信号を伝達する。 The contents of the control signal is transmitted a control signal to the instruction cache control unit 605 for direct control of the cache. 制御信号の内容がローカルTLB制御の場合は、命令ローカルTLBユニット607に制御信号を伝達する。 If the contents of the control signal is a local TLB control transmits a control signal to the instruction local TLB unit 607. さらに、スレッド移住の要求である場合は、スレッド移住ユニット620に制御信号を伝達する。 Furthermore, if a request for thread immigration transmits a control signal to the thread emigration unit 620.

【0222】待ち状態スレッドが一杯などの理由でパケット制御を受理できない場合は、別の隣接するパケットルーターに、制御パケット信号619を通じて伝送する。 [0222] Waiting If the state thread is unable to accept the packet control for reasons such as full, to another neighboring packet router, and transmits through the control packet signal 619.

【0223】プライオリティー選択ユニット604は、 [0223] priority selection unit 604,
待ち状態スレッドバッファ618の中から、実行可能状態でかつ最もプライオリティー値の高いスレッドを1つ選択する。 From the wait state thread buffer 618, selects one of high and most priority value executable state threads. ただし、キャッシュミスなどで実行できない状態のスレッドは選択されない。 However, the state of the thread that can not be executed in such a cache miss is not selected. このプライオリティー選択ユニット604は、待ち状態のスレッドの数に対して爆発的に規模を増大させるため、待ち状態スレッドバッファ618の数を増やしすぎないことが求められる。 The priority selection unit 604, in order to explosively increasing the scale for the number of pending threads, it is required that not too increase the number of wait states thread buffer 618.
そのために、パケットルータ602では、待ち状態のスレッドを1つのスレッド発行ユニットに集中させない制御が行われる。 Therefore, the packet router 602, a control which does not concentrate the thread pending one thread issuing unit is performed.

【0224】本実施例では、命令キャッシュだけは物理空間キャッシュとする。 [0224] In this embodiment, only the instruction cache and physical space cache. 異なるプロセス空間に属する命令を共有するためである。 In order to share the instruction belonging to a different process space. 命令キャッシュはキャッシュ制御ユニット605、キャッシュタグメモリ606、命令TLB607、キャッシュデータメモリ608で構成される。 Instruction cache cache control unit 605, the cache tag memory 606, the instruction TLB607, composed of the cache data memory 608.

【0225】キャッシュ制御ユニット605は、スレッドごとの命令キャッシュアクセスを実行し、パケットルーター602を介して要求される命令キャッシュへの直接アクセスを実行する。 [0225] The cache control unit 605 executes the instruction cache access per thread, to perform a direct access to the instruction cache to be required via the packet router 602. さらに、パケットルーター60 In addition, the packet router 60
2からのグローバルTLBの改変によるTLB607のエントリの無効化も行うことができる。 Disabling TLB607 of entry by the modification of the global TLB from 2 can also be carried out.

【0226】キャッシュタグメモリ606には、全ての物理アドレスが格納され、さらに、分岐予測、データフロー予測情報が格納される。 [0226] in the cache tag memory 606 is stored all the physical addresses, further branch prediction, data flow prediction information is stored.

【0227】スレッド状態制御ユニット609は、キャッシュのヒットチェックを行う。 [0227] thread state control unit 609 performs a cache hit check. 命令TLB607によって変換された物理アドレスと、命令キャッシュタグ6 And the physical address converted by the instruction TLB607, instruction cache tag 6
06の結果が一致すれば、キャッシュはヒットしたことになる。 If 06 results match, so that the cache hit. その場合は、4つ分の命令を命令メモリ616 In that case, the instruction memory 616 instructions 4 min
から取得して命令順序アライナ614に伝達して実行可能な状態にしておく。 It is transmitted to the instruction sequence aligner 614 acquires keep the executable state from.

【0228】スレッド状態制御ユニット609は、前の命令発行ユニットの出したスレッド状態信号608を受理する。 [0228] thread state control unit 609, to accept a thread state signal 608 out of the front of the instruction issue unit. 前のスレッドよりも待ち状態のプライオリティーが高い場合は、無条件でスレッドを発行する。 Priority of a wait state than in the previous thread is higher issues a thread unconditionally. 前のスレッドがない場合は、前に実行した命令と同じ命令を使うスレッドが待機状態であれば、待機状態のスレッドを優先して発行する。 If there is no previous thread, the thread that use the same instruction and the instruction previously executed is if in the standby state, issued in favor of the thread of the stand-by state. 命令アドレスが一致しない場合は、 If the instruction address does not match,
キャッシュから取得しておいた命令を発行する。 To issue an instruction that has been retrieved from the cache. 発行したスレッドの状態は、隣接する命令発行ユニットにスレッド状態信号615で伝達される。 Issued thread state are conveyed in thread state signal 615 to the instruction issue unit adjacent.

【0229】命令順序アライナ614は、蓄積された4 [0229] sequence of instructions aligner 614, accumulated 4
つのスレッドのそれぞれ4つの命令を、1クロックづつずらして出力する。 One of each of the four instructions of thread, and outputs the shifted one by one clock. 命令の種類によって配置を変えるようなことはしない。 Not be such as relocating the type of instruction.

【0230】スレッド状態制御ユニット609は、内部に格納された現在のスレッドのPCと、新規に発行されるスレッドのPCを比較し、一致するようならば、命令順序アライナ614に蓄積された命令の再利用を要求する。 [0230] thread state control unit 609, the current thread of PC stored therein, compares the thread PC to be newly issued, if such matching, the instructions stored in the instruction sequence aligner 614 to request a re-use. こうして、スレッドは同一の優先順位である限り、 Thus, as long as the thread is the same priority,
同じ命令を使用するものが優先的に実行される。 Which use the same instruction is executed preferentially.

【0231】スレッド移住制御ユニット620は、演算ユニットで発生した分岐、スレッド発行を示す分岐要求信号613を受理する。 [0231] Thread immigration control unit 620 accepts branches generated by the operation unit, the branch request signal 613 indicating the thread issued. 自身の命令キャッシュに格納されていない場合は、パケットルーター602からキャッシュの要求を行う。 If not stored in its own instruction cache, it makes a request of the cache from the packet router 602. 他に命令をすでにキャッシュした命令発行ユニットがあれば、スレッドの移住を行うためにスレッド状態をパケットルーター602に伝送する。 If there is already an instruction issue unit cached instructions to another, it transmits the thread state to the packet router 602 in order to perform thread migration.

【0232】命令バス信号617には、二次キャッシュ116からリプレースされる命令が送られる。 [0232] The command bus signal 617, the instruction is sent to be replaced from the secondary cache 116. 取得した命令は、命令キャッシュのデータメモリ616に格納される。 Acquired instruction is stored in the data memory 616 of the instruction cache. 取得した命令は、スレッドが空き次第即座に発行される。 Acquired instruction, the thread is issued immediately as soon as free.

【0233】命令メモリは、命令アドレスと独立した命令を順に格納することができる。 [0233] instruction memory, it can store an independent instruction and the instruction address in the order. そのため、予測された分岐先を含めた命令の動作順に格納される。 Therefore, it stored in the operation sequence of instructions including predicted branch destination. この機構を実現するために、命令キャッシュタグメモリ606はすべてのアドレスビットを含み、キャッシュヒット時にすべてのアドレスの比較を行う。 To implement this mechanism, the instruction cache tag memory 606 contains all the address bits, a comparison of all the addresses when a cache hit.

【0234】この機構を使用すると、同じ命令を使用し、同じ分岐方向を採択するスレッドは、命令キャッシュに常にヒットすることになり、命令リプレース時間だけでなく、分岐ペナルティー時間すら削減することができる。 [0234] The use of this mechanism, use the same instruction, the thread to adopt the same branch direction, will be to always hit in the instruction cache, as well as instruction replacement time, it is possible to reduce even the branch penalty time . この機構は、同一の動作をする大量のスレッドで最大の効果を発揮する。 This mechanism, for maximum effect with a large amount of thread for the same operation.

【0235】なお、この分岐予測が的中したかどうかを確認するために、命令TAGメモリには予想される分岐方向のビットを持たせる。 [0235] In order to the branch prediction is confirmed whether the hit, the instruction TAG memory to have a bit of the branch direction is predicted. レジスタ内容への分岐については命令キャッシュタグメモリ606から発行された次の命令アドレスを使用する。 Bifurcation of the register contents by using the following instruction address issued from the instruction cache tag memory 606. 命令キャッシュのインデックスは、直前の命令キャッシュのインデックス値を常に使用する。 The index of the instruction cache, always use an index value of the immediately preceding instruction cache. インデックス値の算出は、スレッド発行時、 The calculation of the index value is, when the thread issue,
命令キャッシュミスヒット時にのみ行われる。 It is performed only at the time of instruction cache miss hit.

【0236】同一の構造のスレッドでは、スレッド内部で同じ命令間でデータの受け渡しが行われる場合が多い。 [0236] In the thread of the same structure, often exchange data is performed between the same instruction in the thread inside. ただし、すべてのスレッドで同じアドレスを利用してデータを受け渡す場合もあれば、レジスタに対する相対アドレスを使用する場合もある。 However, some cases to pass data using the same address in all the threads, may be used in some cases relative address to the register. スタック、ヒープを用いる一般的な場合では、むしろ後者が多い。 Stack, in the general case of using the heap, rather the latter often. そのような場合では、データキャッシュ間の転送が必要になる。 In such cases, it is necessary to transfer between the data cache.

【0237】そのために、命令間でデータの授受があるという予測ビットを設ける。 [0237] Therefore, providing a prediction bit that there is exchange of data between instruction. データフロー予測ビットは、その命令が書き込んだデータアドレスを、自動的に別のラインに送ることを可能にする。 Data flow prediction bits, the data address written by the instruction, automatically allows you to send to another line.

【0238】データフロー予測ビットには、バリッドビットとともに、送り先の演算ユニットを示す「ライン番号」を格納しておく。 [0238] The data flow prediction bit, along with valid bits, stores the "Line number" which indicates the operation unit of the destination. データのアドレスではないことに注意する。 Note that it is not the address of the data.

【0239】データキャッシュミスで、データの実体を検索する際にやってきたパケットは、一次データキャッシュのヒットを検出することで、一次データキャッシュに隣接する命令キャッシュに向かってデータフロー予測ビットを書き込んでいく。 [0239] In the data cache miss, the packet came in retrieving actual data, by detecting a hit in the primary data cache, it writes the data flow prediction bit toward the instruction cache to be adjacent to the primary data cache go. そのために、データキャッシュミスパケットには、データキャッシュミスの発生した演算ユニットの識別番号が伝達される。 Therefore, the data cache miss packet, the identification number of the generated operation unit of the data cache misses is transmitted.

【0240】なお、1つのライト命令に対して、複数のリード命令が同じデータを参照する場合は、リード命令同士の転送となる。 [0240] Incidentally, with respect to one write command, if a plurality of read instructions refer to the same data, the transfer between the read instruction. そのために、データフロー予測ビットはロード命令にも必要になる。 Therefore, data flow prediction bit is also required for the load instruction.

【0241】分岐命令とロードストア命令は同時に利用されないため、データフロー予測ビットと分岐予測ビットは共用され、命令デコード結果によって使い分けられる。 [0241] Since the branch instruction and a load store instruction is not used at the same time, the branch prediction bit data flow prediction bit is shared selectively used by the instruction decoding result.

【0242】スレッド間で共有するデータが多い場合は、PMT方式が優れる。 [0242] If there is more data to be shared between threads, PMT method is excellent. それに対して、自身のスレッド内部の転送量が大きく、スレッド間で共有するデータが少ない場合は、SMP方式が優れる。 In contrast, large transfer amount of the internal threads of its own, if less data shared between threads, SMP scheme is excellent. これらの双方の長所を取り入れるために、SMP実行モードを設ける。 To incorporate both of these advantages, providing the SMP execution mode.

【0243】SMP実行モードは隣接する命令発行ユニット102の負荷が高く、データキャッシュのトランザクションの負荷が高い場合に、同じスレッド発行ユニットで連続して1つのスレッドを管理するモードである。 [0243] SMP execution mode has a high load of the instruction issue unit 102 adjacent, when the load of the data cache transactions is high, is a mode for managing a single thread continuously in the same thread issue unit.
本発明の実施例では、1つのスレッド発行ユニットで4 In an embodiment of the present invention, 4 a single thread issue unit
つのスレッドを動作できる。 One of the possible operation of the thread.

【0244】SMP実行モードでは、スレッド状態を隣接する命令発行ユニット102に伝達せず、次のPCアドレスを自身のキャッシュ制御ユニット605で利用する。 [0244] In an SMP run mode, not transmitted to the instruction issue unit 102 adjacent the thread state to use the following PC address in its own cache control unit 605. キャッシュ制御ユニット605は、キャッシュから4命令を取得して、命令順序アライナ614に送る。 Cache control unit 605 acquires the four instructions from the cache, and sends the instruction sequence aligner 614.

【0245】他の演算ユニット、キャッシュとのキャッシュコヒーレンシや同期は、PMTモードと同じ階層キャッシュコヒーレンシ機構を用いて行われる。 [0245] Other operation unit, cache coherency and synchronization with the cache is performed using the same hierarchical cache coherency mechanism and PMT mode. すなわち、本発明のプロセッサは、SMPモードでは階層キャッシュの共有メモリマルチプロセッサそのものとして機能する。 That is, the processor of the present invention functions as a shared memory multiprocessor itself hierarchical cache in SMP mode.

【0246】(演算ユニット) [0246] (arithmetic unit)

【0247】図7は、4並列実行ユニット105の内部構造を示す模式図である。 [0247] Figure 7 is a schematic view showing an internal structure of 4 parallel execution unit 105.

【0248】命令デコードユニット703は、命令発行ユニットから送られた命令727をデコードし、各演算ユニットを制御する。 [0248] The instruction decoding unit 703 decodes an instruction 727 sent from the instruction issue unit, controls each arithmetic unit. 同時に、4つのプログラムカウンタをインクリメントする。 At the same time, it increments the four program counters. 分岐命令が実行された場合は、演算ユニットで算出された分岐後のプログラムカウンタを利用する。 If a branch instruction is executed, utilizing the program counter after calculated branch by the operation unit. 更新されたプログラムカウンタは、隣接する命令デコードユニットに伝達される。 Updated program counter is transferred to the instruction decode unit adjacent.

【0249】双方の実施例では、実行ユニット内部には、レジスタファイル704を4つ搭載している。 [0249] In both embodiments, the internal execution units are mounted four register file 704. 1つのレジスタファイルは4つの演算ユニットで共有される。 One register file is shared by four arithmetic units. そして同時に1つの演算ユニットに対してのみレジスタを供給する。 And it provides register for only one arithmetic unit at the same time.

【0250】レジスタファイル704は、コンテキストスイッチに対応するために4つのバンクを持つ。 [0250] register file 704 has four banks in order for the context switch. そして、レジスタファイル704は、隣接レジスタ転送を4 Then, the register file 704, the adjacent register transfer 4
クロックで完了する。 Completed in clock. そのため、一般的なRISCプロセッサと同じ3つのリードポートと、隣接転送用の2つのレジスタリードライトの機能を持つ。 Therefore, with a typical RISC processor and the same three read ports, the function of the two register read light for the adjacent transfer. 現在実行中のスレッドが3つのリードポートを利用している間、さらに2つのレジスタを出力し、隣接する4並列実行ユニット105に転送する。 While the currently executing thread is using three read ports, further outputs two registers, it is transferred to the adjacent four parallel execution unit 105. そして、隣接する4並列実行ユニット105内部の、レジスタファイル704のうちの利用されていないバンクが、2つのレジスタの値を受け取って書きこむ。 Then, the internal 4 parallel execution units 105 adjacent to each use are not even banks of the register file 704 and writes receives the values ​​of the two registers.

【0251】こうして、レジスタファイル704は、現行のスーパースカラプロセッサよりも少ないポート数で実現でき、アクセスのための遅延時間を増加させないで済む。 [0251] Thus, the register file 704 can be realized with a small number of ports than current superscalar processors, need not increase the delay time for access.

【0252】オペランドクロスバスイッチ706は、4 [0252] operand crossbar switch 706, 4
つのレジスタファイル704の値を、それぞれの演算ユニットに分配する。 One of the values ​​of the register file 704 is distributed to each of the arithmetic units. 3つのオペランドを持つレジスタを4組分配する。 Register with three operands to four sets distribute. 受理する演算ユニット側には4入力のセレクタが3つ配置される。 The arithmetic unit side to accept the four inputs of the selector are arranged three.

【0253】演算ユニットで算出された演算結果は、即座にレジスタファイル704に伝達することはない。 [0253] calculation unit calculation result calculated in will not be immediately transmitted to the register file 704. 演算結果フォワーディング717を利用して結果を利用する演算ユニットに伝達する。 Using the calculation result forwarding 717 transmits to the arithmetic unit to use the results. そして、レジスタファイル704への書き戻しは、オペランドショートカット信号722によって隣接する演算ユニット105のレジスタファイルに伝達される。 The write back to the register file 704 is transmitted to the register file of the arithmetic units 105 adjacent the operand shortcut signal 722.

【0254】整数演算ユニット708は、フラグ判定、 [0254] integer units 708, the flag determination,
16ビットの範囲内での算術、シフト演算、分岐アドレス生成などを行う。 16-bit arithmetic in the range, shift operation, branch address generation and the like performed. 4並列実行ユニット105内部に4 4 4 therein parallel execution units 105
つ配置され、それぞれが独自にスレッドの命令実行を行う。 One is arranged, each performing its own thread instruction execution.

【0255】この整数演算ユニットは16ビット程度の加算器、シフタ、そして16ビットを超えた演算が行われたことを感知する回路で構成される。 [0255] The integer units is composed of a circuit that senses that the order of 16-bit adder, shifter, and arithmetic operation that exceeds 16 bits were made. これは演算ラインごとに実装される。 It is implemented for each operation line.

【0256】16ビットを超える桁の変更が発生する演算は、パイプラインをストールして、共有64ビット演算ユニット710を利用して再計算を行う。 [0256] operations changing digit is generated more than 16 bits, and stalling the pipeline, performing the re-calculated using the shared 64-bit arithmetic unit 710. 64ビット演算ユニットは16ビットの4倍以上の回路が必要になるため、16ビット演算ユニットとオーバーフロー検出回路の組み合わせを利用し、それを4つ搭載して代用しても全体の演算ユニット数、回路規模あたりの性能を増やすことができる。 64-bit arithmetic for units require four times the circuit of 16 bits, using a combination of 16-bit arithmetic unit and an overflow detecting circuit, the number of arithmetic units whole be substituted therewith four mounting to, it is possible to increase the performance per circuit scale.

【0257】この方法が全体の性能をかえって向上させることができるのは、本発明の方式がマルチスレッドによって十分な並列処理を行うことができるという前提による。 [0257] by assuming that this method may be able to rather enhance the overall performance, the system of the present invention can be made sufficient parallelism by multi-thread. VLIW方式などの命令レベル並列では、並列動作可能な命令が並列度より少ない場合が多く、このようなペナルティーは絶対に許されない。 The ILP such VLIW system, often parallel operation instructions is less than the degree of parallelism, such penalty is not allowed absolutely.

【0258】分岐ユニット721は分岐予測の判定と、 [0258] branching unit 721 and the judgment of the branch prediction,
分岐の発行、およびスレッドの発行制御を行う。 Issuing branch, and a thread issue control performed. ただし、分岐アドレスを算出するのは整数演算ユニット71 However, integer unit 71 to calculate a branch address
8による。 According to the 8. 実際の分岐は4命令に1回程度の頻度で実行される傾向が強いので、4つのスレッドで共有される。 Since the actual branch is more likely to be performed at a frequency of approximately once every four instructions are shared by four threads.

【0259】分岐ユニット721は、分岐予測情報との照合を行い、一致した場合は自身のアドレス情報だけを更新する。 [0259] branching unit 721 performs the matching of the branch prediction information, if there is a match to update only its own address information. 分岐予測非成立の場合は、スレッド発行ユニットに分岐要求を伝達すると同時に、別の待ち状態のスレッドに切り替える。 If the branch prediction is not met, at the same time to transmit the branch request to the thread issuing unit switches to the thread of another waiting state. コンテキストスイッチは即座に行われ、実行ユニットの待ち時間はない。 Context switching is performed in real latency execution units are not.

【0260】基本的に、分岐後の処理は直後の実行ユニットで実行される。 [0260] Basically, the process after branching is executed in the execution unit immediately. 分岐予測が的中する場合は、自動的に分岐後の命令が次の実行ユニットに伝送される。 If the branch prediction is hit automatically after the branch instruction is transmitted to the next execution unit.

【0261】ただし、キャッシュミスの場合は、キャッシュの共有状態を確認することで、すでに命令が格納されている実行ユニットを検索する。 [0261] However, in the case of a cache miss, by checking the shared status of the cache, to search for the execution unit that is already stored instructions. 発見された場合は、 If it is found,
その実行ユニットにスレッドを移住させる。 To relocate the thread to the execution unit. 基本的にスレッドの移住には全てのレジスタファイルの転送が必要となる。 Basically, the migration of the thread transfer of all of the register file is required. ただし、データのほうはデータキャッシュコヒーレンシ機構が自動的に働くので必要はない。 However, more of the data is not necessary because the data cache coherency mechanism is automatically work.

【0262】関数からのリターンの場合は、スレッドを呼び出し元の実行ユニットに移住させる。 [0262] In the case of return from the function, to resettle the thread to the caller of the execution unit. ただし、渡すレジスタは1つの返り値のみである。 However, pass registers is only one return value. スタックの退避、 Evacuation of the stack,
復帰は自動的に行われるので転送は必要ない。 No transfer is necessary because the return is done automatically.

【0263】SMPモードは、直後の演算ユニットで待ちあわせているスレッドのプライオリティーが高く、さらに後続のスレッドの負荷が低い場合に発生する。 [0263] SMP mode, priority of threads waiting in the operation unit of the immediately following high, further load of the subsequent thread occurs when low. 空いた演算ユニットを有効に利用するための手段である。 A means for effectively utilizing a vacant operation unit.

【0264】レジスタ同期ユニット723は、レジスタ内容の隣接ユニットへの転送と、スレッドの移住のためのメモリへの自動読み書きを行う。 [0264] Registers synchronization unit 723 performs the transfer to the adjacent unit register contents, the automatic write to memory for thread immigration.

【0265】スレッドの移住は、1つのバンクのレジスタの内容をそっくり他のスレッドに入れ替える作業である。 [0265] thread migration is a work to replace in its entirety other thread the contents of the register of one of the bank. 実施例1のプロセッサにおいて、スレッド移住には合計4クロックを要する。 In the processor of the first embodiment requires a total of 4 clocks thread immigration.

【0266】スレッドの移住には、メモリを介してレジスタの値を伝達する。 [0266] thread migration transmits the value of the register via the memory. スタックポインタから利用すべきメモリアドレスを演算ユニット708で算出し、現在のレジスタをロードストアユニット713に送る。 Calculating a memory address to be available from the stack pointer operation unit 708 sends the current register to load store unit 713. 新規のスレッドに対しても、スタックポインタからアドレスを算出し、ロードストアユニット713から新規のレジスタセットを読み込む。 Also for the new thread, to calculate the address from the stack pointer, read a new register set from the load store unit 713. レジスタ退避の際には、ロードストアユニット713のアドレスバスもデータ転送に利用する。 During register saving is also used for data transfer address bus load store unit 713. 同時に4つのスレッド移住を行うため、8つのレジスタを同時に転送する能力を有する。 To perform a four threads immigration simultaneously, it has the ability to transfer eight registers simultaneously.

【0267】浮動小数点加算ユニット719、浮動小数点乗算ユニット712は、整数演算ユニットと異なり、 [0267] Floating-point add unit 719, a floating point multiply unit 712 is different from the integer unit,
精度が常に一定であり、動作が細かく決定されているので、倍精度の演算ユニットの機能のすべてを実装する必要がある。 Accuracy is always constant, since the operation is finely determined, it is necessary to implement all of the functions of a double-precision operation units. ただし、浮動小数点命令の出現頻度を考慮して、1つの実行ユニット108ごとに、浮動小数点加算ユニット719と、乗算と加算を同時に行う浮動小数点乗算ユニット712が1つづつ配置される。 However, taking into account the frequency of occurrence of floating point instructions, each one of the execution units 108, the floating-point addition unit 719, a floating point multiply unit 712 which performs multiplication and addition at the same time are arranged one by one.

【0268】なお、これらのレイテンシの長い演算は、 [0268] It should be noted that the long operation of these latency,
複数のスレッドが同時に利用する。 Multiple threads to use at the same time. 演算中は、これらの共有演算ユニットの内部にスレッドの情報が格納され、 Operation in the thread information inside these shared arithmetic unit is stored,
結果の値とともに整数演算ユニットに伝達される。 It is transmitted to the integer units together with the results of values.

【0269】除算ユニット718は、除算、平方根などの、時間のかかり、かつ出現頻度の低い浮動小数点演算を行う。 [0269] division unit 718, division, such as square root, it takes time, and perform a low frequency of occurrence floating-point arithmetic. 除算、平方根の演算は乗算と異なり、現実的な規模でパイプライン化して高速化する手段はない。 Division, calculation of a square root, unlike multiplication, no way to speed by pipelining a realistic scale. そのため、1つの演算あたり数クロックのスループット時間が必要になる。 Therefore, it is necessary to throughput times of the number per one operation clock. そして、1つの除算ユニット718は、 Then, one of the division unit 718,
除算命令の出現頻度を考慮して、4つのスレッドで共有される。 Taking into account the frequency of occurrence of the divide instruction is shared by four threads.

【0270】ロードストアユニット713は、4つのロードストア命令の実行を同時に行い、8ワード分の転送能力を持つ。 [0270] load store unit 713 performs four of the execution of the load store instructions at the same time, with a transfer capacity of 8 words. 4つの演算ユニット705からの要求を受理してロードストアを行うとともに、待ち状態のスレッドのロードを実行する機能を持つ。 Performs load store accepts requests from the four arithmetic units 705, has a function of executing a thread load pending.

【0271】バイト単位の転送をワードに符号に応じて拡張する操作、あるいはその逆もこのユニットで行われる。 [0271] Operation expand depending on the sign of the transfer of the bytes to a word, or vice versa takes place in the unit.

【0272】ロードストアユニット713には、4つのデータキャッシュが接続され、アクセスを行うアドレスによって使い分ける。 [0272] The load store unit 713, four data cache is connected, selectively used by an address to be accessed. データのアクセスは、同時に複数のユニットのアクセスを可能にする。 Access data simultaneously enables access multiple units. そのために、4つのアドレス、データバスを互いにクロスバ接続する。 Therefore, four addresses and crossbar connecting the data bus to each other.

【0273】同じ一次キャッシュへのアクセスがかちあった場合は、優先度の低いスレッドを停止して、ロードの実行を待つ。 [0273] If the access to the same Primary cache has clashed, to stop the low-priority thread, waiting for the execution of the load. キャッシュミスの場合も同様である。 In the case of a cache miss is the same.

【0274】ロードの衝突、キャッシュミスによるスレッドの停止の場合には、停止したスレッドの代わりに、 [0274] of the load collision, in the case of the thread of the stop due to a cache miss, instead of the thread that has stopped,
前に停止してロードの終了したスレッドを再開する。 To resume the terminated thread of the load is stopped before.

【0275】なお、前にロード、あるいはストアしたデータと、同じアドレスを利用するロード命令が直後に存在する場合は、データキャッシュへのアクセスを行わずに、同じデータを渡す。 [0275] It should be noted that, before the load or the store the data, if the load instruction to use the same address exists in immediately after, without access to the data cache, and passes the same data. 通常のプロセッサのライトバッファと異なり、渡す対象は同一スレッドでなくても良い。 Unlike the write buffer conventional processor, passing the object may not be the same thread. この機構に9よって、同一の命令を利用するスレッドの連続動作させる際のデータキャッシュアクセスが最小限となる。 9 depending on the mechanism, the data cache access time of the thread of continuous operation utilizing the same instruction is minimized.

【0276】演算結果フォワーディングユニット717 [0276] calculation result forwarding unit 717
は、実行ユニット105内部の演算ユニット間のデータの受け渡しを行う。 Exchanges data between the internal execution units 105 of the operation unit. 同時に、長時間演算ユニットを利用する必要のある命令では、隣接する実行ユニット105 At the same time, the need to utilize a long calculation unit instructions, execution adjacent units 105
に途中経過のレジスタ値を渡す。 Pass the register value of the elapsed middle. この機構によって、除算などの時間のかかる命令をパイプライン動作させることができる。 This mechanism, time-consuming instructions such as division can be pipelined operation. 同一の除算などの命令を利用するスレッドが連続する場合のスループット性能を高めるためである。 Thread utilizing instructions, such as the same division is to increase the throughput performance when continuously.

【0277】(データキャッシュユニット) [0277] (data cache unit)

【0278】本発明のプロセッサは、データキャッシュのスループット確保、遠距離の一次キャッシュ間の転送のために、階層キャッシュ構造を取る。 [0278] processor of this invention, the throughput secure data cache, for transfer between distant primary cache, a hierarchical cache structure. さらに、スレッド間の仮想記憶機構の共有のために、データキャッシュは基本的に仮想アドレスとしている。 Furthermore, because of the shared virtual memory mechanism between threads, the data cache is basically a virtual address.

【0279】データキャッシュは大きなスループットを要求されるため、擬似的に複数の要求を受理する構造とする。 [0279] For data cache which requires large throughput, and pseudo-structure for receiving a plurality of requests. そして、キャッシュ内部のデータの共有管理のために、ディレクトリ方式キャッシュコヒーレンシを採用する。 And for managing shared cache internal data, employing a directory-based protocol cache coherency. ディレクトリ方式はデータアクセスのレイテンシに劣るが、複数のキャッシュの要求に対応しやすい方式である。 Directory system is inferior to the data access latency, but correspondingly easy manner to the required multiple caches. ディレクトリ方式の詳細については、文献1のP679からの記載を参照のこと。 For more information on the directory method, see the description of the P679 literature 1.

【0280】文献1:Computer Archit [0280] Reference 1: Computer Archit
echture a Quantitative Ap echture a Quantitative Ap
proach Second Edition 著者:John L Hennessy、 David proach Second Edition Author: John L Hennessy, David
A Patterson 出版社:Morgan Kaufmann Publi A Patterson Publisher: Morgan Kaufmann Publi
shers,Inc. shers, Inc.

【0281】図8に、本発明の第一の実施例における一次データキャッシュ111、二次キャッシュ116の接続関係模式図を示す。 [0281] Figure 8, the primary data cache 111 in the first embodiment of the present invention, showing the connection relationship schematic view of a secondary cache 116.

【0282】4並列実行ユニット105には、一次データキャッシュ111が4つ接続される。 [0282] 4 parallel execution unit 105, the primary data cache 111 is four connected. 4つの一次データキャッシュ111は、すべてが1つの二次キャッシュ116に接続される。 Four primary data cache 111, all of which are connected to one secondary cache 116. なお、二次キャッシュはデータ、 In addition, the secondary cache data,
命令の双方を格納する。 To store both instructions.

【0283】803は一次データキャッシュのタグである。 [0283] 803 is a tag of the primary data cache. 806は、二次キャッシュのタグである。 806 is a tag of the secondary cache.

【0284】データキャッシュは仮想アドレス空間を利用し、複数のプロセスが混在するため、異なったプロセス空間のエントリが混在する。 [0284] The data cache using the virtual address space, since a plurality of process are mixed, entry of different process space are mixed. そのため、タグメモリ内部にはプロセス空間のIDが配置され、一致比較の時にアドレスとともに比較される。 Therefore, the internal tag memory is arranged ID of the process space, it is compared with the address at the time of the coincidence comparison. さらに、タグメモリ内部には共有先を特定する共有ビットを有する。 Further, the internal tag memory having a shared bit for specifying the shared destination.

【0285】一次データキャッシュ111、二次キャッシュ116は、アドレスの下位で分割したバンクを持ち、隣接する転送は同時に、そして、連続するアドレスは複数のキャッシュバンクが同時にアクセスさせることを可能にする。 [0285] the primary data cache 111, the secondary cache 116 has a lower in divided bank address, simultaneously adjacent transfer and continuous addresses allows the plurality of cache banks is accessed simultaneously. 二次キャッシュタグメモリ806、二次キャッシュデータメモリバンク807も、アドレスに対して分割され、複数のアクセスを同時に受理する。 Secondary cache tag memory 806, also the secondary cache data memory bank 807 is divided to the address, to accept multiple access at the same time.

【0286】データキャッシュ制御ユニット802は、 [0286] The data cache control unit 802,
キャッシュミスの場合に適切なキャッシュからデータを要求する。 To request the data from the appropriate cache in case of a cache miss. さらに、データ転送の要求に応じて、適切なキャッシュにデータを転送する。 Further, in response to a request for data transfer, and transfers the data to the appropriate cache. さらに、内部のキャッシュの共有状態を管理する。 Further, to manage the shared state of the internal cache.

【0287】実行ユニット105が一次データキャッシュ111への読み込みを行うケースについて説明する。 [0287] execution unit 105 will be described for the case of performing the reading of the primary data cache 111.
一次キャッシュデータメモリ804からデータを読み込むと同時に、一次キャッシュタグメモリ803に対してアクセスを行う。 Simultaneously reading the data from the primary cache data memory 804, and accesses to the primary cache tag memory 803. 一般的なキャッシュと同じく、タグメモリの読み出し内容が要求されたアドレスと一致しない場合、あるいはそのエントリが無効となっている場合、 As with the general cache, if the if the read contents of the tag memory does not match the requested address, or if the entry is invalid,
データキャッシュミスとする。 And data cache miss. その場合、スレッドに対してストールを要求し、二次キャッシュ116からデータを要求する。 In that case, it requests a stall for the thread requests data from the secondary cache 116.

【0288】実行ユニット105が一次データキャッシュ111への書きこみを行うケースについては、まず一次キャッシュタグメモリ803だけに対してアクセスを行う。 [0288] For the case where the execution unit 105 performs the write to the primary data cache 111 first performs the access to only the primary cache tag memory 803. アドレスが一致してかつ、該当するデータが共有状態に指定されている場合は、二次キャッシュ116に対してインバリッド要求を発行する。 And the address matches, where appropriate data is specified in the shared state, issues a invalid request to the secondary cache 116.

【0289】一次データキャッシュタグ803には、2 [0289] in the primary data cache tag 803, 2
ビットの共有情報を含む。 Including the sharing of information bits. 隣接する一次キャッシュへの共有状態と、それ以外のキャッシュとの共有状態である。 And shared state to adjacent primary cache, a shared state between the other caches.

【0290】アクセスバッファ115は、一次データキャッシュ111から二次キャッシュ116へのアクセスが不可能である場合に、アクセス情報およびスレッドの情報を蓄積する。 [0290] access buffer 115, if it is not accessible from the primary data cache 111 to the secondary cache 116 and stores the information in the access information and thread. あるいは、二次キャッシュ116から一次キャッシュ111へのインバリッド伝達の蓄積にも用いられる。 Alternatively, it is also used for the accumulation of invalid transfer from the secondary cache 116 to the primary cache 111.

【0291】アクセスバッファ115は、一次キャッシュ111からの隣接転送要求を受理し、二次キャッシュ116を通さずに隣接するアクセスバッファ131にデータを送信することも行う。 [0291] Access buffer 115 performs also accept the next transfer request from the primary cache 111, and transmits data to the access buffer 131 which is adjacent without passing through the secondary cache 116.

【0292】同時に、アクセスバッファ117からデータを受理して、二次キャッシュ116内部の共有状態を調べる。 [0292] At the same time, receiving the data from the access buffer 117 examines the shared state of the internal secondary cache 116. 共有状態であれば、データを格納するか、該当する一次キャッシュ111に伝送する。 If shared state, transmitting or storing the data in the appropriate primary cache 111.

【0293】二次キャッシュ116は、一次キャッシュ111からのキャッシュアクセスを受理するとともに、 [0293] Secondary cache 116 is configured to accept the cache access from the primary cache 111,
隣接する二次キャッシュ、さらにメモリインターフェース、あるいは実施例には存在しないが三次キャッシュからの要求を受け、適切な相手にアクセス要求等を送出する。 Adjacent secondary cache, further receives a request from the memory interface or is not present in Example L3 cache, and sends an access request such as the right person.

【0294】なお、本発明のプロセッサでは、データの転送やインバリッドの伝達は、スレッドの伝送速度に間に合えば十分である。 [0294] In the processor of the present invention, the transmission of the transfer or invalid data, it is sufficient Maniae to the transmission speed of the thread. SMP方式と異なり、階層バス間の転送レイテンシは演算ユニットの稼動率とはほとんど関係がない。 Unlike SMP system, the transfer latency between hierarchical bus has very little to do with the rate of operation of the arithmetic unit. そして、インバリッド伝達の方向も常に一定であり、転送スループットの確保も可能になる。 Then, the direction of the invalid transmission also always constant, it is possible also secure transfer throughput.

【0295】図14に、本発明のキャッシュにおけるタグメモリの構造を示す。 [0295] FIG. 14 shows the structure of a tag memory in the cache of the present invention. 一次キャッシュ111、二次キャッシュ116はともに仮想空間であるため、タグアドレスの一致比較だけでは不十分であり、プロセスIDの一致の判定が必要である。 Since the primary cache 111, the secondary cache 116 are both virtual space, just matching tag comparison address is insufficient, it is necessary to determine the matching process ID.

【0296】ディレクトリ方式キャッシュの実装のために、共有状態を示すビットを設ける。 [0296] For the implementation of the directory method cache, providing a bit indicating shared state. 一次キャッシュは、隣接する一次キャッシュと、二次キャッシュの2つの転送先が考えられるため、2ビットの共有情報を利用する。 Primary cache, since the two destination and adjacent primary cache, secondary cache is considered, using the 2-bit information shared.

【0297】二次キャッシュタグ806には、6ビットの共有情報を含む。 [0297] the secondary cache tag 806 includes information shared 6 bits. 隣接する二次キャッシュへの共有状態と、4つの一次キャッシュへの共有状態4ビットと、 And shared state to adjacent secondary cache, a shared state 4 bits to four primary cache,
三次キャッシュ、TLBユニットなどへの共有状態1ビットで構成される。 L3 cache, and a shared state 1 bit to such TLB unit.

【0298】(仮想記憶機構) [0298] (virtual memory mechanism)

【0299】仮想記憶機構は、内部表記のアドレス表記を実際のメモリアドレスに対応させ、内部表記のアドレス以上の実メモリ空間を扱うことを可能にする。 [0299] Virtual memory mechanism, to correspond to the actual memory address address notation internal representation makes it possible to deal with real memory space or address of the internal representation. また、 Also,
複数のプロセス空間の間の保護、およびメモリに存在しないメモリ空間の判定を行う。 Protection between multiple process space, and the determination of the memory space that does not exist in the memory performed. この仮想記憶の変換を効率的に行うためのバッファが、TLBユニット120である。 Buffer for converting the virtual storage effectively is a TLB unit 120.

【0300】本発明の方式では、この仮想記憶機構にも以下の特徴がある。 [0300] in the manner of the present invention, there is also the following features in the virtual memory mechanism.

【0301】(1)TLBは演算ユニットのある一定の集団ごとにそれぞれ専属のものを置く。 [0301] (1) TLB put those dedicated respectively for each given population with a computing unit.

【0302】(2)キャッシュは仮想アドレスとし、実際のメモリのアクセスの直前まで仮想空間の変換を行わない。 [0302] (2) cache is a virtual address, does not perform the conversion of the virtual space until just before the actual memory access.

【0303】(3)TLBの改変は、キャッシュにコピーがあるにもかかわらず、TLBエントリのない状態を作り出す可能性がある。 [0303] (3) modification of the TLB, despite there is a copy in the cache, there is a possibility to create a state with no TLB entry.

【0304】(4)スレッド間の高速同期のための、データフロー同期の機構を提供する。 [0304] (4) for fast synchronization between threads, provides data flow synchronization mechanisms.

【0305】複数のTLBを所持する場合は、TLB間で互いにコピーを持たせることになる。 [0305] When carrying the plurality of TLB will be provided a copy each other between the TLB. だが、オリジナルのエントリは常にメモリバンクに専属の1つとする。 But, the original entry is always one of the dedicated to the memory bank.
そのため、TLBの改変の際は、常にメモリバンクに専属のTLBに対して行う。 Therefore, at the time of modification of the TLB is always performed for the TLB of the dedicated to the memory bank. オーナーであるTLBは、共有しているすべてのTLBに向かってページの無効化(インバリッド)を伝達する。 TLB is the owner, it is transmitted towards the all of the TLB that share Disabling page (invalid).

【0306】図9に、本発明の実施例におけるTLBユニット120の内部構造の模式図を示す。 [0306] Figure 9 shows a schematic view of the internal structure of the TLB unit 120 in the embodiment of the present invention.

【0307】仮想アドレス902は、TLBタグメモリ903、TLBデータメモリ909に入力される。 [0307] Virtual address 902 is input to the TLB tag memory 903, TLB data memory 909. 構造的にはセットアソシアティブのキャッシュと同じである。 In structure is the same as that of the set-associative cache. TLBタグメモリ903は仮想アドレス902の内容と比較器904で比較され、一致した場合のみTLB TLB tag memory 903 are compared by comparator 904 with the contents of the virtual address 902, only if they match TLB
データメモリ904の内容を使用する。 To use the contents of the data memory 904. 本実施例では、 In this embodiment,
4ウェイセットアソシアティブ方式で実装することでタグメモリ、データメモリを4つ使用して、TLBのヒット率を向上させている。 Tag memory by mounting in 4-way set associative, using four data memory, thereby improving the hit rate of the TLB. まったくページが一致するものがない場合は、ページフォルト例外発生ユニット905 If you do not have that at all the pages to match, page fault exception generating unit 905
がOSプロセスを起動する。 But to start the OS process.

【0308】仮想アドレスに相当するページがTLBユニット901内部に存在する場合は、TLBデータメモリ904の内容のうちの1つが、物理アドレスとして選択される。 [0308] If the page corresponding to the virtual address exists within TLB unit 901, one of the contents of the TLB data memory 904, it is selected as the physical address. 変換されたアドレスは、物理アドレス信号9 The converted address, physical address signals 9
06から出力される。 Is output from the 06.

【0309】本発明におけるTLBにはもう一つの役割がある。 [0309] The TLB according to the present invention there is another role. それは、データフロー同期と呼ばれる、指定したアドレスへのデータアクセスを自動的に検出する機能である。 It is referred to as data flow synchronization is the ability to automatically detect the data access to the specified address. TLBエントリメモリ909には、アドレスの完全な一致を比較するための仮想アドレスが格納されており、ページの一致によってデータフロー比較器908 The TLB entry memory 909, the virtual address for comparing the full address match has been stored, the data flow comparator by matching page 908
に伝達される。 It is transmitted to the. 仮想アドレスが完全に一致した場合は、 If the virtual address is completely match,
データフロー同期発生ユニット907によって、登録されたスレッドが生起される。 The data flow synchronization generation unit 907, is caused thread registered. 一致比較のマスクビットによるアドレス領域の指定も可能である。 Designated address area by the mask bit match comparison is possible.

【0310】図15に、本発明のプロセッサにおけるT In [0310] Figure 15, T in the processor of the present invention
LBユニットのエントリを示す。 It shows the entry of the LB unit. 通常のTLBと同じく、変換後の物理アドレス、ページごとの保護情報などを持ち、複数のプロセス空間を混在させるためのプロセスIDを持つ。 As with conventional TLB, the physical address after translation, have a protective information for each page, with process ID for mixing a plurality of process space.

【0311】通常のTLBと異なるのは、二次キャッシュや他のプロセッサへの共有情報を6ビット格納していることと、データフロー同期のための一致比較アドレス、一致比較範囲のビットを持ち、さらに、データフローの検出で生起すべきスレッドIDを格納していることの2点である。 [0311] different from the normal TLB, have a that are 6-bit store shared information to the secondary cache and other processors, coincidence comparison address for data flow synchronization, the bit match comparison range, Furthermore, it is two points that contains the thread ID to be occur in detection of the data flow.

【0312】本発明においてTLBユニットは、キャッシュのディレクトリ共有情報を示す最上位のエントリでもある。 [0312] TLB unit in the present invention is also a top-level entry indicating the directory information shared cache. 二次キャッシュの全て、ローカルメモリ、そしてプロセッサ外部への共有を示すビットをそれぞれ持つ。 All of the secondary cache, having a local memory, and a bit indicating the share to the processor outside respectively.

【0313】そのため、二次キャッシュ同士やメモリへのデータ転送や、二次キャッシュからプロセッサ外部へのインバリッド要求などは、まずはTLBに要求される。 [0313] Therefore, data transfer to the secondary cache each other and with memory, such as invalid request from the secondary cache to the processor outside, first required the TLB. TLBでは、TLBエントリの持つ6ビットの共有情報に従って、4つの二次キャッシュ、プロセッサの持つローカルメモリ、及びプロセッサ外部に直接伝達される。 In TLB, according to shared information 6-bit with the TLB entry, four secondary cache, the local memory with the processor, and it is directly transmitted to the processor outside.

【0314】制御信号パケットルーター910は、TL [0314] control signal packet router 910, TL
Bへの書きこみを受理するとともに、データフロー一致やページミスによる例外スレッドを発行し、スレッドパケット911に向けて伝達する。 With to accept write to B, issued the exception thread by data flow match and page miss, is transmitted towards the thread packet 911.

【0315】(外部インターフェースユニット) [0315] (external interface unit)

【0316】本発明のプロセッサは、複数のプロセッサを接続して利用するために以下の特徴を持つ。 [0316] processor of this invention has the following features in order to use by connecting a plurality of processors.

【0317】(1)スレッドを自動的に複数のプロセッサに分配する。 [0317] (1) automatically distributes the plurality of processors to threads.

【0318】(2)各プロセッサにそれぞれローカルメモリを接続する。 [0318] (2) to connect the local memory to each processor.

【0319】(3)各プロセッサ間のアクセスは仮想アドレス空間とする [0319] (3) access between each processor and the virtual address space

【0320】本発明のプロセッサでは複数のメモリを接続し、それらを全て1つのスレッドの仮想アドレス空間からアクセスすることを可能にする。 [0320] In the processor of the present invention connecting a plurality of memory makes it possible to access them from the virtual address space of all single threads.

【0321】図10に、データキャッシュと外部を接続するTLB120、ローカルメモリインターフェース1 [0321] Figure 10, TLB 120 connects the data cache and external, local memory interface 1
22、プロセッサ間インターフェースユニット124の接続関係の模式図を示す。 22 shows a schematic view of a connection relationship interprocessor interface unit 124.

【0322】本発明のプロセッサにおいて、基本的には物理アドレスは、TLBユニット120とローカルメモリインターフェース122の間だけで利用される。 [0322] In the processor of the present invention, the physical address is basically utilized between only TLB unit 120 and the local memory interface 122. 物理アドレス専用信号1009が相互に接続される。 Physical address only signal 1009 is connected to each other.

【0323】本発明のプロセッサにおいては、割り込みは最優先プライオリティーを持つスレッドの発行として処理される。 [0323] In the processor of the present invention, the interrupt is processed as the issuance of threads with priority priority. リアルタイム性能は、スレッド制御ユニットによるプライオリティー制御によって確保できる。 Real-time performance can be ensured by priority control by the thread control unit. 本発明のプロセッサは、プライオリティーの高いスレッドにいつでも動作を移すことができるためである。 Processor of the present invention is to be able to transfer the operation at any time higher priority thread.

【0324】本発明のプロセッサはマルチスレッドを前提としているため、複数のプロセッサ間でスレッドを発行するのにソフトウェア上の追加はほとんど必要ない。 [0324] Since the processor of the present invention is premised on a multi-threaded, there is little need additional on software to issue thread among a plurality of processors.
少なくともユーザーレベルのソフトウェアでは無改造で複数のプロセッサにスレッドを分配できる。 At least at the user-level software can distribute thread on multiple processors without modification.

【0325】マルチプロセッサインターフェース124 [0325] multi-processor interface 124
は、メモリアクセスバス125とともに、制御パケットバス1007を有する。 , Together with a memory access bus 125, having a control packet bus 1007. プロセッサ内部の制御パケット信号1012は、そのままプロセッサ外部に出力することができる。 Control packet signal 1012 in the processor can be directly output to the outside of the processor.

【0326】マルチプロセッサインターフェース124 [0326] multi-processor interface 124
は、TLBによって該当する仮想アドレスがプロセッサ間共有状態を示す場合に、内部からの仮想アドレスを共有バス信号125に対して出力し、スレッド状態101 , When the virtual address corresponding the TLB indicates the shared state between processors, and outputs a virtual address from the internal to the shared bus signal 125, thread state 101
2を制御パケットバス1007に出力する。 Outputting two control packets bus 1007.

【0327】本発明のプロセッサは、外部の共有バス信号125からの仮想アドレスの受信によっても、TLB [0327] processor of this invention, by receiving the virtual address from the external shared bus signal 125, TLB
120へのアクセスを行う。 Providing access to 120. プロセッサ内部にデータのコピーがある場合は、TLB120のエントリが存在し、二次キャッシュへのアクセスによってデータの実体のあるキャッシュの場所も階層的に特定することができる。 If there is a copy of the data to the internal processor can entry TLB120 exists and also hierarchically particular location of the cache with a physical data by accessing the secondary cache. TLBのエントリが存在しない場合には、OSによる仮想記憶処理によって本来の物理アドレス、メモリバンクの所在を特定することになる。 If the TLB entry does not exist, it will be identified original physical address, the location of the memory banks by the virtual storage processing by the OS.

【0328】(制御信号パケット)制御信号をパケット化して伝達する方式は、制御信号をエンコードすること、複数の経路の配線を共有することで、制御信号の配線の規模、長さを最小限にできる。 [0328] (control signal packet) scheme for transmitting the control signals into packets is to encode the control signal by sharing the wiring of the plurality of paths, the size of the wiring of the control signal, minimizing the length it can. さらに、複数の信号のタイミング制御を、同一の回路で行うことで単純にすることができる。 Further, the timing control of a plurality of signals can be simplified by performing the same circuit. その欠点は、伝達のためのレイテンシが劣ること、パケットを中継するパケットルータの回路規模が大きいことである。 Its disadvantage is that the latency for the transmission is poor, is that a large circuit scale of the packet router for relaying packets.

【0329】ところが、本発明の方式では、即座に制御信号を伝達する必要があるのは隣接するユニットにかぎられる。 [0329] However, in the method of the present invention, immediately the control signal I need to transmit is limited to adjacent units. それ以外の制御信号は、スレッドのパイプライン進行にあわせて伝達すれば十分である。 Other control signals, it is sufficient to transmit in accordance with the threads of the pipe line progression. すなわち、パケット制御方式の欠点であるレイテンシは問題ではなくなる。 That is, the latency is a disadvantage of the packet control method is not a problem. そして、パケットルーターの回路的な規模の増大も局所的なものであるため、配線短縮の効果の方が大きい。 Since also the circuit scale increase of packet routers are those localized, the larger the effect of the wire shortening.

【0330】図11に、個々のパケットルータの内部構造の模式図を示す。 [0330] Figure 11 shows a schematic diagram of the internal structure of individual packets router. パケットルーターは以下の3つの機能を持つ。 Packet router has the following three functions.

【0331】(1)パケットに応じてユニットの制御を行う And controls the units in accordance with [0331] (1) packet

【0332】(2)パケットの目的地、情報量に応じて、複数のパケットルーターのうちの1つを選択してパケットを送り出す。 [0332] (2) the destination of the packet, depending on the amount of information, sends the packet by selecting one of a plurality of packets routers.

【0333】(3)パケットのタイミングをチェックして、スレッドの進行に対して遅れていればスレッドをストールする。 [0333] (3) to check the timing of the packet, to stall a thread if the delay with respect to the thread progression.

【0334】1101はパケットルーターである。 [0334] 1101 is a packet router. 受信した1102パケット信号を、コマンドデコーダー11 Received 1102 packet signal, the command decoder 11
03が解釈する。 03 to interpret. パケットをこのパケットルーター11 The packet router 11 a packet
01で即座に利用する場合は、制御信号デコーダー11 When utilized immediately at 01, control signal decoder 11
04にパケット信号を入力する。 To enter the packet signal to 04. 制御信号デコーダ11 Control signal decoder 11
04は、デコード結果と、パケットルーターのあるユニットの状態信号1105に応じて、個別のステートマシン1106を動作させ、ユニットの制御をローカル制御信号1107で行う。 04, a decoding result in response to the status signal 1105 of the unit with a packet router, to operate a separate state machine 1106, controls the units in the local control signal 1107. 制御信号デコーダ1104、ローカルステートマシン1106の構造はユニットごとに異なる。 Control signal decoder 1104, the structure of local state machine 1106 is different for each unit.

【0335】パケットを中継する場合は、まず、タイミングチェッカ1112でパケットが時間どおりに到達しているかどうかを判定する。 [0335] If you want to relay a packet, first, to determine whether the packet at the timing checker 1112 has reached on time. 時間に遅れている場合はスレッドストール要求信号1111でパケットを要求したスレッドを停止する。 If you are late for stopping the thread that requested the packet in a thread stall request signal 1111. パケットバッファ1108に蓄積する。 Accumulated in the packet buffer 1108. パケットが時間以内に到達している場合は、パケット出力ユニット1110で複数のパケットバスのうちの1つを選択してパケットを出力する。 If the packet is being reached within the time, and outputs the packets by selecting one of a plurality of packet bus packet output unit 1110.

【0336】パケットの送信先は最終的な送信先に応じて静的に決定できる。 [0336] destination of the packet can be determined statically depending on the final destination. トラフィックに応じた動的な経路制御などを行うわけではないため、一般的なネットワークで行うような最適な経路制御の必要はない。 Because not perform such dynamic routing according to the traffic, it is not necessary for optimal routing as performed in general network.

【0337】図12に、本発明の第一実施例におけるパケットルーターの配置を示す。 [0337] FIG. 12 shows an arrangement of a packet router in the first embodiment of the present invention.

【0338】パケットルーターは大まかなユニット、バスバッファごとに設置され、ユニットの制御を行う。 [0338] Packet routers rough unit is installed in each bus buffer, and controls the unit. パケット制御信号線は隣接したパケットルーターの間のみに配線される。 Packet control signal lines are wired only between adjacent packet router.

【0339】パケット制御信号は、スレッドのパイプラインの進行に従って伝送される。 [0339] packet control signal is transmitted in accordance with the progress of the threads in the pipeline. たとえば、演算ユニットからTLBユニットへの書き込みを要求した場合は、 For example, if requested to write to TLB unit from the operation unit,
キャッシュユニットのルーターを通過して伝達される。 It is transmitted through the router cache unit.
転送の中継に時間がかかるため、転送は数クロックを要する。 Because it takes time to relay the transfer, the transfer takes a few clock. ただし、転送の間に別のスレッドの動作が可能である。 However, it is possible the operation of another thread during the transfer.

【0340】この機構によって、最小限の配線で並列数に見合うだけの数の制御信号を送ることができる。 [0340] With this mechanism, it is possible to send a number control signal of commensurate number of parallel with minimum wiring.

【0341】図27に、制御パケット信号の例を示す。 [0341] Figure 27 shows an example of a control packet signal.
すべての制御パケットは、32ビット程度のCP(Co All control packets are of approximately 32-bit CP (Co
ntrolPacket)信号を持つ。 ntrolPacket) with a signal.

【0342】ControlPacketには、パケットの機能を示すPacketCommand、パケットのパラメータを示すValueFieldを持つ。 [0342] The ControlPacket, PacketCommand showing the function of the packet, with ValueField showing parameters of the packet. Re Re
questorUnitは要求元、TargetUni questorUnit is requesting, TargetUni
tは伝達先のユニットを示す。 t denotes the unit of transmission destination.

【0343】RemainingTimeはパケットが時間内に伝達されたかどうかの確認を行うための値である。 [0343] RemainingTime is a value for confirming whether a packet is transmitted in time. この値をデクリメントすることで、パケットの進行が間に合っているかどうかの判定を行う。 By decrementing this value, it is determined whether the progress of the packet is in time. UserLe UserLe
velは、制御パケットの特権レベルを示す。 vel shows the privilege level of the control packet.

【0344】スレッドの情報が必要なパケットは、やはり32ビット程度のTI信号が付加される。 [0344] thread information is required packet is added again 32 bits of about TI signal. TIにはプロセス、スレッドIDと、スレッドの優先順位、ユーザーレベルが格納されている。 The TI process and thread ID, thread priority, user level are stored.

【0345】この2つに加えて、アドレス、データ、P [0345] In addition to these two, address, data, P
C(プログラムカウンタ)、SP(スタックポインタ) C (program counter), SP (stack pointer)
などの値が付加される。 The value of such is added. TIとPC,SPによって、スレッドのすべての情報が管理される。 TI and PC, by SP, all the information of the thread is managed. CPとアドレス、 CP and address,
データが通常の内部バストランザクションに利用される。 Data is used in normal internal bus transaction. なお、制御パケット信号の仕様は、スレッド状態転送、データ転送などの目的によって変えることもでき、 Incidentally, the specifications of the control packet signal can also be varied thread state transfer, the purpose of data transfer,
共用することもできる。 It can also be shared.

【発明の効果】 【Effect of the invention】

【0346】(回路規模) [0346] (circuit scale)

【0347】基本的に、プロセッサに求められる性能は周波数性能と並列性能の積である。 [0347] Basically, the performance required of the processor is the product of the parallel performance and frequency performance. しかし、利用目的によっては、コストあたりの性能、および消費電力あたりの性能も求められる。 However, depending on the intended use, performance per cost, and performance per power consumption is also determined. 本発明の方式は、回路の組みあわせによってそれらのいずれにも最適な構成にできることを示す。 Scheme of the present invention, shown to be able to optimally configured in any of them by combination circuits.

【0348】今後のプロセッサの速度は、配線遅延にほぼ比例して決定される。 [0348] speed of the future of the processor is determined substantially in proportion to the wiring delay. 半導体のプロセスの進化に従い、回路の局所的な遅延時間は縮小傾向がある。 According evolution of semiconductor processes, local delay circuits is shrinking. しかし、それには配線もトランジスタと同じオーダーで縮小するという前提条件が必要である。 However, it is necessary precondition that is in it wiring is also reduced by the same order of magnitude as the transistor. そのため、回路の大規模化によって配線が縮小されない場合は、微細化にもかかわらず周波数性能の向上は不可能になる。 Therefore, when the wiring by scale of the circuit is not reduced, improving the frequency performance despite the miniaturization becomes possible. そのため、チップ全体の配線を行わないようにして、配線のオーダーを増加させないことが、周波数性能の向上を維持するために不可欠である。 Therefore, Separate the wiring of the whole chip, it does not increase the order of the wiring is essential to maintain a higher frequency performance.

【0349】配線の規模は、データ転送幅と転送相手の数で決まる。 [0349] scale of the wiring is determined by the number of data transfer width as the transfer destination. データ転送幅のN倍の増加に対して、配線の規模はN倍に比例して増大する。 For N times increase in data transfer width, size of the wiring increases in proportion to N times. 遅延の増大はわずかである。 Increase in the delay is slight. それに対して、転送相手のN倍の増加に対しては、配線の規模はNの二乗に比例して増加する。 In contrast, for the increase of N times the transfer destination, the size of the wiring is increased in proportion to the square of N. そして、遅延もN倍で増加する。 The delay also increases N times. そのため、転送相手を増やすことより、転送幅を増やすことの方が遥かに容易である。 Therefore, from increasing the transfer destination, towards increasing the transfer width it is much easier.

【0350】本発明のプロセッサは、バスの階層化によって転送相手の組みあわせを常に4つ程度に制限している。 [0350] processor of this invention is restricted to always about four of the combination of the transfer destination by layering the bus. この規模は現行のインオーダースーパースカラ方式プロセッサと同程度である。 This scale is about the same as the current in-order superscalar processor. これ以上の一対一接続の配線は行わないため、いくら並列度が増加しても、周波数性能を阻害する配線長の増加が発生することはない。 Because more of the wiring of one-to-one connection is not performed, it is increased much parallelism is, does not increase the wiring length to inhibit frequency performance occurs.

【0351】シフトレジスタ型転送は、自由な転送能力、比較的高いピークバンド幅、バスのアービトレーションの容易さという長所があるが、欠点としてはレイテンシ性能が最低となる。 [0351] The shift register type transfer, free transfer capacity, higher peak bandwidth, but there is an advantage of ease of bus arbitration latency performance is lowest as disadvantages. このレイテンシ性能の低下を隠蔽するためにマルチスレッドを利用する。 To take advantage of multiple threads in order to conceal the reduction in the latency performance.

【0352】表1に、VLIW方式、SMP方式、本発明のPMT方式ごとの回路規模、遅延時間の比較の表を示す。 [0352] Table 1 shows VLIW system, SMP scheme, the circuit scale of each PMT method of the present invention, a table of comparison of the delay time.

【0353】VLIW方式は、並列規模の増大に対して周波数性能を著しく低下させる。 [0353] VLIW system, significantly reduces the frequency performance for the parallel scale increases. マルチプロセッサ方式は、周波数性能は維持できるが、回路規模の増大が大きい。 Multiprocessor system, although the frequency performance can be maintained, a large increase in circuit scale. それに対して本発明のPMT方式は、メモリ、演算ユニットの共有によって、最小限の回路規模で並列性能を増加させることができる。 PMT method of the present invention, on the other hand, the memory, the shared arithmetic unit, it is possible to increase the parallel performance with minimal circuit scale.

【0354】(ユニット稼働率から見た性能向上) [0354] (performance improvement as seen from the unit operating rate)

【0355】本発明の方式は、単体のスレッドのレイテンシ性能ではほかのパイプラインプロセッサに劣るが、 [0355] method of the present invention, the latency performance of a single thread, but inferior in addition to the pipeline processor,
複数のスレッドの動作全体で性能を稼ぐことができる。 Performance can earn in the whole operation of a plurality of threads.
そのため、全体の性能はすべてのスレッドの和である大域的な処理性能で判断されなければならない。 Therefore, the overall performance must be determined by the global performance is the sum of all threads. さらに本発明の方式は、演算ユニットなどの稼動率を最大にすることで、回路規模に対する全体の性能を最大にできる。 Further methods of the present invention, the rate of operation of such computation units to maximize, can overall performance for the circuit scale up.
それに対して、ほかの方式の多くは回路規模を増加するほど演算ユニットなどの稼動率が下がる傾向がある。 On the other hand, many of the other system there is a tendency that the operation rate is lowered, such as arithmetic unit to increase the circuit scale. 以下、演算ユニットなどの稼動率が他の方式に対して高いことを示す。 Hereinafter, indicating that rate of operation of such operation unit is high relative to other systems.

【0356】表2は、本発明の方式と、SMP方式との各状況に対する演算ユニットの停止期間の比較の表である。 [0356] Table 2, the method of the present invention, is a table of comparison of the stop period of the operation units for each situation of the SMP system.

【0357】本発明の方式は、自由な命令配置能力と、 [0357] method of the present invention, and the free instruction placement capability,
局所SMPモード機能によって、あらゆる演算ユニットをほぼ常に動作させることができる。 By local SMP mode function, any arithmetic units can be substantially to always operate. 従来のPMT方式が命令の配置に命令アドレスの制限があったのと対照的である。 Conventional PMT method contrasts with there was a restriction instruction address to the arrangement of the instruction.

【0358】本発明のプロセッサは、例外の発生頻度がスレッド発行ユニットの供給能力を超えない限り、ほとんど全てのペナルティーを隠蔽することができる。 [0358] processor of this invention, as long as the frequency of occurrence of an exception does not exceed the supply capacity of the thread issuing unit, can be concealed almost any penalty. すなわち、スレッドが十分供給されている限り、本発明の方式はVLIW、マルチプロセッサ方式よりも演算ユニットの稼動率で勝る。 That is, as long as the thread is sufficiently supplied, the system of the present invention VLIW, excels in rate of operation of the arithmetic units than multiprocessor system. しかも、それはスレッドが独立に並列動作できる限り、演算ユニットの数に比例して性能を向上できる。 Moreover, it is as long as the threads can operate in parallel independently, thereby improving the performance in proportion to the number of arithmetic units.

【0359】マルチプロセッサ方式は、コンテキストスイッチにOSの介在が必要である。 [0359] Multiprocessor system requires intervention of OS context switch. さらに、スレッドを別のプロセッサに移して再開させる「スレッドの移住」 In addition, to resume transferring the thread to another processor "thread migration of"
に、すべての状態をキャッシュコヒーレンシで転送する必要がある。 , There is a need to transfer all of the state cache coherency. この動作には、約100クロック以上の間プロセッサのバスを占有するため、数千クロック以上のレイテンシを隠蔽するのでなければ意味がない。 This operation, in order to occupy the bus for more than about 100 clocks the processor, it is meaningless unless the hiding latency thousands clocks. さらに、スレッドを再開するには、動作しているスレッドがOSを呼び出して、各スレッドに対して再開条件が整っているかどうかを確認しなければならない。 In addition, to resume the thread, the thread running calls the OS, must determine whether the well-equipped to resume conditions for each thread.

【0360】次に、マルチプロセッサ方式にコンテキストスイッチ機能をハードウェアで実装して自動的に行うことを考える。 [0360] Next, consider automatically to perform a context switch function is implemented in hardware in a multi-processor system. それでも、すべてのプロセッサに大量のスレッド、そしてそれら全てのスレッドの状態と、完全なスケジューリングハードウェアを同時に搭載する必要がある。 Still, a large amount of thread to all of the processors and all the threads of their state, it is necessary to mount a full scheduling hardware at the same time. さらに、スレッドの移住には大量のプロセッサ間転送が必要になり、オーバーヘッドは削減できない。 In addition, will need to transfer between the large number of processors to thread migration, overhead can not be reduced.

【0361】以上の結論として、マルチプロセッサ方式とレイテンシ隠蔽機構は両立しにくい。 [0361] As the above conclusions, the multi-processor system and latency hiding mechanism is difficult to achieve both.

【0362】本発明の方式は、コンテキストスイッチはハードウェアで実装される。 [0362] system of the present invention, the context switch is implemented in hardware. 本発明の方式は、すべてのスレッドの空きスロットが1つのスケジューリングハードウェアを通るので、どの空き状態のノードにも即座にスレッドを供給できる。 Scheme of the present invention, since all threads vacant slot through one scheduling hardware, can be supplied to the thread immediately to any of the empty node.

【0363】さらに、本発明の方式では、停止していたスレッドは、基本的には停止した時と同じノードで再開することができる。 [0363] Further, in the method of the present invention, the thread that has been stopped, basically it can be resumed on the same node as when it stops. この場合は状態の転送が一切必要なく、そのノードが空いた時点で即座にスレッドを再開できる。 This does not need any state of the transfer is the case, can resume the thread immediately at the time the node is vacant. このため、スレッドの移住をほとんど行わずに、 For this reason, without most of the thread migration,
最適なスレッドの負荷分散が可能になる。 Load distribution of optimal thread becomes possible.

【0364】さらに、同期変数の待ち合わせに関しても、同期変数のアクセスによってバスを止めることはない。 [0364] In addition, with regard to the meeting of the synchronization variable, not to stop the bus by the access of the synchronization variable. 更に、データフロー同期を利用すれば、スケジューリングの必要も同期変数の確認も必要ない。 Furthermore, by using the data flow synchronization is not necessary even confirmation of synchronization variable need for scheduling. この機能によって本発明のプロセッサはマルチスレッドのオーバーヘッドをなくし、マルチスレッドをあらゆるレイテンシの隠蔽に使用することを可能にしている。 Processor of the present invention This feature eliminates the multithreaded overhead, and enables the use of multithreading in hiding any latency.

【0365】本発明の方式における唯一のSMP方式に対する短所は、パイプライン間のスレッドの移住である。 [0365] Disadvantages for only SMP system in the method of the present invention is a thread migration between pipelines. しかし、スレッドの移住の頻度はパイプラインを長くすることによって減少させることができる。 However, the frequency of thread immigration can be reduced by lengthening the pipeline.

【0366】最小限のキャッシュ容量でスレッドの稼動率を上げるためには、同じ命令やデータを利用するスレッドを集中して実行すれば良い。 [0366] In order to increase the thread operating rate of a minimum of cache capacity, it may be executed concentrate on a thread to use the same instructions and data. それは同じ工程の仕事を集中して行うほうが効率が良いことを意味する。 It is better to do to focus the work of the same process which means that the efficiency is good. 本発明の方式は、命令、データキャッシュミスの管理によって、ある程度は自然にこの共有の形になる。 Scheme of the present invention, the instruction by the management of data cache misses, to some extent is naturally in the form of this share.

【0367】本発明の方式は、隣接する演算ユニットに全てのレジスタ状態を転送するかわり、共有するデータの転送量が減るPMT方式を基本とする。 [0367] system of the present invention, instead of transferring all register states in adjacent arithmetic units, and based on the PMT scheme reduces the amount transferred data shared. それに加えて、レジスタ状態を転送しない代わりに、共有するデータの転送量が最大となるSMP方式も可能にする。 In addition, instead of having to transfer the register state also allows SMP systems to transfer amount of data to be shared is maximized.

【0368】PMT方式では、命令の間のデータ転送スループットは、近傍の命令間ほど多く必要とされ、命令間が遠距離になるほど減少する傾向にある。 [0368] In PMT system, data transfer throughput between the instruction is required so much between neighboring instructions, tends to decrease as the inter-instruction is far. それに対して、スレッド間のデータ転送のためのスループットは、 In contrast, the throughput for the data transfer between threads,
スレッド間のデータの共有が多く、並列度が増大するほど拡大する。 Sharing of data between threads is large and expands as the degree of parallelism is increased. 理由は、1つのデータを大量のプロセッサがほぼ独立して参照するためである。 Reason is the large amount of processor one data reference substantially independently. そのために、SM To that end, SM
P方式ではメモリバス稼働率に著しい偏りが生じる。 Bias significant to the memory bus utilization rate occurs in the P system.

【0369】PMT方式は、スレッド間のデータ転送のスループットを最小限にする方式である。 [0369] PMT method is a method to minimize the throughput of data transfer between threads. よって、どんなに並列度を上げて、かつ同じデータを共有しても、局所的なデータバスのデータスループットの増加を抑制することができる。 Therefore, it is possible however to increase the degree of parallelism, and even share the same data, to suppress an increase in data throughput of the local data bus. すなわち、データの共有とスケーラブルな並列性能向上を同時に実現することができる。 That is, it is possible to realize the sharing and scalable parallel performance improvement data simultaneously.

【0370】それに対して、SMP方式は、スレッド間の転送には弱いが、単体の演算ユニットだけで実行ができるという長所がある。 [0370] In contrast, SMP scheme is vulnerable to transfer between threads, there is an advantage in that it is performed only in a single operation unit. そのため、独立したスレッドの実行では、SMP方式を利用するほうがメモリバスの稼働率が最小となる。 For this reason, in the execution of a separate thread, better to use the SMP system is the memory bus utilization rate is minimum.

【0371】本発明の方式は、データキャッシュ間の転送量によって自動的にPMT方式、SMP方式を使い分け、常にメモリバス稼働率を最小にすることができる。 [0371] system of the present invention automatically PMT manner by the transfer amount between the data cache, selectively using SMP scheme, always a memory bus operation rate can be minimized.

【0372】一般的に、キャッシュの容量が増大すれば、それだけキャッシュミスの確率が減少して全体の性能を上げることができる。 [0372] In general, if the increase in the capacity of the cache, it is possible to increase the overall performance and decrease the probability of the more cache misses. しかし、キャッシュの容量の増大はキャッシュアクセスの速度低下を招く。 However, increase in the capacity of the cache deteriorate speed cache access. そのためには、キャッシュを分割するのが望ましいが、複数のキャッシュへの接続はやはり配線遅延による速度低下を招く。 For this purpose, it is desirable to divide the cache, connections to multiple cache again leads to the speed reduction due to the wiring delay. 理想的なキャッシュ容量増大の方法は、キャッシュと演算ユニットを直結させて、それを組にして大量に配置することである。 The method of ideal cache capacity increase, by directly cache an arithmetic unit, it is to place a large amount and it set. しかし、従来のマルチプロセッサ方式では、キャッシュを複数持たせても、複数のキャッシュのほとんどに同じ内容を格納する必要があり、キャッシュの容量増大の効果を見込むことはできない。 However, in the conventional multiprocessor system, be provided with a plurality of caches, it is necessary to store the same content in most of the plurality of caches, it is impossible to expect the effect of increasing the capacity of the cache.

【0373】それに対して、本発明の方式では、PMT [0373] On the other hand, in the method of the present invention, PMT
方式を利用する限りは、複数のキャッシュへの同じデータの複製を抑制することができ、キャッシュの容量を増大させてヒット率を向上させることができる。 Unless utilizing method, it is possible to inhibit the replication of the same data to multiple caches, it is possible to improve the hit rate by increasing the capacity of the cache. さらに、 further,
スレッドの中で何度も利用するデータ、あるいはスレッドの中で発生したデータについても、データを利用するキャッシュに対してのみ直接データを送るため、データの複製が最小限で済む。 Data also used many times in the thread, or for even thread data generated in, for sending only the direct data to the cache that utilizes data, data replication is minimal.

【0374】(命令、データ、演算ユニットの共有) [0374] (instruction, data, sharing of arithmetic units)

【0375】現在のプロセッサでは、命令メモリの内容はプログラムのロード時に決定され、まず改変されることはない。 [0375] In the current processor, the contents of the instruction memory is determined at the time of program loading, it will not be first be modified. それを許すと、命令の読み込み、動作順序が保証されない現在のプロセッサでは動作が保証されないためである。 Allowing it to read the instructions, the current processor operation sequence is not guaranteed because the operation is not guaranteed.

【0376】そのため、命令メモリはアドレスに対して必ず同じ値が読み出され、他のスレッドからの改変のおそれもまずない。 [0376] Therefore, the instruction memory is always the same value is read out to the address, you it is also unlikely modifications from the other thread. ということは、同じ命令メモリを利用するスレッドはすべて1つの命令を利用できれば効率的である。 It is a thread to use the same instruction memory are all effective if use one instruction called. PMT方式の作用によって、1つの命令は連続してパイプライン状に動作する大量のスレッドから参照できる。 By the action of the PMT system, one instruction can be referenced from large number of threads operating the pipeline shape continuously. そのため、本発明の方式はオンチップマルチプロセッサなどに比較して命令のメモリサイズ、リプレースに要求されるメモリスループットが遥かに小さい。 Therefore, methods of the present invention is a memory size of the instruction by comparing such on-chip multiprocessor, memory throughput is much smaller required for replacement.

【0377】本発明の方式では、パイプラインの動作を止める分岐命令、データキャッシュミスは、マルチスレッドによってある程度は隠蔽できる。 [0377] in the manner of the present invention, branch instructions to stop the operation of the pipeline, a data cache miss may conceal some extent by multi-thread. しかし、スレッド発行ユニットの供給能力を超えるほど頻発する場合は、 However, if the frequent enough to exceed the supply capacity of the thread issue unit,
本発明の方式でもやはりパイプラインを停止することになり、性能を低下させる。 It will be also stopped pipeline even in the manner of the present invention, to lower the performance. そのため、命令に置かれた予測情報を用いて、そのペナルティーを極力減少するのが望ましい。 Therefore, using the prediction information placed in the instruction, it is desirable to reduce the penalty as much as possible.

【0378】本発明の方式は、1つの命令を全てのスレッドが共有できる。 [0378] system of the present invention, a single instruction can share all threads. そして、分岐予測情報、データフロー予測情報は、命令列の内容、すなわち命令アドレスに依存し、個別のスレッドの状態にほとんど依存しない。 Then, the branch prediction information, the data flow prediction information, the contents of the instruction sequence, i.e. depending on the instruction address, hardly depends on the state of individual threads.
ということは、これらの予測情報は1つあれば全てのスレッドから共有できる。 That means, these prediction information can be shared by all threads, if one.

【0379】マルチプロセッサ間データ転送は、プロセッサの数が増加するにしたがって局所的にも増大し、個々のプロセッサのバス転送性能を使用し、マルチプロセッサにおいてスケーラブルな性能向上を阻害する。 [0379] Multiprocessor data transfer, also increases the local as the number of processors is increased, using the bus transfer performance of individual processors, inhibiting scalable performance improvement in a multiprocessor.

【0380】プログラムで利用するデータには、細かい数値の相違はあるものの、80%の部分のプログラムで20%の部分のデータを利用するという経験則がある。 [0380] to the data to be used in the program, although the difference of fine figures are there, there is a rule of thumb that use the data of 20% of the portion of 80% of the portion of the program.
たとえば、キャッシュはこの経験則を利用するものである。 For example, the cache is to use this rule of thumb. ということは、1つのプログラムを分割したスレッドも、その多くは同じデータを利用することになるのは当然である。 That means, also the thread obtained by dividing one program, many are due to will use the same data. この性質を利用するために、まったく違うスレッドが同じデータを利用する方法を提供する。 In order to take advantage of this nature, it is totally different threads to provide a method for using the same data.

【0381】データは同じ命令が同じようなデータを利用するケース、あるいはまったく違うデータを利用する2つのケースが考えられる。 [0381] The data are two cases where the same instruction is to use the case or completely different data, use the same kind of data can be considered. 当然データの共有の効率は命令ほどではないが、大まかなデータブロックに対しては共有できるケースが多い。 Of course sharing efficiency of data is not so much instruction, in many cases can be shared for rough data blocks. そのために、データキャッシュを分散配置し、複数のスレッドから共有させる。 Therefore, the data cached distributed, is shared by multiple threads.

【0382】これによって、データキャッシュの共有と大容量化を同時に実現し、結果的に単体スレッドから見た一次キャッシュの容量を増加させることができる。 [0382] Thus, to achieve shared and large capacity data cache at the same time, it is possible to increase the capacity of the primary cache seen from results in single thread. 無論、一次キャッシュ間の転送量は増加するが、それはスループットのみの増大であり、比較的実装しやすい。 Of course, although the transfer amount between the primary cache is increased, it is increased only throughput, relatively easy to implement.

【0383】本発明の方式では隣接する4つ程度の演算ユニットが1つのスレッド発行ユニットを共有する。 [0383] Four degree of operation units adjacent in the manner of the present invention share one thread issuing unit. これは、分岐、例外によるスレッドの切り替えの頻度が数命令に一回という前提によるものである。 This is a branch, is due to the assumption that the frequency of the switching of the thread by exception once in few instructions.

【0384】待ち状態のスレッドは、この4つの同時実行されているスレッドのうちの、どのスレッドが停止しても即座に発行できる。 [0384] The waiting thread of the threads being the four concurrent, be issued immediately be stopped which thread.

【0385】さらに、演算ユニットの列の長さの増加、 [0385] Furthermore, an increase in the length of the column of arithmetic units,
分岐予測などによってスレッドの移住の頻度が減れば、 If Hereford the frequency of threads of immigration, such as by the branch prediction,
スレッド発行ユニットの稼働率も相対的に減少する。 Availability of the thread issuing unit also decreases relatively.

【0386】そして、本発明の方式では細かいスレッドの切り替えのためのスレッドの移住も必要ない。 [0386] Then, there is no need for migration of thread for the switching of the fine thread in the system of the present invention. レジスタ、データキャッシュの内容は、常にスレッドが停止した場所に待機されており、スレッドの空きスロットを待つだけで即座に実行を開始できる。 Register, the contents of the data cache has always been waiting to where the thread is stopped immediately can start executing just wait for the thread free slots.

【0387】SMP方式では、キャッシュレイテンシ隠蔽のためには、すべてのプロセッサがそれぞれ実行可能な待ちスレッドを待機させておく必要がある。 [0387] In SMP system, for cache latency tolerance, it is necessary that all processors allowed to stand executable waiting thread, respectively. あるいは、隣接するいくつかのプロセッサに対してスレッド発行を行わせることになる。 Alternatively, it would cause the thread issued to several processors adjacent. このことは、大量のプロセッサに対して任意のスレッドを高速に発行することが難しいことを意味する。 This means that it is difficult to issue any thread to high speed for a large number of processors.

【0388】本発明の方式では、各スレッド発行ユニットを、すべてのスレッドがパイプラインとして通過することによって共有させる。 [0388] in the manner of the present invention, each thread issue unit, all threads are covalently by passing a pipeline. このため、すべてのプロセッサが待ち状態のスレッドを有することなく高速コンテキストスイッチを可能にする。 Therefore, to allow for fast context switching without having threads all processors waiting state. データキャッシュや特殊演算ユニットの結果などを取得し、再開する準備が整ったスレッドは、常に空いたあらゆるスレッドスロットに対して発行される。 Obtain the result such as data cache and special arithmetic unit resumes ready thread is issued to always empty any thread slot.

【0389】(IPユニットの共有) [0389] (share of the IP unit)

【0390】IPユニット間のデータの転送能力を最大にするには、IPユニット間を信号で直結するのが最も簡単である。 [0390] To maximize the transfer capability of data between IP unit is easiest to direct connection between the IP unit with the signal. だが、それでは全体で1つの機能しか実現できない。 But, So not only realized a total of one function.

【0391】次に考えられる手段は、それぞれIPユニットの間にマイクロプロセッサをそれぞれ置くことである。 [0391] Next possible means is to place the microprocessor respectively between each IP units. しかしこれでは、プログラムがIPの結合ごとに分散されることになり、処理が一様にならないという欠点がある。 This is, however, the program is distributed to each IP binding, there is a disadvantage that the processing is not uniform.

【0392】さらに次に考えられるのは、IPユニットとマルチプロセッサをクロスバスイッチで結合する方法である。 [0392] Even more considered in the following is a way to combine IP unit and multiprocessors crossbar switch. これならば、共有バスよりは優れた転送能力が確保できる。 If this can be secured an excellent transfer capability than the shared bus. しかしクロスバスイッチは回路規模が(M However crossbar switch circuit scale (M
個のプロセッサ、N個のIPユニットユニットに対して)MとNの積のオーダーでで増加する方式であり、大規模並列には向かない。 Number of processors, a method of increasing in the order of N product of IP to the unit Unit) M and N, is not suitable for massively parallel. さらに、そのために切り替えのレイテンシ時間が遅く、自由でかつ動的な転送には向かない。 Furthermore, therefore slower latency time of switching to, not suitable for a free and and dynamic transfer.

【0393】本発明の方式は、各ノードに対してIPユニットを接続して、IPユニット間の通信能力をノード間のデータ通信能力で確保する。 [0393] system of the present invention is to connect the IP unit for each node, to ensure the communication capabilities between IP unit in data communication capabilities between nodes. IPユニット間のデータの整形は、PMTの各演算ユニットがそれぞれ独立して行い、IPユニットへの入力の負荷が低い場合はすぐに別の用途に転用できる。 Shaping of data between IP unit performs the arithmetic units of the PMT is independently, when the load input to IP unit is low can be diverted to other uses immediately.

【0394】IPユニットの転送能力が単体の演算ユニットの転送能力を超えるほど高い場合には、近傍の複数の演算ユニットを利用して転送し、その先の演算ユニットでデータを整形することができる。 [0394] When the transfer capability of the IP units higher than the transfer capability of a single operating unit can be transferred by using a plurality of arithmetic units in the vicinity, shaping the data in the arithmetic unit of the above . このような場合では特に、マルチプロセッサ+クロスバスイッチ方式より圧倒的にIPユニットからの転送性能を稼ぐことができる。 Such particularly in case, it is possible to make transfer performance from predominantly IP units than multiprocessor + crossbar switch method.

【0395】本発明の方式では、IPユニットはソフトウェアでは特殊命令、あるいはシステムアクセス命令として使用することができ、その配置に制限はない。 [0395] in the manner of the present invention, IP unit can be used as a special instruction, or system access instruction in software, it is not limited to that arrangement. 実際のIPユニットの分散配置に対しては、スレッドの移住機構が自動的に対応することもできる。 For distributed real IP units, thread immigration mechanism can automatically be corresponding possible. IPユニット間のデータ転送は、PMT方式が持つレジスタ隣接転送、 Data transfer between IP unit register adjacent transfer with the PMT system,
キャッシュコヒーレンシ機構で行う。 It carried out in the cache coherency mechanism. こうして、同じソフトウェアで自由なIPユニットの組み合わせに効率良く対応することができる。 Thus, it is possible to efficiently corresponding to a combination of free IP unit with the same software.

【0396】(消費電力予測) [0396] (power consumption prediction)

【0397】CMOS回路は、信号の変化のときに電力を消費する。 [0397] CMOS circuit consumes power when the signal changes. 信号が変化しなければ電力をほとんど消費しない。 Signal hardly consume power unless changes.

【0398】ところで、本発明の方式は、同一のスレッドを連続して動作させるときは、その供給される命令、 [0398] Incidentally, the instruction system of the present invention, when operating continuously the same thread, which is the supply,
演算ユニットの状態は完全に同一である。 State of the operation unit to be completely identical. さらに、利用するレジスタファイル、データバス、データキャッシュとのバス通信の内容もスレッド間の違いは少ない。 In addition, the register file to be used, data bus, the difference between the contents of the bus communication of the data cache thread is small. ということは、同じスレッドをまとめて実行する時には、各スレッド間のわずかな動作の違いだけが消費電力になる。 That is, when running together the same thread, only the difference of a slight operation between each thread is made in power consumption. それに対して、通常のプロセッサでは、各命令ごとにすべての回路の状態が変わるため、すべての回路の半分近くの信号が変化し、消費電力となる。 In contrast, in the conventional processor, since the state changes of all the circuits for each instruction, nearly half of the signals of all the circuit is changed, the power consumption.

【0399】結論としては、本発明の方式のプロセッサは、同一の命令、データを利用したスレッドの連続動作が可能な場合は、現行のパイプライン方式プロセッサよりも低い消費電力で同じ性能を発揮できる。 [0399] In conclusion, the processor of the system of the present invention, the same instruction, if the data that can be thread continuous operation utilizing can exhibit the same performance at lower power consumption than the current pipelined processor . アーキテクチャのレベルでこれ以上の低消費電力の手段は考えられない。 It is not considered any more low power means at the level of the architecture.

【0400】表1の記載のように、本発明のプロセッサは、マルチプロセッサ、VLIW方式に対して、性能に対する回路規模が最小である。 [0400] As described in Table 1, the processor of the present invention, a multiprocessor, with respect VLIW system, the circuit scale for performance is minimal. 理由は、PMT方式は命令、データ、演算ユニットの共有を行うためである。 Reason, PMT method instruction is for performing data, the sharing arithmetic units. 性能に対する回路規模が最小であるということは、そのまま性能に対する消費電力が最小であるということを意味する。 That the circuit scale for performance is minimal, as the power consumption for performance means that the smallest.

【0401】さらに、本発明の方式は、性能に対する配線長も最小である。 [0401] In addition, methods of the present invention, the wiring length for performance is minimal. 今後の半導体の消費電力は、配線容量の充放電が大半を占めることになると予想されるため、配線が最小であるということはそのまま消費電力の削減に繋がる。 Power consumption of future semiconductors, since the charging and discharging of the wiring capacity is expected to be the majority, wire leads directly to the reduction of power consumption that is minimal.

【0402】さらに、前述した同一命令を利用するスレッドの連続動作による電力削減とあいまって、本発明の方式は、プログラム可能な回路において、最小の電力で実際の演算を行う方法であるといえる。 [0402] Further, combined with the power reduction due to continuous operation of the threads using the same instruction as described above, methods of the present invention can be said to the programmable circuit, a method of performing the actual operation with a minimum of power. ただし、本発明の方式は局所的にはSMP方式に近い動作モードも持つため、その部分はSMP方式と同じ消費電力になる。 However, the system of the present invention since the local also has operation modes near the SMP system, that portion is the same power as the SMP system. しかし、本発明の方式は可能な限りPMT方式で演算を行おうとするため、演算性能に対する消費電力は常に最小になる。 However, the method of the present invention for attempting to operation in PMT manner as possible, the power consumption for operation performance is always minimized.

【図面の簡単な説明】 BRIEF DESCRIPTION OF THE DRAWINGS

【図1】本発明の構造を用いたプロセッサの構造模式図(第一実施例) [1] Structure schematic structure of a processor using the present invention (first embodiment)

【図2】従来のVLIW方式のプロセッサの構造模式図 [Figure 2] structural schematic diagram of a processor of a conventional VLIW type

【図3】従来のマルチプロセッサ方式のプロセッサシステムの構造模式図 [Figure 3] structural schematic diagram of a processor system of a conventional multi-processor system

【図4】従来のPMT方式のプロセッサの構造模式図 [4] structural schematic diagram of a processor of a conventional PMT scheme

【図5】本発明の構造を用いたプロセッサの構造模式図(第二実施例) [5] structural schematic structure of a processor using the present invention (second embodiment)

【図6】命令発行ユニットの内部構造模式図 [6] The internal structure schematic diagram of the instruction issue unit

【図7】最大4つのスレッドを同時に実行する、実行ユニットの内部構造模式図 [7] performing up to four threads simultaneously, the internal structure schematic view of the execution units

【図8】一次、二次キャッシュの接続関係を示す構造模式図 [8] The primary structural schematic diagram showing the connection relationship between the secondary cache

【図9】TLBユニットの内部構造模式図 [9] The internal structure schematic view of the TLB unit

【図10】TLBと外部インターフェースの接続関係を示す構造模式図 [10] structural schematic diagram showing the connection relationship between the TLB and an external interface

【図11】パケットルーターの内部構造模式図 [11] The internal structure schematic diagram of a packet router

【図12】本発明の第一実施例における、パケットルーターの配置図。 In the first embodiment of the present invention; FIG arrangement diagram of a packet router.

【図13】命令キャッシュタグメモリの1ラインごとの内容 [13] The contents of each line of the instruction cache tag memory

【図14】データキャッシュタグメモリの1ラインごとの内容 FIG. 14 is a data cache the contents of each line of the tag memory

【図15】TLBユニットの1エントリごとの内容 [15] The contents of each entry in the TLB unit

【図16】従来のマルチプロセッサにおける、スレッドの動作例 [16] in a conventional multiprocessor thread operation example

【図17】本発明のプロセッサにおける、スレッドの動作例 In the processor of FIG. 17 the present invention, a thread operation example

【図18】分岐命令実行における、命令発行ユニットの選択方法を示す概念図 In [18] branch instruction execution, conceptual diagram illustrating a method of selecting the instruction issue unit

【図19】命令キャッシュのもつ予測情報の書き込み、 [19] writing of the prediction information with the instruction cache,
利用方法を示す概念図 Conceptual diagram showing how to use

【図20】各種分岐命令の実行概念図 [Figure 20] execution conceptual diagram of the various branch instruction

【図21】1つの演算ユニットにおける、パイプライン動作概念図 [21] in one operation units, Pipeline operation concept diagram

【図22】スレッド移住のレジスタ同期動作概念図 [Figure 22] register synchronous operation conceptual diagram of the thread immigration

【図23】ディレクトリ方式キャッシュのリード動作概念図 [23] directory system read operation conceptual diagram of the cache

【図24】ディレクトリ方式キャッシュのライト動作概念図 FIG. 24 is a write operation conceptual diagram of the directory system cache

【図25】同期命令の動作概念図 [Figure 25] operation concept diagram of a synchronous instruction

【図26】同期命令のソフトウェア上での動作概念図 [26] The operation conceptual view on the software of the synchronization instruction

【図27】パケット制御信号の内容 The contents of FIG. 27 packet control signal

【符号の説明】 DESCRIPTION OF SYMBOLS

101 本発明の第一実施例のプロセッサ 102 命令発行ユニット 103 スレッド発行ユニット 104 命令キャッシュメモリ 105 実行ユニット 106 共有レジスタファイル 107 16ビット演算ユニット 108 共有演算ユニット 109 分岐発行制御信号 110 データアクセスバス信号 111 一次データキャッシュ 112 アクセスバッファ 113 一次データキャッシュ 116 二次キャッシュメモリ 117 アクセスバッファ 120 グローバルTLB 121 データアクセスバス信号 122 ローカルメモリインターフェース 123 ローカルメモリバス信号 124 外部バスインターフェース 125 外部バス 126 割り込み信号 127 新規スレッド発行ユニット 131 アクセスバッファ 132 スレッド状態信号 133 101 processor of the first embodiment of the present invention 102 instruction issue unit 103 thread issuing unit 104 an instruction cache memory 105 execution unit 106 shared register file 107 16-bit arithmetic unit 108 shared arithmetic unit 109 branches issuing control signals 110 the data access bus signal 111 primary data cache 112 access the buffer 113 the primary data cache 116 secondary cache memory 117 access buffer 120 global TLB 121 the data access bus signal 122 local memory interface 123 local memory bus signal 124 external bus interface 125 external bus 126 interrupt signal 127 new thread issuing unit 131 access buffer 132 thread state signal 133 レッド発行制御信号 134 分岐発行制御信号 201 命令キャッシュ 202、203 演算ユニット 204 分岐ユニット 205 ロードストアユニット 206 レジスタファイル 207 データキャッシュ 208 命令発行ユニット 301、302、303、304、306、307、3 Red issue control signals 134 branches issuing control signals 201 instruction cache 202, 203 operation unit 204 branch unit 205 a load store unit 206 register file 207 the data cache 208 instruction issue unit 301,302,303,304,306,307,3
08 プロセッサ 305、309 一次共有バス 310、311 二次キャッシュ 312 共有メモリバス 313 メインメモリ 401 PMT方式プロセッサ 402 命令発行制御 403 PCラッチ 404 命令メモリ 405 演算ユニット 406 データバスクロスバスイッチ 407 データメモリ 408 外部インターフェース 409 演算要素 501 本発明の第ニ実施例のプロセッサ 502 前段外部プロセッサインターフェース 503 ショートカットバスインターフェース 504 IPユニット 510 I/Oバスインターフェース 511 次段外部プロセッサインターフェース 602 パケットルータ 603 制御パケット信号 604 プライオリティー選択ユニット 605 命令キャッシュ制御ユニット 606 命令キャッシュタグメモリ 08 processors 305,309 primary common bus 310, 311 secondary cache 312 shared memory bus 313 main memory 401 PMT scheme processor 402 instruction issue control 403 PC latch 404 the instruction memory 405 calculation unit 406 data bus crossbar switch 407 data memory 408 external interface 409 second embodiment of the processor 502 pre-stage external processor interface 503 shortcuts bus interface 504 IP unit 510 I / O bus interface 511 the next stage external processor interface 602 packet router 603 control packet signal 604 priority selection unit 605 instructions computing elements 501 present invention cache control unit 606 an instruction cache tag memory 607 命令ローカルTLB 608 スレッド状態信号 609 スレッド状態制御ユニット 610 スレッド状態信号 611 分岐、データフロー予測信号 612 命令信号 613 分岐要求信号 614 命令順序アライナ 615 スレッド状態信号 616 命令キャッシュデータメモリ 617 命令リプレースバス 618 待ち状態スレッド状態バッファ 619 制御パケット信号 620 スレッド移住制御ユニット 702 プログラムカウンタ信号 703 命令デコードユニット 704 レジスタファイル 705 レジスタ転送バス信号 706 オペランド転送クロスババス 707 オペランドショートカット信号 708 16ビット整数演算ユニット 709 結果ショートカットバス信号 710 64ビット整数演算ユニット 712 浮動小数点加算+ 607 Instruction local TLB 608 thread state signal 609 thread state control unit 610 thread state signal 611 branches, data flow prediction signal 612 command signal 613 branch request signal 614 instruction sequence aligner 615 thread state signal 616 instruction cache data memory 617 instructions replace bus 618 waiting state thread state buffer 619 control packet signal 620 threads immigration control unit 702 the program counter signal 703 instruction decode unit 704 register file 705 register transfer bus signal 706 operand transfer Kurosubabasu 707 operand shortcut signals 708 16-bit integer unit 709 results shortcuts bus signal 710 64 bit integer unit 712 floating-point addition + 算ユニット 713 ロードストアユニット 714 アドレスバス信号 715 データバス信号 716 レジスタ待避バス信号 717 演算結果フォワーディング夕ニット 718 浮動小数点除算ユニット 719 浮動小数点加算ユニット 720 結果ショートカットバス信号 721 分岐ユニット 722 オペランドショートカット信号 723 レジスタ同期ユニット 724 レジスタ転送バス信号 725 プログラムカウンタバス信号 726 分岐発行パケット信号 802 一次キャッシュ制御 803 一次キャッシュタグメモリ 804 一次キャッシュデータメモリ 805 二次キャッシュ制御 806 二次キャッシュタグメモリ 807 二次キャッシュデータメモリ 902 仮想アドレス信号 903 TLBタグメモリ 904 アドレス比較器 905 Calculation unit 713 a load store unit 714 address bus signal 715 data bus signal 716 Register save bus signal 717 operation result forwarding evening knit 718 floating point divide unit 719 floating-point addition unit 720 results shortcuts bus signal 721 branch unit 722 operand shortcut signal 723 registers synchronization unit 724 register transfer bus signal 725 the program counter bus signal 726 branches issuing packet signal 802 primary cache control 803 primary cache tag memory 804 primary cache data memory 805 the secondary cache control 806 secondary cache tag memory 807 secondary cache data memory 902 virtual address signal 903 TLB tag memory 904 address comparator 905 ページフォルト発生ユニット 906 物理アドレス信号 907 ページトラップ・データフロー同期発生ユニット 908 TLBエントリメモリ 909 制御信号パケットルータ 910 ページフラッシュシーケンサ 911 スレッドパケット 1001 データバス信号 1004 スレッドパケットバッファ 1007 スレッドパケット信号 1009 物理アドレス信号 1011 制御パケット信号 1012 スレッド発行パケット信号 1013 仮想アドレス 1101 制御パケットルータ 1102 制御パケット信号 1103 制御コマンドデコーダ 1104 制御信号デコーダ 1105 ローカル状態信号 1106 ローカル制御ユニット 1107 ローカル制御信号 1108 制御パケットバッファ 1109 制御パケット信号 1110 制御パケ Page fault generation unit 906 a physical address signal 907 pages trap data flow synchronous generator unit 908 TLB entries memory 909 control signal packet router 910 pages flash sequencer 911 threads packet 1001 data bus signal 1004 threads packet buffer 1007 threads packet signal 1009 physical address signals 1011 control packet signal 1012 thread issues a packet signal 1013 virtual address 1101 control packet router 1102 control packet signal 1103 controls the command decoder 1104 a control signal decoder 1105 local state signal 1106 the local control unit 1107 local control signals 1108 control the packet buffer 1109 control packet signal 1110 controls Paquet ト出力ユニット 1111 スレッドストール信号 1112 制御パケットタイミングチェッカ 1201〜1211 制御パケットルータ 1801 二次キャッシュ 1802、1804、1807、1809 スレッド管理ユニット 1803、1805、1808 命令キャッシュ 1806 分岐ユニット 1901、1905 命令キャッシュ 1902、1906 実行ユニット 1903 分岐ユニット 1904,1908 データキャッシュ 1907 ロードストアユニット DOO output unit 1111 thread stall signal 1112 controls the packet timing checker 1201-1211 control packet router 1801 secondary cache 1802,1804,1807,1809 thread management unit 1803,1805,1808 instruction cache 1806 branch unit 1901,1905 instruction cache 1902,1906 execution unit 1903 a branch unit 1904, 1908 data cache 1907 load store unit

───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl. 7識別記号 FI テーマコート゛(参考) G06F 9/34 350 G06F 9/34 350B 9/46 360 9/46 360B 12/08 12/08 F G H E Y 310 310B 12/10 12/10 A 12/12 12/12 A Fターム(参考) 5B005 JJ13 KK13 LL01 LL11 MM02 MM03 MM32 NN31 PP21 UU32 5B013 AA01 AA05 AA11 BB01 BB18 CC06 CC13 DD04 DD05 5B033 AA02 AA03 AA04 AA13 AA14 AA15 BE05 CA01 CA09 DA04 DA14 DA17 DB02 DB03 DB06 DB12 DD01 DE07 5B098 AA02 AA10 DD01 DD03 FF01 GA05 GC03 GD02 GD03 GD12 GD14 HH07 ────────────────────────────────────────────────── ─── of the front page continued (51) Int.Cl. 7 identification mark FI theme Court Bu (reference) G06F 9/34 350 G06F 9/34 350B 9/46 360 9/46 360B 12/08 12/08 F G H E Y 310 310B 12/10 12/10 A 12/12 12/12 A F term (reference) 5B005 JJ13 KK13 LL01 LL11 MM02 MM03 MM32 NN31 PP21 UU32 5B013 AA01 AA05 AA11 BB01 BB18 CC06 CC13 DD04 DD05 5B033 AA02 AA03 AA04 AA13 AA14 AA15 BE05 CA01 CA09 DA04 DA14 DA17 DB02 DB03 DB06 DB12 DD01 DE07 5B098 AA02 AA10 DD01 DD03 FF01 GA05 GC03 GD02 GD03 GD12 GD14 HH07

Claims (31)

    【特許請求の範囲】 [The claims]
  1. 【請求項1】数値演算ユニット、レジスタファイル、命令メモリ、データキャッシュメモリを複数個内部に有し、複数のスレッドおよびプロセスを同時に利用する事を特徴とするプロセッサにおいて、レジスタファイルが持つ各スレッドごとのレジスタ値等の状態を、常に隣接する演算ユニットに伝達することを特徴とするプロセッサ(以下PMT方式プロセッサと称する)において、プログラムカウンタ、スタックポインタ値、スレッド識別番号、プライオリティー値で構成されるスレッドの情報を示す値を複数格納するスレッド情報格納手段を有し、 1. A numerical arithmetic unit, a register file, the instruction memory, a data cache memory into a plurality inside the processor, characterized in that use multiple threads and processes simultaneously, each thread having a register file the conditions such as the register values, in always the processor, characterized in that transmitted to the adjacent operation units (hereinafter referred to as PMT system processor), a program counter, a stack pointer value, the thread identification number, and a priority value It has a thread information storage means for storing a plurality of values ​​indicating the thread information,
    スレッド情報格納手段から1つのスレッドを選択して、 Select one thread from the thread information storage means,
    命令メモリおよび演算ユニットにスレッドの情報を伝送するスレッド発行手段を有し、スレッド発行手段において、スレッドの持つプライオリティー値を比較し、最も優先度が大きいスレッドの情報を優先的に命令メモリおよび演算ユニットに伝達することを特徴とするプロセッサ。 It has a thread issuing means for transmitting information about a thread in the instruction memory and an arithmetic unit, in the thread issuing means compares the priority value assigned to the thread, preferentially instruction memory and calculates the information of the most priority is larger thread processor, characterized in that to transmit to the unit.
  2. 【請求項2】請求項1の特徴を持つプロセッサにおいて、演算ユニットが実行する命令のプログラムカウンタ値を保存する手段を有し、次に新規に発行する候補のスレッドが同じ命令アドレスを利用するかどうかを比較し、前に実行したスレッドと命令が一致したスレッドを優先的に選択して出力するための手段を有することを特徴とするプロセッサ。 2. A processor having the features of claim 1, or arithmetic unit includes means for storing a program counter value of the instruction to be executed, the thread of the candidate to be next issued newly to use the same instruction address processor, characterized in that it comprises means for how compares, threads and instructions executed before and outputs a matching thread preferentially select and.
  3. 【請求項3】PMT方式プロセッサにおいて、状態を伝達すべき隣接する演算ユニットが別のスレッドの処理を優先的に行うことを感知して、その時だけスレッドの状態を隣接演算ユニットに伝達せずに同一の演算ユニットで処理を行うことを特徴とするプロセッサ。 3. A PMT system processor senses that the arithmetic unit adjacent to be transmitted the state processing is performed by another thread preferentially, without transmitting the state of a thread only when its adjacent operation units processor and performs processing in the same arithmetic unit.
  4. 【請求項4】PMT方式プロセッサにおいて、複数のスレッドがそれぞれ利用するレジスタの値を複数のレジスタバンクに同時に格納するレジスタファイルを有し、各レジスタバンクの内の1つを同時に利用し、スレッドの進行に応じてレジスタバンクの内容を隣接する別のレジスタファイルに転送することを特徴とするプロセッサ。 4. A PMT system processor, has a register file having a plurality of threads simultaneously stored values ​​of the registers utilized in a plurality of register banks, using one of the register banks at the same time, thread processor, characterized in that the transfer to another register file adjacent the contents of the register banks in response to the progress.
  5. 【請求項5】PMT方式プロセッサにおいて、現在実行しているスレッドを中断し、待機状態のスレッドを実行する操作が必要な際に、実行しているレジスタファイルの値を演算ユニットに伝送する代わりに、レジスタファイルの別のレジスタバンクに格納されている待機状態のレジスタ値を演算ユニットに伝達し、別のスレッドの演算を即座に行うことを特徴とするプロセッサ。 5. The PMT system processor interrupts the thread that is currently executing, when an operation to perform thread in a wait state is required, instead of transmitting the value of the register file running in the arithmetic unit , a processor transmits a register value of the standby state stored in another register bank in the register file in the arithmetic unit, and performing immediately operation of another thread.
  6. 【請求項6】請求項5の特徴を持つプロセッサにおいて、レジスタファイルにレジスタ状態が格納されていないスレッドを実行する際に限り、レジスタファイルの内容をスタックポインタ値の示すメモリから自動的に読み出すことを特徴とし、現在レジスタファイルに格納されていて利用されないスレッドの状態をスタックポインタ値の示すメモリに自動的に書き出すことを特徴とするプロセッサ。 6. A processor having the features of claim 5, only when executing the threads in the register file register state not stored, automatically reads that the contents of the register file from the memory associated with the stack pointer value processor characterized, and wherein the automatically writes that the state of a thread that is not utilized is stored in the current register file to a memory area indicated by the stack pointer value.
  7. 【請求項7】PMT方式プロセッサにおける、1つのスレッドが利用するレジスタの値をメモリに保存する特別な分岐命令において、分岐命令の時点のスレッドのレジスタ値をレジスタファイルに保持することを特徴とし、 In 7. PMT system processor, the special branch instruction one thread to store the value of the register to be used for the memory, the register value of the thread of the time of the branch instruction is characterized by holding it in a register file,
    保存されたレジスタの値を読み込む特別な分岐命令において、レジスタファイルに保持されていたスレッドの状態を利用することを特徴とするプロセッサ。 In a particular branch instruction to read the stored value of the register, the processor which is characterized by utilizing a state of the threads held in the register file.
  8. 【請求項8】PMT方式プロセッサにおいて、複数のスレッド識別番号及びスタックポインタ値をまとめて格納することを特徴とするスレッド自動発行機構を有し、スレッド発行命令によってスレッドを発行する際に、格納されたスレッド識別番号及びスタックフレームを自動的に割り当てることを特徴とするPMT型プロセッサ。 8. The PMT system processor, has a thread automatic issuance mechanism, characterized in that the stored together multiple threads identification number and the stack pointer value, when issuing a thread by the thread issuing instructions, stored thread identification number and the PMT-type processor, characterized by automatically allocating a stack frame.
  9. 【請求項9】請求項4に記載された特徴を持つプロセッサにおいて、1つのレジスタファイルが複数の演算ユニットで共有され、レジスタファイルが複数の演算ユニットから1つを選択してデータを伝送することを特徴とする転送手段を有し、レジスタファイルの内容を隣接するレジスタファイルに複数回に分けて転送することを特徴とするプロセッサ。 9. A processor having the features set forth in claim 4, one register file is shared by multiple arithmetic units, transmitting the data register file selects one from a plurality of operation units has a transfer means, wherein, the processor, characterized in that to transfer a plurality of times the contents of the register file to the adjacent register file.
  10. 【請求項10】PMT方式プロセッサの演算ユニットにおいて、値の一部の演算を行う部分演算ユニットを複数個有し、それぞれの部分演算ユニット内部に、部分演算ユニットにおける結果値と完全な演算を行った場合の結果値とが一致しないことを検出するオーバーフロー検出手段を有し、さらに完全な演算を行うための1つの完全演算ユニットを複数の部分演算ユニットに接続し、部分演算ユニットのオーバーフロー検出手段の演算結果の不一致の検出によって、完全演算ユニットに部分演算ユニットで利用した値を転送して演算を再度行うことを特徴とするプロセッサ。 10. A computing unit of the PMT system processor has a plurality of portions arithmetic unit that performs a part of arithmetic values, within each of the partial operation unit, performing a complete calculation and result values ​​in the partial operation unit It has an overflow detection means for detecting that the result values ​​do not match when the, more complete connect one complete calculation units for performing operations on a plurality of partial operation units, partial operation unit of the overflow detecting means processor and performing to operational again forwarded by the detection of the mismatch of the result, the value used in partial operation unit in full operation unit.
  11. 【請求項11】PMT方式プロセッサにおいて、分岐後のプログラムカウンタ値が演算結果によって動的に変更され、分岐後のプログラムカウンタ値が確率的に予測できる条件分岐命令において、分岐後に実行されると予測される命令を格納する命令キャッシュを有し、命令キャッシュに分岐の結果を判別するための情報を有し、実際に分岐が実行された際に予測した分岐結果との一致を確認し、不一致の場合はスレッドを中断してスレッド発行ユニットに正しい分岐結果を転送することを特徴とするプロセッサ。 11. The PMT system processor, predicted program counter value after the branch is dynamically changed by the calculation result, the conditional branch instruction program counter value after branch can be stochastically predicted, is executed after the branch has an instruction cache for storing instructions to be, the branch to instruction cache has information to determine the outcome, to determine the actual match the branch result of the prediction when a branch is executed, the mismatch processor and transferring the correct branch results in the thread issuing unit to interrupt the thread if.
  12. 【請求項12】PMT方式プロセッサにおいて、複数の演算ユニットを複数のブロックに分配し、ブロックごとに専属の一次キャッシュメモリを有し、ブロック内の演算ユニット全てと接続して、データアクセスを行うことを特徴とし、さらに1つ以上の二次キャッシュメモリを有し、複数の一次キャッシュメモリと接続して、互いにデータアクセスを行うことを特徴とするプロセッサ。 12. The PMT system processor, distributing the plurality of operation units into a plurality of blocks, having a primary cache memory dedicated to each block, and connected to all operational units in a block, to perform data access the features, further comprising one or more secondary cache memory, connected to the plurality of the primary cache memory, and performs data access to each other processor.
  13. 【請求項13】PMT方式プロセッサにおいて、スレッドが書きこんだメモリ内容をスレッド自身がメモリから読み出して利用する際に、利用するメモリ内容を複数のキャッシュメモリの間で転送することを特徴とし、複数のキャッシュメモリ間の転送はスレッドの進行と同じ方向、速度で伝達することを特徴とし、スレッドの進行にデータの伝達が間に合わない場合はスレッドを停止させることを特徴とするプロセッサ。 13. The PMT system processor, in the crowded but memory contents written by the thread the thread itself to use from the memory, characterized by transferring the memory contents to be utilized between a plurality of cache memories, a plurality processor transfer between the cache memory and wherein the transmitting in the same direction, speed and thread progression of, if progress transmission of the data to the thread is not in time, characterized in that the stopping thread.
  14. 【請求項14】PMT方式プロセッサにおいて、プロセッサ内部に1つ以上のキャッシュメモリを有し、個々のキャッシュメモリをさらに複数のメモリバンクに分割し、それぞれのメモリバンクへのアクセス数を制限することを特徴とし、同時にメモリバンクへのアクセスを行うことを特徴とし、さらに、複数のメモリバンクの選択のためにメモリアドレスを利用することを特徴とし、同じキャッシュへの複数のアクセスが存在した場合は、1 14. The PMT system processor has one or more cache memory inside the processor, that is divided into a plurality of memory banks each of the cache memory, limiting the number of accesses to each memory bank characterized characterized in that for accessing the memory banks at the same time, further characterized by utilizing a memory address for selection of a plurality of memory banks, when a plurality of accesses to the same cache exists, 1
    つのアクセスだけを行い、他のアクセスを保持して後で行うことを特徴とするプロセッサ。 One of only performs access, processor and performs later holds the other access.
  15. 【請求項15】請求項12に記載された特徴を持つプロセッサにおいて、キャッシュメモリ内部に、キャッシュメモリの内容の共有状態を指定するためのディレクトリと呼ばれる情報を有し、個別のキャッシュメモリは、別のキャッシュメモリから内部のデータを読み出された場合に、データのコピーを持つキャッシュメモリを特定する情報をディレクトリに設定することを特徴とし、同時に、別のキャッシュメモリから取得したデータをキャッシュメモリに格納する際に、データのオリジナルを持つキャッシュメモリを特定する情報をディレクトリに設定することを特徴とし、キャッシュメモリへの書き込みの際に、ディレクトリの内容を利用して、同じアドレスのデータのコピーを持つキャッシュメモリにだけデータの書き込みを通知す 15. A processor having the features of claim 12, in the internal cache memory has information called a directory for designating the shared state of the contents of the cache memory, a separate cache memory, another of when read internal data from the cache memory, characterized in that sets information for specifying a cache memory having a copy of the data in the directory, at the same time, the cache memory the data acquired from another cache memory when storing, characterized in that sets information for specifying a cache memory having the original data in the directory, when writing to the cache memory, by using the contents of a directory, the copies of the data of the same address It is notified of the writing of only the data in the cache memory with ことを特徴とするプロセッサ。 Processor, characterized in that.
  16. 【請求項16】PMT方式プロセッサにおいて、ある命令が利用するデータを別の命令が再度利用する際に、データを再利用する命令を実行する演算ユニットを特定するデータフロー予測情報を命令メモリに格納することを特徴とし、データフロー予測情報を持つ命令が実行されたときに、データフロー予測情報で指定された演算ユニットにデータをあらかじめ転送することを特徴とするプロセッサ。 16. The PMT system processor, when using data another instruction that instruction utilized again, the data flow prediction information specifying the calculation unit for executing the instructions to reuse data in the instruction memory storing processor characterized, that when the instructions with data flow prediction information is executed, characterized in that in advance to transfer data to the arithmetic unit specified in the data flow prediction information to.
  17. 【請求項17】請求項16の特徴を持つプロセッサにおいて、あるスレッドのデータキャッシュアクセスミスの際に、データの実体のあるデータキャッシュからデータを読み込むと同時に、読み出しを行ったデータキャッシュに要求元の演算ユニットを特定する値を転送し、読み出しを行ったデータキャッシュに対応する命令メモリに、演算ユニットを特定する値を含むデータフロー予測情報を書き込むことを特徴とするプロセッサ。 17. A processor having the features of claim 16, when the data cache access misses a thread, at the same time reading the data from the data cache with a physical data, reads out the source of the request to the data cache Been It transfers the value specifying the calculation unit, the instruction memory corresponding to the data cache data is read out, and writes the data flow prediction information including a value specifying the calculation unit processor.
  18. 【請求項18】命令キャッシュメモリを複数有するPM 18. PM to multiple have the instruction cache memory
    T方式プロセッサにおいて、あるスレッドが、次に実行すべき命令を検索するためにキャッシュメモリにアクセスを行い、命令が格納されている命令キャッシュメモリを下位のキャッシュのディレクトリ情報から特定し、前記命令キャッシュメモリに接続された演算ユニットにスレッドを移動することを特徴とし、複数のスレッドが同一の命令キャッシュメモリを利用することを特徴とするプロセッサ。 In T system processor, a thread, then performs access to the cache memory to retrieve instructions to be executed, identifies the instruction cache memory having instructions stored from the directory information of a lower cache, the instruction cache processor, characterized in that characterized in that moving the thread-connected operational units in the memory, a plurality of threads to use the same instruction cache memory.
  19. 【請求項19】PMT方式プロセッサにおいて、キャッシュメモリのアドレスを仮想アドレスとすることで、キャッシュメモリ上にはないデータへのアクセスに限って仮想記憶機構にデータを伝送し、仮想アドレスを物理アドレスに変換して物理アドレスメモリに書き戻すことを特徴とするプロセッサ。 19. The PMT system processor, by a virtual address to the address of the cache memory and transmits the data to the virtual storage mechanism only access not in the cache memory data, the physical address of the virtual address processor, characterized in that conversion to write back to a physical address memory.
  20. 【請求項20】PMT方式プロセッサにおいて、アドレス値を入力して、格納されたアドレス値に対する特定のスレッドを生起することを特徴とするデータフロー同期検出ユニットを有し、キャッシからの読み込み要求に対して、データフロー同期検出ユニットが指定したアドレスとの一致を判定し、一致するアドレスを含む場合はキャッシュに共有状態を示す値を設定することを特徴とするプロセッサ。 20. A PMT system processor, enter the address value has a data flow synchronization detection unit, characterized in that the rise to particular threads for the address value stored, to a read request from the cache Te, determines a match with the address of the data flow synchronization detection unit specifies, when with matching addresses and sets a value indicating the shared state in the cache processor.
  21. 【請求項21】請求項20の特徴を持つプロセッサにおいて、データキャッシュ内部で共有状態に設定されているアドレスへのアクセスに対して、ディレクトリの示すユニットにアクセスを通知することで、最終的にデータフロー同期ユニットにアドレス値を伝達することを特徴とし、データフロー同期ユニットが伝達されたアドレス値に対応するスレッドを生起することを特徴とするプロセッサ。 In a processor having the features of claim 21. Claim 20, for access to an address set in the shared state in the data cache internally, by notifying the access unit indicated by the directory, and finally data processor, characterized in that characterized in that for transmitting the address value to the flow the synchronization unit, arising a thread corresponding to the address value data flow synchronization unit is transmitted.
  22. 【請求項22】PMT方式プロセッサにおいて、スレッドは同期命令の発行時に停止し、他のすべてのスレッドの、同期命令実行前に行われたストア命令のデータ転送を待ち、すべてのデータが自身のキャッシュに転送された時点でスレッドを再開することを特徴とするプロセッサ。 22. A PMT system processor, the thread stops when issuing the synchronization instruction, all other threads, waits for the data transfer of the store instruction performed before synchronization instruction execution, caching all data itself processor, characterized in that to resume the thread when it is transferred to.
  23. 【請求項23】請求項21のプロセッサにおいて、特定アドレスへのアクセスを検出する命令の発行によって、 In processor 23. The method of claim 21, by issuing the instruction for detecting access to a particular address,
    自分のスレッドの状態をデータフロー同期ユニットに自動的に伝達し、データフロー同期ユニットにおける特定のアドレスへのアクセスの検出によって自分のスレッドを再開することを特徴とするPMT型プロセッサ。 PMT-type processor, characterized in that the state of their threads automatically transmitted to the data flow synchronization unit, resuming their threads by detection of access to a particular address in the data flow synchronization unit.
  24. 【請求項24】PMT方式プロセッサにおいて、1つのグローバル仮想記憶機構と複数のローカル仮想記憶機構を有し、複数のローカル仮想記憶機構がグローバル仮想記憶の値の一部を有することを特徴とし、グローバル仮想記憶機構の値の改変に対して複数のローカル仮想記憶機構に対して改変を伝達することを特徴とするプロセッサ。 24. A PMT system processor, has one global virtual memory mechanism and a plurality of local virtual memory mechanism, a plurality of local virtual memory mechanism is characterized by having a portion of the value of the global virtual memory, global processor, characterized in that for transmitting the modifications to the plurality of local virtual storage mechanism to modification value of the virtual storage mechanism.
  25. 【請求項25】PMT方式プロセッサにおいて、内部のユニット間で伝達する制御信号を、伝送先を示すアドレス値とともにまとめたパケットを利用して転送することを特徴とし、複数の制御信号を入力して、複数の制御信号の中から伝送相手に応じて選択して出力するパケットルーターを複数有し、ある演算ユニットからの要求を、 25. A PMT system processor, a control signal transmitted between the internal unit, characterized in that to transfer utilizing packets collectively together with the address value indicating the transmission destination, and inputs a plurality of control signals has a plurality of packet routers for selecting and outputting in response to the transmission destination from among a plurality of control signals, a request from a certain arithmetic unit,
    パケットに変換して複数のパケットルーターが中継し、 Is converted to the packet relaying a plurality of packets routers,
    目的のユニットに伝達することを特徴とし、1つのユニット間配線を複数の制御信号で共有することを特徴とするプロセッサ。 Processor, characterized in that characterized in that to transmit to the unit of interest share the wiring between one unit by a plurality of control signals.
  26. 【請求項26】請求項25に記載された特徴を持つプロセッサにおいて、スレッドが特定のユニットに制御信号を発信して、伝達したユニットから制御信号を受信する制御パケットにおいて、制御パケットをスレッドの進行方向と同一方向のパケットルーターに対して伝達することを特徴とし、制御パケットの伝達がスレッドの進行に間に合わないことを検出した場合は、該当するスレッドを即座に停止させることを特徴とするパケットルーター。 26. A processor having the features of claim 25, thread and transmits a control signal to a particular unit, the control packet for receiving a control signal from the transmission to the unit, a thread progress of the control packet packet router is characterized in that transmitted to the same direction of the packet router, if the transmission of the control packet is detected that no time for the thread progression, characterized by stopping the corresponding thread immediately .
  27. 【請求項27】請求項25に記載された特徴を持つプロセッサにおいて、特定の制御信号パケットの要求に対して、該当する回路ユニットは要求された内部状態を改変、あるいは読み出して、制御信号を送信したユニットに対して内部状態を転送することを特徴とするプロセッサ。 27. A processor having the features of claim 25, the request of a particular control signal packet, the corresponding circuit unit modifies the internal state of being requested, or reads, transmits a control signal processor and transferring the status to the the unit.
  28. 【請求項28】PMT方式プロセッサを複数個利用して連結するシステムを構築する際に、プロセッサ間の転送方向を固定として、プロセッサのスレッドの状態、データをそのまま別のPMT方式プロセッサに伝送し、システム全体でスレッドを巡回させることを特徴とするPM The 28. PMT system processor in constructing a system for connecting to a plurality utilized, and transmitted as fixed transfer direction between the processors, the processor thread state data directly to another PMT system processor, PM for causing cyclically threads systemwide
    T方式プロセッサ。 T system processor.
  29. 【請求項29】請求項28に記載された特徴を持つプロセッサにおいて、直接連結されていないプロセッサ間で独自にデータ転送を行うためのショートカットバスを設け、遠距離のプロセッサ間の伝送にショートカットバスを用いることを特徴とするプロセッサ。 29. A processor having the features of claim 28, a shortcut bus for their own data transfer between processors that are not connected directly provided, the shortcut bus transmission between distant processors processor, which comprises using.
  30. 【請求項30】請求項25に記載された特徴を持つパケットルーターを有し、請求項27に記載された特徴を持つPMT方式プロセッサにおいて、複数のプロセッサの全てのユニットをアドレス値で一意に特定する手段を持ち、スレッドの発行する制御信号パケットを、制御信号パケットの転送先アドレス値に応じて、外部のプロセッサ内部の該当するユニットに伝達することを特徴とするプロセッサ。 30. A has a packet router with the features of claim 25, in PMT system processor with the features set forth in claim 27, uniquely identify all of the units of the plurality of processors with an address value has a means for, processor control signal packet, in accordance with the destination address value of the control signal packets, characterized by transmitting the appropriate units within an external processor issuing thread.
  31. 【請求項31】請求項30に記載された特徴を持つプロセッサにおいて、それぞれのプロセッサが独自にメモリを接続することを特徴とし、各プロセッサが持つ仮想記憶機構の内部に、指定されたページが外部のプロセッサのデータのコピーを格納していることを示す共有情報を有することを特徴とし、プロセッサ内部からデータを読み込む際に、読み込みアドレスが仮想記憶機構によって共有状態を示す場合には、プロセッサ外にデータ読み込み要求を行うことを特徴とし、プロセッサ内部からデータを書きこむ際に、書きこみアドレスが仮想記憶機構によって共有状態を示す場合には、プロセッサ外にデータの書きこみを通知することを特徴とするプロセッサ。 31. A processor having the features of claim 30, each processor is characterized by its own connecting memory within the virtual memory mechanism with each processor, is designated page external of it characterized by having a shared information indicating that stores a copy of the data processor, when reading data from the internal processor, if the read address indicates a shared state by the virtual memory mechanism is outside the processor characterized by performing data read request, when writing data from the internal processor, if the write address indicates the shared state by the virtual memory mechanism, and characterized by notifying the writing of data to the outside of the processor processor.
JP2000042696A 2000-02-21 2000-02-21 Pipe line parallel processor using multi-thread Pending JP2001236221A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000042696A JP2001236221A (en) 2000-02-21 2000-02-21 Pipe line parallel processor using multi-thread

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000042696A JP2001236221A (en) 2000-02-21 2000-02-21 Pipe line parallel processor using multi-thread

Publications (1)

Publication Number Publication Date
JP2001236221A true JP2001236221A (en) 2001-08-31

Family

ID=18565736

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000042696A Pending JP2001236221A (en) 2000-02-21 2000-02-21 Pipe line parallel processor using multi-thread

Country Status (1)

Country Link
JP (1) JP2001236221A (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510989A (en) * 2003-11-06 2007-04-26 インテル・コーポレーション Dynamic caching engine instruction
US7313142B2 (en) 2002-06-07 2007-12-25 Fujitsu Limited Packet processing device
JP2008525901A (en) * 2004-12-27 2008-07-17 インテル・コーポレーション In a shared memory computer system, write-back of early prediction of a plurality of cache blocks that are owned
JP2009538486A (en) * 2006-05-25 2009-11-05 クゥアルコム・インコーポレイテッドQualcomm Incorporated Graphics processor with arithmetic and elementary function unit
JP2011508338A (en) * 2007-12-26 2011-03-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated Efficient state management for the graphics pipeline
WO2011142058A1 (en) * 2010-05-14 2011-11-17 パナソニック株式会社 Computer system
WO2012029111A1 (en) * 2010-08-30 2012-03-08 富士通株式会社 Multi-core processor system, synchronisation control system, synchronisation control device, information generation method, and information generation programme
JP2013546095A (en) * 2010-12-29 2013-12-26 エンパイア テクノロジー ディベロップメント エルエルシー Acceleration of movement of the cache state in the directory based multi-core architecture
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
JP2014503103A (en) * 2011-12-23 2014-02-06 インテル・コーポレーション Method and apparatus for efficient communications between the cache in a hierarchical cache design
JP2014504958A (en) * 2010-12-17 2014-02-27 アルデバラン ロボティクス エス、ア Physical and virtual humanoid robot provided with a management program of the resource, usage, and programming methods
JP2014099215A (en) * 2014-02-27 2014-05-29 Fujitsu Ltd Multi-core processor system, control method for multi-core processor system, and control program for multi-core processor system
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
USRE45223E1 (en) 1997-02-08 2014-10-28 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9250980B2 (en) 2009-12-18 2016-02-02 International Business Machines Corporation System, method, program, and code generation unit

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE45223E1 (en) 1997-02-08 2014-10-28 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US7313142B2 (en) 2002-06-07 2007-12-25 Fujitsu Limited Packet processing device
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
JP2007510989A (en) * 2003-11-06 2007-04-26 インテル・コーポレーション Dynamic caching engine instruction
JP2008525901A (en) * 2004-12-27 2008-07-17 インテル・コーポレーション In a shared memory computer system, write-back of early prediction of a plurality of cache blocks that are owned
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
JP2009538486A (en) * 2006-05-25 2009-11-05 クゥアルコム・インコーポレイテッドQualcomm Incorporated Graphics processor with arithmetic and elementary function unit
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
JP2011508338A (en) * 2007-12-26 2011-03-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated Efficient state management for the graphics pipeline
US8826294B2 (en) 2007-12-26 2014-09-02 Advanced Micro Devices, Inc. Efficient state management system
US9904581B2 (en) 2009-12-18 2018-02-27 International Business Machines Corporation System, method, program, and code generation unit
US9250980B2 (en) 2009-12-18 2016-02-02 International Business Machines Corporation System, method, program, and code generation unit
US10169092B2 (en) 2009-12-18 2019-01-01 International Business Machines Corporation System, method, program, and code generation unit
JP2011242896A (en) * 2010-05-14 2011-12-01 Panasonic Corp Computer system
WO2011142058A1 (en) * 2010-05-14 2011-11-17 パナソニック株式会社 Computer system
US9063794B2 (en) 2010-05-14 2015-06-23 Socionext Inc. Multi-threaded processor context switching with multi-level cache
WO2012029111A1 (en) * 2010-08-30 2012-03-08 富士通株式会社 Multi-core processor system, synchronisation control system, synchronisation control device, information generation method, and information generation programme
CN103080921A (en) * 2010-08-30 2013-05-01 富士通株式会社 Multi-core processor system, synchronisation control system, synchronisation control device, information generation method, and information generation programme
JP5488697B2 (en) * 2010-08-30 2014-05-14 富士通株式会社 Multicore processor system, the synchronization control method, and synchronization control program
US9367311B2 (en) 2010-08-30 2016-06-14 Fujitsu Limited Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product
JP2014504958A (en) * 2010-12-17 2014-02-27 アルデバラン ロボティクス エス、ア Physical and virtual humanoid robot provided with a management program of the resource, usage, and programming methods
JP2013546095A (en) * 2010-12-29 2013-12-26 エンパイア テクノロジー ディベロップメント エルエルシー Acceleration of movement of the cache state in the directory based multi-core architecture
US9336146B2 (en) 2010-12-29 2016-05-10 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
US9760486B2 (en) 2010-12-29 2017-09-12 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
US9411728B2 (en) 2011-12-23 2016-08-09 Intel Corporation Methods and apparatus for efficient communication between caches in hierarchical caching design
JP2014503103A (en) * 2011-12-23 2014-02-06 インテル・コーポレーション Method and apparatus for efficient communications between the cache in a hierarchical cache design
JP2014099215A (en) * 2014-02-27 2014-05-29 Fujitsu Ltd Multi-core processor system, control method for multi-core processor system, and control program for multi-core processor system

Similar Documents

Publication Publication Date Title
Kalla et al. IBM Power5 chip: A dual-core multithreaded processor
Le et al. Ibm power6 microarchitecture
Tullsen et al. Supporting fine-grained synchronization on a simultaneous multithreading processor
Krishnan et al. A chip-multiprocessor architecture with speculative multithreading
Nikhil et al. T: A multithreaded massively parallel architecture
KR101529846B1 (en) Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US6240502B1 (en) Apparatus for dynamically reconfiguring a processor
US5960461A (en) Multiprocessor digital data processing system/shared memory multiprocessor system and method of operation
US6351805B2 (en) Non-stalling circular counterflow pipeline processor with reorder buffer
JP3632635B2 (en) Multi-threading method and a parallel processor system
US7478198B2 (en) Multithreaded clustered microarchitecture with dynamic back-end assignment
Sankaralingam et al. Distributed microarchitectural protocols in the TRIPS prototype processor
JP3702814B2 (en) Multi-threading method and a parallel processor system
CN100403257C (en) Multithreaded processor capable of implicit multithreaded execution of a single-thread program, method and system thereof
Kongetira et al. Niagara: A 32-way multithreaded sparc processor
EP2523101B1 (en) Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR100615775B1 (en) Processor virtualization mechanism via an enhanced restoration of hard architected states
EP1137982B1 (en) Local and global register partitioning in a vliw processor
JP6243935B2 (en) Context switching method and apparatus
US7836260B2 (en) Low complexity speculative multithreading system based on unmodified microprocessor core
US8266412B2 (en) Hierarchical store buffer having segmented partitions
US5613136A (en) Locality manager having memory and independent code, bus interface logic, and synchronization components for a processing element for intercommunication in a latency tolerant multiple processor
JP3595504B2 (en) Computer processing method in a multi-threaded processor
Steffan et al. A scalable approach to thread-level speculation
Balasubramonian et al. Dynamically managing the communication-parallelism trade-off in future clustered processors