[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2001236221A - マルチスレッドを利用するパイプライン並列プロセッサ - Google Patents

マルチスレッドを利用するパイプライン並列プロセッサ

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
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000042696A
Other languages
English (en)
Inventor
Keisuke Shindo
啓介 進藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to JP2000042696A priority Critical patent/JP2001236221A/ja
Publication of JP2001236221A publication Critical patent/JP2001236221A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】マルチスレッドプログラムを利用するプロセッ
サにおいて、一列に並んだ演算ユニットで複数のスレッ
ドを順に動作させる方式において、メモリ配線を短縮し
て周波数性能と並列性能を両立させる。さらに並列処理
性能を阻害するノード間データ転送と、同期による待ち
あわせを解決する。 【解決手段】特許広報平9−287662に記載された
プロセッサに、データを格納するキャッシュを複数搭載
し、それぞれのキャッシュを数個の演算実行ユニットと
結合する。キャッシュの内容はスレッドの進行にあわせ
て転送して複製する。キャッシュの内容を転送しきれな
い場合は、1つのスレッドを単一の演算実行ユニットで
実行する。さらに、仮想記憶機構とキャッシュの共有機
構を用いて、指定したアドレスへのアクセスを検出して
スレッドを再開させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェアによ
って動的に機能を変更できるプロセッサに属し、特にス
レッドと呼ばれる単位で分割されたソフトウェアを利用
するプロセッサに属する。
【従来例】(半導体技術の進化とマイクロプロセッサの
性能向上)
【0002】半導体技術の進化により、ここ20年はト
ランジスタ、配線の微細化が常に同じペースで進んでき
た。DRAMのようにトランジスタ数がそのまま容量に
つながる素子では、単に微細化によって素子数が増える
だけで、微細化と同じペースで性能を向上できた。
【0003】ところが、マイクロプロセッサに代表され
る論理LSIに関しては、性能向上には2つの方法があ
る。1つは動作周波数の向上。そしてもう1つは動作周
波数あたりの仕事量である。
【0004】まず、微細化によってトランジスタのスイ
ッチング速度の向上し、前者の動作周波数の向上が可能
になった。さらに、後者の動作周波数あたりの仕事量の
増加は、利用できるトランジスタの増加により、規模の
大きい高速レイテンシ回路、およびスーパースカラなど
の並列方式の採用が可能になったことで実現できた。
【0005】これまでは、マイクロプロセッサはこの2
つの要素によって飛躍的な性能向上を可能にした。しか
し、この2つの要素が、特に後者が限界を迎えつつあ
る。この限界を打破しなければ、今後のマイクロプロセ
ッサの性能向上は見込めない。
【0006】(配線のリスクの相対的増加)
【0007】近年の半導体の微細化技術、プロセスの進
歩により、トランジスタの動作速度は飛躍的に増大し、
その大きさ、消費電力も飛躍的に減少した。これによっ
て、少なくともトランジスタ単位では、従来では考えら
れない周波数の動作が可能になった。
【0008】しかし、配線の遅延時間はそれほど改善さ
れてはいない。配線長は、トランジスタのサイズに比例
して高速化するわけではない。さらに、微細化された分
だけトランジスタの数を増やす場合は配線遅延はかえっ
て増大する。この傾向は深刻に受け止められてきてお
り、配線が最小となるユニット配置を行うことは常識と
なっている。配線自体のプロセスによる改善も行われて
いる。多層配線やCu配線などがそれである。しかし、
それだけでは拡大を続けるトランジスタと配線の速度差
を埋めることはできない。
【0009】今後は、配線遅延の増加を押さえて動作周
波数の向上比率を維持するためには、常に回路全体に最
短配線するという考え方を改め、レイテンシ性能を低下
させてでも最短距離の配線で伝送することが必要とな
る。
【0010】(データ転送スループットとデータ転送レ
イテンシ)
【0011】データ転送性能の向上には、データ転送ス
ループットの向上とデータ転送レイテンシの短縮の双方
が必要になる。前者のデータの転送スループットの増加
は比較的たやすい。それに対して、転送レイテンシは性
能低下を押さえるのが精一杯で、数倍以上の改善は見込
めない。
【0012】レイテンシ向上の方法としては、キャッシ
ュ、プリフェッチなどによる確率的な方法があるが、そ
れは回路規模を必要とする割にたいした性能向上を果た
せない。演算能力と低速なメモリとのレイテンシの開き
は拡大の一途をたどり、キャッシュミスにおけるペナル
ティーを相対的に増大させ、最終的には処理時間のほと
んどすべてを占めることになる。ということは、なんら
かの形でレイテンシを隠蔽することが必須になる。
【0013】そのために現在はアウトオブオーダースー
パースカラ、VLIWという方式が存在する。データの
ロードが終わっていなくても、データの必要のない命令
を先に動作させるプロセッサである。だが、この方式は
先に実行させることができる命令を発見する回路が巨大
になりすぎ、周波数性能向上に限界がある。
【0014】よって、レイテンシの隠蔽は今後さらに重
要になる。だが、アウトオブオーダースーパースカラや
VLIWなどの命令レベル並列では、現在以上のレイテ
ンシ隠蔽は不可能である。
【0015】(演算ユニットの使用頻度のばらつきと共
有)
【0016】マイクロプロセッサには、加算、論理演
算、シフト、分岐、ロードストア、乗算、除算、浮動小
数点演算、SIMD型演算、SIMDデータの入れ替え
処理など、多くの処理が必要とされる。これらの動作の
実現には、それぞれ専用の回路を設けるのが一番効率が
良い。ところが、マイクロプロセッサはこれらの全てを
同時に必要とするわけではない。稼動率が低いユニット
も多く存在する。
【0017】このマイクロプロセッサを同時に複数使用
する方式を、マルチプロセッサと呼ぶ。現在のマルチプ
ロセッサでは、これらの演算ユニットが全て複数搭載さ
れる。ということは、全体としてはほとんど稼動してい
ない回路が増加することになる。仮に、マルチプロセッ
サの間であまり使用されない演算ユニットを共有できれ
ば、システム全体の回路の利用効率を高めることがで
き、本当に数の必要な演算ユニットを増やすことができ
る。
【0018】(消費電力の増大)
【0019】近年のマイクロプロセッサの動作周波数の
向上によって、消費電力は飛躍的に増大した。その増大
を抑制するために、動作電圧を低減させ、低い電圧で性
能を維持するための回路技術が開発された。しかし、回
路素子数、周波数性能はさらに向上を続けるものと考え
られる。さらなる低消費電力の手段が必要になる。
【0020】CMOS回路は、信号のレベルが変化する
ときに電力を消費する。ということは、信号のレベルの
変化の少ない回路がもっとも消費電力の低い回路とな
る。回路構成のレベルでは、演算ユニットやクロック信
号制御など、信号変化を低減する手段が多く利用されて
いる。しかし今後は、さらに上位のアーキテクチャにお
いても、最小の電力で演算を行うための手段が必要にな
ると考えられる。
【0021】回路的に考えると、同じ仕事を連続して行
うことができれば、回路の状態の変動も最小限となり、
動作する回路も最小限となる。そして、トランジスタ数
あたりの性能が向上できれば、逆にいえば性能あたりの
消費電力が低減できるということである。
【0022】(演算内容の巨大化、分散化)
【0023】前の演算の終了を待ち、その結果を利用し
て演算を行うことを、データ依存関係と呼ぶ。互いにデ
ータ依存関係のある演算は原理的に同時実行ができず、
並列化を阻害する最大の要因である。いかなる方式もこ
れを解消することはできない。
【0024】ソフトウェアの構造上、このデータ依存関
係がもっとも大きいのは連続した命令の近傍であり、現
在のスーパースカラやVLIWに代表される、命令レベ
ル並列の対象とされる部分である。すなわち、命令レベ
ル並列はもっとも並列化しにくい部分をあえて並列化す
る方法であり、性能向上に限界が生じる。
【0025】一般的に仕事の単位をうまく分割できれ
ば、分業が効率が良いのは言うまでもない。そして、巨
大なソフトウェアでは、その動作内容が全て密接に結合
し、全ての命令、データが同じ確率で利用されるという
ことはありえない。現に、ソフトウェアは、オブジェク
トと呼ばれる独立性の高い単位で分割できることは良く
知られている。
【0026】(データスループットの爆発的な増大)
【0027】メディア処理は、巨大なデータ転送能力を
要求し、キャッシュの内部で実行できない代表的な処理
である。この処理の多くは巨大なデータ転送スループッ
トを要求する。それに対して、メディア処理は全体とし
てはさしてレイテンシを要求しない。要求されるレイテ
ンシはどんなに小さくても1ミリ秒程度がせいぜいであ
る。レイテンシを犠牲にして並列処理を行うのにこれほ
ど向いた用途はない。
【0028】局所的なレイテンシがそのまま総和される
現在のプロセッサの方式では、プロセッサバスのレイテ
ンシがそのまま加算され、全体の性能向上も頭うちにな
る。それに対して、レイテンシをなんらかの手段で隠蔽
することができれば、メモリアクセスの並列化などの方
法によってスループットを確保することができる。その
ためにマルチスレッドと呼ばれるソフトウェアモデルを
導入して、レイテンシの累積を防止する。スレッド単体
のレイテンシが多少大きくてもメディア処理に要求され
るレイテンシよりはるかに小さいため、結果的にメディ
ア処理に要求される性能を全て満足することができる。
【0029】(演算の繰り返しの増加)
【0030】長時間動作するプログラムは、その全ての
時間に渡ってまったく違う命令を実行することは考えら
れない。そのため、長い時間の動作の中では、何らかの
形で同じコードを再利用して同じ動作を繰り返している
ことになる。
【0031】この傾向を利用することにより、同じ動作
を行う部分を同時にまとめて実行することで、同じ動作
で共有される命令メモリ、データメモリなどの資源を共
有することができる。しかも、まったく同じ動作を時間
的にわずかにずらして実行することにより、同じ資源を
同時に利用することも簡単に防ぐことができる。
【0032】(IPユニットの内蔵と、それを結合する
性能の要求)
【0033】汎用プロセッサは、32ビットなどの桁の
多い数値演算や、大容量メモリ全域を利用した処理、動
的に変わる処理に関しては他の手段では実現不可能な性
能を発揮できる。しかし、少数の複雑なビット処理演算
に関しては依然として弱く、目的に応じて最適化された
回路の方が常に性能が上である。ということは、システ
ム全体の性能向上のためには、依然として良く利用され
るビット演算を担う回路、IP回路を内蔵することが望
ましい。
【0034】ところが、IP回路は、その前後の動作が
なければ十分な性能が発揮できない。IP回路同士を直
接連結すると、その回路の動作の種類を制限することに
なる。プログラマブルでかつ高速なアプリケーションの
動作を実現するためには、複数の最小限度のIP回路
と、IP間のデータの中継を行う十分な演算処理能力が
最良の組みあわせである。
【0035】(スーパースカラ、VLIW方式)
【0036】スーパースカラ方式、VLIW方式は、命
令レベル並列とよばれ、同時に複数の命令を実行するこ
とで、性能を向上させることを狙った方式である。
【0037】まず、スーパースカラ方式は、複数の命令
の組みあわせを自動的に抽出してくれる方式である。と
ころが、自動的に抽出できる命令の範囲、命令ウィンド
ウは限定されており、特に、条件分岐命令の後に実行さ
れる命令の抽出が非常に難しい。そのため、プログラム
全体の並列性を生かすことができず、隣接した数個の命
令を実行するのがせいぜいである。
【0038】図2に、従来のプロセッサ例としてVLI
W方式のプロセッサの構造模式図を示す。VLIW方式
は、この命令の抽出の手間をコンパイラに任せ、並列可
能な命令を明示して命令メモリに格納する方法である。
しかし、並列化の対象となるのはプログラム内部で隣接
した数個の命令であることには変わりない。
【0039】201は複数の命令を同時に格納する命令
キャッシュである。命令発行ユニット208は、命令キ
ャッシュ201から同時に複数の命令を読み込み、送ら
れた命令を実行できる演算ユニットにそれぞれ命令を分
配する。演算ユニット202、演算ユニット203、分
岐ユニット204、ロードストアユニット205は、同
時に独立した動作ができる。演算ユニット202、演算
ユニット203は、共有レジスタファイル206から複
数の値を取り出して演算を行い、結果をレジスタファイ
ル206に返す。分岐ユニット204は、命令キャッシ
ュ201に対してPCアドレスを変更させる。ロードス
トアユニット205は、データキャッシュ207からレ
ジスタファイル206にデータを読み込む。あるいは逆
に、レジスタファイル206の値をデータキャッシュ2
07に転送する。
【0040】(マルチプロセッサ方式)
【0041】図3に、従来例としてマルチプロセッサ方
式を示す。マルチプロセッサ方式は、既存のパイプライ
ン、スーパースカラ、VLIWのいずれかの方式で作成
されたプロセッサを複数接続して利用する方法である。
飽和しつつある命令レベル並列を補うために用いられ
る。
【0042】そのために、ソフトウェアをプロセス、あ
るいはスレッドとよばれる独立した単位に分割して、そ
れぞれのプロセッサに割り当てる。それぞれのプロセッ
サはそれぞれ独立したスレッドを実行することで、命令
レベル並列に対して演算ユニット間の通信を抑制するこ
とができる。
【0043】図3にマルチプロセッサの構造を示す。プ
ロセッサ301、302、303、304は、共有バス
305に接続される。プロセッサ306、307、30
8も同様に共有バス309に接続される。共有バス30
5には二次キャッシュ310が接続され、プロセッサ3
01のメモリは基本的には二次キャッシュ310から取
得する。2つの二次キャッシ310、311は、共有メ
モリバス312に接続され、二次キャッシュとメインメ
モリ313の内容を同一にする。
【0044】プロセッサ301〜304、306〜30
8は、それぞれ独自に命令動作を行い、命令、データを
メインメモリ313からキャッシュを介して取得する。
他のプロセッサと同一アドレスのデータを共有しない限
り、プロセッサ間通信は行われない。
【0045】これらのプロセッサ、二次キャッシュ31
0,311は、半導体のチップに全て搭載することが可
能である。半導体チップの微細化によって、同じコスト
でもより多くの回路の搭載が可能になったため、複数の
プロセッサを1つのチップに搭載することで、コストに
対する性能を向上させることになる。
【0046】(従来のPMT方式)
【0047】図4に、命令レベル方式、およびマルチプ
ロセッサ方式の欠点を解消するための従来の方式を示
す。以下、この方式をPMT方式と呼称する。PMT方
式についての詳細は特許広報平9−287662に記載
されている。
【0048】このPMT方式は、前述のマルチプロセッ
サ方式で利用されるプロセス、スレッドをほぼそのまま
用いる。そして、演算ユニット間の通信を最小限にする
ことにより、演算ユニットの増加に対して周波数性能の
低下を抑制し、動作周波数を維持しつつ大量の演算ユニ
ットの搭載を可能にし、飛躍的な性能向上を可能にす
る。さらに、演算ユニットなどの回路を可能な限り共有
することによって、最小の回路規模で最大の並列規模を
達成できる。
【発明が解決しようとする課題】
【0049】(VLIW方式の欠点)
【0050】VLIW方式の欠点を示す。まず、命令レ
ベル並列は、プログラムの局所的な領域だけで実行でき
る命令を選択する方式である。理由は、プログラムはそ
の場の演算結果によって命令の流れが頻繁に変更される
ため、演算が終了するまで次に実行すべき命令を特定す
ることはできない。それをある程度克服するために分岐
予測と呼ばれる機構があるが、それでも複数の分岐の先
を予測することは難しい。そのため、命令キャッシュ3
01の幅を広げても、同時に実行できる命令をプログラ
ムから大量に選択できないため、性能向上率が飽和す
る。
【0051】さらに、複数のデータ依存関係が発生する
ということは、それらの命令の間のデータの自由な転送
が必要になるということである。一般的に、命令実行ユ
ニットのN倍の増加に対して、実行ユニット間の配線の
遅延時間はN倍以上、回路規模はNの二乗の規模で増加
する。そのため、命令実行を増やしても、それ以上に周
波数性能が低下するというデメリットが生じる。
【0052】以上の理由によってVLIW方式は性能向
上に限界がある。
【0053】そのため、命令発行ユニット208の幅を
広げるのはあきらめて、複数の明示的に独立したスレッ
ドを1つのプロセッサで同時に実行するのも必要と考え
られるようになった。そのため、小規模なVLIWを複
数搭載し、個々のVLIWで個別のスレッドをそれぞれ
動作させるという方法が考案されている。ところがそれ
では、次に述べるマルチプロセッサ方式の問題が発生す
る。
【0054】(マルチプロセッサ方式の欠点)
【0055】次に、マルチプロセッサ方式の4つの欠点
を示す。
【0056】まず、マルチプロセッサでは、負荷の高い
プロセッサから負荷の低いプロセッサへプロセス、ある
いはスレッドを移すのに非常に時間がかかる(以下、こ
のプロセス、スレッドの移動をプロセス移住、スレッド
移住と呼ぶ)。
【0057】次に、マルチプロセッサにはプロセッサ間
通信が必要になる。複数のプロセス、スレッドがまった
く独立したデータを利用することはまれであるためであ
る。ところが、1つのデータを全てのプロセッサが利用
すると、データ通信の量はプロセッサの数にほぼ比例し
て増加する。そして、通信の量が増えるということは、
単体のプロセッサから見てもメモリのアクセスが通信、
同期によって制限されることになり、単体のプロセッサ
においても、システム全体においても性能が飽和する。
【0058】次の問題は、プロセッサ間の同期である。
あるプロセスがほかのプロセスの特定の処理を待つため
に停止し、別のプロセスからの処理終了の伝達によって
再開するのが同期である。このための最も原始的な手法
は、待ち状態のプロセスが定期的に別のプロセスの状態
を監視することである(スピンロックと呼ばれる)。し
かし、これでは待ち状態のプロセスがプロセッサ、メモ
リバスなどの資源を占有するために非常に効率が悪い。
そのために、OSレベルのソフトウェアで同期処理を管
理する方法などがあるが、そのためのソフトウェア処理
が大規模な並列における性能向上を阻害するという問題
がある。
【0059】最後に、マルチプロセッサは、メモリ、複
数の演算ユニットをすべて搭載するプロセッサを、さら
に複数搭載する。そのため、それぞれの演算ユニット、
メモリの稼動率にもかかわらず、すべてのコピーがプロ
セッサの数だけ搭載されることになる。そのため、回路
規模の点で無駄が多い。
【0060】(従来のPMT方式の欠点)
【0061】PMT方式は、以上で述べた、VLIWに
代表される命令レベル方式の性能の限界、およびマルチ
プロセッサ方式の回路規模的な欠点を解消するための方
式である。
【0062】まず、複数のスレッドを常に全てのユニッ
トで巡回させることで、スレッド発行ユニットを演算ユ
ニット間で共有できる。さらに、全てのスレッドを空い
た演算ユニットに対して即座に発行することができ、ス
レッドを中断した場合も、スレッドの移住を行わなくて
もその場で再開が可能である。これによって、レイテン
シを隠蔽するためのスレッドの切り替えを高速に行うこ
とができる。
【0063】複数のスレッドを動作させる際には、デー
タキャッシュの内容を共有することが多い。そのため、
スレッド間で同じデータキャッシュを共有することで、
全てのキャッシュへ同じデータを転送する必要が無くな
り、ブロードキャスト型のデータの転送を最小限にする
ことができる。
【0064】同じ種類のスレッドは、同じ命令、データ
メモリ、演算ユニットを利用する傾向が強い。この性質
を利用して、1つの命令キャッシュ、データキャッシ
ュ、特殊演算ユニットを複数のスレッドから共有させる
ことで回路を削減することができる。
【0065】だが、従来例に挙げた図4のPMT方式に
は、以下の欠点がある。
【0066】まず、コンテキストスイッチのために、メ
モリにレジスタの値の退避が常に必要になる。キャッシ
ュミスのように、もとの演算ユニットでスレッドを再開
できるような処理では、演算ユニットにレジスタを保持
しておけば、スレッドの移住は必要ない。そのために、
複数のスレッドを同時に管理するレジスタファイルが必
要になる。
【0067】次に、分岐命令ごとにコンテキストスイッ
チが必要になる。理由は、命令アドレスに対して、実行
される演算ユニットが常に決定されているために、命令
アドレスが昇順に実行されない場合はスレッドの移動が
必要になるためである。分岐命令はソフトウェア全体で
4分の1を占めるともいわれるため、このようなスレッ
ドの移動は大きく性能を低下させる。ソフトウェアのイ
ンライン展開によってある程度分岐を減少させることは
可能であるが、汎用的なソフトウェアで性能が出る構造
が望ましい。
【0068】次に、命令アドレスによって実行される演
算ユニットが決定されるため、命令の配置によっては演
算ユニットの稼動率にバラ付きが生じる。同じようにソ
フトウェアのインライン展開でうまく大半の演算ユニッ
トを利用することはできるが、汎用的なソフトウェアで
負荷分散が出来る構造が理想的である。
【0069】従来のPMT方式では、キャッシュ間でデ
ータのコピーを持たせないために、全ての実行ユニット
が全てのキャッシュメモリと接続するように配線させる
必要がある。そのため、実行ユニットのN倍の増大にし
たがってNの二乗で規模が増大する。配線遅延が深刻化
する現在では、このような配線は確実に周波数性能を低
下させる。ところが、性能向上の為には実行ユニットを
増加させることが不可欠である。そのため、キャッシュ
のコピーを各実行ユニットに持たせる必要があり、キャ
ッシュ間の内容の整合性を取るハードウェアを実装する
必要がある。
【0070】従来のPMT方式では、キャッシュのコピ
ーを一切行わないため、全てのキャッシュのアクセスは
順序が入れ変わることはない。ところが、キャッシュの
コピーを持たせる構造にすると、キャッシュのアクセス
順序を保持できなくなる。そのため、新たなハードウェ
アによる同期機構によって、キャッシュのアクセス順序
を保証する必要がある。
【0071】最後に、全てのスレッドは全ての資源に無
制限にアクセス可能であり、同時に独立したプロセスを
動作させることができない。そのためには仮想記憶機構
によるプロセス間保護の実装が必要である。ところが、
キャッシュメモリを分散させると、仮想記憶機構はキャ
ッシュメモリの数だけ必要になる。キャッシュメモリは
複数のプロセスが混在するため、単体の仮想記憶の容量
も増大する。更に、仮想記憶機構を分散させると仮想記
憶の規模が膨大なものになる。
【0072】以上が従来のPMT方式の欠点である。P
MT方式の持つ長所を維持しつつ、これらの欠点を解消
するのが本発明の目的である。
【課題を解決するための手段】 【作用】
【0073】(コンテキストスイッチ)
【0074】本発明のプロセッサはマルチスレッドを利
用する。マルチスレッドは大規模なレイテンシを隠蔽す
る唯一の方法と言ってよい。このマルチスレッドの管理
は、従来のマルチプロセッサなどではOSの仕事となっ
ているが、それがスレッドの数に比例して処理時間を増
大させて、マルチスレッドの長所をほとんど発揮できな
い要因となっている。ハードウェアで極力マルチスレッ
ド動作を実現するのが望ましい。
【0075】図16にマルチプロセッサにおけるマルチ
スレッドの実行例を示す。スレッドAからスレッドBへ
の切り替えを行うスケジューリングは、常にプロセッサ
の資源を消費する。さらに、キャッシュミスの期間に
は、他のスレッドの動作ができず、各プロセッサはアイ
ドリング状態となる。
【0076】図17に、本発明のプロセッサにおけるマ
ルチスレッドの実行例を示す。本発明のプロセッサで
は、複数のスレッドがストールしない限り。スケジュー
リングを全てハードウェアで行うため、常に演算ユニッ
トを実際の動作に利用することができる。キャッシュミ
スの場合も、別のスレッドがかわりに動作することがで
きる。キャッシュの入れ替え動作が終了した後は、別の
任意のスレッドのストールによって、スレッドを再開す
ることができる。
【0077】結論として、本発明のプロセッサは、マル
チプロセッサ方式に対してコンテキストスイッチ、スケ
ジューリングの時間が不要である。さらに、本発明のプ
ロセッサはあらゆるスレッドの待ち時間に他のスレッド
が動作可能であり、どんなに並列度を上げても演算資源
をほぼ常時利用することができる。これは、現在の命令
レベル並列では、数並列程度でも演算資源の利用率が半
分以下であるのと対照的である。
【0078】複数のスレッドを同時に動かす際には、待
ち状態のスレッドの中から演算能力に相当する数のスレ
ッドを選択することが必要になる。スレッドには、例外
や割り込み要求の応答など、即座に実行を要求されるも
のと、比較的実行遅延が許されるものとが混在してい
る。このため、スレッドの優先順位を設け、それを自動
的に選択する機構が必要になる。
【0079】本発明のプロセッサにおけるスレッドは1
6段階のプライオリティーを有する。スレッド発行ユニ
ットは、実行待機状態のスレッドを格納し、スレッドの
プライオリティーをハードウェアで判定して選択して、
同時に1つのスレッドを発行する。また、既存のスレッ
ドよりもバッファ上のスレッドの優先度が高い場合は、
無条件で既存のスレッドを休止して新規のスレッドを発
行する。プライオリティーが同一の場合はとくに優先制
御、負荷分散制御を行う必要はない。
【0080】なお、実行ユニットの稼働率が高く、新規
のスレッドを発行できない場合は、隣接するスレッド発
行ユニットに順にスレッド状態を転送する。
【0081】スレッド発行ユニットが発行すべきスレッ
ドを選択する際に、前に実行したスレッドと共通の命令
を利用するものが理想的である。理由は、命令が同一で
あれば利用するデータも同じである確率が高いこと。そ
して、命令などの状態が等しければ、制御回路などの状
態の変更が最小限となり、状態信号が変化しなければC
MOS回路の特質上消費電力が最小となるためである。
【0082】そのために、前に発行したスレッドの命令
アドレスを控えておく。そして、次に発行するスレッド
の命令アドレスと、控えておいた前のスレッドの命令ア
ドレスを比較し、同一であればスレッドを即座に発行す
る。アドレスが同一でない場合は、今のスレッドとプラ
イオリティーが同一以上のスレッドがない場合に限り用
意したスレッドを発行する。
【0083】PMT方式では、そのままではスレッドの
ライン間の移動によって演算ユニットの間で負荷のばら
つきが生じる。そのため、ある演算ユニットは負荷が極
端に高く、どうしてもほかのスレッドの要求を受け付け
られない状態が発生する。そういう場合は、空いた1つ
の演算ユニットを有効活用するために、その演算ユニッ
トを単一プロセッサとみなしてスレッドの実行を行う
(今後、この動作を局所SMP実行モードと称する)。
こうして、PMT方式とSMP方式を混在させて、スレ
ッドが充填されない演算ユニットを最大限に活用する。
プライオリティーの高い別のスレッドの要求によって、
局所SMP実行モードは解除される。
【0084】スレッド発行ユニットが4つの演算ユニッ
トで共有される場合は、局所SMP実行モードは4つの
演算ユニットを順に利用して行う。この場合、4つのス
レッドが同時に動作することになるが、相互の演算ユニ
ット間のレジスタ、データ転送は不要である。
【0085】コンテキストスイッチを高速化するため
に、従来のPMT方式にあったレジスタのメモリへの待
避の必要性をなくす。そのために、レジスタファイルに
は複数のスレッドの情報を共存させ、そのうちの1つだ
けを利用する。コンテキストスイッチは、利用するレジ
スタファイルのバンクを切り替えるだけで良く、即座に
スレッドを切り替えることができる。
【0086】PMT方式では、スレッドは基本的には一
定方向に移動する。しかし、命令、データの共有を実現
するためには、すでに命令が保持してある演算ユニット
にスレッドを移すことが望ましい。あるいは、すでに負
荷の高い演算ユニットに到達したときは、負荷の低いラ
インに移動する必要がある。そのために、演算ユニット
間でスレッドを移動させる、スレッド移住機構を設け
る。スレッド移住は以下の手順で行う。
【0087】(1)実行ユニットからストール要求。同
時にレジスタバンクを別のスレッドに切り替える。
【0088】(2)スレッド発行ユニットは待機してあ
るスレッドを供給。
【0089】(3)データキャッシュにレジスタの内容
を退避。直接二次キャッシュに対して送られる。
【0090】(4)目的のノードにスレッド情報転送。
【0091】(5)データキャッシュ階層を通って、目
的のノードに近い二次キャッシュからレジスタの読み込
みを行う。データキャッシュ間の転送は、後述のキャッ
シュコヒーレンシ機構を用いる。
【0092】なお、本発明では、負荷分散のためのスレ
ッドの移住は基本的には不要である。待ち状態のスレッ
ドは一定場所にとどまっていれば、いつかは他のスレッ
ドが使用していない空いたパイプラインが流れてくるた
めである。
【0093】図22に、スレッド移住における動作を示
す。横軸は演算ユニットの列であり、縦軸は時間経過で
ある。斜線が個別のスレッドの実行を示す。
【0094】7番の演算ユニットへのスレッドの移住に
よって、7番から10番の演算ユニットはメモリからレ
ジスタを読み込む。11番の演算ユニットから実際のス
レッドが再開される。
【0095】プライオリティーの低いスレッドは、7番
の演算ユニットがプライオリティーの高い別のスレッド
によって占有されたことを検出して、2番の演算ユニッ
トの時点でスレッドを停止させる。3番から6番の演算
ユニットではレジスタ状態をメモリに待避する。7番の
演算ユニットから別のスレッドの移住が始まる。
【0096】一般的にサブルーチンコールでは、それま
でのレジスタをスタックに保持して、リターンの直前に
退避したレジスタを読み込む操作が必要になる。本発明
のプロセッサでは、サブルーチンコールはレジスタを隣
接転送する際に、元のレジスタを破棄せずに、サブルー
チンコールを実行した演算ユニットのレジスタバンクに
保持しておくだけで実現できる。そしてリターンはその
保持されていたレジスタバンクを再利用して、帰り値を
示す1つのレジスタだけを代入すれば良い。
【0097】図20に、サブルーチンコールの動作例を
示す。CALL命令がサブルーチンへの分岐、RET命
令がサブルーチン終了を示す命令である。
【0098】CALL命令のように、元の命令アドレス
に戻り、元のスタックの値を利用する処理においては、
CALL命令の位置にレジスタ値を残しておくだけで良
い。レジスタはコール先の命令にも複製されて継承され
る。
【0099】RET命令の実行によって、帰り値だけが
CALL命令に送られる。それ以外のレジスタは、元の
レジスタの値をそのまま利用すればよい。
【0100】保持してあるレジスタバンクをほかのスレ
ッドが利用するときは、前述のスレッド移住機構におけ
るレジスタ同期機構によって、自動的にメモリへの退避
が行われる。
【0101】割り込みユニットやTLBは、蓄積された
スレッドIDをスレッド発行ユニットに伝達し、指定さ
れたスレッドを動作させることができる。
【0102】そして、TLBからのスレッド生起は、ペ
ージフォルトなどのTLB例外によるコンテキストスイ
ッチを高速化するとともに、OSカーネルサービスの並
列化を実現する。
【0103】本発明のプロセッサは大量のスレッドを利
用する。そのためには、現在進行しているスレッドの演
算能力を極力利用せずに、大量のスレッドを発行しなく
てはならない。そのために、スレッドが必要なスレッド
ID、スタックなどの情報(スレッド構造体と呼ぶ)は
ハードウェアで管理して、スレッドの生成によって自動
的に転送する。実装としては、まとめてスレッドIDと
スタックポインタを格納するバッファだけを設ける。バ
ッファの内容の管理はまとめてソフトウェアで行う。
【0104】スレッドを発行する場合は、スレッドバッ
ファから空き状態のスレッド構造体を要求する。スレッ
ドバッファにスレッド構造体が無い場合は、現在のスタ
ックポインタをそのまま返し、これ以上マルチスレッド
で実行できないことをプログラムに通達する。
【0105】こうして、スレッド発行命令は新規のスレ
ッド構造体を取得する命令だけで済むようになり、スレ
ッド発行におけるソフトウェアオーバーヘッドを削減で
きる。
【0106】(演算パイプライン)
【0107】本発明のプロセッサは、レジスタファイル
を隣接する複数の演算ユニットで共有する。4つの演算
ユニットでレジスタファイルを共有する場合は、4つの
レジスタファイルと4つの演算ユニットとの間で自由に
アクセスするためのクロスバ接続バスを設ける。
【0108】こうして、従来のPMT方式が常にすべて
のレジスタの値を隣接するユニットに転送を必要とした
のに対して、隣接するレジスタファイルへの転送を数ク
ロックに1回に抑制することができる。
【0109】レジスタファイルには複数のスレッドの情
報が混在するが、一度に送るのは1つのスレッドのさら
に4分の1の内容で十分となり、実行ユニット全体で
も、1つのスレッド分のレジスタ転送だけで良い。
【0110】なお、同一の命令を利用するスレッドを連
続して動作させている場合は、転送する信号の変化はス
レッド間のレジスタ値の違いだけとなる。この違いだけ
がCMOS回路における消費電力となる。
【0111】本発明のプロセッサは浮動小数点演算ユニ
ットを搭載することができるが、このユニットは整数演
算に比べてレイテンシが大きくなるという特徴がある。
その間、依存関係のない別の整数演算命令を実行するこ
とで、浮動小数点演算のレイテンシを隠蔽できる。
【0112】同一の命令を用いるスレッドを連続動作さ
せる場合では、長レイテンシ演算も1つのユニットを使
いまわすことになる。この場合は、1クロック分の演算
が終了した時点で、隣接する別の長レイテンシ演算ユニ
ットに中間値を渡し、並行して演算を行う。こうして、
長レイテンシ演算のスループットを向上させる。
【0113】本発明のプロセッサは、一般的なパイプラ
インプロセッサと同じく、パイプラインを停止するパイ
プラインストールを発生する機能を有する。ただし、パ
イプラインプロセッサと違う点は、ストールする対象が
単独のスレッドに限られ、ほとんどの種類のストールの
間に待ち状態の別のスレッドを再開できる点である。
【0114】パイプラインストールは、一般的にはある
スレッドの要求する演算ユニット、あるいは転送バスな
どの資源を取得できなかった場合に発生する。そして、
ストール状態のスレッドは、その原因が解決された時点
で、プライオリティーの低い別のスレッドの動作を中断
することができる。
【0115】パイプラインストールは、すでに実行して
しまった演算内容を1,2命令分キャンセルする必要が
ある。たとえばロード命令に対して、ロード命令が利用
するキャッシュへのインバリッドの伝達が間に合わなか
った場合、そのロード命令を無効にする必要がある。
【0116】図21は、パイプラインストールの動作例
である。スレッドAのEXステージの実行が失敗して、
別のEX’ステージによる実行が必要になる。スレッド
Aの待避したパイプラインスロットには、前にパイプラ
インストールを起こした別のスレッドが入り込み、結果
を格納する。
【0117】EX’の具体的な動作は64ビット演算や
浮動小数点除算などである。演算自体は数クロックで終
了し、再開待ち状態となる。スレッドEのパイプライン
ストールによって、スレッドEのかわりにスレッドAが
入り込み、スレッドAの命令を終了させる。
【0118】パイプライストールごとにスレッドを切り
替えることによって、パイプラインを間断無く動作させ
ることができる。ただし、パイプラインストールが発生
した命令が、前にパイプラインストールが発生した命令
より後である場合は、パイプラインに空きが生じる。た
だしその幅は最大4クロックである。しかも、同一命令
を利用するスレッドを連続動作させる場合は、パイプラ
インストールを起こす命令も同一である確率が高いた
め、大きなペナルティーにはならない。
【0119】(ディレクトリ方式階層キャッシュ)
【0120】大量の演算ユニットを搭載するには、それ
に対応するだけのデータ転送能力が必要になる。ところ
が、1つのメモリから大量のデータを供給することは不
可能である。何らかの形でメモリを分散するしかない。
ところが、本発明の方式では、全ての演算ユニットから
全てのメモリを高速に参照する必要がある。そのため
に、分散したメモリの間でコピーを持つ必要がある。
【0121】分散されたメモリは、本来のメモリのコピ
ーを自動的に格納するキャッシュの形態を取る。このと
き、キャッシュ間で同じデータのコピーを持つ場合は、
あるキャッシュへの書きこみを、別のキャッシュへと転
送しなくてはならない。このコピー間のデータの整合性
を取る機構を、キャッシュコヒーレンシ機構と呼ぶ。
【0122】ところが、キャッシュの数が増大すると、
キャッシュの間の転送量も増大し、配線の量、遅延時間
も増大する。キャッシュ間で接続されるバス信号の数を
最小限度にし、かつキャッシュ間の転送スループットを
確保するために、階層型キャッシュ構造を取る。
【0123】演算ユニットには専用の一次キャッシュが
接続され、複数の一次キャッシュに対して1つの二次キ
ャッシュが接続される。遠距離の一次キャッシュへの転
送に関しては、二次キャッシュを介して転送される。一
次キャッシュと二次キャッシュの間のデータバスの接続
はクロスバ接続であり、転送スループットを確保する。
ただし、クロスバ接続の組みあわせは4つ程度に限定
し、配線規模の増大を防ぐ。
【0124】本発明のプロセッサにおいては、隣接しな
いキャッシュ間の転送は即座には行われない。二次キャ
ッシュにいったん格納されてから伝達される。
【0125】ここで、データの書きこみを行ったスレッ
ド自身が同じデータを読み込む場合を考える。キャッシ
ュ間の転送が間に合わなければ、自分自身のデータも読
めないことになる。しかし、キャッシュ間の転送はスレ
ッドの進行に間に合えば良いため、多少のレイテンシの
遅れは許される。
【0126】特に、二次キャッシュ間の長距離配線、大
容量の二次キャッシュは動作レイテンシが遅くなる傾向
がある。ところが、二次キャッシュアクセスを長距離の
演算ユニットの間の転送に用いれば、その距離の間のス
レッドの進行に間に合えば良いため、キャッシュ動作レ
イテンシを隠蔽できる。
【0127】異なるスレッド間では、スレッド間の同期
を行わない限りデータの即座な転送を保証する必要はな
い。同期を行う場合は後述する。
【0128】二次キャッシュは複数の一次キャッシュ、
そして隣接する二次キャッシュ、三次キャッシュからの
要求をすべて受理することになる。これらの転送スルー
プットは膨大なものとなり、同時に複数の要求を受理し
なくてはならない。しかし、同時に複数の要求を完全に
受理できる、マルチポートのメモリ回路は規模も大き
く、速度も遅い傾向がある。
【0129】そのために、一次キャッシュは複数のロー
ドストアユニットに接続する。逆に1つのロードストア
ユニットからは、複数の一次キャッシュをアドレスによ
って選択する。二次以上のキャッシュは複数のバンクに
分割し、同様にアクセスするアドレスによってバンクを
選択する。同時に同じバンクへのアクセスが重なった場
合は、片方のアクセスを停止させる必要がある。ただ
し、本発明のプロセッサのキャッシュ間のデータ伝送
は、スレッドの進行に間に合えば良いため、多少の衝突
による遅れは許容される。この機構によって、確率的に
多ポートのキャッシュに近いスループットを確保でき
る。
【0130】データのコピーを持つ別のキャッシュを特
定するためには、バススヌープ方式とディレクトリ方式
の2つの方法がある。バススヌープ方式は、共有の可能
性のあるデータを共通のバスに出力し、全てのプロセッ
サが共有状態かどうかを判定する方式である。このバス
スヌープ方式の利点は、共有判定のための外部回路が単
純であること、複数のプロセッサへの同時転送が可能で
あることである。欠点は、すべての外部メモリアクセス
がメモリバスを占有して、全体の転送スループット性能
を低下させる点と、すべてのプロセッサが自身のキャッ
シュをアクセスしてコピーを持つかどうかのチェックを
行う必要があるという点である。市販されているスーパ
ースカラ型マイクロプロセッサはバススヌープ方式を採
用することが多い。
【0131】これに対して本発明のプロセッサは、デー
タの転送スループットが重要であり、かつデータの転送
相手を限定する必要がある。そのため、共有するプロセ
ッサを明示的に指定するディレクトリ方式を採用する。
ディレクトリ方式は、キャッシュの内部にデータの共有
相手を特定するための情報を持つ。
【0132】図23にディレクトリ方式階層キャッシュ
のロードにおける挙動を示す。演算ユニットからのロー
ドの場合、一次キャッシュ内部にデータがない場合に限
り、二次キャッシュから一次キャッシュに向けてデータ
を転送し、二次キャッシュに共有状態を設定する。すで
に二次キャッシュのデータが共有状態となっている場合
は、ディレクトリビットの示す一次キャッシュに対して
共有状態を設定する。
【0133】図24は、ディレクトリ方式階層キャッシ
ュのストアにおける挙動である。一次キャッシュへの書
きこみの際に、一次キャッシュのエントリが共有状態と
なっている場合は二次キャッシュに書きこみを通達す
る。二次キャッシュはディレクトリビットの示す共有相
手に対してのみ、直接キャッシュエントリの無効化(イ
ンバリッド)を通知する。
【0134】ディレクトリの指定により、一次キャッシ
ュには確実にデータのコピーがあることが判明するた
め、一次キャッシュのタグの比較を行う必要なく、直接
書き込みを行うことができる。ただし、セットアソシア
ティブキャッシュの場合は、ディレクトリビットは単体
のキャッシュ内部のどのバンクにデータが格納されてい
るかを指定する必要がある。
【0135】同じ命令を利用するスレッドは、たとえア
クセスするアドレスが異なっても命令間のデータの流れ
は等しい場合が多い。レジスタの場合は明示的にプログ
ラムで示されるが、メモリに対しても同じことが言え
る。特に、スタック、ヒープなどを利用する命令では、
アドレスは異なっても命令間のデータの流れは等しい場
合が多い。
【0136】本発明のプロセッサでは、同一スレッド内
部でのキャッシュミスを極力減らすために、たとえキャ
ッシュの共有情報がなくても、ストアされたデータを可
能な限り事前にロード命令に渡す必要がある。
【0137】そのために、命令アドレスに対してデータ
フロー予測情報と呼ぶ情報を設ける。データフロー予測
情報がマークされた命令は、ロード、ストア命令で使用
したのデータを自動的に次のロード命令に伝達する。そ
のために、データフロー予測情報には、伝達先のキャッ
シュを特定する値が格納される。データフロー予測情報
は、命令によって明示的に組み込むことも、自動的にプ
ロセッサが書きこむことも可能である。
【0138】データフロー予測情報は、プログラムで明
示的に記述するのが簡単だが、既存のソフトウェアとの
互換性、そして条件によってデータアドレスが動的に変
更される場合に対処するために、ハードウェアで自動的
に設定するのが望ましい。
【0139】図19に、データフロー予測情報の書きこ
み動作を示す。ロードストアユニット1907におけ
る、最初の命令実行でキャッシュミスを起こした命令
は、キャッシュの共有状態からデータの実体の位置を知
る。そして、データの実体のあるキャッシュ1904か
らデータを取得すると同時に、データの実体を持つキャ
ッシュ1904に向けて、自分の演算ユニット1906
を示す値を送る。こうして、データの実体のあるキャッ
シュ1904は命令キャッシュ1901にデータフロー
予測情報を書きこむ。
【0140】(命令キャッシュ)
【0141】本発明のプロセッサでは、複数のスレッド
が同じ命令を利用し、同じ命令は同じ演算ユニット、デ
ータキャッシュを利用するのが望ましい。そのために
は、発行されたスレッドがプログラムカウンタから命令
キャッシュの場所を特定し、自由にスレッドを移動させ
ることが必要になる。
【0142】図18は、分岐によるスレッド移住の方法
を示す模式図である。一次キャッシュ1803などに格
納された命令は、二次キャッシュ1801に格納された
ディレクトリに共有状態を設定する。命令キャッシュ1
808の命令キャッシュミスか、分岐命令1806によ
る要求によって二次キャッシュ1801にアクセスした
スレッドは、ディレクトリビットによって該当する命令
が格納されている命令キャッシュ1802の位置を知
り、その命令キャッシュに向けてスレッドを移住させ
る。
【0143】どの命令キャッシュにも命令が格納されて
いない場合は、スレッドの情報を動かさずに、分岐命令
の直後、あるいはキャッシュミスを起こしたキャッシュ
1808に対してスレッドを再発行を行う。二次キャッ
シュ1801あるいは外部メモリから取得した命令は、
命令キャッシュ1808に格納されて、スレッドを再開
する。次に同一の命令を実行する場合には、命令キャッ
シュ1808にすでに分岐先の命令が格納されていて、
分岐のペナルティーも発生しない。
【0144】スレッド管理ユニット1807が、他の優
先順位の高いスレッドが充満していて空きがない場合
は、やはりスレッドの移住を行う。その場合は、スレッ
ド管理ユニットからの通信で、スレッドの負荷の低いス
レッド管理ユニット1809を探し出し、スレッドを移
住させる。
【0145】この機構によって、同一命令を最大限に再
利用することができる。さらに、従来のPMT方式と異
なり、スレッドは命令アドレスにかかわりなく、自由に
演算ユニットに分配できる。
【0146】本発明のプロセッサは、厳密な分岐命令に
スレッドの移住が必要であるため、分岐命令の実行の頻
発を避ける必要がある。分岐はマルチスレッドによって
隠蔽は可能であるが、スレッドの発行能力には上限があ
るためである。
【0147】そのために、命令アドレスとは無関係に命
令を配置する。格納される命令の順序は、確率的に命令
が実行されると予測される順序である。そして、予測さ
れた分岐方向を示す分岐予測情報をキャッシュのタグメ
モリに配置する。分岐予測情報は演算ユニットに送ら
れ、分岐命令の実行結果と照合されて不一致の場合はス
レッドを停止させる。
【0148】キャッシュのタグメモリに次の命令アドレ
スを示す値を置くことで、分岐命令の実行前に隣接する
命令キャッシュから命令を取得させることもできる。こ
の機構によって、PC相対分岐だけではなく、レジスタ
の示すアドレスへの分岐を予測することもできる。
【0149】同時に、前述のデータフロー同期情報も命
令キャッシュのタグメモリに格納する。これによって、
同じ命令を利用する限りは、すべてのスレッドから1つ
の分岐予測、データフロー予測情報を共有することがで
きる。
【0150】図13に、本発明の命令キャッシュにおけ
るタグメモリの構造を示す。命令キャッシュにはそれぞ
れ命令ごとに数ビットの分岐予測情報、あるいはデータ
フロー予測情報が格納されている。発行された命令が分
岐命令の場合は、分岐予測情報として使用し、発行され
た命令がロードストア命令の場合は、データフロー予測
情報として利用する。命令ごとの予測情報のビット幅
は、実行ユニットの数から決定される。データフローユ
ニットが目的とする実行ユニットを特定するためであ
る。
【0151】また、分岐命令の実行とは独立して次の命
令キャッシュのアドレスを特定するために、次の命令ア
ドレスを示す値が格納されている。この値によって、条
件分岐だけではなく、オブジェクト指向言語の仮想関数
に代表される、レジスタ値への分岐も予測することがで
きる。
【0152】(仮想記憶と同期)
【0153】仮想記憶ユニットは、可能であれば全ての
演算ユニットから共有することが望ましい。理由は、複
数のプロセスが共存する場合は、要求される仮想記憶の
エントリの数も増大するためである。更に、仮想記憶ユ
ニットが分散した場合は、その内容のほとんどが重複す
るためである。
【0154】本発明のプロセッサは、内蔵するキャッシ
ュをすべて仮想空間で管理する。メモリへのアクセスの
時だけ、物理アドレスに変換するためにグローバルTL
Bを用いる。
【0155】仮想キャッシュは、複数のプロセスが共存
するために、異なるプロセス空間のキャッシュをアクセ
スしない機構が必要になる。そのために、キャッシュの
タグメモリにはプロセスIDの情報を持たせ、キャッシ
ュヒットの確認ごとにプロセスIDの一致確認を行う。
【0156】(データフロー同期)
【0157】一般的にマルチスレッドの同期は、あるス
レッドからの書き込みをトリガにして直接別のスレッド
を起動する方式がもっとも単純かつ有効である。この方
式はデータフロー方式とよばれ、プログラムモデルから
見てもっとも単純な方式である。プログラム上では、あ
るアドレスへのデータライトを自動的に感知してスレッ
ドを再開するように設定するだけである。
【0158】この機構の実装のために、仮想記憶とデー
タキャッシュに特別な機構を設ける。仮想記憶には、あ
るアドレスのライトアクセスがあった場合にスレッドを
生起する情報を書き込んでおく。そのアドレスを含むデ
ータメモリをデータキャッシュに読み込む際に、データ
フロー参照がある情報も同時に取得する。
【0159】データキャッシュ側には共有ビットを書き
込むだけとなる。形としては、TLBのデータフロー同
期エントリとデータを共有するという形になる。これに
よって、各キャッシュエントリにはデータフロー同期情
報を持たせる必要はない。前述のディレクトリ共有機構
で十分であり、TLBから二次キャッシュに向けてデー
タフロー同期の開始を伝達する。
【0160】厳密なメモリ共有機構では、ある時点での
共有メモリの状態は、どのプロセッサから見ても同じで
あることが要求される。ところが、この厳密なメモリ共
有は、キャッシュの搭載や、メモリの階層分割によって
現実には不可能になりつつある。そのため、近年ではプ
ロセッサの仕様の方を変更し、同期命令前後のデータア
クセスの順序だけを維持するように定義を変えた。プロ
セッサの種類によって細かい違いはあるが、基本的には
これをルーズコンシステンシと呼ぶ。
【0161】本発明のプロセッサでは、同期命令は他の
演算ユニットからのデータの書きこみを待ち、すべて到
達した時点でスレッドを再開する。ところが、遠距離の
演算ユニットには制御信号が即座に届かないため、同期
命令までに実行されたストアかどうかの判定は厳密には
不可能である。
【0162】そのために、同期命令における「同時」の
定義を変更する。たとえ実時間では後に実行されたスト
ア命令も、同期命令の再開までに伝達が間に合った場合
には時勢的に前だとみなす。
【0163】そして、同期とは、PMTパイプラインを
一周回分待ち合わせて、他のスレッドの、「同時」の時
間以前に実行された全てのストアを受理するまで待つこ
ととする。これによって、単体のスレッドの場合と同じ
く、全てのスレッドのデータ転送はスレッドの移動に間
に合えば良い。パイプラインが一周した時点でスレッド
を再開させるが、その時点では同期命令「以前」の全て
のストアは実行され、再開地点以降のデータキャッシュ
に格納されている。
【0164】この方法によって、全てのスレッドにわた
って、同期変数の前後のメモリアクセスの順序を保持す
ることができる。なおかつ、同期中に他のスレッドの動
作が可能になり、性能へのペナルティーも隠蔽できる。
【0165】図25に本発明のプロセッサにおける同期
の動作を示す。スレッドBからのStoreAは、スレ
ッドAのLoadAで読み込むことが出来る。スレッド
AのSYNC命令より実時間的には後に実行されている
にもかかわらず、SYNC命令の再開までにキャッシュ
の伝達が終了しているためである。仮想時間的に前かど
うかの判断基準は、前のSYNC命令のパイプラインの
到達よりも早いかどうかで決定すれば十分である。こう
して、複数のSYNC命令間で、SYNC命令前後のデ
ータ格納順序を保つことができる。
【0166】さらに、従来のプロセッサと異なり、SY
NC命令で他のスレッドを止める必要はなく、SYNC
命令の伝達もスレッドと同じ速度で伝達すれば十分であ
る。
【0167】図26に、ソフトウェアモデルから見た同
期の動作について示す。スレッドAのSYNC命令の前
に実行されたスレッドBのStoreAは、仮想時間で
は前に実行されたSYNC命令のさらに前に行われてい
るため、スレッドAから読み込むことができる。
【0168】スレッド間の同期は、同期変数へのアクセ
スに対して、明示的にOSのソフトウェアによるスケジ
ューラを起動して管理することが多い。しかし、前述の
データフロー同期機構を自動的に利用すれば最も高速で
ある。
【0169】具体的には、あるデータをロードする同期
命令の実行によって、データフロー同期ユニットにその
スレッドの状態とロードアドレスを転送する。スレッド
はその時点でスリープする。データのストアはデータフ
ロー同期ユニットとディレクトリ方式キャッシュコヒー
レンシによって判定されて、待ち状態のスレッドを直接
起こすことができる。
【0170】(パケット制御信号)
【0171】既存のスーパースカラ、VLIW方式に代
表される命令レベル方式では、信号は可能な限り速く伝
達することを要求される。ところが、回路規模が大きく
なるとそれは現実的には不可能になる。理由は主に3つ
ある。まず、微細化が進むと、配線遅延の比率が大きく
なる。さらに回路規模が大きくなると、回路間の配線が
爆発的に増大する。さらに、周波数が高くなると、隣接
する配線間のクロストークやグラウンドバウンスが問題
となる。前者の対処としては、配線を短縮するか、配線
間の距離を大きくとりシールドする必要が出てくる。後
者の対処には、電源配線を配線に対して最適化して、電
流ループの大きさを最小限にする必要がある。
【0172】それに対して、PMT方式は、隣接するユ
ニットを除き、制御信号の伝達は多少の遅れが許され
る。ということは、長距離の信号伝達に使用される信号
線を、複数の信号が共有することができる。こうして、
長距離の配線の本数を最小限にする。
【0173】更に、長距離の配線は一気に送ってしまう
のではなく、中継する回路で受け止めてシフトレジスタ
的に順に送ることができる。こうして、1クロックの間
で伝送するのはルーター間の距離だけで済み、制御信号
が動作周波数の向上を阻害することは無くなる。中継の
ためのルーターやラッチの規模が大きくなるという欠点
はあるが、それは半導体のプロセスの向上の恩恵をその
まま受けることが出来て、相対的な影響は少なくなる。
【0174】個々の配線を最小限の長さにして、信号伝
送の多少の遅れを許容することにより、その配線のドラ
イブを行うトランジスタの駆動電流を不必要に上げる必
要がなくなり、信号の高周波成分の増加を抑制すること
ができる。これはクロストークやグランドバウンスなど
の抑制につながり、これらの対策に必要な回路の増加を
防ぐこともできる。
【0175】遅延時間に関しては、PMT方式の隣接ユ
ニット以外の転送レイテンシを許容する特性によって問
題にならなくなる。こうして、並列度を維持し、回路規
模を最小限に維持しながら周波数性能の向上を可能にす
る。
【0176】パケット制御信号は、データ転送などの目
的ではアドレス、データとともに送られる。すなわち、
アドレス、データを転送するパケットは、アドレスバ
ス、データバスの空きをスレッドバッファで待ち合わせ
ることになる。これによって、各バスのアービトレーシ
ョンはパケットルーターが一括して処理することができ
る。
【0177】本発明のプロセッサは、命令キャッシュ、
演算ユニット、外部インターフェースなどのユニットご
とにパケットルーターを随所に配置し、遠距離の制御信
号の伝達の中継を行う。パケットルーターには、複数の
パケットルーターと送受信を行うためのバスを持ち、必
要に応じてデータバスなどの補助的なバスを並行して設
ける。
【0178】個々のパケットルーターは一意の番号を割
り振られる。番号はスレッドの進行方向にあわせて昇順
に割り振られ、付随するバス信号、伝達先のユニットに
よって一意にルーティングの方法も決定される。
【0179】このパケット制御信号によって、隣接する
ユニットを除く全てのユニットへの制御が行われる。
【0180】本発明のプロセッサにおけるパケットは、
到達予定時間の情報をパケット情報に含む。この時間と
パケットルーターの持つタイミングカウンタを照合する
ことにより、パケットが予定通り伝達されているかどう
かを判定する。
【0181】パケットが遅滞している場合は、並行して
走るスレッドに対して即座にパイプラインストールを要
求して、スレッドを止める。パケット遅延の例外処理を
発行して、OSレベルのソフトウェアが対処を行ってス
レッドを再開させる。
【0182】本発明のプロセッサは、各ユニットの内部
状態を全ての演算ユニットから監視、改変することを可
能にする。そのために、演算ユニットからの要求をパケ
ットに変換し、パケットルーターを利用して順次伝達す
る。伝達先のユニットは、内部状態を含んだパケットを
送信元の演算ユニットに伝送する。なお、ロードのため
のレイテンシは無論マルチスレッドで隠蔽される。
【0183】(プロセッサ間通信)
【0184】本発明のプロセッサを複数利用する際に、
本発明の内部の演算ユニットと同じように、プロセッサ
をリング状に連結すれば、プロセッサ間転送スループッ
トを最大にすることができる。これによって、1つのス
レッドは複数のプロセッサにわたって展開することがで
き、命令、データ共有の利点を最大限に生かすことがで
きる。
【0185】だが、本発明のプロセッサの内部と同じ
く、データの転送にはパイプラインの隣接転送だけでは
なく遠距離の転送も考えられる。リング方式転送の欠点
は遠距離に伝送するのが難しいという点である。そのた
めに、遠距離の演算ユニット間同士でショートカットパ
スで伝送することは、全体の転送速度を大きく向上させ
る。
【0186】このような転送はレイテンシ時間が増大す
るものであるが、複数のプロセッサ間での通信はそれら
の間のパイプライン全てを通過する時間で行われれば良
いため、数十クロック以上のレイテンシが許される。こ
のため、プロセッサ外の低速インターフェースには最適
である。
【0187】本発明のプロセッサでは制御信号をパケッ
ト化しているため、同じ制御信号を複数のプロセッサに
分配できる。ユニットを指定するための識別コードを拡
張し、全てのプロセッサを一意に表現することで、マル
チプロセッサに向けて自由に制御信号パケットを伝送で
きる。
【0188】本発明のプロセッサを複数利用する際に
は、個々のプロセッサに個別にメモリを接続する。各プ
ロセッサがデータの実体の場所を特定するために、個々
のプロセッサが持つ仮想記憶を利用する。この場合、仮
想記憶のエントリはそれぞれコピーを持つことになり、
キャッシュと同じ共有管理を行うことになる。そのため
に、仮想記憶には共有状態を示すビットを設ける。ただ
し、オリジナルは常にメモリに接続された仮想記憶とな
る。
【0189】仮想記憶の改変の際には、キャッシュのフ
ラッシュと同時に、他の仮想記憶に改変を直接伝達す
る。改変を伝達された仮想記憶は、共有状態に応じてそ
れぞれキャッシュのフラッシュを実行する。
【0190】本発明のプロセッサ同士で、データの共有
がある場合は、仮想記憶のページ単位でデータの共有情
報を設定する。キャッシュラインごとのビットを持つこ
とができないため、ページ全体が共有状態の場合はその
都度内部キャッシュのタグにアクセスして確認する必要
がある。
【0191】まず、プロセッサから外部にロードストア
要求を行うケースについて述べる。まず、ロード命令で
は、キャッシュにエントリがない場合、あるいはTLB
に対して共有状態が指定されている場合は、TLBを介
してプロセッサ外部からデータを取得する。TLBにア
クセスを行い、ローカルメモリではなく外部のメモリと
データを共有している場合は、プロセッサ外部にリード
要求を出す。
【0192】ストア命令では、二次キャッシュにTLB
への共有状態が設定されていることにより、TLBへの
アクセスを行う。共有状態に設定されている場合は、デ
ータのコピーの無効化(インバリッド)を通達する。
【0193】次に、プロセッサ外部からロード要求を受
理した場合について述べる。受理した仮想アドレスに対
して内部のTLBへのアクセスを行う。内部キャッシュ
で共有状態に設定されている場合は、内部のキャッシュ
に仮想アドレスでアクセスして、プロセッサ外部にデー
タを伝達する。
【0194】次に、プロセッサ外部からインバリッド要
求を受理した場合も、同様に受理した仮想アドレスに対
して内部のTLBへのアクセスを行う。内部キャッシュ
で共有状態に設定されている場合は、内部のキャッシュ
に仮想アドレスでアクセスして、内部キャッシュにイン
バリッドを伝達する。
【0195】なお、TLBのエントリがない場合は、O
Sによる仮想記憶処理を行う。
【実施例】
【0196】(第一実施例)
【0197】図1に、本発明の第一実施例を示す。10
1は本発明のプロセッサである。
【0198】命令発行ユニット102は、スレッド発行
ユニット103、命令キャッシュ104を内蔵する。ス
レッド発行ユニット103は、命令キャッシュ104に
プログラムポインタ値を伝達して、実行ユニット105
に実行すべき命令を伝送する。
【0199】実行ユニット105は、4つの共有レジス
タファイル106と、4つの16ビット演算ユニット1
07と、複数の特殊演算ユニット108から構成され
る、共有レジスタファイル106と16ビット演算ユニ
ット107、および特殊演算ユニット108は、オペラ
ンドクロスババスで相互に接続されている。スレッドの
レジスタ値などの状態は全て、隣接する実行ユニット1
05に伝送される。ただし、従来のPMT方式と異な
り、1つのスレッドの状態は4クロックで転送される。
末端に到達した状態は、スレッド状態信号132によっ
て最初の実行ユニットに伝送される。実行ユニットから
のスレッド生成、分岐発行は、分岐発行制御信号10
9、134によってスレッド発行ユニット103に伝達
される。
【0200】一次データキャッシュ111は8つ搭載さ
れ、そのうちの4つが1つの実行ユニット105に接続
されている。接続にはクロスババスが使用され、同時に
4つの一次データキャッシュへの任意のアクセスを可能
にしている。ただし、同じデータキャッシュへの複数の
アクセスがかち合った場合には、1つのアクセスだけを
行い、他のアクセスを行ったスレッドをストールさせ
る。なお、従来のPMT方式と異なり、4つの一次キャ
ッシュはアドレス値によって特定でき、1つのスレッド
からすべてのバンクに自由にアクセスできる。
【0201】4つの一次データキャッシュ111〜11
4は、1つのアクセスバッファ115に接続され、隣接
するライトバッファと、やはり隣接する二次キャッシュ
116へのデータのやり取りを行う。
【0202】二次キャッシュ116は、2つの一次キャ
ッシュからのアクセスバッファ115、131と、TL
Bなどのに接続されたアクセスバッファ117から要求
を受理する。二次キャッシュユニット116は一次キャ
ッシュと異なり、命令もデータも格納する。そして、二
次キャッシュも複数の要求を受理するために複数のバン
クに分けられてる。
【0203】アクセスバッファ117は、二次キャッシ
ュ116からの要求によって外部とのアクセスを行う際
に、データのバッファリングを行う。
【0204】新規スレッド発行ユニット127は、割り
込み信号126の入力に応じて、内部に蓄積した待機状
態のスレッドを発行する。あるいは、実行ユニット10
5からの直接のスレッド生成要求によってスレッドを発
行する。そのために、スレッド発行ユニット127は、
スレッド発行ユニット103に向けてスレッド発行制御
信号133を出力する。
【0205】グローバルTLB120は、仮想アドレス
信号の物理アドレスに変換し、物理アドレスをローカル
メモリインターフェース122に伝送する。外部バスは
基本的には仮想アドレスであることに注意。
【0206】ローカルメモリインターフェース122
は、グローバルTLB120からの要求に応じて、ロー
カルメモリバス信号123を通じて外部メモリとのデー
タアクセスを行う。I/Oもローカルメモリインターフ
ェース122によってアクセスできる。
【0207】共有バスインターフェース124は、共有
バス信号125を通じて他のプロセッサに対してデータ
を送受信する。共有バス信号125から受理されたロー
カルメモリアクセス要求に対して、グローバルTLB1
20でプロセッサ内部でデータを共有しているかどうか
の判定を行う。
【0208】(第二実施例)
【0209】図5に、本発明の第二の実施例の模式図を
示す。
【0210】501は本発明の第二の実施例のプロセッ
サである。命令発行ユニット102と、実行ユニット1
05と、4つの一次キャッシュ111、二次キャッシュ
116は隣接して配置される。この組が全体に8つ配置
されることで、この第二実施例のプロセッサは32のス
レッドを同時に動作させることができる。本発明のプロ
セッサには、ユニットの搭載数に上限はない。
【0211】この第二実施例の個々のユニットは、本発
明の第一の実施例に搭載されているユニットとほとんど
共通であり、ユニットの組み合わせがだけが異なる。
【0212】前段プロセッサ接続インターフェース50
2は、別のプロセッサからのデータ転送を受理する。実
アドレスで要求されたアクセスを、TLB120を用い
て内部のキャッシュ、ローカルメモリで共有されている
かどうかを判定する。
【0213】IPユニット504はソフトウェアよりも
ハードウェアの方が効率が良い処理を行うためのユニッ
トである。これらはそれぞれ演算ユニットの近傍に配置
される。演算ユニットはIPユニットの出力データをソ
フトウェアで即座に整形するため、IPとプロセッサ間
の転送が最小限になる。
【0214】2つのローカルメモリインターフェース1
22は、二次キャッシュからのメモリアクセス要求を受
理して同時にメモリとのアクセスを行う。アクセスの前
にはグローバルTLB120を利用して物理アドレスへ
の変換を行う。
【0215】I/Oバスインターフェース510はプロ
セッサに直接接続されたローカルなI/Oへのインター
フェースである。
【0216】新規スレッド発行ユニット127は、スレ
ッド発行命令の要求に応じてスレッド発行を行うととも
に、割り込み信号126、ソフトウェア例外などの要求
に応じて休眠状態のスレッドを生起する。
【0217】この実施例のプロセッサは、通常のマルチ
スレッドプログラムを利用して、浮動小数点命令を含め
て32並列動作を可能にしながら、規模的には単一プロ
セッサの8倍強の素子数で実現できる。個々のキャッシ
ュは小容量だが、全てのキャッシュの内容を全てのスレ
ッドから共有することができるので、個々のスレッドが
1つの高速大容量キャッシュを持つのに等しい。
【0218】(命令発行ユニット)
【0219】図6は、命令発行ユニット102の内部構
造の模式図である。
【0220】パケットルーター601は、スレッドを制
御する制御パケット信号603を受理し、このスレッド
発行ユニットで受理可能であるかを判定する。
【0221】制御パケット信号の内容がスレッドの受理
の場合は、プライオリティー選択ユニット604に制御
信号を伝達する。制御信号の内容がキャッシュの直接制
御の場合は命令キャッシュ制御ユニット605に制御信
号を伝達する。制御信号の内容がローカルTLB制御の
場合は、命令ローカルTLBユニット607に制御信号
を伝達する。さらに、スレッド移住の要求である場合
は、スレッド移住ユニット620に制御信号を伝達す
る。
【0222】待ち状態スレッドが一杯などの理由でパケ
ット制御を受理できない場合は、別の隣接するパケット
ルーターに、制御パケット信号619を通じて伝送す
る。
【0223】プライオリティー選択ユニット604は、
待ち状態スレッドバッファ618の中から、実行可能状
態でかつ最もプライオリティー値の高いスレッドを1つ
選択する。ただし、キャッシュミスなどで実行できない
状態のスレッドは選択されない。このプライオリティー
選択ユニット604は、待ち状態のスレッドの数に対し
て爆発的に規模を増大させるため、待ち状態スレッドバ
ッファ618の数を増やしすぎないことが求められる。
そのために、パケットルータ602では、待ち状態のス
レッドを1つのスレッド発行ユニットに集中させない制
御が行われる。
【0224】本実施例では、命令キャッシュだけは物理
空間キャッシュとする。異なるプロセス空間に属する命
令を共有するためである。命令キャッシュはキャッシュ
制御ユニット605、キャッシュタグメモリ606、命
令TLB607、キャッシュデータメモリ608で構成
される。
【0225】キャッシュ制御ユニット605は、スレッ
ドごとの命令キャッシュアクセスを実行し、パケットル
ーター602を介して要求される命令キャッシュへの直
接アクセスを実行する。さらに、パケットルーター60
2からのグローバルTLBの改変によるTLB607の
エントリの無効化も行うことができる。
【0226】キャッシュタグメモリ606には、全ての
物理アドレスが格納され、さらに、分岐予測、データフ
ロー予測情報が格納される。
【0227】スレッド状態制御ユニット609は、キャ
ッシュのヒットチェックを行う。命令TLB607によ
って変換された物理アドレスと、命令キャッシュタグ6
06の結果が一致すれば、キャッシュはヒットしたこと
になる。その場合は、4つ分の命令を命令メモリ616
から取得して命令順序アライナ614に伝達して実行可
能な状態にしておく。
【0228】スレッド状態制御ユニット609は、前の
命令発行ユニットの出したスレッド状態信号608を受
理する。前のスレッドよりも待ち状態のプライオリティ
ーが高い場合は、無条件でスレッドを発行する。前のス
レッドがない場合は、前に実行した命令と同じ命令を使
うスレッドが待機状態であれば、待機状態のスレッドを
優先して発行する。命令アドレスが一致しない場合は、
キャッシュから取得しておいた命令を発行する。発行し
たスレッドの状態は、隣接する命令発行ユニットにスレ
ッド状態信号615で伝達される。
【0229】命令順序アライナ614は、蓄積された4
つのスレッドのそれぞれ4つの命令を、1クロックづつ
ずらして出力する。命令の種類によって配置を変えるよ
うなことはしない。
【0230】スレッド状態制御ユニット609は、内部
に格納された現在のスレッドのPCと、新規に発行され
るスレッドのPCを比較し、一致するようならば、命令
順序アライナ614に蓄積された命令の再利用を要求す
る。こうして、スレッドは同一の優先順位である限り、
同じ命令を使用するものが優先的に実行される。
【0231】スレッド移住制御ユニット620は、演算
ユニットで発生した分岐、スレッド発行を示す分岐要求
信号613を受理する。自身の命令キャッシュに格納さ
れていない場合は、パケットルーター602からキャッ
シュの要求を行う。他に命令をすでにキャッシュした命
令発行ユニットがあれば、スレッドの移住を行うために
スレッド状態をパケットルーター602に伝送する。
【0232】命令バス信号617には、二次キャッシュ
116からリプレースされる命令が送られる。取得した
命令は、命令キャッシュのデータメモリ616に格納さ
れる。取得した命令は、スレッドが空き次第即座に発行
される。
【0233】命令メモリは、命令アドレスと独立した命
令を順に格納することができる。そのため、予測された
分岐先を含めた命令の動作順に格納される。この機構を
実現するために、命令キャッシュタグメモリ606はす
べてのアドレスビットを含み、キャッシュヒット時にす
べてのアドレスの比較を行う。
【0234】この機構を使用すると、同じ命令を使用
し、同じ分岐方向を採択するスレッドは、命令キャッシ
ュに常にヒットすることになり、命令リプレース時間だ
けでなく、分岐ペナルティー時間すら削減することがで
きる。この機構は、同一の動作をする大量のスレッドで
最大の効果を発揮する。
【0235】なお、この分岐予測が的中したかどうかを
確認するために、命令TAGメモリには予想される分岐
方向のビットを持たせる。レジスタ内容への分岐につい
ては命令キャッシュタグメモリ606から発行された次
の命令アドレスを使用する。命令キャッシュのインデッ
クスは、直前の命令キャッシュのインデックス値を常に
使用する。インデックス値の算出は、スレッド発行時、
命令キャッシュミスヒット時にのみ行われる。
【0236】同一の構造のスレッドでは、スレッド内部
で同じ命令間でデータの受け渡しが行われる場合が多
い。ただし、すべてのスレッドで同じアドレスを利用し
てデータを受け渡す場合もあれば、レジスタに対する相
対アドレスを使用する場合もある。スタック、ヒープを
用いる一般的な場合では、むしろ後者が多い。そのよう
な場合では、データキャッシュ間の転送が必要になる。
【0237】そのために、命令間でデータの授受がある
という予測ビットを設ける。データフロー予測ビット
は、その命令が書き込んだデータアドレスを、自動的に
別のラインに送ることを可能にする。
【0238】データフロー予測ビットには、バリッドビ
ットとともに、送り先の演算ユニットを示す「ライン番
号」を格納しておく。データのアドレスではないことに
注意する。
【0239】データキャッシュミスで、データの実体を
検索する際にやってきたパケットは、一次データキャッ
シュのヒットを検出することで、一次データキャッシュ
に隣接する命令キャッシュに向かってデータフロー予測
ビットを書き込んでいく。そのために、データキャッシ
ュミスパケットには、データキャッシュミスの発生した
演算ユニットの識別番号が伝達される。
【0240】なお、1つのライト命令に対して、複数の
リード命令が同じデータを参照する場合は、リード命令
同士の転送となる。そのために、データフロー予測ビッ
トはロード命令にも必要になる。
【0241】分岐命令とロードストア命令は同時に利用
されないため、データフロー予測ビットと分岐予測ビッ
トは共用され、命令デコード結果によって使い分けられ
る。
【0242】スレッド間で共有するデータが多い場合
は、PMT方式が優れる。それに対して、自身のスレッ
ド内部の転送量が大きく、スレッド間で共有するデータ
が少ない場合は、SMP方式が優れる。これらの双方の
長所を取り入れるために、SMP実行モードを設ける。
【0243】SMP実行モードは隣接する命令発行ユニ
ット102の負荷が高く、データキャッシュのトランザ
クションの負荷が高い場合に、同じスレッド発行ユニッ
トで連続して1つのスレッドを管理するモードである。
本発明の実施例では、1つのスレッド発行ユニットで4
つのスレッドを動作できる。
【0244】SMP実行モードでは、スレッド状態を隣
接する命令発行ユニット102に伝達せず、次のPCア
ドレスを自身のキャッシュ制御ユニット605で利用す
る。キャッシュ制御ユニット605は、キャッシュから
4命令を取得して、命令順序アライナ614に送る。
【0245】他の演算ユニット、キャッシュとのキャッ
シュコヒーレンシや同期は、PMTモードと同じ階層キ
ャッシュコヒーレンシ機構を用いて行われる。すなわ
ち、本発明のプロセッサは、SMPモードでは階層キャ
ッシュの共有メモリマルチプロセッサそのものとして機
能する。
【0246】(演算ユニット)
【0247】図7は、4並列実行ユニット105の内部
構造を示す模式図である。
【0248】命令デコードユニット703は、命令発行
ユニットから送られた命令727をデコードし、各演算
ユニットを制御する。同時に、4つのプログラムカウン
タをインクリメントする。分岐命令が実行された場合
は、演算ユニットで算出された分岐後のプログラムカウ
ンタを利用する。更新されたプログラムカウンタは、隣
接する命令デコードユニットに伝達される。
【0249】双方の実施例では、実行ユニット内部に
は、レジスタファイル704を4つ搭載している。1つ
のレジスタファイルは4つの演算ユニットで共有され
る。そして同時に1つの演算ユニットに対してのみレジ
スタを供給する。
【0250】レジスタファイル704は、コンテキスト
スイッチに対応するために4つのバンクを持つ。そし
て、レジスタファイル704は、隣接レジスタ転送を4
クロックで完了する。そのため、一般的なRISCプロ
セッサと同じ3つのリードポートと、隣接転送用の2つ
のレジスタリードライトの機能を持つ。現在実行中のス
レッドが3つのリードポートを利用している間、さらに
2つのレジスタを出力し、隣接する4並列実行ユニット
105に転送する。そして、隣接する4並列実行ユニッ
ト105内部の、レジスタファイル704のうちの利用
されていないバンクが、2つのレジスタの値を受け取っ
て書きこむ。
【0251】こうして、レジスタファイル704は、現
行のスーパースカラプロセッサよりも少ないポート数で
実現でき、アクセスのための遅延時間を増加させないで
済む。
【0252】オペランドクロスバスイッチ706は、4
つのレジスタファイル704の値を、それぞれの演算ユ
ニットに分配する。3つのオペランドを持つレジスタを
4組分配する。受理する演算ユニット側には4入力のセ
レクタが3つ配置される。
【0253】演算ユニットで算出された演算結果は、即
座にレジスタファイル704に伝達することはない。演
算結果フォワーディング717を利用して結果を利用す
る演算ユニットに伝達する。そして、レジスタファイル
704への書き戻しは、オペランドショートカット信号
722によって隣接する演算ユニット105のレジスタ
ファイルに伝達される。
【0254】整数演算ユニット708は、フラグ判定、
16ビットの範囲内での算術、シフト演算、分岐アドレ
ス生成などを行う。4並列実行ユニット105内部に4
つ配置され、それぞれが独自にスレッドの命令実行を行
う。
【0255】この整数演算ユニットは16ビット程度の
加算器、シフタ、そして16ビットを超えた演算が行わ
れたことを感知する回路で構成される。これは演算ライ
ンごとに実装される。
【0256】16ビットを超える桁の変更が発生する演
算は、パイプラインをストールして、共有64ビット演
算ユニット710を利用して再計算を行う。64ビット
演算ユニットは16ビットの4倍以上の回路が必要にな
るため、16ビット演算ユニットとオーバーフロー検出
回路の組み合わせを利用し、それを4つ搭載して代用し
ても全体の演算ユニット数、回路規模あたりの性能を増
やすことができる。
【0257】この方法が全体の性能をかえって向上させ
ることができるのは、本発明の方式がマルチスレッドに
よって十分な並列処理を行うことができるという前提に
よる。VLIW方式などの命令レベル並列では、並列動
作可能な命令が並列度より少ない場合が多く、このよう
なペナルティーは絶対に許されない。
【0258】分岐ユニット721は分岐予測の判定と、
分岐の発行、およびスレッドの発行制御を行う。ただ
し、分岐アドレスを算出するのは整数演算ユニット71
8による。実際の分岐は4命令に1回程度の頻度で実行
される傾向が強いので、4つのスレッドで共有される。
【0259】分岐ユニット721は、分岐予測情報との
照合を行い、一致した場合は自身のアドレス情報だけを
更新する。分岐予測非成立の場合は、スレッド発行ユニ
ットに分岐要求を伝達すると同時に、別の待ち状態のス
レッドに切り替える。コンテキストスイッチは即座に行
われ、実行ユニットの待ち時間はない。
【0260】基本的に、分岐後の処理は直後の実行ユニ
ットで実行される。分岐予測が的中する場合は、自動的
に分岐後の命令が次の実行ユニットに伝送される。
【0261】ただし、キャッシュミスの場合は、キャッ
シュの共有状態を確認することで、すでに命令が格納さ
れている実行ユニットを検索する。発見された場合は、
その実行ユニットにスレッドを移住させる。基本的にス
レッドの移住には全てのレジスタファイルの転送が必要
となる。ただし、データのほうはデータキャッシュコヒ
ーレンシ機構が自動的に働くので必要はない。
【0262】関数からのリターンの場合は、スレッドを
呼び出し元の実行ユニットに移住させる。ただし、渡す
レジスタは1つの返り値のみである。スタックの退避、
復帰は自動的に行われるので転送は必要ない。
【0263】SMPモードは、直後の演算ユニットで待
ちあわせているスレッドのプライオリティーが高く、さ
らに後続のスレッドの負荷が低い場合に発生する。空い
た演算ユニットを有効に利用するための手段である。
【0264】レジスタ同期ユニット723は、レジスタ
内容の隣接ユニットへの転送と、スレッドの移住のため
のメモリへの自動読み書きを行う。
【0265】スレッドの移住は、1つのバンクのレジス
タの内容をそっくり他のスレッドに入れ替える作業であ
る。実施例1のプロセッサにおいて、スレッド移住には
合計4クロックを要する。
【0266】スレッドの移住には、メモリを介してレジ
スタの値を伝達する。スタックポインタから利用すべき
メモリアドレスを演算ユニット708で算出し、現在の
レジスタをロードストアユニット713に送る。新規の
スレッドに対しても、スタックポインタからアドレスを
算出し、ロードストアユニット713から新規のレジス
タセットを読み込む。レジスタ退避の際には、ロードス
トアユニット713のアドレスバスもデータ転送に利用
する。同時に4つのスレッド移住を行うため、8つのレ
ジスタを同時に転送する能力を有する。
【0267】浮動小数点加算ユニット719、浮動小数
点乗算ユニット712は、整数演算ユニットと異なり、
精度が常に一定であり、動作が細かく決定されているの
で、倍精度の演算ユニットの機能のすべてを実装する必
要がある。ただし、浮動小数点命令の出現頻度を考慮し
て、1つの実行ユニット108ごとに、浮動小数点加算
ユニット719と、乗算と加算を同時に行う浮動小数点
乗算ユニット712が1つづつ配置される。
【0268】なお、これらのレイテンシの長い演算は、
複数のスレッドが同時に利用する。演算中は、これらの
共有演算ユニットの内部にスレッドの情報が格納され、
結果の値とともに整数演算ユニットに伝達される。
【0269】除算ユニット718は、除算、平方根など
の、時間のかかり、かつ出現頻度の低い浮動小数点演算
を行う。除算、平方根の演算は乗算と異なり、現実的な
規模でパイプライン化して高速化する手段はない。その
ため、1つの演算あたり数クロックのスループット時間
が必要になる。そして、1つの除算ユニット718は、
除算命令の出現頻度を考慮して、4つのスレッドで共有
される。
【0270】ロードストアユニット713は、4つのロ
ードストア命令の実行を同時に行い、8ワード分の転送
能力を持つ。4つの演算ユニット705からの要求を受
理してロードストアを行うとともに、待ち状態のスレッ
ドのロードを実行する機能を持つ。
【0271】バイト単位の転送をワードに符号に応じて
拡張する操作、あるいはその逆もこのユニットで行われ
る。
【0272】ロードストアユニット713には、4つの
データキャッシュが接続され、アクセスを行うアドレス
によって使い分ける。データのアクセスは、同時に複数
のユニットのアクセスを可能にする。そのために、4つ
のアドレス、データバスを互いにクロスバ接続する。
【0273】同じ一次キャッシュへのアクセスがかちあ
った場合は、優先度の低いスレッドを停止して、ロード
の実行を待つ。キャッシュミスの場合も同様である。
【0274】ロードの衝突、キャッシュミスによるスレ
ッドの停止の場合には、停止したスレッドの代わりに、
前に停止してロードの終了したスレッドを再開する。
【0275】なお、前にロード、あるいはストアしたデ
ータと、同じアドレスを利用するロード命令が直後に存
在する場合は、データキャッシュへのアクセスを行わず
に、同じデータを渡す。通常のプロセッサのライトバッ
ファと異なり、渡す対象は同一スレッドでなくても良
い。この機構に9よって、同一の命令を利用するスレッ
ドの連続動作させる際のデータキャッシュアクセスが最
小限となる。
【0276】演算結果フォワーディングユニット717
は、実行ユニット105内部の演算ユニット間のデータ
の受け渡しを行う。同時に、長時間演算ユニットを利用
する必要のある命令では、隣接する実行ユニット105
に途中経過のレジスタ値を渡す。この機構によって、除
算などの時間のかかる命令をパイプライン動作させるこ
とができる。同一の除算などの命令を利用するスレッド
が連続する場合のスループット性能を高めるためであ
る。
【0277】(データキャッシュユニット)
【0278】本発明のプロセッサは、データキャッシュ
のスループット確保、遠距離の一次キャッシュ間の転送
のために、階層キャッシュ構造を取る。さらに、スレッ
ド間の仮想記憶機構の共有のために、データキャッシュ
は基本的に仮想アドレスとしている。
【0279】データキャッシュは大きなスループットを
要求されるため、擬似的に複数の要求を受理する構造と
する。そして、キャッシュ内部のデータの共有管理のた
めに、ディレクトリ方式キャッシュコヒーレンシを採用
する。ディレクトリ方式はデータアクセスのレイテンシ
に劣るが、複数のキャッシュの要求に対応しやすい方式
である。ディレクトリ方式の詳細については、文献1の
P679からの記載を参照のこと。
【0280】文献1:Computer Archit
echture a Quantitative Ap
proach Second Edition 著者:John L Hennessy、 David
A Patterson 出版社:Morgan Kaufmann Publi
shers,Inc.
【0281】図8に、本発明の第一の実施例における一
次データキャッシュ111、二次キャッシュ116の接
続関係模式図を示す。
【0282】4並列実行ユニット105には、一次デー
タキャッシュ111が4つ接続される。4つの一次デー
タキャッシュ111は、すべてが1つの二次キャッシュ
116に接続される。なお、二次キャッシュはデータ、
命令の双方を格納する。
【0283】803は一次データキャッシュのタグであ
る。806は、二次キャッシュのタグである。
【0284】データキャッシュは仮想アドレス空間を利
用し、複数のプロセスが混在するため、異なったプロセ
ス空間のエントリが混在する。そのため、タグメモリ内
部にはプロセス空間のIDが配置され、一致比較の時に
アドレスとともに比較される。さらに、タグメモリ内部
には共有先を特定する共有ビットを有する。
【0285】一次データキャッシュ111、二次キャッ
シュ116は、アドレスの下位で分割したバンクを持
ち、隣接する転送は同時に、そして、連続するアドレス
は複数のキャッシュバンクが同時にアクセスさせること
を可能にする。二次キャッシュタグメモリ806、二次
キャッシュデータメモリバンク807も、アドレスに対
して分割され、複数のアクセスを同時に受理する。
【0286】データキャッシュ制御ユニット802は、
キャッシュミスの場合に適切なキャッシュからデータを
要求する。さらに、データ転送の要求に応じて、適切な
キャッシュにデータを転送する。さらに、内部のキャッ
シュの共有状態を管理する。
【0287】実行ユニット105が一次データキャッシ
ュ111への読み込みを行うケースについて説明する。
一次キャッシュデータメモリ804からデータを読み込
むと同時に、一次キャッシュタグメモリ803に対して
アクセスを行う。一般的なキャッシュと同じく、タグメ
モリの読み出し内容が要求されたアドレスと一致しない
場合、あるいはそのエントリが無効となっている場合、
データキャッシュミスとする。その場合、スレッドに対
してストールを要求し、二次キャッシュ116からデー
タを要求する。
【0288】実行ユニット105が一次データキャッシ
ュ111への書きこみを行うケースについては、まず一
次キャッシュタグメモリ803だけに対してアクセスを
行う。アドレスが一致してかつ、該当するデータが共有
状態に指定されている場合は、二次キャッシュ116に
対してインバリッド要求を発行する。
【0289】一次データキャッシュタグ803には、2
ビットの共有情報を含む。隣接する一次キャッシュへの
共有状態と、それ以外のキャッシュとの共有状態であ
る。
【0290】アクセスバッファ115は、一次データキ
ャッシュ111から二次キャッシュ116へのアクセス
が不可能である場合に、アクセス情報およびスレッドの
情報を蓄積する。あるいは、二次キャッシュ116から
一次キャッシュ111へのインバリッド伝達の蓄積にも
用いられる。
【0291】アクセスバッファ115は、一次キャッシ
ュ111からの隣接転送要求を受理し、二次キャッシュ
116を通さずに隣接するアクセスバッファ131にデ
ータを送信することも行う。
【0292】同時に、アクセスバッファ117からデー
タを受理して、二次キャッシュ116内部の共有状態を
調べる。共有状態であれば、データを格納するか、該当
する一次キャッシュ111に伝送する。
【0293】二次キャッシュ116は、一次キャッシュ
111からのキャッシュアクセスを受理するとともに、
隣接する二次キャッシュ、さらにメモリインターフェー
ス、あるいは実施例には存在しないが三次キャッシュか
らの要求を受け、適切な相手にアクセス要求等を送出す
る。
【0294】なお、本発明のプロセッサでは、データの
転送やインバリッドの伝達は、スレッドの伝送速度に間
に合えば十分である。SMP方式と異なり、階層バス間
の転送レイテンシは演算ユニットの稼動率とはほとんど
関係がない。そして、インバリッド伝達の方向も常に一
定であり、転送スループットの確保も可能になる。
【0295】図14に、本発明のキャッシュにおけるタ
グメモリの構造を示す。一次キャッシュ111、二次キ
ャッシュ116はともに仮想空間であるため、タグアド
レスの一致比較だけでは不十分であり、プロセスIDの
一致の判定が必要である。
【0296】ディレクトリ方式キャッシュの実装のため
に、共有状態を示すビットを設ける。一次キャッシュ
は、隣接する一次キャッシュと、二次キャッシュの2つ
の転送先が考えられるため、2ビットの共有情報を利用
する。
【0297】二次キャッシュタグ806には、6ビット
の共有情報を含む。隣接する二次キャッシュへの共有状
態と、4つの一次キャッシュへの共有状態4ビットと、
三次キャッシュ、TLBユニットなどへの共有状態1ビ
ットで構成される。
【0298】(仮想記憶機構)
【0299】仮想記憶機構は、内部表記のアドレス表記
を実際のメモリアドレスに対応させ、内部表記のアドレ
ス以上の実メモリ空間を扱うことを可能にする。また、
複数のプロセス空間の間の保護、およびメモリに存在し
ないメモリ空間の判定を行う。この仮想記憶の変換を効
率的に行うためのバッファが、TLBユニット120で
ある。
【0300】本発明の方式では、この仮想記憶機構にも
以下の特徴がある。
【0301】(1)TLBは演算ユニットのある一定の
集団ごとにそれぞれ専属のものを置く。
【0302】(2)キャッシュは仮想アドレスとし、実
際のメモリのアクセスの直前まで仮想空間の変換を行わ
ない。
【0303】(3)TLBの改変は、キャッシュにコピ
ーがあるにもかかわらず、TLBエントリのない状態を
作り出す可能性がある。
【0304】(4)スレッド間の高速同期のための、デ
ータフロー同期の機構を提供する。
【0305】複数のTLBを所持する場合は、TLB間
で互いにコピーを持たせることになる。だが、オリジナ
ルのエントリは常にメモリバンクに専属の1つとする。
そのため、TLBの改変の際は、常にメモリバンクに専
属のTLBに対して行う。オーナーであるTLBは、共
有しているすべてのTLBに向かってページの無効化
(インバリッド)を伝達する。
【0306】図9に、本発明の実施例におけるTLBユ
ニット120の内部構造の模式図を示す。
【0307】仮想アドレス902は、TLBタグメモリ
903、TLBデータメモリ909に入力される。構造
的にはセットアソシアティブのキャッシュと同じであ
る。TLBタグメモリ903は仮想アドレス902の内
容と比較器904で比較され、一致した場合のみTLB
データメモリ904の内容を使用する。本実施例では、
4ウェイセットアソシアティブ方式で実装することでタ
グメモリ、データメモリを4つ使用して、TLBのヒッ
ト率を向上させている。まったくページが一致するもの
がない場合は、ページフォルト例外発生ユニット905
がOSプロセスを起動する。
【0308】仮想アドレスに相当するページがTLBユ
ニット901内部に存在する場合は、TLBデータメモ
リ904の内容のうちの1つが、物理アドレスとして選
択される。変換されたアドレスは、物理アドレス信号9
06から出力される。
【0309】本発明におけるTLBにはもう一つの役割
がある。それは、データフロー同期と呼ばれる、指定し
たアドレスへのデータアクセスを自動的に検出する機能
である。TLBエントリメモリ909には、アドレスの
完全な一致を比較するための仮想アドレスが格納されて
おり、ページの一致によってデータフロー比較器908
に伝達される。仮想アドレスが完全に一致した場合は、
データフロー同期発生ユニット907によって、登録さ
れたスレッドが生起される。一致比較のマスクビットに
よるアドレス領域の指定も可能である。
【0310】図15に、本発明のプロセッサにおけるT
LBユニットのエントリを示す。通常のTLBと同じ
く、変換後の物理アドレス、ページごとの保護情報など
を持ち、複数のプロセス空間を混在させるためのプロセ
スIDを持つ。
【0311】通常のTLBと異なるのは、二次キャッシ
ュや他のプロセッサへの共有情報を6ビット格納してい
ることと、データフロー同期のための一致比較アドレ
ス、一致比較範囲のビットを持ち、さらに、データフロ
ーの検出で生起すべきスレッドIDを格納していること
の2点である。
【0312】本発明においてTLBユニットは、キャッ
シュのディレクトリ共有情報を示す最上位のエントリで
もある。二次キャッシュの全て、ローカルメモリ、そし
てプロセッサ外部への共有を示すビットをそれぞれ持
つ。
【0313】そのため、二次キャッシュ同士やメモリへ
のデータ転送や、二次キャッシュからプロセッサ外部へ
のインバリッド要求などは、まずはTLBに要求され
る。TLBでは、TLBエントリの持つ6ビットの共有
情報に従って、4つの二次キャッシュ、プロセッサの持
つローカルメモリ、及びプロセッサ外部に直接伝達され
る。
【0314】制御信号パケットルーター910は、TL
Bへの書きこみを受理するとともに、データフロー一致
やページミスによる例外スレッドを発行し、スレッドパ
ケット911に向けて伝達する。
【0315】(外部インターフェースユニット)
【0316】本発明のプロセッサは、複数のプロセッサ
を接続して利用するために以下の特徴を持つ。
【0317】(1)スレッドを自動的に複数のプロセッ
サに分配する。
【0318】(2)各プロセッサにそれぞれローカルメ
モリを接続する。
【0319】(3)各プロセッサ間のアクセスは仮想ア
ドレス空間とする
【0320】本発明のプロセッサでは複数のメモリを接
続し、それらを全て1つのスレッドの仮想アドレス空間
からアクセスすることを可能にする。
【0321】図10に、データキャッシュと外部を接続
するTLB120、ローカルメモリインターフェース1
22、プロセッサ間インターフェースユニット124の
接続関係の模式図を示す。
【0322】本発明のプロセッサにおいて、基本的には
物理アドレスは、TLBユニット120とローカルメモ
リインターフェース122の間だけで利用される。物理
アドレス専用信号1009が相互に接続される。
【0323】本発明のプロセッサにおいては、割り込み
は最優先プライオリティーを持つスレッドの発行として
処理される。リアルタイム性能は、スレッド制御ユニッ
トによるプライオリティー制御によって確保できる。本
発明のプロセッサは、プライオリティーの高いスレッド
にいつでも動作を移すことができるためである。
【0324】本発明のプロセッサはマルチスレッドを前
提としているため、複数のプロセッサ間でスレッドを発
行するのにソフトウェア上の追加はほとんど必要ない。
少なくともユーザーレベルのソフトウェアでは無改造で
複数のプロセッサにスレッドを分配できる。
【0325】マルチプロセッサインターフェース124
は、メモリアクセスバス125とともに、制御パケット
バス1007を有する。プロセッサ内部の制御パケット
信号1012は、そのままプロセッサ外部に出力するこ
とができる。
【0326】マルチプロセッサインターフェース124
は、TLBによって該当する仮想アドレスがプロセッサ
間共有状態を示す場合に、内部からの仮想アドレスを共
有バス信号125に対して出力し、スレッド状態101
2を制御パケットバス1007に出力する。
【0327】本発明のプロセッサは、外部の共有バス信
号125からの仮想アドレスの受信によっても、TLB
120へのアクセスを行う。プロセッサ内部にデータの
コピーがある場合は、TLB120のエントリが存在
し、二次キャッシュへのアクセスによってデータの実体
のあるキャッシュの場所も階層的に特定することができ
る。TLBのエントリが存在しない場合には、OSによ
る仮想記憶処理によって本来の物理アドレス、メモリバ
ンクの所在を特定することになる。
【0328】(制御信号パケット)制御信号をパケット
化して伝達する方式は、制御信号をエンコードするこ
と、複数の経路の配線を共有することで、制御信号の配
線の規模、長さを最小限にできる。さらに、複数の信号
のタイミング制御を、同一の回路で行うことで単純にす
ることができる。その欠点は、伝達のためのレイテンシ
が劣ること、パケットを中継するパケットルータの回路
規模が大きいことである。
【0329】ところが、本発明の方式では、即座に制御
信号を伝達する必要があるのは隣接するユニットにかぎ
られる。それ以外の制御信号は、スレッドのパイプライ
ン進行にあわせて伝達すれば十分である。すなわち、パ
ケット制御方式の欠点であるレイテンシは問題ではなく
なる。そして、パケットルーターの回路的な規模の増大
も局所的なものであるため、配線短縮の効果の方が大き
い。
【0330】図11に、個々のパケットルータの内部構
造の模式図を示す。パケットルーターは以下の3つの機
能を持つ。
【0331】(1)パケットに応じてユニットの制御を
行う
【0332】(2)パケットの目的地、情報量に応じ
て、複数のパケットルーターのうちの1つを選択してパ
ケットを送り出す。
【0333】(3)パケットのタイミングをチェックし
て、スレッドの進行に対して遅れていればスレッドをス
トールする。
【0334】1101はパケットルーターである。受信
した1102パケット信号を、コマンドデコーダー11
03が解釈する。パケットをこのパケットルーター11
01で即座に利用する場合は、制御信号デコーダー11
04にパケット信号を入力する。制御信号デコーダ11
04は、デコード結果と、パケットルーターのあるユニ
ットの状態信号1105に応じて、個別のステートマシ
ン1106を動作させ、ユニットの制御をローカル制御
信号1107で行う。制御信号デコーダ1104、ロー
カルステートマシン1106の構造はユニットごとに異
なる。
【0335】パケットを中継する場合は、まず、タイミ
ングチェッカ1112でパケットが時間どおりに到達し
ているかどうかを判定する。時間に遅れている場合はス
レッドストール要求信号1111でパケットを要求した
スレッドを停止する。パケットバッファ1108に蓄積
する。パケットが時間以内に到達している場合は、パケ
ット出力ユニット1110で複数のパケットバスのうち
の1つを選択してパケットを出力する。
【0336】パケットの送信先は最終的な送信先に応じ
て静的に決定できる。トラフィックに応じた動的な経路
制御などを行うわけではないため、一般的なネットワー
クで行うような最適な経路制御の必要はない。
【0337】図12に、本発明の第一実施例におけるパ
ケットルーターの配置を示す。
【0338】パケットルーターは大まかなユニット、バ
スバッファごとに設置され、ユニットの制御を行う。パ
ケット制御信号線は隣接したパケットルーターの間のみ
に配線される。
【0339】パケット制御信号は、スレッドのパイプラ
インの進行に従って伝送される。たとえば、演算ユニッ
トからTLBユニットへの書き込みを要求した場合は、
キャッシュユニットのルーターを通過して伝達される。
転送の中継に時間がかかるため、転送は数クロックを要
する。ただし、転送の間に別のスレッドの動作が可能で
ある。
【0340】この機構によって、最小限の配線で並列数
に見合うだけの数の制御信号を送ることができる。
【0341】図27に、制御パケット信号の例を示す。
すべての制御パケットは、32ビット程度のCP(Co
ntrolPacket)信号を持つ。
【0342】ControlPacketには、パケッ
トの機能を示すPacketCommand、パケット
のパラメータを示すValueFieldを持つ。Re
questorUnitは要求元、TargetUni
tは伝達先のユニットを示す。
【0343】RemainingTimeはパケットが
時間内に伝達されたかどうかの確認を行うための値であ
る。この値をデクリメントすることで、パケットの進行
が間に合っているかどうかの判定を行う。UserLe
velは、制御パケットの特権レベルを示す。
【0344】スレッドの情報が必要なパケットは、やは
り32ビット程度のTI信号が付加される。TIにはプ
ロセス、スレッドIDと、スレッドの優先順位、ユーザ
ーレベルが格納されている。
【0345】この2つに加えて、アドレス、データ、P
C(プログラムカウンタ)、SP(スタックポインタ)
などの値が付加される。TIとPC,SPによって、ス
レッドのすべての情報が管理される。CPとアドレス、
データが通常の内部バストランザクションに利用され
る。なお、制御パケット信号の仕様は、スレッド状態転
送、データ転送などの目的によって変えることもでき、
共用することもできる。
【発明の効果】
【0346】(回路規模)
【0347】基本的に、プロセッサに求められる性能は
周波数性能と並列性能の積である。しかし、利用目的に
よっては、コストあたりの性能、および消費電力あたり
の性能も求められる。本発明の方式は、回路の組みあわ
せによってそれらのいずれにも最適な構成にできること
を示す。
【0348】今後のプロセッサの速度は、配線遅延にほ
ぼ比例して決定される。半導体のプロセスの進化に従
い、回路の局所的な遅延時間は縮小傾向がある。しか
し、それには配線もトランジスタと同じオーダーで縮小
するという前提条件が必要である。そのため、回路の大
規模化によって配線が縮小されない場合は、微細化にも
かかわらず周波数性能の向上は不可能になる。そのた
め、チップ全体の配線を行わないようにして、配線のオ
ーダーを増加させないことが、周波数性能の向上を維持
するために不可欠である。
【0349】配線の規模は、データ転送幅と転送相手の
数で決まる。データ転送幅のN倍の増加に対して、配線
の規模はN倍に比例して増大する。遅延の増大はわずか
である。それに対して、転送相手のN倍の増加に対して
は、配線の規模はNの二乗に比例して増加する。そし
て、遅延もN倍で増加する。そのため、転送相手を増や
すことより、転送幅を増やすことの方が遥かに容易であ
る。
【0350】本発明のプロセッサは、バスの階層化によ
って転送相手の組みあわせを常に4つ程度に制限してい
る。この規模は現行のインオーダースーパースカラ方式
プロセッサと同程度である。これ以上の一対一接続の配
線は行わないため、いくら並列度が増加しても、周波数
性能を阻害する配線長の増加が発生することはない。
【0351】シフトレジスタ型転送は、自由な転送能
力、比較的高いピークバンド幅、バスのアービトレーシ
ョンの容易さという長所があるが、欠点としてはレイテ
ンシ性能が最低となる。このレイテンシ性能の低下を隠
蔽するためにマルチスレッドを利用する。
【0352】表1に、VLIW方式、SMP方式、本発
明のPMT方式ごとの回路規模、遅延時間の比較の表を
示す。
【0353】VLIW方式は、並列規模の増大に対して
周波数性能を著しく低下させる。マルチプロセッサ方式
は、周波数性能は維持できるが、回路規模の増大が大き
い。それに対して本発明のPMT方式は、メモリ、演算
ユニットの共有によって、最小限の回路規模で並列性能
を増加させることができる。
【0354】(ユニット稼働率から見た性能向上)
【0355】本発明の方式は、単体のスレッドのレイテ
ンシ性能ではほかのパイプラインプロセッサに劣るが、
複数のスレッドの動作全体で性能を稼ぐことができる。
そのため、全体の性能はすべてのスレッドの和である大
域的な処理性能で判断されなければならない。さらに本
発明の方式は、演算ユニットなどの稼動率を最大にする
ことで、回路規模に対する全体の性能を最大にできる。
それに対して、ほかの方式の多くは回路規模を増加する
ほど演算ユニットなどの稼動率が下がる傾向がある。以
下、演算ユニットなどの稼動率が他の方式に対して高い
ことを示す。
【0356】表2は、本発明の方式と、SMP方式との
各状況に対する演算ユニットの停止期間の比較の表であ
る。
【0357】本発明の方式は、自由な命令配置能力と、
局所SMPモード機能によって、あらゆる演算ユニット
をほぼ常に動作させることができる。従来のPMT方式
が命令の配置に命令アドレスの制限があったのと対照的
である。
【0358】本発明のプロセッサは、例外の発生頻度が
スレッド発行ユニットの供給能力を超えない限り、ほと
んど全てのペナルティーを隠蔽することができる。すな
わち、スレッドが十分供給されている限り、本発明の方
式はVLIW、マルチプロセッサ方式よりも演算ユニッ
トの稼動率で勝る。しかも、それはスレッドが独立に並
列動作できる限り、演算ユニットの数に比例して性能を
向上できる。
【0359】マルチプロセッサ方式は、コンテキストス
イッチにOSの介在が必要である。さらに、スレッドを
別のプロセッサに移して再開させる「スレッドの移住」
に、すべての状態をキャッシュコヒーレンシで転送する
必要がある。この動作には、約100クロック以上の間
プロセッサのバスを占有するため、数千クロック以上の
レイテンシを隠蔽するのでなければ意味がない。さら
に、スレッドを再開するには、動作しているスレッドが
OSを呼び出して、各スレッドに対して再開条件が整っ
ているかどうかを確認しなければならない。
【0360】次に、マルチプロセッサ方式にコンテキス
トスイッチ機能をハードウェアで実装して自動的に行う
ことを考える。それでも、すべてのプロセッサに大量の
スレッド、そしてそれら全てのスレッドの状態と、完全
なスケジューリングハードウェアを同時に搭載する必要
がある。さらに、スレッドの移住には大量のプロセッサ
間転送が必要になり、オーバーヘッドは削減できない。
【0361】以上の結論として、マルチプロセッサ方式
とレイテンシ隠蔽機構は両立しにくい。
【0362】本発明の方式は、コンテキストスイッチは
ハードウェアで実装される。本発明の方式は、すべての
スレッドの空きスロットが1つのスケジューリングハー
ドウェアを通るので、どの空き状態のノードにも即座に
スレッドを供給できる。
【0363】さらに、本発明の方式では、停止していた
スレッドは、基本的には停止した時と同じノードで再開
することができる。この場合は状態の転送が一切必要な
く、そのノードが空いた時点で即座にスレッドを再開で
きる。このため、スレッドの移住をほとんど行わずに、
最適なスレッドの負荷分散が可能になる。
【0364】さらに、同期変数の待ち合わせに関して
も、同期変数のアクセスによってバスを止めることはな
い。更に、データフロー同期を利用すれば、スケジュー
リングの必要も同期変数の確認も必要ない。この機能に
よって本発明のプロセッサはマルチスレッドのオーバー
ヘッドをなくし、マルチスレッドをあらゆるレイテンシ
の隠蔽に使用することを可能にしている。
【0365】本発明の方式における唯一のSMP方式に
対する短所は、パイプライン間のスレッドの移住であ
る。しかし、スレッドの移住の頻度はパイプラインを長
くすることによって減少させることができる。
【0366】最小限のキャッシュ容量でスレッドの稼動
率を上げるためには、同じ命令やデータを利用するスレ
ッドを集中して実行すれば良い。それは同じ工程の仕事
を集中して行うほうが効率が良いことを意味する。本発
明の方式は、命令、データキャッシュミスの管理によっ
て、ある程度は自然にこの共有の形になる。
【0367】本発明の方式は、隣接する演算ユニットに
全てのレジスタ状態を転送するかわり、共有するデータ
の転送量が減るPMT方式を基本とする。それに加え
て、レジスタ状態を転送しない代わりに、共有するデー
タの転送量が最大となるSMP方式も可能にする。
【0368】PMT方式では、命令の間のデータ転送ス
ループットは、近傍の命令間ほど多く必要とされ、命令
間が遠距離になるほど減少する傾向にある。それに対し
て、スレッド間のデータ転送のためのスループットは、
スレッド間のデータの共有が多く、並列度が増大するほ
ど拡大する。理由は、1つのデータを大量のプロセッサ
がほぼ独立して参照するためである。そのために、SM
P方式ではメモリバス稼働率に著しい偏りが生じる。
【0369】PMT方式は、スレッド間のデータ転送の
スループットを最小限にする方式である。よって、どん
なに並列度を上げて、かつ同じデータを共有しても、局
所的なデータバスのデータスループットの増加を抑制す
ることができる。すなわち、データの共有とスケーラブ
ルな並列性能向上を同時に実現することができる。
【0370】それに対して、SMP方式は、スレッド間
の転送には弱いが、単体の演算ユニットだけで実行がで
きるという長所がある。そのため、独立したスレッドの
実行では、SMP方式を利用するほうがメモリバスの稼
働率が最小となる。
【0371】本発明の方式は、データキャッシュ間の転
送量によって自動的にPMT方式、SMP方式を使い分
け、常にメモリバス稼働率を最小にすることができる。
【0372】一般的に、キャッシュの容量が増大すれ
ば、それだけキャッシュミスの確率が減少して全体の性
能を上げることができる。しかし、キャッシュの容量の
増大はキャッシュアクセスの速度低下を招く。そのため
には、キャッシュを分割するのが望ましいが、複数のキ
ャッシュへの接続はやはり配線遅延による速度低下を招
く。理想的なキャッシュ容量増大の方法は、キャッシュ
と演算ユニットを直結させて、それを組にして大量に配
置することである。しかし、従来のマルチプロセッサ方
式では、キャッシュを複数持たせても、複数のキャッシ
ュのほとんどに同じ内容を格納する必要があり、キャッ
シュの容量増大の効果を見込むことはできない。
【0373】それに対して、本発明の方式では、PMT
方式を利用する限りは、複数のキャッシュへの同じデー
タの複製を抑制することができ、キャッシュの容量を増
大させてヒット率を向上させることができる。さらに、
スレッドの中で何度も利用するデータ、あるいはスレッ
ドの中で発生したデータについても、データを利用する
キャッシュに対してのみ直接データを送るため、データ
の複製が最小限で済む。
【0374】(命令、データ、演算ユニットの共有)
【0375】現在のプロセッサでは、命令メモリの内容
はプログラムのロード時に決定され、まず改変されるこ
とはない。それを許すと、命令の読み込み、動作順序が
保証されない現在のプロセッサでは動作が保証されない
ためである。
【0376】そのため、命令メモリはアドレスに対して
必ず同じ値が読み出され、他のスレッドからの改変のお
それもまずない。ということは、同じ命令メモリを利用
するスレッドはすべて1つの命令を利用できれば効率的
である。PMT方式の作用によって、1つの命令は連続
してパイプライン状に動作する大量のスレッドから参照
できる。そのため、本発明の方式はオンチップマルチプ
ロセッサなどに比較して命令のメモリサイズ、リプレー
スに要求されるメモリスループットが遥かに小さい。
【0377】本発明の方式では、パイプラインの動作を
止める分岐命令、データキャッシュミスは、マルチスレ
ッドによってある程度は隠蔽できる。しかし、スレッド
発行ユニットの供給能力を超えるほど頻発する場合は、
本発明の方式でもやはりパイプラインを停止することに
なり、性能を低下させる。そのため、命令に置かれた予
測情報を用いて、そのペナルティーを極力減少するのが
望ましい。
【0378】本発明の方式は、1つの命令を全てのスレ
ッドが共有できる。そして、分岐予測情報、データフロ
ー予測情報は、命令列の内容、すなわち命令アドレスに
依存し、個別のスレッドの状態にほとんど依存しない。
ということは、これらの予測情報は1つあれば全てのス
レッドから共有できる。
【0379】マルチプロセッサ間データ転送は、プロセ
ッサの数が増加するにしたがって局所的にも増大し、個
々のプロセッサのバス転送性能を使用し、マルチプロセ
ッサにおいてスケーラブルな性能向上を阻害する。
【0380】プログラムで利用するデータには、細かい
数値の相違はあるものの、80%の部分のプログラムで
20%の部分のデータを利用するという経験則がある。
たとえば、キャッシュはこの経験則を利用するものであ
る。ということは、1つのプログラムを分割したスレッ
ドも、その多くは同じデータを利用することになるのは
当然である。この性質を利用するために、まったく違う
スレッドが同じデータを利用する方法を提供する。
【0381】データは同じ命令が同じようなデータを利
用するケース、あるいはまったく違うデータを利用する
2つのケースが考えられる。当然データの共有の効率は
命令ほどではないが、大まかなデータブロックに対して
は共有できるケースが多い。そのために、データキャッ
シュを分散配置し、複数のスレッドから共有させる。
【0382】これによって、データキャッシュの共有と
大容量化を同時に実現し、結果的に単体スレッドから見
た一次キャッシュの容量を増加させることができる。無
論、一次キャッシュ間の転送量は増加するが、それはス
ループットのみの増大であり、比較的実装しやすい。
【0383】本発明の方式では隣接する4つ程度の演算
ユニットが1つのスレッド発行ユニットを共有する。こ
れは、分岐、例外によるスレッドの切り替えの頻度が数
命令に一回という前提によるものである。
【0384】待ち状態のスレッドは、この4つの同時実
行されているスレッドのうちの、どのスレッドが停止し
ても即座に発行できる。
【0385】さらに、演算ユニットの列の長さの増加、
分岐予測などによってスレッドの移住の頻度が減れば、
スレッド発行ユニットの稼働率も相対的に減少する。
【0386】そして、本発明の方式では細かいスレッド
の切り替えのためのスレッドの移住も必要ない。レジス
タ、データキャッシュの内容は、常にスレッドが停止し
た場所に待機されており、スレッドの空きスロットを待
つだけで即座に実行を開始できる。
【0387】SMP方式では、キャッシュレイテンシ隠
蔽のためには、すべてのプロセッサがそれぞれ実行可能
な待ちスレッドを待機させておく必要がある。あるい
は、隣接するいくつかのプロセッサに対してスレッド発
行を行わせることになる。このことは、大量のプロセッ
サに対して任意のスレッドを高速に発行することが難し
いことを意味する。
【0388】本発明の方式では、各スレッド発行ユニッ
トを、すべてのスレッドがパイプラインとして通過する
ことによって共有させる。このため、すべてのプロセッ
サが待ち状態のスレッドを有することなく高速コンテキ
ストスイッチを可能にする。データキャッシュや特殊演
算ユニットの結果などを取得し、再開する準備が整った
スレッドは、常に空いたあらゆるスレッドスロットに対
して発行される。
【0389】(IPユニットの共有)
【0390】IPユニット間のデータの転送能力を最大
にするには、IPユニット間を信号で直結するのが最も
簡単である。だが、それでは全体で1つの機能しか実現
できない。
【0391】次に考えられる手段は、それぞれIPユニ
ットの間にマイクロプロセッサをそれぞれ置くことであ
る。しかしこれでは、プログラムがIPの結合ごとに分
散されることになり、処理が一様にならないという欠点
がある。
【0392】さらに次に考えられるのは、IPユニット
とマルチプロセッサをクロスバスイッチで結合する方法
である。これならば、共有バスよりは優れた転送能力が
確保できる。しかしクロスバスイッチは回路規模が(M
個のプロセッサ、N個のIPユニットユニットに対し
て)MとNの積のオーダーでで増加する方式であり、大
規模並列には向かない。さらに、そのために切り替えの
レイテンシ時間が遅く、自由でかつ動的な転送には向か
ない。
【0393】本発明の方式は、各ノードに対してIPユ
ニットを接続して、IPユニット間の通信能力をノード
間のデータ通信能力で確保する。IPユニット間のデー
タの整形は、PMTの各演算ユニットがそれぞれ独立し
て行い、IPユニットへの入力の負荷が低い場合はすぐ
に別の用途に転用できる。
【0394】IPユニットの転送能力が単体の演算ユニ
ットの転送能力を超えるほど高い場合には、近傍の複数
の演算ユニットを利用して転送し、その先の演算ユニッ
トでデータを整形することができる。このような場合で
は特に、マルチプロセッサ+クロスバスイッチ方式より
圧倒的にIPユニットからの転送性能を稼ぐことができ
る。
【0395】本発明の方式では、IPユニットはソフト
ウェアでは特殊命令、あるいはシステムアクセス命令と
して使用することができ、その配置に制限はない。実際
のIPユニットの分散配置に対しては、スレッドの移住
機構が自動的に対応することもできる。IPユニット間
のデータ転送は、PMT方式が持つレジスタ隣接転送、
キャッシュコヒーレンシ機構で行う。こうして、同じソ
フトウェアで自由なIPユニットの組み合わせに効率良
く対応することができる。
【0396】(消費電力予測)
【0397】CMOS回路は、信号の変化のときに電力
を消費する。信号が変化しなければ電力をほとんど消費
しない。
【0398】ところで、本発明の方式は、同一のスレッ
ドを連続して動作させるときは、その供給される命令、
演算ユニットの状態は完全に同一である。さらに、利用
するレジスタファイル、データバス、データキャッシュ
とのバス通信の内容もスレッド間の違いは少ない。とい
うことは、同じスレッドをまとめて実行する時には、各
スレッド間のわずかな動作の違いだけが消費電力にな
る。それに対して、通常のプロセッサでは、各命令ごと
にすべての回路の状態が変わるため、すべての回路の半
分近くの信号が変化し、消費電力となる。
【0399】結論としては、本発明の方式のプロセッサ
は、同一の命令、データを利用したスレッドの連続動作
が可能な場合は、現行のパイプライン方式プロセッサよ
りも低い消費電力で同じ性能を発揮できる。アーキテク
チャのレベルでこれ以上の低消費電力の手段は考えられ
ない。
【0400】表1の記載のように、本発明のプロセッサ
は、マルチプロセッサ、VLIW方式に対して、性能に
対する回路規模が最小である。理由は、PMT方式は命
令、データ、演算ユニットの共有を行うためである。性
能に対する回路規模が最小であるということは、そのま
ま性能に対する消費電力が最小であるということを意味
する。
【0401】さらに、本発明の方式は、性能に対する配
線長も最小である。今後の半導体の消費電力は、配線容
量の充放電が大半を占めることになると予想されるた
め、配線が最小であるということはそのまま消費電力の
削減に繋がる。
【0402】さらに、前述した同一命令を利用するスレ
ッドの連続動作による電力削減とあいまって、本発明の
方式は、プログラム可能な回路において、最小の電力で
実際の演算を行う方法であるといえる。ただし、本発明
の方式は局所的にはSMP方式に近い動作モードも持つ
ため、その部分はSMP方式と同じ消費電力になる。し
かし、本発明の方式は可能な限りPMT方式で演算を行
おうとするため、演算性能に対する消費電力は常に最小
になる。
【図面の簡単な説明】
【図1】本発明の構造を用いたプロセッサの構造模式図
(第一実施例)
【図2】従来のVLIW方式のプロセッサの構造模式図
【図3】従来のマルチプロセッサ方式のプロセッサシス
テムの構造模式図
【図4】従来のPMT方式のプロセッサの構造模式図
【図5】本発明の構造を用いたプロセッサの構造模式図
(第二実施例)
【図6】命令発行ユニットの内部構造模式図
【図7】最大4つのスレッドを同時に実行する、実行ユ
ニットの内部構造模式図
【図8】一次、二次キャッシュの接続関係を示す構造模
式図
【図9】TLBユニットの内部構造模式図
【図10】TLBと外部インターフェースの接続関係を
示す構造模式図
【図11】パケットルーターの内部構造模式図
【図12】本発明の第一実施例における、パケットルー
ターの配置図。
【図13】命令キャッシュタグメモリの1ラインごとの
内容
【図14】データキャッシュタグメモリの1ラインごと
の内容
【図15】TLBユニットの1エントリごとの内容
【図16】従来のマルチプロセッサにおける、スレッド
の動作例
【図17】本発明のプロセッサにおける、スレッドの動
作例
【図18】分岐命令実行における、命令発行ユニットの
選択方法を示す概念図
【図19】命令キャッシュのもつ予測情報の書き込み、
利用方法を示す概念図
【図20】各種分岐命令の実行概念図
【図21】1つの演算ユニットにおける、パイプライン
動作概念図
【図22】スレッド移住のレジスタ同期動作概念図
【図23】ディレクトリ方式キャッシュのリード動作概
念図
【図24】ディレクトリ方式キャッシュのライト動作概
念図
【図25】同期命令の動作概念図
【図26】同期命令のソフトウェア上での動作概念図
【図27】パケット制御信号の内容
【符号の説明】
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 スレッド発行制御信号 134 分岐発行制御信号 201 命令キャッシュ 202、203 演算ユニット 204 分岐ユニット 205 ロードストアユニット 206 レジスタファイル 207 データキャッシュ 208 命令発行ユニット 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 命令キャッシュタグメモリ 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 浮動小数点加算+乗算ユニット 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 ページフォルト発生ユニット 906 物理アドレス信号 907 ページトラップ・データフロー同期発生ユニッ
ト 908 TLBエントリメモリ 909 制御信号パケットルータ 910 ページフラッシュシーケンサ 911 スレッドパケット 1001 データバス信号 1004 スレッドパケットバッファ 1007 スレッドパケット信号 1009 物理アドレス信号 1011 制御パケット信号 1012 スレッド発行パケット信号 1013 仮想アドレス 1101 制御パケットルータ 1102 制御パケット信号 1103 制御コマンドデコーダ 1104 制御信号デコーダ 1105 ローカル状態信号 1106 ローカル制御ユニット 1107 ローカル制御信号 1108 制御パケットバッファ 1109 制御パケット信号 1110 制御パケット出力ユニット 1111 スレッドストール信号 1112 制御パケットタイミングチェッカ 1201〜1211 制御パケットルータ 1801 二次キャッシュ 1802、1804、1807、1809 スレッド管
理ユニット 1803、1805、1808 命令キャッシュ 1806 分岐ユニット 1901、1905 命令キャッシュ 1902、1906 実行ユニット 1903 分岐ユニット 1904,1908 データキャッシュ 1907 ロードストアユニット
───────────────────────────────────────────────────── フロントページの続き (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

Claims (31)

    【特許請求の範囲】
  1. 【請求項1】数値演算ユニット、レジスタファイル、命
    令メモリ、データキャッシュメモリを複数個内部に有
    し、複数のスレッドおよびプロセスを同時に利用する事
    を特徴とするプロセッサにおいて、レジスタファイルが
    持つ各スレッドごとのレジスタ値等の状態を、常に隣接
    する演算ユニットに伝達することを特徴とするプロセッ
    サ(以下PMT方式プロセッサと称する)において、プ
    ログラムカウンタ、スタックポインタ値、スレッド識別
    番号、プライオリティー値で構成されるスレッドの情報
    を示す値を複数格納するスレッド情報格納手段を有し、
    スレッド情報格納手段から1つのスレッドを選択して、
    命令メモリおよび演算ユニットにスレッドの情報を伝送
    するスレッド発行手段を有し、スレッド発行手段におい
    て、スレッドの持つプライオリティー値を比較し、最も
    優先度が大きいスレッドの情報を優先的に命令メモリお
    よび演算ユニットに伝達することを特徴とするプロセッ
    サ。
  2. 【請求項2】請求項1の特徴を持つプロセッサにおい
    て、演算ユニットが実行する命令のプログラムカウンタ
    値を保存する手段を有し、次に新規に発行する候補のス
    レッドが同じ命令アドレスを利用するかどうかを比較
    し、前に実行したスレッドと命令が一致したスレッドを
    優先的に選択して出力するための手段を有することを特
    徴とするプロセッサ。
  3. 【請求項3】PMT方式プロセッサにおいて、状態を伝
    達すべき隣接する演算ユニットが別のスレッドの処理を
    優先的に行うことを感知して、その時だけスレッドの状
    態を隣接演算ユニットに伝達せずに同一の演算ユニット
    で処理を行うことを特徴とするプロセッサ。
  4. 【請求項4】PMT方式プロセッサにおいて、複数のス
    レッドがそれぞれ利用するレジスタの値を複数のレジス
    タバンクに同時に格納するレジスタファイルを有し、各
    レジスタバンクの内の1つを同時に利用し、スレッドの
    進行に応じてレジスタバンクの内容を隣接する別のレジ
    スタファイルに転送することを特徴とするプロセッサ。
  5. 【請求項5】PMT方式プロセッサにおいて、現在実行
    しているスレッドを中断し、待機状態のスレッドを実行
    する操作が必要な際に、実行しているレジスタファイル
    の値を演算ユニットに伝送する代わりに、レジスタファ
    イルの別のレジスタバンクに格納されている待機状態の
    レジスタ値を演算ユニットに伝達し、別のスレッドの演
    算を即座に行うことを特徴とするプロセッサ。
  6. 【請求項6】請求項5の特徴を持つプロセッサにおい
    て、レジスタファイルにレジスタ状態が格納されていな
    いスレッドを実行する際に限り、レジスタファイルの内
    容をスタックポインタ値の示すメモリから自動的に読み
    出すことを特徴とし、現在レジスタファイルに格納され
    ていて利用されないスレッドの状態をスタックポインタ
    値の示すメモリに自動的に書き出すことを特徴とするプ
    ロセッサ。
  7. 【請求項7】PMT方式プロセッサにおける、1つのス
    レッドが利用するレジスタの値をメモリに保存する特別
    な分岐命令において、分岐命令の時点のスレッドのレジ
    スタ値をレジスタファイルに保持することを特徴とし、
    保存されたレジスタの値を読み込む特別な分岐命令にお
    いて、レジスタファイルに保持されていたスレッドの状
    態を利用することを特徴とするプロセッサ。
  8. 【請求項8】PMT方式プロセッサにおいて、複数のス
    レッド識別番号及びスタックポインタ値をまとめて格納
    することを特徴とするスレッド自動発行機構を有し、ス
    レッド発行命令によってスレッドを発行する際に、格納
    されたスレッド識別番号及びスタックフレームを自動的
    に割り当てることを特徴とするPMT型プロセッサ。
  9. 【請求項9】請求項4に記載された特徴を持つプロセッ
    サにおいて、1つのレジスタファイルが複数の演算ユニ
    ットで共有され、レジスタファイルが複数の演算ユニッ
    トから1つを選択してデータを伝送することを特徴とす
    る転送手段を有し、レジスタファイルの内容を隣接する
    レジスタファイルに複数回に分けて転送することを特徴
    とするプロセッサ。
  10. 【請求項10】PMT方式プロセッサの演算ユニットに
    おいて、値の一部の演算を行う部分演算ユニットを複数
    個有し、それぞれの部分演算ユニット内部に、部分演算
    ユニットにおける結果値と完全な演算を行った場合の結
    果値とが一致しないことを検出するオーバーフロー検出
    手段を有し、さらに完全な演算を行うための1つの完全
    演算ユニットを複数の部分演算ユニットに接続し、部分
    演算ユニットのオーバーフロー検出手段の演算結果の不
    一致の検出によって、完全演算ユニットに部分演算ユニ
    ットで利用した値を転送して演算を再度行うことを特徴
    とするプロセッサ。
  11. 【請求項11】PMT方式プロセッサにおいて、分岐後
    のプログラムカウンタ値が演算結果によって動的に変更
    され、分岐後のプログラムカウンタ値が確率的に予測で
    きる条件分岐命令において、分岐後に実行されると予測
    される命令を格納する命令キャッシュを有し、命令キャ
    ッシュに分岐の結果を判別するための情報を有し、実際
    に分岐が実行された際に予測した分岐結果との一致を確
    認し、不一致の場合はスレッドを中断してスレッド発行
    ユニットに正しい分岐結果を転送することを特徴とする
    プロセッサ。
  12. 【請求項12】PMT方式プロセッサにおいて、複数の
    演算ユニットを複数のブロックに分配し、ブロックごと
    に専属の一次キャッシュメモリを有し、ブロック内の演
    算ユニット全てと接続して、データアクセスを行うこと
    を特徴とし、さらに1つ以上の二次キャッシュメモリを
    有し、複数の一次キャッシュメモリと接続して、互いに
    データアクセスを行うことを特徴とするプロセッサ。
  13. 【請求項13】PMT方式プロセッサにおいて、スレッ
    ドが書きこんだメモリ内容をスレッド自身がメモリから
    読み出して利用する際に、利用するメモリ内容を複数の
    キャッシュメモリの間で転送することを特徴とし、複数
    のキャッシュメモリ間の転送はスレッドの進行と同じ方
    向、速度で伝達することを特徴とし、スレッドの進行に
    データの伝達が間に合わない場合はスレッドを停止させ
    ることを特徴とするプロセッサ。
  14. 【請求項14】PMT方式プロセッサにおいて、プロセ
    ッサ内部に1つ以上のキャッシュメモリを有し、個々の
    キャッシュメモリをさらに複数のメモリバンクに分割
    し、それぞれのメモリバンクへのアクセス数を制限する
    ことを特徴とし、同時にメモリバンクへのアクセスを行
    うことを特徴とし、さらに、複数のメモリバンクの選択
    のためにメモリアドレスを利用することを特徴とし、同
    じキャッシュへの複数のアクセスが存在した場合は、1
    つのアクセスだけを行い、他のアクセスを保持して後で
    行うことを特徴とするプロセッサ。
  15. 【請求項15】請求項12に記載された特徴を持つプロ
    セッサにおいて、キャッシュメモリ内部に、キャッシュ
    メモリの内容の共有状態を指定するためのディレクトリ
    と呼ばれる情報を有し、個別のキャッシュメモリは、別
    のキャッシュメモリから内部のデータを読み出された場
    合に、データのコピーを持つキャッシュメモリを特定す
    る情報をディレクトリに設定することを特徴とし、同時
    に、別のキャッシュメモリから取得したデータをキャッ
    シュメモリに格納する際に、データのオリジナルを持つ
    キャッシュメモリを特定する情報をディレクトリに設定
    することを特徴とし、キャッシュメモリへの書き込みの
    際に、ディレクトリの内容を利用して、同じアドレスの
    データのコピーを持つキャッシュメモリにだけデータの
    書き込みを通知することを特徴とするプロセッサ。
  16. 【請求項16】PMT方式プロセッサにおいて、ある命
    令が利用するデータを別の命令が再度利用する際に、デ
    ータを再利用する命令を実行する演算ユニットを特定す
    るデータフロー予測情報を命令メモリに格納することを
    特徴とし、データフロー予測情報を持つ命令が実行され
    たときに、データフロー予測情報で指定された演算ユニ
    ットにデータをあらかじめ転送することを特徴とするプ
    ロセッサ。
  17. 【請求項17】請求項16の特徴を持つプロセッサにお
    いて、あるスレッドのデータキャッシュアクセスミスの
    際に、データの実体のあるデータキャッシュからデータ
    を読み込むと同時に、読み出しを行ったデータキャッシ
    ュに要求元の演算ユニットを特定する値を転送し、読み
    出しを行ったデータキャッシュに対応する命令メモリ
    に、演算ユニットを特定する値を含むデータフロー予測
    情報を書き込むことを特徴とするプロセッサ。
  18. 【請求項18】命令キャッシュメモリを複数有するPM
    T方式プロセッサにおいて、あるスレッドが、次に実行
    すべき命令を検索するためにキャッシュメモリにアクセ
    スを行い、命令が格納されている命令キャッシュメモリ
    を下位のキャッシュのディレクトリ情報から特定し、前
    記命令キャッシュメモリに接続された演算ユニットにス
    レッドを移動することを特徴とし、複数のスレッドが同
    一の命令キャッシュメモリを利用することを特徴とする
    プロセッサ。
  19. 【請求項19】PMT方式プロセッサにおいて、キャッ
    シュメモリのアドレスを仮想アドレスとすることで、キ
    ャッシュメモリ上にはないデータへのアクセスに限って
    仮想記憶機構にデータを伝送し、仮想アドレスを物理ア
    ドレスに変換して物理アドレスメモリに書き戻すことを
    特徴とするプロセッサ。
  20. 【請求項20】PMT方式プロセッサにおいて、アドレ
    ス値を入力して、格納されたアドレス値に対する特定の
    スレッドを生起することを特徴とするデータフロー同期
    検出ユニットを有し、キャッシからの読み込み要求に対
    して、データフロー同期検出ユニットが指定したアドレ
    スとの一致を判定し、一致するアドレスを含む場合はキ
    ャッシュに共有状態を示す値を設定することを特徴とす
    るプロセッサ。
  21. 【請求項21】請求項20の特徴を持つプロセッサにお
    いて、データキャッシュ内部で共有状態に設定されてい
    るアドレスへのアクセスに対して、ディレクトリの示す
    ユニットにアクセスを通知することで、最終的にデータ
    フロー同期ユニットにアドレス値を伝達することを特徴
    とし、データフロー同期ユニットが伝達されたアドレス
    値に対応するスレッドを生起することを特徴とするプロ
    セッサ。
  22. 【請求項22】PMT方式プロセッサにおいて、スレッ
    ドは同期命令の発行時に停止し、他のすべてのスレッド
    の、同期命令実行前に行われたストア命令のデータ転送
    を待ち、すべてのデータが自身のキャッシュに転送され
    た時点でスレッドを再開することを特徴とするプロセッ
    サ。
  23. 【請求項23】請求項21のプロセッサにおいて、特定
    アドレスへのアクセスを検出する命令の発行によって、
    自分のスレッドの状態をデータフロー同期ユニットに自
    動的に伝達し、データフロー同期ユニットにおける特定
    のアドレスへのアクセスの検出によって自分のスレッド
    を再開することを特徴とするPMT型プロセッサ。
  24. 【請求項24】PMT方式プロセッサにおいて、1つの
    グローバル仮想記憶機構と複数のローカル仮想記憶機構
    を有し、複数のローカル仮想記憶機構がグローバル仮想
    記憶の値の一部を有することを特徴とし、グローバル仮
    想記憶機構の値の改変に対して複数のローカル仮想記憶
    機構に対して改変を伝達することを特徴とするプロセッ
    サ。
  25. 【請求項25】PMT方式プロセッサにおいて、内部の
    ユニット間で伝達する制御信号を、伝送先を示すアドレ
    ス値とともにまとめたパケットを利用して転送すること
    を特徴とし、複数の制御信号を入力して、複数の制御信
    号の中から伝送相手に応じて選択して出力するパケット
    ルーターを複数有し、ある演算ユニットからの要求を、
    パケットに変換して複数のパケットルーターが中継し、
    目的のユニットに伝達することを特徴とし、1つのユニ
    ット間配線を複数の制御信号で共有することを特徴とす
    るプロセッサ。
  26. 【請求項26】請求項25に記載された特徴を持つプロ
    セッサにおいて、スレッドが特定のユニットに制御信号
    を発信して、伝達したユニットから制御信号を受信する
    制御パケットにおいて、制御パケットをスレッドの進行
    方向と同一方向のパケットルーターに対して伝達するこ
    とを特徴とし、制御パケットの伝達がスレッドの進行に
    間に合わないことを検出した場合は、該当するスレッド
    を即座に停止させることを特徴とするパケットルータ
    ー。
  27. 【請求項27】請求項25に記載された特徴を持つプロ
    セッサにおいて、特定の制御信号パケットの要求に対し
    て、該当する回路ユニットは要求された内部状態を改
    変、あるいは読み出して、制御信号を送信したユニット
    に対して内部状態を転送することを特徴とするプロセッ
    サ。
  28. 【請求項28】PMT方式プロセッサを複数個利用して
    連結するシステムを構築する際に、プロセッサ間の転送
    方向を固定として、プロセッサのスレッドの状態、デー
    タをそのまま別のPMT方式プロセッサに伝送し、シス
    テム全体でスレッドを巡回させることを特徴とするPM
    T方式プロセッサ。
  29. 【請求項29】請求項28に記載された特徴を持つプロ
    セッサにおいて、直接連結されていないプロセッサ間で
    独自にデータ転送を行うためのショートカットバスを設
    け、遠距離のプロセッサ間の伝送にショートカットバス
    を用いることを特徴とするプロセッサ。
  30. 【請求項30】請求項25に記載された特徴を持つパケ
    ットルーターを有し、請求項27に記載された特徴を持
    つPMT方式プロセッサにおいて、複数のプロセッサの
    全てのユニットをアドレス値で一意に特定する手段を持
    ち、スレッドの発行する制御信号パケットを、制御信号
    パケットの転送先アドレス値に応じて、外部のプロセッ
    サ内部の該当するユニットに伝達することを特徴とする
    プロセッサ。
  31. 【請求項31】請求項30に記載された特徴を持つプロ
    セッサにおいて、それぞれのプロセッサが独自にメモリ
    を接続することを特徴とし、各プロセッサが持つ仮想記
    憶機構の内部に、指定されたページが外部のプロセッサ
    のデータのコピーを格納していることを示す共有情報を
    有することを特徴とし、プロセッサ内部からデータを読
    み込む際に、読み込みアドレスが仮想記憶機構によって
    共有状態を示す場合には、プロセッサ外にデータ読み込
    み要求を行うことを特徴とし、プロセッサ内部からデー
    タを書きこむ際に、書きこみアドレスが仮想記憶機構に
    よって共有状態を示す場合には、プロセッサ外にデータ
    の書きこみを通知することを特徴とするプロセッサ。
JP2000042696A 2000-02-21 2000-02-21 マルチスレッドを利用するパイプライン並列プロセッサ Pending JP2001236221A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000042696A JP2001236221A (ja) 2000-02-21 2000-02-21 マルチスレッドを利用するパイプライン並列プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000042696A JP2001236221A (ja) 2000-02-21 2000-02-21 マルチスレッドを利用するパイプライン並列プロセッサ

Publications (1)

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

Family

ID=18565736

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000042696A Pending JP2001236221A (ja) 2000-02-21 2000-02-21 マルチスレッドを利用するパイプライン並列プロセッサ

Country Status (1)

Country Link
JP (1) JP2001236221A (ja)

Cited By (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510989A (ja) * 2003-11-06 2007-04-26 インテル・コーポレーション 動的キャッシングエンジン命令
US7313142B2 (en) 2002-06-07 2007-12-25 Fujitsu Limited Packet processing device
JP2008525901A (ja) * 2004-12-27 2008-07-17 インテル・コーポレーション 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
JP2009538486A (ja) * 2006-05-25 2009-11-05 クゥアルコム・インコーポレイテッド 算術および初等関数ユニットを有する図形プロセッサ
US7899962B2 (en) 1996-12-20 2011-03-01 Martin Vorbach I/O and memory bus system for DFPs and units with two- or multi-dimensional programmable cell architectures
JP2011508338A (ja) * 2007-12-26 2011-03-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド グラフィックスパイプラインのための効率的な状態管理
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
WO2011142058A1 (ja) * 2010-05-14 2011-11-17 パナソニック株式会社 計算機システム
US8099618B2 (en) 2001-03-05 2012-01-17 Martin Vorbach Methods and devices for treating and processing data
US8127061B2 (en) 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
WO2012029111A1 (ja) * 2010-08-30 2012-03-08 富士通株式会社 マルチコアプロセッサシステム、同期制御システム、同期制御装置、情報生成方法、および情報生成プログラム
US8156284B2 (en) 2002-08-07 2012-04-10 Martin Vorbach Data processing method and device
US8156312B2 (en) 1996-12-09 2012-04-10 Martin Vorbach Processor chip for reconfigurable data processing, for processing numeric and logic operations and including function and interconnection control units
US8209653B2 (en) 2001-09-03 2012-06-26 Martin Vorbach Router
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US8281265B2 (en) 2002-08-07 2012-10-02 Martin Vorbach Method and device for processing data
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
US8301872B2 (en) 2000-06-13 2012-10-30 Martin Vorbach Pipeline configuration protocol and configuration unit communication
US8429385B2 (en) 2001-09-03 2013-04-23 Martin Vorbach Device including a field having function cells and information providing cells controlled by the function cells
US8471593B2 (en) 2000-10-06 2013-06-25 Martin Vorbach Logic cell array and bus system
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
JP2013546095A (ja) * 2010-12-29 2013-12-26 エンパイア テクノロジー ディベロップメント エルエルシー ディレクトリベースのマルチコアアーキテクチャ上におけるキャッシュ状態の移動の加速
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
JP2014503103A (ja) * 2011-12-23 2014-02-06 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
JP2014504958A (ja) * 2010-12-17 2014-02-27 アルデバラン ロボティクス エス、ア 物理的および仮想的資源の管理プログラムを備えるヒューマノイドロボット、使用方法、およびプログラミング方法
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
JP2014099215A (ja) * 2014-02-27 2014-05-29 Fujitsu Ltd マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8812820B2 (en) 2003-08-28 2014-08-19 Pact Xpp Technologies Ag Data processing device and method
US8819505B2 (en) 1997-12-22 2014-08-26 Pact Xpp Technologies Ag Data processor having disabled cores
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
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
US9250980B2 (en) 2009-12-18 2016-02-02 International Business Machines Corporation System, method, program, and code generation unit
JP2019050027A (ja) * 2004-07-30 2019-03-28 インテル コーポレイション プロセッサ
CN109634667A (zh) * 2018-12-11 2019-04-16 中国电子科技集团公司第四十七研究所 一种基于时钟的双速流水线架构微处理器及其实现方法
CN112749120A (zh) * 2019-10-29 2021-05-04 辉达公司 将数据有效地传输至处理器的技术
US11494121B2 (en) 2020-06-17 2022-11-08 Samsung Electronics Co., Ltd. Memory device for performing in-memory processing

Cited By (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156312B2 (en) 1996-12-09 2012-04-10 Martin Vorbach Processor chip for reconfigurable data processing, for processing numeric and logic operations and including function and interconnection control units
US7899962B2 (en) 1996-12-20 2011-03-01 Martin Vorbach I/O and memory bus system for DFPs and units with two- or multi-dimensional programmable cell architectures
US8195856B2 (en) 1996-12-20 2012-06-05 Martin Vorbach I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures
USRE45223E1 (en) 1997-02-08 2014-10-28 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
USRE45109E1 (en) 1997-02-08 2014-09-02 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
USRE44383E1 (en) 1997-02-08 2013-07-16 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
US8819505B2 (en) 1997-12-22 2014-08-26 Pact Xpp Technologies Ag Data processor having disabled cores
US8468329B2 (en) 1999-02-25 2013-06-18 Martin Vorbach Pipeline configuration protocol and configuration unit communication
US8312200B2 (en) 1999-06-10 2012-11-13 Martin Vorbach Processor chip including a plurality of cache elements connected to a plurality of processor cores
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US8726250B2 (en) 1999-06-10 2014-05-13 Pact Xpp Technologies Ag Configurable logic integrated circuit having a multidimensional structure of configurable elements
US8301872B2 (en) 2000-06-13 2012-10-30 Martin Vorbach Pipeline configuration protocol and configuration unit communication
US8471593B2 (en) 2000-10-06 2013-06-25 Martin Vorbach Logic cell array and bus system
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US8312301B2 (en) 2001-03-05 2012-11-13 Martin Vorbach Methods and devices for treating and processing data
US8099618B2 (en) 2001-03-05 2012-01-17 Martin Vorbach Methods and devices for treating and processing data
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US8429385B2 (en) 2001-09-03 2013-04-23 Martin Vorbach Device including a field having function cells and information providing cells controlled by the function cells
US8209653B2 (en) 2001-09-03 2012-06-26 Martin Vorbach Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
US8127061B2 (en) 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
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
US8281265B2 (en) 2002-08-07 2012-10-02 Martin Vorbach Method and device for processing data
US8156284B2 (en) 2002-08-07 2012-04-10 Martin Vorbach Data processing method and device
US8812820B2 (en) 2003-08-28 2014-08-19 Pact Xpp Technologies Ag Data processing device and method
JP2007510989A (ja) * 2003-11-06 2007-04-26 インテル・コーポレーション 動的キャッシングエンジン命令
JP6995731B2 (ja) 2004-07-30 2022-01-17 インテル コーポレイション プロセッサ
US10740249B2 (en) 2004-07-30 2020-08-11 Intel Corporation Maintaining processor resources during architectural events
JP2019050027A (ja) * 2004-07-30 2019-03-28 インテル コーポレイション プロセッサ
JP2008525901A (ja) * 2004-12-27 2008-07-17 インテル・コーポレーション 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
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 (ja) * 2006-05-25 2009-11-05 クゥアルコム・インコーポレイテッド 算術および初等関数ユニットを有する図形プロセッサ
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 (ja) * 2007-12-26 2011-03-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド グラフィックスパイプラインのための効率的な状態管理
US8826294B2 (en) 2007-12-26 2014-09-02 Advanced Micro Devices, Inc. Efficient state management system
US10169092B2 (en) 2009-12-18 2019-01-01 International Business Machines Corporation System, method, program, and code generation unit
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
WO2011142058A1 (ja) * 2010-05-14 2011-11-17 パナソニック株式会社 計算機システム
JP2011242896A (ja) * 2010-05-14 2011-12-01 Panasonic Corp 計算機システム
US9063794B2 (en) 2010-05-14 2015-06-23 Socionext Inc. Multi-threaded processor context switching with multi-level cache
CN103080921A (zh) * 2010-08-30 2013-05-01 富士通株式会社 多核处理器系统、同步控制系统、同步控制装置、信息生成方法以及信息生成程序
JP5488697B2 (ja) * 2010-08-30 2014-05-14 富士通株式会社 マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
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
WO2012029111A1 (ja) * 2010-08-30 2012-03-08 富士通株式会社 マルチコアプロセッサシステム、同期制御システム、同期制御装置、情報生成方法、および情報生成プログラム
JP2014504958A (ja) * 2010-12-17 2014-02-27 アルデバラン ロボティクス エス、ア 物理的および仮想的資源の管理プログラムを備えるヒューマノイドロボット、使用方法、およびプログラミング方法
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
JP2013546095A (ja) * 2010-12-29 2013-12-26 エンパイア テクノロジー ディベロップメント エルエルシー ディレクトリベースのマルチコアアーキテクチャ上におけるキャッシュ状態の移動の加速
US9411728B2 (en) 2011-12-23 2016-08-09 Intel Corporation Methods and apparatus for efficient communication between caches in hierarchical caching design
JP2014503103A (ja) * 2011-12-23 2014-02-06 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
JP2014099215A (ja) * 2014-02-27 2014-05-29 Fujitsu Ltd マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
CN109634667A (zh) * 2018-12-11 2019-04-16 中国电子科技集团公司第四十七研究所 一种基于时钟的双速流水线架构微处理器及其实现方法
CN112749120A (zh) * 2019-10-29 2021-05-04 辉达公司 将数据有效地传输至处理器的技术
US11494121B2 (en) 2020-06-17 2022-11-08 Samsung Electronics Co., Ltd. Memory device for performing in-memory processing

Similar Documents

Publication Publication Date Title
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
US11204769B2 (en) Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
JP6240964B2 (ja) 装置、方法、およびシステム
US7490218B2 (en) Building a wavecache
US8046563B1 (en) Virtual architectures in a parallel processing environment
KR101355496B1 (ko) 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘
EP2689327B1 (en) Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
Cintra et al. Eliminating squashes through learning cross-thread violations in speculative parallelization for multiprocessors
US20140164732A1 (en) Translation management instructions for updating address translation data structures in remote processing nodes
US20120079241A1 (en) Instruction execution based on outstanding load operations
JP2003030050A (ja) マルチスレッド実行方法及び並列プロセッサシステム
CN103562866A (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
CN108804348B (zh) 并行处理环境中的计算
JP2004326748A (ja) 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法
Bousias et al. Instruction level parallelism through microthreading—a scalable approach to chip multiprocessors
JP3099290B2 (ja) マルチスレッドプログラムを使用する情報処理装置
Laudon et al. The coming wave of multithreaded chip multiprocessors
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
JP2002229780A (ja) 大規模データパス・アーキテクチャの実行機構
US20240111679A1 (en) Hardware processor having multiple memory prefetchers and multiple prefetch filters
Gupta Design Decisions for Tiled Architecture Memory Systems
Balasubramonian et al. Microarchitectural trade-offs in the design of a scalable clustered microprocessor
Radulovic et al. Towards an improved integrated coherence and speculation protocol
Warnakulasuriya The use of multithreaded processors in DASH