JP2000305795A - 並列処理装置 - Google Patents

並列処理装置

Info

Publication number
JP2000305795A
JP2000305795A JP11112895A JP11289599A JP2000305795A JP 2000305795 A JP2000305795 A JP 2000305795A JP 11112895 A JP11112895 A JP 11112895A JP 11289599 A JP11289599 A JP 11289599A JP 2000305795 A JP2000305795 A JP 2000305795A
Authority
JP
Japan
Prior art keywords
instruction
fork
thread
prediction
condition
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
JP11112895A
Other languages
English (en)
Inventor
Sachiko Shimada
幸子 嶋田
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP11112895A priority Critical patent/JP2000305795A/ja
Priority to US09/553,041 priority patent/US6687812B1/en
Publication of JP2000305795A publication Critical patent/JP2000305795A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

(57)【要約】 【課題】 複数のプロセッサを起動するためのフォーク
命令を効率的に行うことにより、消費電力の低減を図る
ことのできる並列処理装置を提供する。 【解決手段】 複数命令から構成されるスレッドを外部
のユニット上に生成する(フォークする)プロセッサエ
レメント10を有する並列処理装置において、プロセッ
サエレメント10は、条件付フォーク命令のフォーク条
件が成立するか否かを、命令を読み込んだ後、当該命令
の実行前に予測する予測部を有するフォーク命令予測部
14を備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列処理装置に係
り、特に複数のプロセッサ間で複数の命令からなるスレ
ッドを生成、終了しながらプログラムを並列に処理する
並列処理装置に関する。
【0002】
【従来の技術】現在のコンピュータは一般的にノイマン
型コンピュータであり、その内部に設けられたコンピュ
ータの中心的役割を果たすプロセッサも、一つの命令を
読み込んでその命令を解読し、その命令毎に指示された
処理を実行し、メモリにアクセスし、実行結果をメモリ
に書き戻す、という手順を繰り返す。また、現在のコン
ピュータは処理の高速化を図るため、メインメモリとプ
ロセッサとの間にアクセス速度が高速なキャッシュメモ
リを備える。よって、主としてプロセッサはキャッシュ
メモリとの間でデータの授受を行う。プロセッサがキャ
ッシュメモリから命令を読み込む操作を命令フェッチ、
命令を解読する操作を命令デコード、メモリに書き戻す
操作をライトバックと称する。
【0003】プロセッサの高速化の技術の1つとして、
パイプライン処理が知られている。パイプライン処理に
ついては、例えばヘネシー&パターソンによる「コンピ
ュータ・アーキテクチャ」等のコンピュータに関する多
くの書物に述べられている。パイプライン処理は1クロ
ックサイクルで処理全体の一部のみを行う複数の命令を
オーバーラップさせて行うことによって処理能力を向上
させる技術である。
【0004】図13は、パイプライン処理を説明するた
めの図である。命令の実行は命令フェッチ(IF)、命
令デコード(ID)、命令実行(EX)、メモリアクセ
ス(MEM)、ライトバック(WB)と呼ばれるパイプ
ラインステージに分かれて行われる。T1サイクルにお
いて1000番地の命令が命令フェッチを行う。T2サ
イクルにおいて1000番地の命令は命令デコードが行
われ、同時に1004番地の命令の命令フェッチが行わ
れる。このように複数の命令を重複させて同時に実行す
る技術をパイプライン処理と称する。各処理の間に置か
れたレジスタをパイプラインレジスタ、各処理を行う処
理単位をパイプラインステージと呼ぶ。このようにパイ
プライン処理では、プログラム内に記述された命令を並
列に行うことにより処理全体の高速化を計っている。
【0005】しかしながら、分岐命令によるプログラム
・フローの変化により命令を適切なサイクルで実行でき
ないような状況が生じる。高速化ために例えばIDステ
ージ等のパイプラインステージの早い段階において分岐
命令で指定される分岐先のアドレスを計算するなどの手
法がとられているが、条件付分岐命令では条件が決定す
るまで分岐先を決定することができない。そこで条件付
分岐命令では分岐条件が成立するか否かを履歴情報を用
いて予測する手法(前述のヘネシー&パターソンによる
「コンピュータ・アーキテクチャ」p302〜307)
によりパイプライン停止するサイクルを削減している。
【0006】また、1つのプロセッサ内に複数の演算器
を設け、同時に複数の命令を発行することにより処理速
度を向上させるスーパースカラ方式(「スーパースカ
ラ」ジョンソン)が実用化されている。スーパースカラ
方式では理想的には1クロックで演算器の数の命令を実
行することが可能である。しかしながら、演算器を無限
に増やした場合にも分岐命令によって命令がスムーズに
実行されず実際の性能は1つのプロセッサのみの場合の
3〜4倍程度に抑えられてしまうと言われている。
【0007】また、複数のプロセッサを用いて並列処理
による高速化も行われている。複数のプロセッサを用い
た並列処理を実現するプロセッサシステムにおいては、
一般に各プロセッサでの処理を分担するためプロセッサ
間の通信を行い、並列処理を実現している。従来のプロ
セッサを使用したシステムにおいてはこのような通信は
プロセッサの外部からプロセッサに対する制御として割
り込み処理技術により実現されている。
【0008】割り込み処理技術では、プロセッサに外部
から割り込みが通知されると、ユーザプログラムから割
り込み処理用のプログラムへとプロセッサ内の実行プロ
グラムが切り替わり、それぞれの割り込み処理を行い、
その後元のユーザプログラムに戻る。プロセッサ内の実
行プログラムが切り替わるためには、プログラムカウン
タやレジスタファイル内のデータなど元のユーザプログ
ラムで再度使用するデータをメモリ装置内へ退避させ
る。このようにプログラムの切替えのためのデータ退避
などに要するオーバーヘッドは無視できないほど大き
く、一般に割り込み処理は時間を要する。このため割り
込み処理技術を用いた並列処理システムではプロセッサ
間通信処理に大きなオーバーヘッドが生じ、性能を向上
する上でボトルネックとなってきた。
【0009】このような問題を解決する技術として、マ
ルチスレッドアーキテクチャと呼ばれるものがある。こ
の技術は、例えば“A Multi-threaded Massively Paral
lelArchitecture”, Proceedings of 19th Internation
al Symposium on ComputerArchitecture, R. S. Nikhi
l, G. M. Papadopuolos and Arvind, PP.156-167 に開
示されている。
【0010】ここで、スレッドとは複数の命令から構成
される命令列である。またプログラムは複数のスレッド
から成る。マルチスレッドアーキテクチャではスレッド
単位での処理を複数プロセッサに分割して行い、複数の
プロセッサがスレッドを並列に処理することを可能とし
ている。このためマルチスレッドアーキテクチャではプ
ロセッサ上で実行されているスレッドが別のプロセッサ
上に新たにスレッドを生成するための機構及び命令を備
える。
【0011】ここで他のプロセッサ上に新たなスレッド
を生成することを「スレッドをフォークする」と称し、
そのためのスレッドのフォークを指示する命令をフォー
ク命令と称する。フォーク命令ではどのプロセッサ・エ
レメント(PE)にスレッドをフォークするか、及びど
のスレッドをフォークするかを指定する。
【0012】例えば、“On Chip Multiprocessor指向制
御並列アーキテクチャMUSCATの提案”,鳥居他,並
列処理シンポジウムJSPP'97,pp.229-236 では制御並列
処理が提案されている。制御並列処理ではプログラムの
制御フローを解析し、将来実行する可能性の高いパスを
予測し、実行確定前に投機的に実行することによりプロ
グラムを並列に処理する。
【0013】図14は、制御並列処理のモデルを示す図
である。従来の逐次実行される命令列はスレッドA,
B,Cから成る。逐次実行では図14(a)に示したよ
うに、1つのプロセッサが順番にスレッドA,B,Cを
処理するのに対し、制御並列処理では図14(b)に示
したように、PE#0で処理を行っているスレッドAを
実行している最中に、将来実行されるスレッドBをPE
#1にフォークしPE#1においてスレッドBを実行す
る。また、PE#1は更にスレッドCをPE#2にフォ
ークする。このように将来実行されるスレッドを投機的
に実行することにより、並列実行が可能となり性能向上
を図っている。
【0014】
【発明が解決しようとする課題】ところで、前述のMU
SCATで提案されている並列制御においてはスレッド
がフォークされるかどうか実行前から解る場合と解らな
い場合があることが述べられている。しかしながら実行
前からスレッドのフォークが確定されている確定フォー
クのみによっては十分な並列性が得られないことも分か
っている。このため前述のMUSCATではプログラム
のコンパイル時に解析を行い実行する可能性の高いスレ
ッドを実行確定前に投機的に実行する制御スペキュレー
ションを導入している。また、この投機的に実行される
フォーク命令をスペキュレーション・フォーク命令と称
している。しかしながら、制御並列処理では投機的実行
が失敗した場合に投機的に実行したスレッドを取り消さ
なければならず、無駄にPEを動作させることが生じる
ため消費電力が増加するという問題を抱えている。
【0015】また、各PEで実行されるスレッドはその
終了命令により一連の処理を終了する。スペキュレーシ
ョン・フォーク命令によりスレッドがフォークされた場
合には終了命令が有効となって実行が行われるが、スレ
ッドのフォークが行われない場合には終了命令の実行を
行う必要がなくなる場合も生じる。このためMUSCA
Tでは条件付終了命令を用意し、その条件の正否に従い
終了命令の実行を行っている。しかしながら、並列に複
数のスレッドを処理するため、制御並列処理においては
条件確定後に行われる条件付終了命令の処理が、その条
件を決定する命令処理の実行よりも先に行われることが
生じる。このような場合、条件付終了命令はその条件が
決定される命令の処理が終了するまで実行処理を待たな
ければならない。また条件が決定するまでは、終了が決
定した場合には不必要となる後続命令のフェッチなどが
行われ、消費電力が増加するという問題を抱えている。
【0016】本発明は、上記事情に鑑みてなされたもの
であり、複数のプロセッサを用いて並列処理を行うプロ
セッサシステムにおいて、複数のプロセッサを起動する
ためのフォーク命令を効率的に行うことにより、消費電
力の低減を図ることのできる並列処理装置を提供するこ
とを目的とする。また、本発明は、前述のスレッドの条
件付終了命令についても、効率的にスレッドを終了させ
ることのできる並列処理装置を提供することを目的とす
る。更に、前述のスペキュレーション・フォーク命令、
スレッド終了条件付スレッド終了命令を行うユニットを
ハードウェアで効率的に実現する並列処理装置を提供す
ることを目的とする。
【0017】
【課題を解決するための手段】上記課題を解決するため
に、第1の発明は、複数命令から構成されるスレッドを
外部のユニット上に生成する(フォークする)処理手段
を有する並列処理装置において、前記処理手段は、フォ
ーク条件付フォーク命令のフォーク条件が成立するか否
かを、命令を読み込んだ後、当該命令の実行前に予測す
る予測部を具備することを特徴とする。第2の発明は、
外部からフォークされたスレッドを発行する手段を有す
る処理手段を備える並列処理装置において、前記処理手
段は、フォークされたスレッドを終了させるスレッド終
了条件付スレッド終了命令のスレッド終了条件が成立す
るか否かを、命令を読み込んだ後、当該命令の実行前に
予測する予測部を具備することを特徴とする。第3の発
明は、複数命令から構成されるスレッドを外部のユニッ
ト上に生成するとともに、外部からフォークされたスレ
ッドを発行する手段を有する処理手段を備える並列処理
装置において、前記処理手段は、フォーク条件付フォー
ク命令のフォーク条件が成立するか否か、及びフォーク
されたスレッドを終了させるスレッド終了条件付スレッ
ド終了命令のスレッド終了条件が成立するか否かを、命
令を読み込んだ後、当該命令の実行前に予測する予測部
を具備することを特徴とする。また、第4の発明は、第
1〜第3の発明において、前記予測部が、前記予測を行
うとともに、入力された命令が条件付分岐命令である場
合には、当該条件付分岐命令が成立するか否かを予測す
ることを特徴とする。また、第5の発明は、第1〜第4
の発明において、前記処理手段を複数設けたことを特徴
とする。また、第1〜第5の発明は、前記予測部が、履
歴情報を用いて前記予測を行うことを特徴とする。前記
履歴情報は、前記予測の確率に応じて複数の状態を有す
る情報であることを特徴とする。また、前記予測部は、
前記状態に基づいて前記フォーク条件、スレッド終了条
件、又は条付件分岐命令を予測することを特徴とする。
また、第1の発明は、前記フォーク条件付フォーク命令
が、フォーク条件の確率を予め解析した情報を含み、前
記予測部が、前記確率に応じてフォーク条件が成立する
か否かを予測することを特徴とする。また、第2の発明
は、前記スレッド終了条件付スレッド終了命令が、スレ
ッド終了条件の確率を予め解析した情報を含み、前記予
測部が、前記確率に応じてスレッド終了条件が成立する
か否かを予測することを特徴とする。また、第3の発明
は、前記フォーク条件付フォーク命令が、フォーク条件
及びスレッド終了条件の確率を予め解析した情報を含
み、前記予測部が、前記確率に応じてフォーク条件及び
スレッド終了条件が成立するか否かを予測することを特
徴とする。また、前記処理手段は、前記フォーク条件、
スレッド終了条件、及び条付件分岐命令の内の2以上の
命令に関する前記履歴情報を共に記憶する記憶手段を具
備することを特徴とする。また、前記処理手段は、前記
フォーク条件が成立した場合に、生成されるスレッドの
先頭命令アドレスを生成するとともに、前記条件付分岐
命令が成立した場合に、分岐先ターゲットの命令アドレ
スを生成する生成手段を更に具備することを特徴とす
る。より具体的な第1の発明は、入力される命令を解析
する解析手段と、前記解析手段により解析された命令が
フォーク条件付フォーク命令である場合に、当該フォー
ク条件付フォーク命令のフォーク条件が成立するか否か
を、前記命令を読み込んだ後、当該命令の実行前に予測
し、予測結果に応じてフォーク命令を外部に出力する予
測手段と、前記命令を実行するとともに、前記フォーク
命令の予測が正しいか否かの判定を行い、前記フォーク
命令が外部に出力され、且つ前記予測が誤りであった場
合には前記フォーク命令によって生成されたスレッドを
取り消す命令を前記外部に出力する実行手段とを具備す
ることを特徴とする。また、具体的な第2の発明は、入
力される命令を解析する解析手段と、前記解析手段によ
り解析された命令がフォークされたスレッドを終了させ
るスレッド終了条件付スレッド終了命令である場合に、
当該スレッド終了条件付スレッド終了命令のスレッド終
了条件が成立するか否かを、前記命令を読み込んだ後、
当該命令の実行前に予測し、予測結果に応じてスレッド
終了命令を外部に出力する予測手段と、前記命令を実行
するとともに、前記フォーク命令の予測が正しいか否か
の判定を行い、前記スレッド終了命令が外部に出力さ
れ、且つ前記予測が誤りであった場合には前記スレッド
終了命令によって停止されたスレッドの停止を解除する
命令を前記外部に出力する実行手段とを具備することを
特徴とする。また、具体的な第1又は第2の発明は、前
記予測手段が、履歴情報を記憶する記憶手段と、当該記
憶手段に記憶された履歴情報を更新する更新手段とを備
え、前記実行手段は、前記判定の結果を前記更新手段に
通知し、前記更新手段が、前記判定の結果に応じて履歴
情報を更新することを特徴とする。
【0018】
【発明の実施の形態】以下、図面を参照して本発明の実
施形態による並列処理装置について詳細に説明する。 〔第1実施形態〕図1は、本発明の第1実施形態による
並列処理装置の構成を示すブロック図である。図1に示
すように、本発明の第1実施形態による並列処理装置
は、2組のプロセッサエレメント(PE)10,20か
らなり、これらはバスBを介して相互に接続されてい
る。プロセッサエレメント10は、プログラムカウンタ
レジスタ(以下、PCレジスタと称する)11、命令キ
ャッシュ12、命令デコード部13、フォーク命令予測
部14、及び命令実行部15から構成される。また、プ
ロセッサエレメント20も同様にプログラムカウンタレ
ジスタ21、命令キャッシュ22、命令デコード部2
3、フォーク命令予測部24、及び命令実行部25から
構成される。
【0019】上記PCレジスタ11,21は、処理を行
う命令のアドレスを保持するレジスタである。命令キャ
ッシュ12,22は、PCレジスタ11,21から出力
される命令をそれぞれキャッシュする。命令デコード部
13,23は、命令キャッシュ12,22にそれぞれキ
ャッシュされている命令を読み出してデコード(解読)
を行う。フォーク命令予測部14,24は、内部で保持
しているフォーク命令の履歴情報に従いスペキュレーシ
ョン・フォーク命令(フォーク条件付フォーク命令)が
スレッドのフォークを行うかどうかを予測する。命令実
行部15,25は、命令デコード部13,23において
解読された命令に従い命令の実行を行う。また、スペキ
ュレーション・フォーク命令の予測が正しいかどうかの
判定も行う。
【0020】次に、フォーク命令予測部14,24につ
いて詳細に説明する。図2は、フォーク命令予測部1
4,24の内部構成を示すブロック図である。図2に示
したように、フォーク命令予測部14,24はアドレス
計算部30、履歴バッファ32、予測部34、及び履歴
情報更新部36からなる。上記アドレス計算部30は、
命令デコード部13,23から出力される命令からフォ
ーク先のアドレスを計算する。履歴バッファ32は、ス
ペキュレーション・フォーク命令がスレッドのフォーク
を行ったかどうかの履歴情報を記憶する。予測部34
は、履歴バッファ32に記憶された履歴情報に基づいて
スレッドのフォークを行うか否かを予測する。履歴情報
更新部36は図1中の命令実行部15,25からの判定
結果が入力され、この判定結果に基づいて履歴バッファ
32に記憶された履歴情報の更新を行う。
【0021】次に、上記構成におけるフォーク命令予測
部14,24の動作について説明する。まず、命令デコ
ード部13,23からデコードされた命令が出力される
とアドレス計算部30はフォーク先のアドレス計算を行
い予測部34へ出力する。また、命令デコード部13,
23から命令アドレスが出力されると、この命令アドレ
スに従い、履歴バッファ32から履歴情報が出力され、
予測部34及び履歴情報更新部36へ出力される。予測
部34は、入力された履歴情報に基づいてスレッドのフ
ォークを行うか否かを予測する。
【0022】予測部34がフォークを行うと予測した場
合は、アドレス計算部30から出力されたフォーク先の
アドレスをフォーク先のアドレスとして信号線14a,
24aへ出力する。また、命令実行部15,25からフ
ォーク予測の判定結果が入力された場合には履歴情報更
新部36は、読み込んでいる履歴情報を更新し、信号線
36aを介して更新後の履歴情報を履歴バッファへ書き
込む。
【0023】次に、図2中の予測部34において用いら
れている履歴情報を用いてスレッドのフォークを予測す
るアルゴリズムについて説明する。図3は、予測部34
において用いられている履歴情報を用いてスレッドのフ
ォークを予測するアルゴリズムを説明する状態遷移図で
ある。履歴バッファ32内に記憶された履歴情報は4状
態を表すことができる。4状態はそれぞれ、 ・フォークしない可能性大(St1) ・フォークしない可能性小(St2) ・フォークする可能性小(St3) ・フォークする可能性大(St4) を示す。
【0024】履歴情報が、「フォークしない可能性大」
(St1)又は「フォークしない可能性小」(St2)
であった場合、予測部34はスレッドがフォークしない
と予測する。一方、履歴情報が「フォークする可能性
小」(St3)又は「フォークする可能性大」(St
4)であった場合、予測部34はスレッドがフォークす
ると予測する。
【0025】履歴情報の状態は予測の判定により遷移す
る。履歴情報が「フォークしない可能性大」(St1)
である場合において、予測が成功した場合は、状態は変
化せず「フォークしない可能性大」(St1)となる。
一方、予測が失敗した場合は、「フォークしない可能性
小」(St2)に遷移する。また、履歴情報が「フォー
クしない可能性小」(St2)である場合において、予
測が成功した場合は「フォークしない可能性大」(St
1)に遷移し、予測に失敗した場合は「フォークする可
能性小」(St3)に遷移する。更に、履歴情報が「フ
ォークする可能性小」(St3)である場合において、
予測が成功した場合は「フォークする可能性大」(St
4)に遷移し、予測に失敗した場合には、「フォークし
ない可能性小」(St2)に遷移する。履歴情報が「フ
ォークする可能性大」(St4)である場合において、
予測が成功した場合は状態は遷移せず「フォークする可
能性大」(St4)である。一方、予測に失敗した場合
には「フォークする可能性小」(St3)に遷移する。
以上のようなアルゴリズムを用いて予測部34は、入力
された履歴情報に基づいてスレッドのフォークを行うか
否かを予測する。
【0026】次に、上記構成における本発明の第1実施
形態による並列処理装置の全体の動作について説明す
る。図4は、本発明の第1実施形態による並列処理装置
の全体の動作を示すフローチャートである。図4におい
て、IF,ID,EX,MEM,WBはパイプラインス
テージを表し、それぞれ命令フェッチ、命令デコード、
命令実行、メモリアクセス、ライトバックのステージで
あることを示している。
【0027】まず、IFステージにおいてプロセッサエ
レメント10はPCレジスタ11に記憶されたアドレス
を命令キャッシュに送付する(ステップS10)。次
に、命令デコード部13は、PCレジスタ11から命令
キャッシュ12に送付されたアドレスによって指定され
た命令を命令キャッシュ12から読み出す(ステップS
12)。
【0028】次に、IDステージでは、命令デコード部
13がステップS12で読み出した命令を解読して実行
する処理を決定する。また、命令デコード部13は解読
した命令がスペキュレーション・フォーク命令であるか
否かを判断し(ステップS14)、スペキュレーション
・フォーク命令である場合にはその旨が命令デコード部
13からフォーク命令予測部14に通知される。一方、
解読した命令がスペキュレーション・フォーク命令でな
い場合には、ステップS32においてその命令の実行が
行われる。
【0029】上記通知がなされると、フォーク命令予測
部14は、内部に保持しているフォーク命令の履歴情報
に従いスペキュレーション・フォーク命令がスレッドの
フォークを行う命令であるかどうかを予測する(ステッ
プS16)。この判断結果が「YES」の場合、つまり
スレッドのフォークを行うと予測した場合はフォーク先
のアドレスをフォーク命令予測部14から信号線14a
及びバスBを介してプロセッサエレメント20内のPC
レジスタ21に送出する(ステップS18)。この処理
によってプロセッサエレメント20には新しいスレッド
が生成され命令の処理が開始され、プロセッサエレメン
ト10の処理はステップS20へ進む。一方、ステップ
S16における判断結果が「NO」の場合、つまりスレ
ッドのフォークを行わないと予測した場合はフォーク命
令予測部14はプロセッサエレメント20に対するスレ
ッドの生成を行わず、処理はステップS26へ進む。
【0030】次に、EXステージでは、命令デコード部
13において解読された命令に従い命令実行部15にお
いて命令の実行処理が行われる。また、スペキュレーシ
ョン・フォーク命令の予測が正しいかどうかの判定も行
われる(ステップS20,S26)。まず、ステップS
20における判断結果が「成功」の場合は、「スレッド
のフォークを行う」という予測が成功したことを意味
し、この場合、命令の実行が続行され、命令実行部15
からフォーク命令予測部14へ「予測成功」が通知され
る。またフォーク命令予測部14においてスペキュレー
ション・フォーク命令の履歴情報が更新される。更にフ
ォークされたスレッドの確定を信号線15bを介してプ
ロセッサエレメント20へ通知する(ステップS2
2)。
【0031】一方、ステップS20における判断結果が
「失敗」の場合は、「スレッドのフォークを行う」とい
う予測が失敗したことを意味し、信号線15bを介して
プロセッサエレメント20へその旨を通知し、フォーク
されたスレッドの取消を行う。また命令実行部15はフ
ォーク命令予測部14に対し、「予測失敗」を通知す
る。この通知がなされると、フォーク命令予測部14
は、スペキュレーション・フォーク命令の履歴情報を更
新する(ステップS24)。以上の処理が終了すると、
プロセッサエレメント10においては命令の実行が続行
される。
【0032】次に、ステップS26における判断結果が
「成功」の場合は、「スレッドのフォークを行わない」
という予測が成功したことを意味し、命令実行部15か
らフォーク命令予測部14へ「予測成功」が通知され
る。そしてフォーク命令予測部14においてスペキュレ
ーション・フォーク命令の履歴情報が更新される(ステ
ップS28)。
【0033】一方、ステップS26における判断結果が
「失敗」の場合は、「スレッドのフォークを行わない」
という予測が失敗したことを意味し、スレッドのフォー
クを行うため、命令実行部15は信号線15b及びバス
Bを介してフォーク先アドレスをプロセッサエレメント
20のPCレジスタ21へ送出する。これによってプロ
セッサエレメント20には新しいスレッドが生成され、
命令の処理が開始される。また、命令実行部15からフ
ォーク命令予測部14へ「予測失敗」が通知され、スペ
キュレーション・フォーク命令の履歴情報が更新される
(ステップS30)。以上説明したように、本実施形態
においては、予測部34が履歴情報に基づいてスレッド
をフォークを予測しているため、新規スレッドの生成と
スレッドの終了を効率的に行うことによって不必要なス
レッドの生成を抑制することができ、ひいては消費電力
を削減につながる。
【0034】次に、フォークされる確率が高い場合に図
2中の予測部34において用いられている履歴情報を用
いてスレッドのフォークを予測するアルゴリズムについ
て説明する。図5は、フォークされる確率が高い場合
に、予測部34において用いられている履歴情報を用い
てスレッドのフォークを予測するアルゴリズムを説明す
る状態遷移図である。
【0035】履歴バッファ32内に記憶された履歴情報
は、図3で説明した場合と同様に、4状態である。フォ
ークされる確率が高いスペキュレーション・フォーク命
令における4状態はそれぞれ、 ・フォークしない可能性あり(St11) ・フォークする可能性小(St12) ・フォークする可能性大(St13) ・フォークする可能性極めて大(St14) である。
【0036】履歴情報が「フォークする可能性極めて
大」(St14)、「フォークする可能性大」(St1
3)、又は「フォークする可能性小」(St12)の何
れかであった場合に予測部34はスレッドがフォークす
ると予測する。一方、履歴情報が「フォークしない可能
性あり」(St11)の場合のみ予測部34はスレッド
がフォークしないと予測する。
【0037】履歴情報の状態は予測の判定により遷移す
る。履歴情報が「フォークしない可能性あり」(St1
1)である場合において、予測が成功した場合は、状態
は変化せず「フォークしない可能性あり」(St11)
となる。一方、予測が失敗した場合は、「フォークする
可能性小」(St12)に遷移する。また、履歴情報が
「フォークする可能性小」(St12)である場合にお
いて、予測が失敗した場合は「フォークしない可能性あ
り」(St11)に遷移し、予測に成功した場合は「フ
ォークする可能性大」(St13)に遷移する。更に、
履歴情報が「フォークする可能性大」(St13)であ
る場合において、予測が成功した場合は「フォークする
可能性極めて大」(St14)に遷移し、予測に失敗し
た場合には、「フォークする可能性小」(St12)に
遷移する。履歴情報が「フォークする可能性極めて大」
(St14)である場合において、予測が成功した場合
は状態は遷移せず「フォークする可能性極めて大」(S
t14)である。一方、予測に失敗した場合には「フォ
ークする可能性大」(St13)に遷移する。以上のよ
うなアルゴリズムを用いて予測部34は、入力された履
歴情報に基づいてスレッドのフォークを行うか否かを予
測する。
【0038】つまり、図5に示したアルゴリズムでは、
コンパイル時の解析においてスレッドのフォークを行う
確率が高いと判断されたスペキュレーション・フォーク
命令ではその情報を命令中に含ませる。このようなフォ
ークする確率の高いスペキュレーション・フォーク命令
の予測を履歴情報を用いて行う際には、「スレッドのフ
ォークを行う」と予測を行うと判断する状態数を「スレ
ッドのフォークを行わない」と予測を行う状態数に比べ
多くし、偏りを持たせる。
【0039】次に、フォークされる確率が低い場合に図
2中の予測部34において用いられている履歴情報を用
いてスレッドのフォークを予測するアルゴリズムについ
て説明する。図6は、フォークされる確率が低い場合
に、予測部34において用いられている履歴情報を用い
てスレッドのフォークを予測するアルゴリズムを説明す
る状態遷移図である。
【0040】履歴バッファ32内に記憶された履歴情報
は、図3で説明した場合と同様に、4状態である。フォ
ークされる確率が高いスペキュレーション・フォーク命
令における4状態はそれぞれ、 ・フォークしない可能性極めて大(St21) ・フォークしない可能性大(St22) ・フォークしない可能性小(St23) ・フォークする可能性あり(St24) である。
【0041】履歴情報が「フォークしない可能性極めて
大」(St21)、「フォークしない可能性大」(St
22)、又は「フォークしない可能性小」(St23)
の何れかであった場合に予測部34はスレッドがフォー
クしないと予測する。一方、履歴情報が「フォークする
可能性あり」(St24)の場合のみ予測部34はスレ
ッドがフォークすると予測する。
【0042】履歴情報の状態は予測の判定により遷移す
る。履歴情報が「フォークしない可能性極めて大」(S
t21)である場合において、予測が成功した場合は、
状態は変化せず「フォークしない可能性極めて大」(S
t21)となる。一方、予測が失敗した場合は、「フォ
ークしない可能性大」(St22)に遷移する。また、
履歴情報が「フォークしない可能性大」(St22)で
ある場合において、予測が失敗した場合は「フォークし
ない可能性小」(St23)に遷移し、予測に成功した
場合は「フォークしない可能性極めて大」(St21)
に遷移する。更に、履歴情報が「フォークしない可能性
小」(St23)である場合において、予測が成功した
場合は「フォークしない可能性大」(St22)に遷移
し、予測に失敗した場合には、「フォークする可能性あ
り」(St24)に遷移する。履歴情報が「フォークす
る可能性あり」(St24)である場合において、予測
が成功した場合は状態は遷移せず「フォークする可能性
あり」(St24)である。一方、予測に失敗した場合
には「フォークしない可能性小」(St23)に遷移す
る。以上のようなアルゴリズムを用いて予測部34は、
入力された履歴情報に基づいてスレッドのフォークを行
うか否かを予測する。
【0043】命令実行前の解析においてスレッドのフォ
ークを行う確率が低いと判断されたスペキュレーション
・フォーク命令ではその情報を命令中に含ませる。この
ようなフォークする確率の低いスペキュレーション・フ
ォーク命令の予測を履歴情報を用いて行う際には、「ス
レッドのフォークを行う」と予測を行うと判断する状態
数を「スレッドのフォークを行わない」と予測を行う状
態数に比べ少なくし、偏りを持たせる。
【0044】このように、命令実行前の解析において
「スレッドのフォークを行う」と予測される確率分かっ
ているスペキュレーション・フォーク命令では命令中に
その情報を持たせる。実行時に予測の判断を行う履歴情
報の状態数に偏りを持たせることにより命令実行前の解
析を有効に使うことが可能となる。このように偏りを持
たせることで、予測の確率を向上させることができる結
果、更に、新規スレッドの生成とスレッドの終了を効率
的に行うことによって不必要なスレッドの生成を抑制す
ることができ、ひいては消費電力を削減につながる。
【0045】以上は、履歴情報に基づいて予測を行う場
合について説明したが、次に、命令中に予めフォークの
確率の情報が含まれる場合の動作について説明する。フ
ォークの確率の情報は予めコンパイル時に追加される。
図7は、命令中にフォーク条件の確率を予め解析した情
報が含まれる場合の並列処理装置の全体の動作を示すフ
ローチャートである。動作が開始すると、まず、IFス
テージにおいてプロセッサエレメント10はPCレジス
タ11に記憶されたアドレスを命令キャッシュに送付す
る(ステップS10)。次に、命令デコード部13は、
PCレジスタ11から命令キャッシュ12に送付された
アドレスによって指定された命令を命令キャッシュ12
から読み出す(ステップS12)。
【0046】次に、IDステージでは、命令デコード部
13がステップS12で読み出した命令を解読して実行
する処理を決定する。また、命令デコード部13は解読
した命令がスペキュレーション・フォーク命令であるか
否かを判断し(ステップS14)、スペキュレーション
・フォーク命令である場合にはその旨が命令デコード部
13からフォーク命令予測部14に通知される。一方、
解読した命令がスペキュレーション・フォーク命令でな
い場合には、ステップS32においてその命令の実行が
行われる。
【0047】上記通知がなされると、フォーク命令予測
部14は、命令中に含まれるフォーク条件の確率を予め
解析した情報に基づいて、フォークする確率が高いか否
かを予測する(ステップS15)。このフォークする確
率が「高い」と予測した場合はフォーク先のアドレスを
フォーク命令予測部14から信号線14a及びバスBを
介してプロセッサエレメント20内のPCレジスタ21
に送出する(ステップS18)。この処理によってプロ
セッサエレメント20には新しいスレッドが生成され命
令の処理が開始され、プロセッサエレメント10の処理
はステップS20へ進む。一方、ステップS16におい
てフォークする確率が「低い」と予測した場合にはフォ
ーク命令予測部14はプロセッサエレメント20に対す
るスレッドの生成を行わず、処理はステップS26へ進
む。
【0048】次に、EXステージでは、命令デコード部
13において解読された命令に従い命令実行部15にお
いて命令の実行処理が行われる。また、スペキュレーシ
ョン・フォーク命令の予測が正しいかどうかの判定も行
われる(ステップS20,S26)。まず、ステップS
20における判断結果が「成功」の場合は、「スレッド
のフォークを行う」という予測が成功したことを意味
し、この場合、命令の実行が続行され、フォークされた
スレッドの確定を信号線15bを介してプロセッサエレ
メント20へ通知する(ステップS23)。
【0049】一方、ステップS20における判断結果が
「失敗」の場合は、「スレッドのフォークを行う」とい
う予測が失敗したことを意味し、信号線15bを介して
プロセッサエレメント20へその旨を通知し、フォーク
されたスレッドの取消を行う。(ステップS25)。以
上の処理が終了すると、プロセッサエレメント10にお
いては命令の実行が続行される。
【0050】次に、ステップS26における判断結果が
「成功」の場合は、「スレッドのフォークを行わない」
という予測が成功したことを意味し、この場合はスレッ
ドのフォークが行われない(ステップS29)。
【0051】一方、ステップS26における判断結果が
「失敗」の場合は、「スレッドのフォークを行わない」
という予測が失敗したことを意味し、スレッドのフォー
クを行うため、命令実行部15は信号線15b及びバス
Bを介してフォーク先アドレスをプロセッサエレメント
20のPCレジスタ21へ送出する。これによってプロ
セッサエレメント20には新しいスレッドが生成され、
命令の処理が開始される(ステップS31)。以上説明
したように、本実施形態においては、フォーク命令予測
部14が命令中に予めフォークの確率の情報が含まれる
場合には、その確率の情報に基づいてスレッドをフォー
クを予測しているため、新規スレッドの生成とスレッド
の終了を効率的に行うことによって不必要なスレッドの
生成を抑制することができ、ひいては消費電力を削減に
つながる。
【0052】〔第2実施形態〕次に、図面を参照して本
発明の第2実施形態による並列処理装置について詳細に
説明する。図8は、本発明の第2実施形態による並列処
理装置の構成を示すブロック図である。図8に示すよう
に、本発明の第2実施形態による並列処理装置は、2組
のプロセッサエレメント(PE)40,50からなり、
これらはバスBを介して相互に接続されている。プロセ
ッサエレメント40は、プログラムカウンタレジスタ
(以下、PCレジスタと称する)11、命令キャッシュ
12、命令デコード部13、スレッド終了命令予測部4
2、及び命令実行部15から構成される。また、プロセ
ッサエレメント50も同様にプログラムカウンタレジス
タ21、命令キャッシュ22、命令デコード部23、ス
レッド終了命令予測部52、及び命令実行部25から構
成される。
【0053】これらの内、スレッド終了命令予測部4
2,52以外は第1実施例で同一の符号を付して説明し
たものと同一である。スレッド終了命令予測部42,5
2は内部で保持しているフォーク終了命令の履歴情報に
従いスレッド終了条件付スレッド終了命令(スレッド終
了条件付スレッド終了命令)がスレッドの終了をさせる
かどうかを予測する。
【0054】次に、上記構成における本発明の第2実施
形態による並列処理装置の全体の動作について説明す
る。図9は、本発明の第1実施形態による並列処理装置
の全体の動作を示すフローチャートである。図9におい
て、IF,ID,EX,MEM,WBはパイプラインス
テージを表し、それぞれ命令フェッチ、命令デコード、
命令実行、メモリアクセス、ライトバックのステージで
あることを示している。
【0055】まず、IFステージにおいてプロセッサエ
レメント40はPCレジスタ11に記憶されたアドレス
を命令キャッシュに送付する(ステップS50)。次
に、命令デコード部13は、PCレジスタ11から命令
キャッシュ12に送付されたアドレスによって指定され
た命令を命令キャッシュ12から読み出す(ステップS
52)。
【0056】次に、IDステージでは、命令デコード部
13がステップS12で読み出した命令を解読して実行
する処理を決定する。また、命令デコード部13は解読
した命令がスレッド終了条件付スレッド終了命令である
か否かを判断し(ステップS54)、スレッド終了条件
付スレッド終了命令である場合にはその旨がデコード部
13からスレッド終了命令予測部42に通知される。一
方、解読した命令がスレッド終了条件付スレッド終了命
令でない場合には、ステップS72においてその命令の
実行が行われる。
【0057】上記通知がなされると、スレッド終了命令
予測部42は、内部に保持しているフォーク命令の履歴
情報に従いスレッド終了条件付スレッド終了命令がスレ
ッドの終了をさせるかどうかを予測する(ステップS5
6)。この判断結果が「YES」の場合、つまりスレッ
ドを終了させると予測した場合はスレッドの終了をスレ
ッド終了命令予測部42から命令実行部15に送出する
(ステップS58)。一方、ステップS56における判
断結果が「NO」の場合、つまりスレッドを終了させる
と予測した場合はスレッドの終了を送出せず、処理はス
テップS66へ進む。
【0058】次に、EXステージでは、命令デコード部
13において解読された命令に従い命令実行部15にお
いて命令の実行処理が行われる。また、スレッド終了条
件付スレッド終了命令の予測が正しいかどうかの判定も
行われる(ステップS60,S66)。まず、ステップ
S60における判断結果が「成功」の場合は、「スレッ
ドを終了させる」という予測が成功したことを意味し、
この場合、命令実行部15からスレッド終了命令予測部
42へ「予測成功」が通知される。更にスレッド終了命
令予測部42において、スレッド終了条件付スレッド終
了命令の履歴情報が更新される(ステップS62)。
【0059】一方、ステップS60における判断結果が
「失敗」の場合は、「スレッドを終了させる」という予
測が失敗したことを意味し、後続命令のフェッチ停止を
解除し、命令実行部15からバスBを介してPCレジス
タ11へ後続命令のアドレスが送出される。また命令実
行部15はスレッド終了命令予測部42に対し、「予測
失敗」を通知する。この通知がなされると、スレッド終
了命令予測部42は、スレッド終了条件付スレッド終了
命令の履歴情報を更新する(ステップS64)。以上の
処理が終了すると、プロセッサエレメント10において
は命令の実行が続行される。
【0060】次に、ステップS66における判断結果が
「成功」の場合は、「スレッドを終了させない」という
予測が成功したことを意味し、命令実行部15からスレ
ッド終了命令予測部42へ「予測成功」が通知される。
そしてスレッド終了命令予測部42においてスレッド終
了条件付スレッド終了命令の履歴情報が更新される(ス
テップS68)。
【0061】一方、ステップS66における判断結果が
「失敗」の場合は、「スレッドの終了を行わない」とい
う予測が失敗したことを意味し、後続命令のフェッチを
停止する。また、命令実行部15からスレッド終了命令
予測部42へ「予測失敗」が通知され、スレッド終了条
件付スレッド終了命令の履歴情報が更新される(ステッ
プS60)。以上説明したように、本実施形態において
は、履歴情報を用いてスレッド終了条件付スレッド終了
命令の実行条件を予測するスレッド終了命令予測部4
2,52を設けることにより効率的にスレッドを終了さ
せることができ、ひいては消費電力を削減につながる。
【0062】次に、図8中のスレッド終了命令予測部4
2,52において用いられている履歴情報を用いてスレ
ッドの終了を予測するアルゴリズムについて説明する。
図10は、スレッド終了命令予測部42において用いら
れている履歴情報を用いてスレッドの終了を予測するア
ルゴリズムを説明する状態遷移図である。スレッド終了
命令予測部42内に設けられる履歴バッファに記憶され
た履歴情報は4状態を表すことができる。4状態はそれ
ぞれ、 ・終了しない可能性大(St31) ・終了しない可能性小(St32) ・終了する可能性小(St33) ・終了する可能性大(St34) を示す。
【0063】履歴情報が、「終了しない可能性大」(S
t31)又は「終了しない可能性小」(St32)であ
った場合、予測部34はスレッドが終了しないと予測す
る。一方、履歴情報が「終了する可能性小」(St3
3)又は「終了する可能性大」(St34)であった場
合、予測部34はスレッドが終了すると予測する。
【0064】履歴情報の状態は予測の判定により遷移す
る。履歴情報が「終了しない可能性大」(St31)で
ある場合において、予測が成功した場合は、状態は変化
せず「終了しない可能性大」(St31)となる。一
方、予測が失敗した場合は、「終了しない可能性小」
(St32)に遷移する。また、履歴情報が「終了しな
い可能性小」(St32)である場合において、予測が
成功した場合は「終了しない可能性大」(St31)に
遷移し、予測に失敗した場合は「終了する可能性小」
(St33)に遷移する。
【0065】更に、履歴情報が「終了する可能性小」
(St33)である場合において、予測が成功した場合
は「終了する可能性大」(St34)に遷移し、予測に
失敗した場合には、「終了しない可能性小」(St3
2)に遷移する。履歴情報が「終了する可能性大」(S
t34)である場合において、予測が成功した場合は状
態は遷移せず「終了する可能性大」(St34)であ
る。一方、予測に失敗した場合には「終了する可能性
小」(St33)に遷移する。以上のようなアルゴリズ
ムを用いて予測部34は、入力された履歴情報に基づい
てスレッドの終了を行うか否かを予測する。
【0066】以上、第1実施形態では主としてフォーク
を生成する場合、第2実施形態ではフォークによって生
成されたスレッドを終了する場合を中心に説明したが、
第1実施形態と第2実施形態とを併せもった構成である
ことが本発明の目的を達成するには好ましい。つまり、
フォークの生成及びスレッドの終了を共に予測する手段
を備えることが本発明には好適である。
【0067】尚、本実施形態においては、コンパイル時
に命令中に予めスレッド終了の確率の情報を含ませてお
き、スレッド終了命令予測部42が命令中に予めスレッ
ド終了の確率の情報が含まれる場合には、その確率の情
報に基づいてスレッドの終了を予測するようにしてもよ
い。
【0068】〔第3実施形態〕次に、本発明の第3実施
形態による並列処理装置について詳細に説明する。本発
明の第3実施形態による並列処理装置は、基本的には第
1実施形態と第2実施形態の構成と同様の構成を有する
が、第1実施形態と相違点は図1に示されたフォーク命
令予測部14,24、特に図2に示された予測部34の
動作が異なる。本実施形態においては、第1実施形態の
フォーク命令予測部14,24に代えて分岐等予測部6
0を備え、条件付分岐命令、スペキュレーションフォー
ク命令、スレッド終了条件付スレッド終了命令の何れか
が入力された場合に、履歴情報に基づいてスレッドの生
成、終了を行う。図11は、本発明の第3実施形態によ
る並列処理装置が備える分岐等予測部60の構成を示す
ブロック図である。
【0069】分岐等予測部60は、アドレス計算部3
0、履歴バッファ32、予測部62、及び履歴情報更新
部36からなる。アドレス計算部30、履歴バッファ3
2、及び履歴情報更新部36は、第1実施形態及び第2
実施形態で説明したものと同様である。
【0070】上記構成において、命令デコードにより条
件付分岐命令、スペキュレーションフォーク命令、スレ
ッド終了条件付スレッド終了命令が確認されるとこれら
の命令がアドレス計算部30に入力されつとともに、命
令アドレスが履歴バッファに入力される。命令アドレス
及び命令が分岐等予測部60に入力されると履歴バッフ
ァ32から各命令アドレスに従い履歴情報が出力され
る。また、入力された命令が条件付分岐命令又はスペキ
ュレーションフォーク命令であった場合には命令の種類
に応じて分岐先又はフォーク先の命令アドレスがアドレ
ス計算部30において計算される。
【0071】履歴バッファ32から出力された履歴情報
は履歴情報更新部36及び予測部62へ入力される。予
測部62は、条件付分岐命令又はスペキュレーションフ
ォーク命令の場合には、アドレス計算部30で計算され
たアドレスが予測部62から出力される。また、スレッ
ド終了条件付スレッド終了命令の場合には予測部62か
ら履歴情報に従いスレッド終了信号が出力される。尚、
予測部62においては、第1実施形態及び第2実施形態
と同様に、予測が行われる。
【0072】また、命令実行部(図示省略)からの判定
結果が履歴情報更新部36へ入力されると履歴情報更新
部36は予測した命令の履歴情報を更新して、更新後の
内容を履歴バッファ32に書き込む。以上、述べたよう
に、本実施形態においては、条件付分岐命令、スペキュ
レーション・フォーク命令、スレッド終了条件付スレッ
ド終了命令の予測の一連の動作を一体化することが可能
となる。図12は、履歴バッファ32内の履歴情報を説
明する図表である。履歴情報は2ビットの信号を用いて
4状態を示している。つまり“00”、“01”、“1
0”、“11”の4状態を用いて区別される。条件付分
岐命令、スペキュレーションフォーク命令、実行前の解
析情報を含んだスペキュレーションフォーク命令、スレ
ッド終了条件付スレッド終了命令、実行前の解析情報を
含んだスレッド終了条件付スレッド終了命令の履歴情報
は4状態で示される。分岐等予測機構に入力された命令
が図12に示すいずれかの命令かを解析することによ
り、履歴バッファのエントリを共有することを可能とす
る。
【0073】尚、本実施形態においても、コンパイル時
に命令中に予めフォークの確率、スレッド終了の確率、
又は条件付分岐命令の確率の情報を含ませておき、命令
中に予めこれらの確率の情報が含まれる場合には、その
確率の情報に基づいてフォーク、スレッドの終了、又は
奮起付き条件命令を予測するようにしてもよい。
【0074】
【発明の効果】以上、説明したように、本発明によれ
ば、複数のプロセッサを用いて並列処理を行うプロセッ
サシステムにおいて、複数のプロセッサを起動するため
のフォーク命令を効率的に行うようにしたので、消費電
力の低減を図ることができるという効果がある。また、
本発明によれば、スレッドを終了させる場合のスレッド
終了条件付スレッド終了命令についても、効率的にスレ
ッドを終了させることができるという効果がある。
【図面の簡単な説明】
【図1】 本発明の第1実施形態による並列処理装置の
構成を示すブロック図である。
【図2】 フォーク命令予測部14,24の内部構成を
示すブロック図である。
【図3】 予測部34において用いられている履歴情報
を用いてスレッドのフォークを予測するアルゴリズムを
説明する状態遷移図である。
【図4】 本発明の第1実施形態による並列処理装置の
全体の動作を示すフローチャートである。
【図5】 フォークされる確率が高い場合に、予測部3
4において用いられている履歴情報を用いてスレッドの
フォークを予測するアルゴリズムを説明する状態遷移図
である。
【図6】 フォークされる確率が低い場合に、予測部3
4において用いられている履歴情報を用いてスレッドの
フォークを予測するアルゴリズムを説明する状態遷移図
である。
【図7】 命令中にフォーク条件の確率を予め解析した
情報が含まれる場合の並列処理装置の全体の動作を示す
フローチャートである。
【図8】 本発明の第2実施形態による並列処理装置の
構成を示すブロック図である。
【図9】 本発明の第1実施形態による並列処理装置の
全体の動作を示すフローチャートである。
【図10】 スレッド終了命令予測部42において用い
られている履歴情報を用いてスレッドの終了を予測する
アルゴリズムを説明する状態遷移図である。
【図11】 本発明の第3実施形態による並列処理装置
が備える分岐等予測部60の構成を示すブロック図であ
る。
【図12】 図12は、履歴バッファ32内の履歴情報
を説明する図表である。
【図13】 パイプライン処理を説明するための図であ
る。
【図14】 制御並列処理のモデルを示す図である。
【符号の説明】
10,20,40,50 プロセッサエレメント(処
理手段) 34,62 予測部 32 履歴バッファ(記憶手段) 30 アドレス計算部(生成手
段) 13,23 命令デコード部(解析手
段) 14,24 フォーク命令予測部(予測
手段) 42,52 スレッド終了命令予測部
(予測手段) 15,25 命令実行部(実行手段)

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 複数命令から構成されるスレッドを外部
    のユニット上に生成する(フォークする)処理手段を有
    する並列処理装置において、 前記処理手段は、フォーク条件付フォーク命令のフォー
    ク条件が成立するか否かを、命令を読み込んだ後、当該
    命令の実行前に予測する予測部を具備することを特徴と
    する並列処理装置。
  2. 【請求項2】 外部からフォークされたスレッドを発行
    する手段を有する処理手段を備える並列処理装置におい
    て、 前記処理手段は、フォークされたスレッドを終了させる
    スレッド終了条件付スレッド終了命令のスレッド終了条
    件が成立するか否かを、命令を読み込んだ後、当該命令
    の実行前に予測する予測部を具備することを特徴とする
    並列処理装置。
  3. 【請求項3】 複数命令から構成されるスレッドを外部
    のユニット上に生成するとともに、外部からフォークさ
    れたスレッドを発行する手段を有する処理手段を備える
    並列処理装置において、 前記処理手段は、フォーク条件付フォーク命令のフォー
    ク条件が成立するか否か、及びフォークされたスレッド
    を終了させるスレッド終了条件付スレッド終了命令のス
    レッド終了条件が成立するか否かを、命令を読み込んだ
    後、当該命令の実行前に予測する予測部を具備すること
    を特徴とする並列処理装置。
  4. 【請求項4】 前記予測部は、前記予測を行うととも
    に、入力された命令が条件付分岐命令である場合には、
    当該条件付分岐命令が成立するか否かを予測することを
    特徴とする請求項1乃至請求項3の何れかに記載の並列
    処理装置。
  5. 【請求項5】 前記処理手段を複数設けたことを特徴と
    する請求項1乃至請求項4の何れかに記載の並列処理装
    置。
  6. 【請求項6】 前記予測部は、履歴情報を用いて前記予
    測を行うことを特徴とする請求項1乃至請求項5の何れ
    かに記載の並列処理装置。
  7. 【請求項7】 前記履歴情報は、前記予測の確率に応じ
    て複数の状態を有する情報であることを特徴とする請求
    項6記載の並列処理装置。
  8. 【請求項8】 前記予測部は、前記状態に基づいて前記
    フォーク条件、スレッド終了条件、又は条付件分岐命令
    を予測することを特徴とする請求項7記載の並列処理装
    置。
  9. 【請求項9】 前記フォーク条件付フォーク命令は、フ
    ォーク条件の確率を予め解析した情報を含み、 前記予測部は、前記確率に応じてフォーク条件が成立す
    るか否かを予測することを特徴とする請求項1記載の並
    列処理装置。
  10. 【請求項10】 前記スレッド終了条件付スレッド終了
    命令は、スレッド終了条件の確率を予め解析した情報を
    含み、 前記予測部は、前記確率に応じてスレッド終了条件が成
    立するか否かを予測することを特徴とする請求項2記載
    の並列処理装置。
  11. 【請求項11】 前記フォーク条件付フォーク命令は、
    フォーク条件及びスレッド終了条件の確率を予め解析し
    た情報を含み、 前記予測部は、前記確率に応じてフォーク条件及びスレ
    ッド終了条件が成立するか否かを予測することを特徴と
    する請求項3記載の並列処理装置。
  12. 【請求項12】 前記処理手段は、前記フォーク条件、
    スレッド終了条件、及び条付件分岐命令の内の2以上の
    命令に関する前記履歴情報を共に記憶する記憶手段を具
    備することを特徴とする請求項7記載の並列処理装置。
  13. 【請求項13】 前記処理手段は、前記フォーク条件が
    成立した場合に、生成されるスレッドの先頭命令アドレ
    スを生成するとともに、前記条件付分岐命令が成立した
    場合に、分岐先ターゲットの命令アドレスを生成する生
    成手段を更に具備することを特徴とする請求項4記載の
    並列処理装置。
  14. 【請求項14】 入力される命令を解析する解析手段
    と、 前記解析手段により解析された命令がフォーク条件付フ
    ォーク命令である場合に、当該フォーク条件付フォーク
    命令のフォーク条件が成立するか否かを、前記命令を読
    み込んだ後、当該命令の実行前に予測し、予測結果に応
    じてフォーク命令を外部に出力する予測手段と、 前記命令を実行するとともに、前記フォーク命令の予測
    が正しいか否かの判定を行い、前記フォーク命令が外部
    に出力され、且つ前記予測が誤りであった場合には前記
    フォーク命令によって生成されたスレッドを取り消す命
    令を前記外部に出力する実行手段とを具備することを特
    徴とする並列処理装置。
  15. 【請求項15】 入力される命令を解析する解析手段
    と、 前記解析手段により解析された命令がフォークされたス
    レッドを終了させるスレッド終了条件付スレッド終了命
    令である場合に、当該スレッド終了条件付スレッド終了
    命令のスレッド終了条件が成立するか否かを、前記命令
    を読み込んだ後、当該命令の実行前に予測し、予測結果
    に応じてスレッド終了命令を外部に出力する予測手段
    と、 前記命令を実行するとともに、前記フォーク命令の予測
    が正しいか否かの判定を行い、前記スレッド終了命令が
    外部に出力され、且つ前記予測が誤りであった場合には
    前記スレッド終了命令によって停止されたスレッドの停
    止を解除する命令を前記外部に出力する実行手段とを具
    備することを特徴とする並列処理装置。
  16. 【請求項16】 前記予測手段は、履歴情報を記憶する
    記憶手段と、当該記憶手段に記憶された履歴情報を更新
    する更新手段とを備え、 前記実行手段は、前記判定の結果を前記更新手段に通知
    し、 前記更新手段は、前記判定の結果に応じて履歴情報を更
    新することを特徴とする請求項14又は請求項15記載
    の並列処理装置。
JP11112895A 1999-04-20 1999-04-20 並列処理装置 Pending JP2000305795A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP11112895A JP2000305795A (ja) 1999-04-20 1999-04-20 並列処理装置
US09/553,041 US6687812B1 (en) 1999-04-20 2000-04-20 Parallel processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11112895A JP2000305795A (ja) 1999-04-20 1999-04-20 並列処理装置

Publications (1)

Publication Number Publication Date
JP2000305795A true JP2000305795A (ja) 2000-11-02

Family

ID=14598204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11112895A Pending JP2000305795A (ja) 1999-04-20 1999-04-20 並列処理装置

Country Status (2)

Country Link
US (1) US6687812B1 (ja)
JP (1) JP2000305795A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880447A (zh) * 2003-08-28 2013-01-16 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
JP2013502657A (ja) * 2009-08-19 2013-01-24 クアルコム,インコーポレイテッド 条件付き非ブランチング命令の非実行を予測するための方法および機器

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3702813B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
JP3630118B2 (ja) * 2001-07-12 2005-03-16 日本電気株式会社 スレッド終了方法及び装置並びに並列プロセッサシステム
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
WO2005022381A2 (en) * 2003-08-28 2005-03-10 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7181601B2 (en) * 2003-12-08 2007-02-20 Intel Corporation Method and apparatus for prediction for fork and join instructions in speculative execution
GB2458005B (en) * 2009-02-12 2010-01-20 Gzero Ltd Removing non-essential programs identified by a server from memory
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
US10885089B2 (en) 2015-08-21 2021-01-05 Cortical.Io Ag Methods and systems for identifying a level of similarity between a filtering criterion and a data item within a set of streamed documents
US10394851B2 (en) * 2014-08-07 2019-08-27 Cortical.Io Ag Methods and systems for mapping data items to sparse distributed representations
US9747108B2 (en) 2015-03-27 2017-08-29 Intel Corporation User-level fork and join processors, methods, systems, and instructions
US10572221B2 (en) 2016-10-20 2020-02-25 Cortical.Io Ag Methods and systems for identifying a level of similarity between a plurality of data representations
US10387152B2 (en) * 2017-07-06 2019-08-20 Arm Limited Selecting branch instruction execution paths based on previous branch path performance
US11734332B2 (en) 2020-11-19 2023-08-22 Cortical.Io Ag Methods and systems for reuse of data item fingerprints in generation of semantic maps

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2684993B2 (ja) * 1994-08-10 1997-12-03 日本電気株式会社 プロセッサシステムとその制御方法
JP3231571B2 (ja) 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5717926A (en) * 1995-02-28 1998-02-10 International Business Machines Corporation Efficient forking of a process
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
JP2970553B2 (ja) 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US6304960B1 (en) * 1998-08-06 2001-10-16 Intel Corporation Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions
US6330662B1 (en) * 1999-02-23 2001-12-11 Sun Microsystems, Inc. Apparatus including a fetch unit to include branch history information to increase performance of multi-cylce pipelined branch prediction structures

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880447A (zh) * 2003-08-28 2013-01-16 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
JP2013502657A (ja) * 2009-08-19 2013-01-24 クアルコム,インコーポレイテッド 条件付き非ブランチング命令の非実行を予測するための方法および機器
JP2015130206A (ja) * 2009-08-19 2015-07-16 クアルコム,インコーポレイテッド 条件付き非ブランチング命令の非実行を予測するための方法および機器

Also Published As

Publication number Publication date
US6687812B1 (en) 2004-02-03

Similar Documents

Publication Publication Date Title
JP2000305795A (ja) 並列処理装置
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
KR100491593B1 (ko) 데이터 처리장치
JP2898820B2 (ja) 自己並列化式のコンピュータ・システムおよび方法
US8028152B2 (en) Hierarchical multi-threading processor for executing virtual threads in a time-multiplexed fashion
US8275976B2 (en) Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) Hierarchical register file with operand capture ports
US20160098279A1 (en) Method and apparatus for segmented sequential storage
JP3796124B2 (ja) スレッド間優先度可変プロセッサ
US7870369B1 (en) Abort prioritization in a trace-based processor
US20040073906A1 (en) Processor with speculative multithreading and hardware to support multithreading software {including global registers and busy bit memory elements}
JP3502592B2 (ja) 分岐予測装置
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
JP3716414B2 (ja) 同時マルチスレッド化プロセッサ
US9176741B2 (en) Method and apparatus for segmented sequential storage
JP2003029984A (ja) マルチスレッド実行方法及び並列プロセッサシステム
WO2007027671A2 (en) Scheduling mechanism of a hierarchical processor including multiple parallel clusters
JP2002351657A (ja) マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
JPH05282265A (ja) 自己スケジューリング式並列コンピュータ・システムおよびその方法
JPH05282266A (ja) 自己編成式並列コンピュータ・システムおよびその方法
US7028167B2 (en) Core parallel execution with different optimization characteristics to decrease dynamic execution path
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
JPH1097423A (ja) ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
JP5128382B2 (ja) 複数のロード命令を実行するための方法および装置
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040511