JP2000020326A - プロセッサにおけるレジスタ内容の継承装置 - Google Patents

プロセッサにおけるレジスタ内容の継承装置

Info

Publication number
JP2000020326A
JP2000020326A JP11000819A JP81999A JP2000020326A JP 2000020326 A JP2000020326 A JP 2000020326A JP 11000819 A JP11000819 A JP 11000819A JP 81999 A JP81999 A JP 81999A JP 2000020326 A JP2000020326 A JP 2000020326A
Authority
JP
Japan
Prior art keywords
register
thread
bit
instruction
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11000819A
Other languages
English (en)
Other versions
JP3209205B2 (ja
Inventor
Atsushi Torii
淳 鳥居
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 JP00081999A priority Critical patent/JP3209205B2/ja
Priority to US09/298,978 priority patent/US6330661B1/en
Priority to GB9909773A priority patent/GB2340271B/en
Publication of JP2000020326A publication Critical patent/JP2000020326A/ja
Application granted granted Critical
Publication of JP3209205B2 publication Critical patent/JP3209205B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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)【要約】 【課題】 マルチスレッドプロセッサにおいて、処理を
高速化するためのレジスタ継承を簡単な構成のハードウ
ェアによって実現する。 【解決手段】 各スレッド実行ユニット1−0〜1−3
と物理共有レジスタ2とを用意し、レジスタ写像テーブ
ル11−0〜11−3を用いて各プログラムから参照す
るレジスタ番号を物理共有レジスタ2に位置付ける。レ
ジスタ継承上必要な時に限ってレジスタ写像テーブル1
1−0〜11−3の関係を更新する。レジスタを継承す
る時にはレジスタ写像テーブル11−0〜11−3の内
容をコピーする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプロセッサにおける
レジスタ内容の継承装置に関し、特に複数の命令を同時
に実行するマルチスレッドマイクロプロセッサに関す
る。
【0002】
【従来の技術】プログラムを高速化する技術としてはプ
ログラムを複数の命令流(スレッド)に分割し、そのス
レッドレベルで並列処理を行うという方式が提案されて
おり、スレッドレベル並列処理に対応したプロセッサの
研究も行われている。このスレッドレベルの並列処理方
式は命令単位の並列性ではなく、複数のスレッドの命令
を並列に実行することによって演算装置の利用効率をあ
げて処理速度の向上を図る方法である。
【0003】このスレッドレベルの並列処理は、解こう
とする問題によってスレッド相互間に依存関係がまった
くないものと、依存関係が少なくかつソフトウェアによ
って依存を解消しても性能上問題の少ないものと、依存
関係が多くかつハードウェアによってスレッドレベル並
列処理の実行支援が必要なものとに大別することができ
る。
【0004】スレッド間で依存が全くない場合や、依存
が少なくかつスレッド粒度の大きいものではソフトウェ
アによるスレッド管理のオーバヘッドを並列化による利
得が上回ることができるため、ハードウェア的なサポー
トは最小限度に抑えることができる。
【0005】しかしながら、解こうとする問題の性質に
よってはスレッド間の依存が多くなったり、スレッド自
身の粒度が細かくなるため、何らかのハードウェアサポ
ートが必要になる。
【0006】このような細粒度スレッド処理を高速化す
る際には効率的なスレッド生成と、スレッド間のデータ
の引渡しとが不可欠である。例えば、細粒度スレッドの
並列処理プロセッサの一例としては、”Multisc
alar Processor”(Gurinder
S.Sohi,Scott E. Breach an
d T.N.Vijaykumar,The 22nd
International Symposium
on Computer Architecture,
IEEE Computer Society Pre
ss,1995,pp.414−425)がある。
【0007】マルチスカラプロセッサ(Multisc
alar Processor)では単一のプログラム
をいくつかの基本ブロックの集合である「タスク」に分
割し、この「タスク」を並列に実行処理することができ
るプロセッサで処理している。この「タスク」間でのレ
ジスタ内容の引渡しはタスク生成コンパイラによって生
成されたタスク記述子(task descripto
r)によって指定している。
【0008】タスク記述子では生成される可能性のある
レジスタを明示的に指定する。この指定をクリエイトマ
スク(create mask)と呼ぶ。また、最後に
クリエイトマスクに指定したレジスタを更新する命令に
はフォワードビットを付加する。このように、マルチス
カラプロセッサはコンパイラ解析能力に依存したコード
によって並列実行を行う。
【0009】このマルチスカラプロセッサの構成の一例
を図24に示す。図24において、マルチスカラプロセ
ッサはシーケンサ6と、プロセッシングユニット7−1
〜7−3と、結合ネットワーク8と、データバンク9−
1〜9−3とから構成されている。
【0010】システム内に複数存在するプロセッシング
ユニット7−1〜7−3各々は命令キャッシュ71と、
実行ユニット72と、レジスタファイル73とから構成
されている。また、これらプロセッシングユニット7−
1〜7−3各々に対応してデータバンク9−1〜9−3
も複数存在し、データバンク9−1〜9−3各々はAR
B(Address Resolution Buff
er)92と、データキャッシュ91とから構成されて
いる。
【0011】複数のタスクの同時実行の管理はシーケン
サ6によって行われ、各プロセッシングユニット7−1
〜7−3にタスクを割り付ける。レジスタファイル73
の各レジスタの内容はタスク記述子の指定によってデー
タ生成時点でフォワードされる。
【0012】また、「On−chip Multipr
ocessor指向制御並列アーキテクチャMUSCA
Tの提案」(鳥居,近藤,本村,小長谷,西著.JSP
P97 pp.229−236,May 1997)で
は、1スレッドがフォーク命令によってスレッド生成を
行うのがスレッド生存期間中、高々1回に限るというフ
ォーク1回モデルと、スレッド生成時にレジスタファイ
ルの全てのレジスタの一括継承を行うスレッド実行モデ
ルとが提案されている。
【0013】フォーク1回モデルのイメージを図23に
示す。フォーク1回モデルはスレッド#0〜#3がその
生存期間中、高々1回に限って新しいスレッドを生成
し、スレッド#0〜#3の生成順序にしたがってスレッ
ドを終了させるものである。このモデルの導入によっ
て、スレッド管理の簡単化が実現可能である。
【0014】さらに、特開平10−078880号公報
に開示された技術には、フォーク1回モデルによるレジ
スタ継承方法についての実現方法が数種類記載されてい
る。これらの継承方法のうち、ほとんどの実現方法につ
いてはタイミングの相違があるものの、最終的にはレジ
スタ内容をコピーする方式を採用している。しかしなが
ら、レジスタ内容のコピーはコピーバスによる物量増加
や高速化の妨げになる。
【0015】そのため、上記公報記載の技術ではレジス
タを論理レジスタと物理レジスタとにわけて共有レジス
タを用意し、論理レジスタと物理レジスタとの関係を示
す写像情報のみをコピーすることによって実現する事例
が、命令をプログラム順にしたがわずに非順序に発行す
るout−of−order発行方式として提案されて
いる。
【0016】この方式によるプロセッサの構成例を図2
5に示す。図25においては2スレッド並列実行型プロ
セッサの構成を示しており、スレッド実行ユニット12
1a,121bに共有の物理レジスタファイル126
と、レジスタビジーテーブル129と、レジスタフリー
テーブル130と、スレッド管理ユニット131とから
構成されている。
【0017】スレッド実行ユニット121a,121b
は夫々、命令キャッシュ122a,122bと、命令デ
コーダ123a,123bと、レジスタ写像テーブル1
24a,124bと、命令キュー125a,125b
と、演算ユニット127a,127bと、有効命令順序
バッファ128a,128bとから構成されている。
【0018】このプロセッサではレジスタをソフトウェ
アからアクセスする論理レジスタと、ハードウェア的に
レジスタ内容を保持する物理レジスタとを分離し、その
写像関係をレジスタ写像テーブル124a,124bに
保持している。
【0019】このレジスタ写像テーブル124a,12
4bの詳細な構成を図26に示す。図26において、レ
ジスタ写像テーブル124a,124bは論理レジスタ
0〜31数分の物理レジスタ番号エントリを持ってお
り、論理レジスタ番号を物理レジスタ番号「45」,
「13」,「04」,「21」,……,「53」に変換
する。
【0020】スレッド生成時にはこのレジスタの写像情
報をレジスタ写像テーブル124a,124b間でコピ
ーすることによって、レジスタ内容のコピーを行うこと
なく、レジスタ継承を実現している。
【0021】
【発明が解決しようとする課題】上述した従来のマルチ
スレッドマイクロプロセッサでは、上記公報記載の技
術、レジスタの継承装置におけるin−order発行
型の事例の場合、スレッド起動時またはスレッド終了時
にレジスタ内容のコピーを行う必要がある。
【0022】一方、out−of−order発行型の
事例の場合にはレジスタ内容のコピーが不要となるが、
レジスタの使用中/未使用を示すスレッド実行ユニット
間で共有のレジスタフリーテーブルが必要となり、論理
やデータパスの複雑化と物量増加とが問題となる。ま
た、1命令毎にレジスタリネーミング(レジスタ名前替
え)を伴うので、in−order発行型に適用するに
は無駄が多いという問題がある。
【0023】そこで、本発明の目的は上記の問題点を解
消し、レジスタ内容のコピーを行うことなく、in−o
rder発行型及びout−of−order発行型の
どちらにも高効率でかつ細粒度のスレッドに対しても高
性能なプロセッサにおけるレジスタ内容の継承装置を提
供することにある。
【0024】
【課題を解決するための手段】本発明によるプロセッサ
におけるレジスタ内容の継承装置は、論理的に複数のプ
ログラムカウンタを備え、前記複数のプログラムカウン
タにしたがった複数のスレッドの命令を同時にフェッ
チ、解釈、実行する複数のスレッド実行ユニットからな
るプロセッサにおけるレジスタ内容の継承装置であっ
て、前記複数のスレッド実行ユニット各々の間に共有さ
れかつ複数の物理レジスタからなる共有物理レジスタフ
ァイルと、前記複数のスレッド実行ユニット各々に設け
られかつ前記スレッド実行ユニット内の1つの論理レジ
スタを前記共有物理レジスタファイル中の特定の複数の
物理レジスタのうちの一つとの間に写像関係を定義する
変換テーブルと、前記複数のスレッド実行ユニット各々
の変換テーブルの情報を隣接するスレッド実行ユニット
にコピーする手段とを備え、前記1つの論理レジスタと
の間で前記写像関係が定義される複数の物理レジスタ毎
にグループ化しかつそのグループ内の位置を示す情報を
前記変換テーブルの情報に付加して前記写像関係を定義
している。
【0025】すなわち、本発明のプロセッサにおけるレ
ジスタ内容の継承装置は、上記目的を達成するために、
論理レジスタと共有物理レジスタファイルとの割り付け
関係に制約を設けている。
【0026】これは共有物理レジスタファイルを論理レ
ジスタ数分のグループに分割し、ある論理レジスタを共
有レジスタファイルの一つのグループに属する物理レジ
スタにしか、写像関係を割り付けないという制約であ
る。
【0027】写像関係は現在の論理レジスタが物理レジ
スタファイルグループ内のどこに配置されるかというポ
インタ情報となり、レジスタ継承時にはこのポインタを
コピーし、継承後のスレッドが当該レジスタを更新する
時に高々1回に限って写像ポインタを進めることによっ
て、レジスタのスレッド生成時継承の生成後の独立操作
を実現している。
【0028】これによって、レジスタ内容のコピーを行
うことなく、in−order発行型及びout−of
−order発行型のどちらにも高効率でかつ細粒度の
スレッドに対しても高性能とすることが可能となる。
【0029】
【発明の実施の形態】次に、本発明の実施例について図
面を参照して説明する。図1は本発明の第1の実施例に
よるプロセッサにおけるレジスタ内容の継承装置の基本
的な概念を示す図である。図において、スレッド実行ユ
ニット(#0)1−0上のプログラムから使用される論
理レジスタ10−0、スレッド実行ユニット(#1)1
−1上のプログラムから使用される論理レジスタ10−
1に対して、物理共有レジスタファイル2内のあるエン
トリを割り付け、この割り付け写像情報をスレッド実行
ユニット(#0)1−0のレジスタ写像テーブル(#
0)11−0とスレッド実行ユニット(#1)1−1の
レジスタ写像テーブル(#1)11−1との間でコピー
することによって、レジスタの実値をコピーすることな
く、レジスタのスレッド継承を実現するものである。
【0030】図2は本発明の第1の実施例によるプロセ
ッサにおけるレジスタ内容の継承装置の構成を示すブロ
ック図である。図2においては4スレッド並列実行型プ
ロセッサの構成を示している。
【0031】このプロセッサはスレッド管理ユニット3
と、4組のスレッド実行ユニット(#0〜#3)1−0
〜1−3と、物理共有レジスタファイル2とから構成さ
れている。
【0032】スレッド実行ユニット1−0〜1−3各々
は命令キャッシュ(#0〜#3)12−0〜12−3
と、命令デコーダ(#0〜#3)13−0〜13−3
と、レジスタ写像テーブル(#0〜#3)11−0〜1
1−3と、演算ユニット(#0〜#3)14−0〜14
−3とから構成されている。
【0033】また、レジスタ写像テーブル11−0〜1
1−3各々は写像情報転送バス100によってリング状
をなすように、隣接するレジスタ写像テーブル11−0
〜11−3に接続されている。プロセッサとしては上記
の構成のほかにロードストアユニットやデータキャッシ
ュメモリ、及び外部インタフェース等が必要になるが、
本発明に直接関係ないのでその図示及び説明を省略す
る。
【0034】図3は図2のスレッド実行ユニット1−0
〜1−3各々のパイプラインステージを示す図である。
図において、スレッド実行ユニット1−0〜1−3各々
のパイプラインステージにおいては命令の実行が、命令
フェッチステージ31、命令デコードステージ32、レ
ジスタ変換ステージ33、実行ステージ34、レジスタ
書き戻しステージ35の5段のステージを経て完了す
る。
【0035】図4は図2の物理共有レジスタファイル2
の詳細な構成を示す図である。図において、物理レジス
タファイル2は論理レジスタ番号22毎にスレッド実行
ユニット1−0〜1−3の数の2倍の物理レジスタ21
から構成される。したがって、本実施例では1論理レジ
スタに対して8個の物理レジスタ21が対応付けられる
ことになる。
【0036】各物理レジスタ21はグループ選択ビット
23のA,Bの2つのグループ24,25に分けられ、
夫々スレッド実行ユニット1−0〜1−3の数分の物理
拡張ビット26を持つ。
【0037】図5は図4の物理レジスタ21のフォーマ
ットを示す図である。図において、物理レジスタ21は
32本の論理レジスタセットをもつ命令セットの場合、
物理拡張ビット26と、グループ選択ビット23と、論
理レジスタ番号22とからなる。その場合、論理レジス
タセット数が変化すれば論理レジスタ番号22を示すビ
ット数が変化し、スレッド実行ユニット1−0〜1−3
の数が変化すれば物理拡張ビット26の値が変化する。
【0038】図6は図2のレジスタ写像テーブル11の
詳細な構成を示す図である。図において、レジスタ写像
テーブル11は論理レジスタ番号22毎にグループ選択
ビット41によって選択されるA,Bのグループに分け
られ、夫々物理拡張ビット43と、変更ビット44と、
書き戻しビット45と、継承時グループ選択ビット42
とから構成されている。
【0039】グループ選択ビット41は当該スレッド実
行ユニット1−0〜1−3が参照する共有物理レジスタ
ファイル2のグループを示しており、物理拡張ビット4
3によってその中のどの物理レジスタ21を参照するの
かを示している。
【0040】変更ビット44は当該スレッド実行ユニッ
ト1−0〜1−3によって、グループ選択ビット41に
よって選択されている物理レジスタ21を更新する命令
を1回以上デコードしたか否かを示す。
【0041】書き戻しビット45は物理レジスタ21を
更新した命令が1個以上実際に完了したか否かを示す。
継承時グループ選択ビット42はレジスタを当該スレッ
ド実行ユニット1−0〜1−3から別のスレッド実行ユ
ニット1−0〜1−3に継承した時点でのグループ選択
ビット41の内容をコピーしたものである。
【0042】図7は図2のレジスタ写像テーブル11の
1エントリの詳細な構成を示す図である。図7におい
て、レジスタ写像テーブル11は図6に示すビット以外
に、加算器51a,51bと、マルチプレクサ52a〜
52dと、書込み動作論理53とが設けられている。
【0043】グループ選択ビット41はフォーク1回モ
デルにおけるフォーク、すなわちスレッド生成が行われ
た後に当該スレッド実行ユニット1−0〜1−3の命令
によって1回目にレジスタ値を変更した場合にセットさ
れる。
【0044】フォーク後の1回目の書換えか否かの判断
はグループ選択ビット41と継承時グループ選択ビット
42との値の排他的論理和をとって行う。継承時グルー
プ選択ビット42はスレッド生成時のグループ選択ビッ
ト41のコピーを保持しているので、この判断を行うこ
とができる。
【0045】また、変更ビット44a,44bは自スレ
ッドの起動時にはグループ選択ビット41で選択されて
いるグループ側がリセットされ、非選択側がセットされ
る。その後、当該レジスタ値を変更する命令を命令デコ
ーダ13から受け取った際に、グループ選択ビット41
で選択されている側の変更ビット44a,44bがセッ
トされる。
【0046】書き戻しビット45a,45bは自スレッ
ドの起動時にグループ選択ビット41によって選択側が
リセット、非選択側がセットされており、リセットされ
ている書き戻しビット45a,45bは演算ユニット1
4によって演算された実際の計算結果が物理共有レジス
タファイル2に書き戻される際にセットされる。
【0047】これによって、以下の様な参照方針で、論
理レジスタ10に対して物理レジスタ番号に拡張を行
う。まず、読出し参照時であるが、マルチプレクサ52
a,52bは変更ビット44a,44bがリセットされ
ている時に物理拡張ビット43a,43bの値を直接出
力し、セットされている時に物理拡張ビット43a,4
3bの値に加算器51a,51bで1を加算した値を出
力する。
【0048】この物理拡張ビット43a,43bの値に
1を加算することで、非選択側が用いる物理共有レジス
タファイル2においてレジスタの競合の発生を防止して
いる。このレジスタの競合の発生の防止は非選択側が自
ユニットでの変更時に用いられるため、前段のユニット
と自ユニットとが、あるいは自ユニットと後段のユニッ
トとが同じレジスタを使用しないようにすることで実現
することができる。
【0049】マルチプレクサ52cはグループ選択ビッ
ト41によって、AグループもしくはBグループのどち
らかの値を読出して参照用の物理拡張ビット26として
出力するかを選択する。
【0050】一方、書込み参照用の物理拡張ビット26
はAグループもしくはBグループのどちらを選択するに
しても、常に物理拡張ビット43a,43bに1を加算
した値を出力する必要がある。
【0051】したがって、マルチプレクサ52dに対す
る入力はAグループもしくはBグループのどちらも物理
拡張ビット43a,43bから加算器51a,51bを
通った値を用いる。AグループもしくはBグループの選
択は基本的にグループ選択ビット41の値にしたがう
が、上記のグループ選択ビット41を切り替える際には
先行して切り替え先の方を選択する。
【0052】この制御は書込み動作論理53によって行
われる。また、物理拡張ビット43a,43bは加算に
よって用意された桁が溢れると、0に戻される。さら
に、スレッド生成時にはグループ選択ビット41及びマ
ルチプレクサ52a,52bから出力される物理拡張ビ
ット43a,43bをスレッド生成先のレジスタ写像テ
ーブル11を介してコピーする。
【0053】以下、スレッド起動後の通常のレジスタ参
照動作、スレッド生成時の動作、スレッド生成後のレジ
スタ参照動作について、夫々時間順序を追って説明す
る。以下の説明は主に図3におけるレジスタ変換ステー
ジ33によって行われる動作である。
【0054】図8は本発明の第1の実施例における通常
の動作時のグループ選択ビット41、物理拡張ビット4
3a,43b、変更ビット44a,44bの値の遷移と
それによってレジスタ継承が実現できる仕組みを説明す
るための図である。尚、ここでは書き戻しビット45
a,45bの動作については省略しており、この書き戻
しビット45a,45bの説明は後述する。
【0055】さて、スレッド実行ユニット(#0)1−
0で新規スレッドが起動した(イ)の時点では、グルー
プ選択ビット41は「A」となっており、選択側の
「A」の物理拡張ビット43aは0、変更ビット44a
は0となっている。
【0056】非選択側の「B」の物理拡張ビット43b
は0であるが、変更ビット44bは非選択側のため、予
め1がセットされている。この場合、論理レジスタ10
は「A」の0に位置する物理レジスタ21を読出して参
照する。
【0057】書込み参照が生じた際、すなわちレジスタ
変更(ロ)の時点では、「A」の変更ビット44aが1
にセットされる。変更は「A」の1に位置する物理レジ
スタ21に対して行われ、その後の読出し参照も同一レ
ジスタに対して行われる。その後、同一レジスタに対す
る書込み参照が生じても、グループ選択ビット41や変
更ビット44a,44bは変更しない。
【0058】次に、新たにスレッドを生成する(ハ)時
点では、グループ選択ビット41は「A」であるので
「A」を、変更ビット44a,44bは「A」,「B」
のいずれにもセットされているので、物理拡張ビット4
3a,43bの値に1を加算した値をスレッド実行ユニ
ット(#1)1−1のレジスタ写像テーブル11−1に
対して送信する。
【0059】スレッド実行ユニット(#0)1−0がス
レッド生成後に初めてレジスタ書込み参照を行う際、す
なわち(ニ)の時点ではグループ選択ビット41を
「A」から「B」に変更する。変更は「B」の1に位置
する物理レジスタ21に対して行われ、その後の読出し
参照も同一レジスタに対して行われる。
【0060】その後、同一レジスタに対する書込み参照
が生じても、グループ選択ビット41や変更ビット44
a,44bは変更しない。これによって、スレッド実行
ユニット(#1)1−1で参照する可能性のあるレジス
タ値は「A」の0の位置で保持されたままとなる。
【0061】スレッド実行手段(#1)1−1ではレジ
スタの書込み参照をおこすことなく、(ホ)の時点で新
スレッドを生成している。したがって、グループ選択側
の「A」の物理拡張ビット43aはそのままの値を送信
している。したがって、スレッド実行手段(#0)1−
0で実行しているスレッドのレジスタ内容はそのままス
レッド実行手段(#2)1−2で実行されるスレッドに
継承される。また、(ヘ)の時点でレジスタ変更が行わ
れた際にはフォーク後であるので、グループ選択ビット
41を「A」から「B」にする。
【0062】図9は本発明の第1の実施例における投機
的なスレッド生成を伴う場合のグループ選択ビット4
1、物理拡張ビット43a,43b、変更ビット44
a,44bの値の遷移とそれによってレジスタ継承が実
現できる仕組みを説明するための図である。図9で示し
た動作のうち、(イ)〜(ニ)は図8の(イ)〜(ニ)
の動作と同一である。
【0063】(ホ)の時点で、スレッド実行ユニット
(#0)1−0は(ハ)の時点で生成したスレッドの生
成を取消す。さらに、(ヘ)の時点で再びスレッドを生
成する。グループ選択ビット41は「B」であるので
「B」を、変更ビット44a,44bは「A」,「B」
のどちらともセットされているので、物理拡張ビット4
3a,43bの値に1を加算した値をスレッド実行ユニ
ット(#1)1−1のレジスタ写像テーブル11に対し
て送信する。
【0064】これによって、(ニ)の時点で変更された
値がスレッド実行ユニット(#1)1−1で実行される
スレッドに継承される。(ト)の時点で、再びレジスタ
が変更された場合にはグループ選択ビット41を再び
「A」に戻す。
【0065】図10は図3に示すパイプラインの動作に
おける写像情報のコピーのタイミングを示す図である。
図において、レジスタ写像情報のコピーはスレッド生成
命令がレジスタ変換ステージ(図10ではサイクル5)
においてスレッド実行ユニット(#0)1−0からレジ
スタ継承情報が送信され、次のサイクル(図10ではサ
イクル6)にスレッド実行ユニット(#1)1−1のレ
ジスタ写像テーブル11に書込まれる。尚、サイクル5
ではスレッド実行ユニット(#0)−0のレジスタ写像
テーブル11のグループ選択ビット41の内容を同一レ
ジスタ写像テーブル11内の継承時グループ選択ビット
42に合わせてコピーする。
【0066】通常命令Eはサイクル7において、このレ
ジスタ写像テーブル11を参照して継承したレジスタを
アクセスする。尚、スレッド生成先のスレッド実行ユニ
ット1−0〜1−3が他のスレッドを実行中で、スレッ
ドの新規生成要求を受付けられない場合にはその後に受
付け可能になった時点で、継承時グループ選択ビット4
2の値をグループ選択ビット41の代わりに送信すれば
良い。
【0067】最後に書き戻しビット45a,45bにつ
いて説明する。書き戻しビット45a,45bはレジス
タを書込み参照する命令が、何らかの要因(例えば、条
件分岐命令の予測の失敗等)で取り消された時に、変更
ビット44a,44bを正しい値に復帰するために用い
られる。
【0068】書き戻しビット45a,45bは自スレッ
ドの起動時にグループ選択ビット41によって選択側が
リセット、非選択側がセットされており、リセットされ
ている書き戻しビット45a,45bは演算ユニット1
4によって演算された実際の計算結果が物理共有レジス
タファイル2に書き戻される際にセットされる。
【0069】つまり、変更ビット44a,44bがセッ
トされており、かつ書き戻しビット45a,45bがセ
ットされていないということは、まだ変更ビット44
a,44bをセットした命令が完了していないことを意
味する。
【0070】したがって、この段階で命令取消しの事象
が発生した場合には、書き戻しビット45a,45bの
内容を変更ビット44a,44bにコピーして初期値に
戻すことによって、命令取消しの際にレジスタ写像テー
ブル11を正しい値に復帰させる。
【0071】上述した方法によって、レジスタの実内容
のコピーを行うことなく、また共有資源を共有物理レジ
スタファイル2のみとして、レジスタの継承を実現する
ことが可能となる。
【0072】各々の物理拡張ビット26は継承の際に高
々1が加算されるだけであり、スレッド実行ユニット1
−0〜1−3の数分のレジスタグループを2組持てばこ
れらの機構は実現可能である。
【0073】図11は本発明の第2の実施例によるレジ
スタ写像テーブルの詳細な構成を示す図である。図にお
いて、本発明の第2の実施例はレジスタ写像テーブル1
1の構成が異なっている以外は、図1〜図5に示す本発
明の第1の実施例と同様である。
【0074】図11において、レジスタ写像テーブル1
1は論理レジスタ番号22毎にグループ選択ビット41
によって選択されるA,Bのグループに分けられ、A,
B各々のグループは物理拡張ビット43と、変更ビット
44と、書き戻しビット45とからなる。また、レジス
タ写像テーブル11は継承時グループ選択ビット42
と、グループ選択変更命令未完了ビット46とを備えて
いる。
【0075】グループ選択ビット41は当該スレッド実
行ユニット1の参照する共有物理レジスタファイル2の
グループを示しており、物理拡張ビット43と合わせ
て、論理レジスタ番号22によってどの物理レジスタ2
1に割付けられているかを決定することができる。
【0076】変更ビット44は当該スレッド実行ユニッ
ト1−0〜1−3によって、グループ選択ビット41に
よって選択されている物理レジスタ21を更新する命令
を1回以上デコードしたか否かを示す。
【0077】書き戻しビット45は物理レジスタ21を
更新した命令が1個以上実際に完了したか否かを示す。
継承時グループ選択ビット42はレジスタを当該スレッ
ド実行ユニット1−0〜1−3から別のスレッド実行ユ
ニット1−0〜1−3に継承した時点でのグループ選択
ビット41の内容をコピーしたものである。
【0078】図12は図11のレジスタ写像テーブル1
1の1エントリの詳細な構成を示す図である。図12に
おいて、レジスタ写像テーブル11は図11示すビット
以外に、加算器51a,51bと、マルチプレクサ52
a〜52fと、書き込み動作論理53とが設けられてい
る。
【0079】グループ選択ビット41はフォーク1回モ
デルにおけるフォーク、すなわちスレッド生成が行われ
た後に当該スレッド実行ユニット1−0〜1−3の命令
によって1回目にレジスタ値を書込みによって変更する
命令がレジスタ変換ステージ33を通過した場合に、変
更前の値がセットされている場合(「B」側を示す)に
はリセット(「A」側を示す)、変更前の値がリセット
されている場合(「A」側を示す)にはセット(「B」
側を示す)される。
【0080】グループ選択ビット41と継承時グループ
選択ビット42との値が同一の場合に、フォーク後の1
回目の書換えであると検出される。継承時グループ選択
ビット42はスレッド生成時のグループ選択ビット41
のコピーを保持しているので、この判断を行うことがで
きる。
【0081】グループ選択変更命令未完了ビット46は
グループ選択ビット41を変更する命令がレジスタ変換
ステージ33を通過した場合にセットされ、その命令が
レジスタ書き戻しステージ35に至った時点でリセット
される。
【0082】変更ビット44a,44bは自スレッドの
起動時にはリセットされる。その後、当該レジスタ値を
変更する命令すなわち書込みを命令デコーダ13から受
取り、レジスタ変換ステージ33に至った際に、グルー
プ選択ビット41で選択されいてる側の変更ビット44
a,44bがセットされる。
【0083】書き戻しビット45a,45bは自スレッ
ドの起動時にリセットされており、演算ユニット14に
よって演算された実際の計算結果が物理共有レジスタフ
ァイル2に書き戻される際、すなわちレジスタ書き戻し
ステージ35に至った時点でセットされる。
【0084】これによって、以下の様な方針で、論理レ
ジスタ10に対して物理レジスタ番号に拡張を行う。ま
ず、読出し参照時であるが、マルチプレクサ52a,5
2bは変更ビット44a,44bがリセットされている
時に物理拡張ビット43a,43bの値を直接出力し、
セットされている時には物理拡張ビット43a,43b
の値に加算器51a,51bで1を加算した値を選択す
る。
【0085】これらの値は、マルチプレクサ51cにお
いてグループ選択ビット41の示す値によってAグルー
プもしくはBグループの値が選択され、読出し参照用の
物理拡張ビット26として出力される。
【0086】書込みレジスタ変更時に、物理拡張ビット
26としてはAグループ、Bグループのどちらを選択す
るにしても、常に物理拡張ビット43a,43bの値に
加算器51a,51bで1を加算した値が出力される。
そのため、マルチプレクサ52dに対する入力はAグル
ープ、Bグループどちらも物理拡張ビット43a,43
bから加算器51a,51bを通った値が用いられる。
【0087】Aグループ、Bグループの選択はグループ
選択ビット41の値にしたがう。上記のグループ選択ビ
ット41の書換えを伴うレジスタ変更の場合には、書換
え後のグループを選択する。
【0088】この制御は書込み動作論理53によって行
われる。また、物理拡張ビット43a,43bは加算に
よって用意された桁が溢れると0に戻される。さらに、
スレッド生成時にはスレッド生成先の写像テーブル11
に値をセットする必要がある。この値はスレッド生成元
の写像テーブル11の値に基づいて決定される。
【0089】まず、グループ選択ビット41はスレッド
生成元の写像テーブル11のグループ選択ビット41と
同じ値がセットされる。次に、物理拡張ビット43a,
43bはスレッド生成元の写像テーブル11のグループ
選択ビット41で選択されているグループの物理拡張ビ
ット43a,43bに対応する変更ビット44a,44
bがセットされている場合に物理拡張ビット43a,4
3bに1を加算した値、セットされていない場合に物理
拡張ビット43a,43bとなる。
【0090】一方、スレッド生成元の写像テーブル11
のグループ選択ビット41で選択されていないグループ
の物理拡張ビット43a,43bでは常に物理拡張ビッ
ト43a,43bに1を加算した値をセットする。変更
ビット44a,44b、書き戻しビット45a,45
b、グループ選択変更命令未完了ビット46、継承時グ
ループ選択ビット42はリセットされる。同時に、スレ
ッド生成元の写像テーブルではグループ選択ビット41
の値を継承時グループ選択ビット42にコピーする。
【0091】このように、書込みによるレジスタ変更後
は常に物理拡張ビット43a,43bに1を加算した値
を用いることによって、スレッド実行ユニット1−0〜
1−3で用いる論理レジスタ番号22がレジスタの継承
時には物理共有レジスタファイル2において同一の物理
拡張ビット26となり、変更が生じた時には異なった物
理拡張ビット26となり、スレッド実行ユニット1−0
〜1−3で論理的に独立した論理レジスタ10−0,1
0−1とレジスタ継承を実現することができる。
【0092】以下、スレッド起動後の通常のレジスタ参
照動作、スレッド生成時の動作、スレッド生成後のレジ
スタ参照動作について、夫々時間順序を追って説明す
る。以下の説明は主に図3におけるレジスタ変換ステー
ジ33によって行われる動作である。
【0093】図13は本発明の第2の実施例における通
常の動作時のグループ選択ビット41、物理拡張ビット
43a,43b、変更ビット44a,44bの値の遷移
とそれによってレジスタ継承が実現できる仕組みを説明
するための図である。尚、ここでは書き戻しビット45
a,45b及びグループ選択変更命令未完了ビット46
の説明は省略しており、これら書き戻しビット45a,
45b及びグループ選択変更命令未完了ビット46の役
割の説明は後述する。
【0094】さて、スレッド実行ユニット(#0)1−
0で新規スレッドが起動した(イ)の時点では、グルー
プ選択ビット41は「A」となっており、選択側の
「A」の物理拡張ビット43aは0、変更ビット44a
は0、非選択側の「B」の物理拡張ビット43bは0、
変更ビット44bも0となっている。
【0095】この場合、レジスタを読出す際には「A」
の0に位置する物理レジスタ21を参照する。レジスタ
書込みによる変更を行う命令を発行してレジスタ変換ス
テージ33に達した際、すなわちレジスタ変更(ロ)の
時点では、「A」の変更ビット43aが1にセットされ
る。
【0096】変更は「A」の1に位置する物理レジスタ
21に対して行われ、その後の読出し参照も同一レジス
タに対して行われる。その後、同一レジスタに対する書
込み参照が生じても、グループ選択ビット41、変更ビ
ット43aは変更しない。
【0097】次に、新たにスレッドを生成する(ハ)の
時点では、グループ選択ビット41の値(ここでは
「A」)と、変更ビット44aは選択側の「A」がセッ
トされているので、物理拡張ビット43aに1を加算し
た値(ここでは1)、非選択側は変更ビット44bに関
係なく物理拡張ビット43bの値を1加算した値(ここ
では1)をスレッド実行ユニット(#1)1−1のレジ
スタ写像テーブル11に対して送信する。
【0098】スレッド実行ユニット(#0)1−0がス
レッド生成後に初めてレジスタ書込み参照を行う命令を
発行する際、すなわち(ニ)の時点ではグループ選択ビ
ット41の値を「A」から「B」に変更し、変更ビット
44bをセットする。
【0099】変更は「B」の1に位置する物理レジスタ
21に対して行われ、その後の読出し参照も同一レジス
タに対して行われる。その後、同一レジスタに対する書
込み参照が生じても、グループ選択ビット41、変更ビ
ット44bは変更しない。これによって、スレッド実行
ユニット(#1)1−1で参照する可能性の有るレジス
タ値は「A」の0の位置で保持されたままとなる。
【0100】スレッド実行ユニット(#1)1−1では
レジスタの書込み参照をおこすことなく、(ホ)の時点
で新スレッドを生成している。したがって、グループ選
択側の「A」の物理拡張ビット43aはそのままの値を
送信している。よって、スレッド実行ユニット(#0)
1−0で実行しているスレッドのレジスタ内容がそのま
まスレッド実行ユニット(#2)1−2で実行されるス
レッドに継承される。また、(ヘ)の時点でレジスタ変
更が行われた際にはフォーク後であるので、グループ選
択ビット41の値を「A」から「B」にし、変更ビット
44bをセットする。
【0101】図14は本発明の第2の実施例における投
機的なスレッド生成を伴う場合のグループ選択ビット4
1、物理拡張ビット43a,43b、変更ビット44
a,44bの値の遷移とそれによってレジスタ継承が実
現できる仕組みを説明するための図である。図14で示
した動作のうち、(イ)〜(ニ)は図13の(イ)〜
(ニ)の動作と同一である。
【0102】(ホ)の時点で、スレッド実行ユニット
(#0)1−0は(ハ)によって生成したスレッドの生
成を取消す。さらに、(ヘ)の時点で再びスレッドを生
成する。この時、グループ選択ビット41は「B」であ
るので「B」を、選択側「B」の変更ビット44bはセ
ットされているので、物理拡張ビット43bの値に1を
加算した値を、非選択側Aは変更ビット44aの値に関
わらず、物理拡張ビット43aの値に1を加算した値を
夫々スレッド実行ユニット(#1)1−1のレジスタ写
像テーブル11に対して送信する。
【0103】これによって、(ニ)の時点で変更された
値がスレッド実行ユニット(#1)1−1で実行される
スレッドに継承される。(ト)の時点で、スレッド実行
ユニット(#0)1−0が再びレジスタを変更する場合
にはグループ選択ビット41を再び「A」に戻す。
【0104】最後に書き戻しビット45a,45b、グ
ループ選択変更命令未完了ビット46の役割について説
明する。書き戻しビット45a,45b、グループ選択
変更命令未完了ビット46はレジスタを書込み参照する
命令が、何らかの要因(例えば、条件分岐命令の予測の
失敗等)で取消された時に、変更ビット44a,44
b,グループ選択ビット41を取消された書込み参照命
令実行前の状態に復帰させるために用いられる。
【0105】書き戻しビット45a,45bは自スレッ
ドの起動時にリセットされている。書き戻しビット45
a,45bは演算ユニット14によって演算された実際
の計算結果が物理共有レジスタファイル2に書き戻され
る際、すなわち図3におけるレジスタ書き戻しステージ
35でセットされる。
【0106】一方、変更ビット44a,44bはレジス
タ書込み命令の発行時、すなわち図3におけるレジスタ
変換ステージ33にセットされる。これらのことから、
変更ビット44a,44bがセットされており、かつ書
き戻しビット45a,45bがセットされていないとい
う状態は変更ビット44a,44bをセットした命令が
完了していないことを意味する。
【0107】したがって、この段階で命令取消しの事象
が発生した場合には、書き戻しビット45a,45bの
内容を変更ビット44a,44bにコピーすることによ
って、取消し命令の書込み参照前の値に戻すことが可能
になる。
【0108】グループ選択変更命令未完了ビット46は
スレッド起動時にリセットされており、グループ選択ビ
ット41を変更する命令がレジスタ変換ステージ33に
達した時にセットされ、レジスタ書き戻しステージ35
に達した時にリセットされる。すなわち、グループ選択
変更命令未完了ビット46がセットされている間は、グ
ループ選択ビット41を変更する命令が完了していない
ことになる。
【0109】この状態で命令の取消しが生じた場合に
は、セットされているグループ選択変更命令未完了ビッ
ト46に対応してグループ選択ビット41を反転させ
る。その後、グループ選択変更命令未完了ビット46を
リセットする。これらの処理によって、命令取消しの際
にレジスタ写像マップ11を命令実行前の状態に復帰す
ることが可能となる。
【0110】以上説明した方法によって、レジスタの実
内容のコピーを行うことなく、また共有資源を共有物理
レジスタファイル2のみとして、レジスタの継承を実現
することが可能となる。
【0111】各々の物理拡張ビット26は継承の際に高
々1が加算されるだけであり、スレッド実行ユニット1
−0〜1−3の数に相当した数のレジスタグループを2
組持てば、これらの機構が実現可能であることを示して
いる。
【0112】次に、本発明の第3の実施例について説明
する。本発明の第3の実施例は上述した本発明の第1の
実施例の形態に準じているが、それらの相違点について
以下に説明する。
【0113】図15は本発明の第3の実施例によるプロ
セッサにおけるレジスタ内容の継承装置の構成を示すブ
ロック図である。図15においては4スレッド並列実行
型プロセッサの構成を示している。
【0114】本発明の第3の実施例によるプロセッサは
本発明の一実施例のレジスタ写像テーブル(#0〜#
3)11−0〜11−3の代わりにレジスタ写像テーブ
ル(#0〜#3)63−0〜63−3を設け、命令発行
キュー61及びレジスタ有効テーブル62を追加した以
外は本発明の一実施例によるプロセッサと同様の構成と
なっており、同一構成要素には同一符号を付してある。
【0115】すなわち、本発明の第3の実施例によるプ
ロセッサはスレッド管理ユニット3と、4組のスレッド
実行ユニット(#0〜#3)1−0〜1−3と、物理共
有レジスタファイル2とから構成されている。
【0116】スレッド実行ユニット1−0〜1−3各々
は命令キャッシュ(#0〜#3)12−0〜12−3
と、命令デコーダ(#0〜#3)13−0〜13−3
と、レジスタ写像テーブル(#0〜#3)63−0〜6
3−3と、命令発行キュー(#0〜#3)61−0〜6
1−3と、レジスタ有効テーブル62−0〜62−3
と、演算ユニット(#0〜#3)14−0〜14−3と
から構成されている。
【0117】また、レジスタ写像テーブル63−0〜6
3−3各々は写像情報転送バス100によってリング状
をなすように、隣接するレジスタ写像テーブルに接続さ
れている。プロセッサとしては上記の構成のほかにロー
ドストアユニットやデータキャッシュメモリ、及び外部
インタフェース等が必要になるが、本発明に直接関係な
いのでその図示及び説明を省略する。
【0118】図16は図15のレジスタ写像テーブル6
3の詳細な構成を示す図である。図において、レジスタ
写像テーブル63は追い書きビット64を追加した以外
は図6に示すレジスタ写像テーブル11と同様の構成と
なっており、同一構成要素には同一符号を付してある。
【0119】図17は図15のレジスタ有効テーブル6
2の詳細な構成を示す図である。図において、レジスタ
有効テーブル62は各論理レジスタ番号r0〜r31毎
にレジスタ値の有効/無効を示す有効ビット66を備え
ている。
【0120】このレジスタ有効テーブル62は他のスレ
ッド実行ユニット1−0〜1−3で実行しているスレッ
ドから継承したレジスタの値が確定して有効であるか、
まだ値が確定しておらず無効であるかを示すものであ
る。
【0121】図18は図15のスレッド実行ユニット1
−0〜1−3各々のパイプラインステージを示す図であ
る。図において、スレッド実行ユニット1−0〜1−3
各々のパイプラインステージにおいては命令の実行が、
命令フェッチステージ31、命令デコードステージ3
2、レジスタ変換ステージ33、命令発行キュー61、
命令発行ステージ65、実行ステージ34、レジスタ書
き戻しステージ35の各ステージを経て完了する。尚、
命令発行ステージ65から後は非順序で実行される。
【0122】命令発行キュー61は命令発行を非プログ
ラム順序(out−of−order)に行うため、命
令使用するのレジスタ値が有効になるまで待ち合わせ、
有効になった命令から発行するために待機するものであ
る。
【0123】図19は図18に示すパイプラインの動作
における写像情報のコピーのタイミングを示す図であ
る。図においては命令発行キュー61を用いることによ
って、図10に示したようなプログラム順序でのレジス
タの書き戻しが行われず、非順序での書き戻しが行われ
る可能性がある。
【0124】したがって、新スレッドが起動されたスレ
ッド実行ユニット1−0〜1−3側では継承したレジス
タ値が起動側のスレッド実行ユニット1−0〜1−3側
で書き戻しが完了しない限り、読出し参照することがで
きない。この完了のチェックを行うためにレジスタ有効
テーブル62を用いる。
【0125】レジスタ写像テーブル63においては読出
し参照を行う際に、グループ選択ビット41で選択され
ているグループの変更ビット44a,44bがセットさ
れていなければ、命令発行時に有効ビット66をチェッ
クする必要がある。変更ビット44a,44bがセット
されていなければ、チェックの必要はない。
【0126】図20は図17に示すレジスタ有効テーブ
ル62における有効/無効の決定論理を示す図である。
これら図17〜図20を参照して、レジスタ有効テーブ
ル62のセット/リセットの方法について説明する。
【0127】レジスタ有効テーブル62−0〜62−3
の各有効ビット66は隣接するスレッド実行ユニット1
−0〜1−3のレジスタ写像テーブル63−0〜63−
3に接続されている。レジスタ有効テーブル62−0〜
62−3はスレッド生成要求側のレジスタ写像テーブル
63−0〜63−3からのレジスタの有効/無効情報を
各サイクル毎に受取り、さらに逆に隣接するレジスタ写
像テーブル63−0〜63−3に対して同じ情報を送り
出す。
【0128】有効情報はレジスタ写像テーブル62−0
〜62−3の各ビットの組合せと隣接するスレッド実行
ユニット1−0〜1−3のレジスタ有効テーブル62−
0〜62−3からの入力信号に基づいて、図20に示す
論理で決定される。
【0129】つまり、図20において、スレッド実行ユ
ニット#nでは前段のスレッド実行ユニット#(n−
1)からの有効入力に応じて後段のスレッド実行ユニッ
ト#(n+1)への有効入力の有効/無効が決定され
る。また、前段のスレッド実行ユニット#(n−1)か
らの有効入力が無い場合、スレッド実行ユニット#nで
は追い書きビット64の値に応じて後段のスレッド実行
ユニット#(n+1)への有効入力の有効/無効が決定
される。
【0130】追い書きビット64は変更ビット44と同
時にセットされる。レジスタを変更する命令が書き戻し
の際に、スレッド生成命令までの一般命令によって同一
レジスタに対して書込む命令が存在するか否かを、命令
発行キュー61−0〜61−3の命令とパイプラインの
実行ステージ34に存在する命令との比較を行って確認
し、存在しない場合にリセットする。
【0131】つまり、変更ビット44がセットされてお
り、追い書きビット64がリセットされている状態とは
スレッド生成までに当該レジスタが書換えられたが、そ
の値が共有物理レジスタファイル2に反映されているこ
とを意味する。この情報から隣接するスレッド実行ユニ
ット1−0〜1−3のレジスタ有効テーブル62−0〜
62−3を設定する。変更ビット44がセットされてい
ない場合にはそれより前のスレッドからの情報をそのま
ま設定する。
【0132】以上説明した方法によって、単体のスレッ
ド実行ユニット1−0〜1−3内で非順序で命令が完了
するパイプライン構成においても、レジスタの実内容の
コピーを行うことなく、また共有資源を共有物理レジス
タファイル2のみとして、レジスタの継承を実現するこ
とが可能となる。
【0133】続いて、本発明の第4の実施例について説
明する。本発明の第4の実施例は上述した本発明の第2
の実施例の形態に準じているが、それらの相違点につい
て以下に説明する。尚、本発明の第4の実施例は上記の
図17〜図20に示す各構成を用いて実現される。
【0134】図21は本発明の第4の実施例によるプロ
セッサにおけるレジスタ内容の継承装置の構成を示すブ
ロック図である。図21においては4スレッド並列実行
型プロセッサの構成を示している。
【0135】本発明の第4の実施例によるプロセッサは
本発明の第2の実施例のレジスタ写像テーブル(#0〜
#3)11−0〜11−3の構成を変更したレジスタ写
像テーブル(#0〜#3)63−0〜63−3を設け、
命令発行キュー61−0〜61−3と、レジスタ有効テ
ーブル62−0〜62−3と、有効決定論理67−0〜
67−3とを追加した以外は本発明の第2の実施例によ
るプロセッサと同様の構成となっており、同一構成要素
には同一符号を付してある。
【0136】すなわち、本発明の第4の実施例によるプ
ロセッサはスレッド管理ユニット3と4組のスレッド実
行ユニット(#0〜#3)1−0〜1−3と物理共有レ
ジスタファイル2とから構成されている。
【0137】スレッド実行ユニット(#0〜#3)1−
0〜1−3各々は命令キャッシュ(#0〜#3)12−
0〜12−3と、命令デコーダ(#0〜#3)13−0
〜13−3と、レジスタ写像テーブル(#0〜#3)6
3−0〜63−3と、命令発行キュー(#0〜#3)6
1−0〜61−3と、レジスタ有効テーブル(#0〜#
3)62−0〜62−3と、有効決定論理(#0〜#
3)67−0〜67−3と、演算ユニット(#0〜#
3)14−0〜14−3とから構成されている。
【0138】また、レジスタ写像テーブル(#0〜#
3)63−0〜63−3各々は写像情報転送バス100
によってリング状をなすように隣接するレジスタ写像テ
ーブル(#1〜#3,#0)63−1〜63−3,63
−0に接続されている。プロセッサとしては上記の構成
のほかにロードストアユニットやデータキャッシュメモ
リ、及び外部インタフェース等が必要になるが、本発明
に直接関係ないのでその図示及び説明を省略する。
【0139】図22は図21のレジスタ写像テーブル6
3の詳細な構成を示す図である。図において、レジスタ
写像テーブル63は追い書きビット64を追加した以外
は図11と同様の構成となっており、同一構成要素には
同一符号を付してある。
【0140】本発明の第4の実施例において、レジスタ
有効テーブル61は他のスレッド実行ユニット1、すな
わちレジスタ有効テーブル(#0)61−0がスレッド
実行ユニット(#1〜#3)1−1〜1−3で実行して
いるスレッドから継承したレジスタの値が確定して有効
であるか(当該レジスタに書込む命令が完了してい
る)、まだ値が確定しておらず無効であるか(当該レジ
スタに書込む命令が完了していない)を示すものであ
る。
【0141】また、本発明の第4の実施例のパイプライ
ンステージにおいて、スレッド実行ユニット(#0〜#
3)1−0〜1−3各々のパイプラインステージは命令
フェッチステージ31、命令デコードステージ32、レ
ジスタ変換ステージ33、命令発行ステージ65、実行
ステージ34、レジスタ書き戻しステージ35の6段の
ステージを経て実行が完了する。尚、レジスタ変換ステ
ージ33と命令発行ステージ65との間には命令発行キ
ュー61が挿入されており、命令発行ステージ65以降
は命令を発行する準備の整った命令から非プログラム順
序(out−of−order)で実行される。
【0142】命令発行キュー61は命令を発行する準備
の整った命令から非プログラム順序(out−of−o
rder)で命令発行を行うため、命令が使用するレジ
スタ値が有効になるまで待合せ、有効になった命令から
発行するために待機するものである。
【0143】本発明の第4の実施例においては命令発行
キュー61を用いることによって、図10に示したよう
なプログラム順序でのレジスタの書き戻しは行われず、
非順序での書き戻しが行われる。
【0144】したがって、新スレッドが起動されたスレ
ッド実行ユニット(#1)1−1側では継承したレジス
タ値が起動側のスレッド実行ユニット(#0)1−0側
で書き戻しが完了しない限り、読出し参照を抑止する必
要が生じる。この書き戻しの完了のチェックを行うため
にレジスタ有効テーブル62を用いている。
【0145】あるレジスタの読出し参照を行う命令はレ
ジスタ変換ステージ33で、レジスタ写像テーブル63
において、命令発行時にレジスタ有効テーブル62をチ
ェックする必要があるか否かを決定する。
【0146】もし、レジスタ写像テーブル63のグルー
プ選択ビット41で選択されているグループの変更ビッ
ト44がセットされていなければ、命令発行時に有効ビ
ット66をチェックする必要がある。変更ビット44が
セットされている場合には、有効ビット66をチェック
する必要はない。なぜならば、自スレッドですでに該当
レジスタに対して書き込みを行っているので、スレッド
間での継承は終っていることが判定できるためである。
【0147】命令発行キュー61において、この有効ビ
ット66のチェックが必要と判定された命令は命令の発
行可否を調べる際に、レジスタ有効テーブル62の有効
ビット66をチェックする。チェックの結果、無効であ
るということが示されていれば、その命令は、有効にな
るまで発行を行わない制御を行う。
【0148】本発明の第4の実施例において、有効決定
論理(#0)67−0は入力がレジスタ有効テーブル
(#0)62−0及びレジスタ写像テーブル63の値か
ら、レジスタ有効テーブル(#1)62−1に対する有
効/無効を決定して出力する。以下、これらの図21及
び図22と17〜図20とを参照して、レジスタ有効テ
ーブル62のセット/リセットの方法について説明す
る。
【0149】追い書きビット64は変更ビット44と同
時にセットされる。レジスタを変更する命令が書き戻し
の際に、スレッド生成命令までの一般命令によって同一
レジスタに対して書込む命令が存在するか否かを、命令
発行キュー61とパイプラインの実行ステージ34に存
在する命令との比較で判定し、存在しない場合にリセッ
トする。
【0150】つまり、変更ビット44がセットされてお
り、追い書きビット64がリセットされている状態とは
スレッド生成までに当該レジスタが書換えられ、その値
が共有物理レジスタファイル2に反映されていることを
意味する。
【0151】一方、変更ビット44、追い書きビット6
4が共にセットされている場合には、スレッド生成まで
に当該レジスタを書換える命令を発行したが、その命令
が完了していないことを示す。
【0152】フォーク後の書換えの場合は継承時グルー
プ選択ビット42からフォーク後の書換えを、有効決定
論理67を図20の論理によって判断し、誤った無効信
号が出力されないようにしている。
【0153】スレッドが生成された側のレジスタ有効テ
ーブル62はスレッド生成側の有効決定論理67によっ
て生成された値によって有効ビット66を設定し、先述
したように命令発行キュー61からの命令発行可否を決
定する。
【0154】このように、フォーク1回モデルを活用し
たスレッド間レジスタ継承が可能となり、データの引渡
しに共有メモリを介す必要がなくなり、効率的なマルチ
スレッド実行が可能となる。
【0155】また、このレジスタ内容の継承はin−o
rder/out−of−order実行を行うプロセ
ッサに対しても、レジスタ以外の共有資源を用いずにフ
ォーク命令前後間においても実現することが可能となる
ため、スレッド生成にともなうオーバヘッドを減らすこ
とが可能になり、高度な単体のスレッド実行ユニット1
−0〜1−3が利用可能となり、高速なマルチスレッド
プロセッサが可能となる。
【0156】以上、図面を参照して本発明について具体
的に詳述したが、上述した本発明の第1〜第4の実施例
は本発明の具体例にすぎず、本発明の技術的範囲を何ら
限定するものではない。
【0157】
【発明の効果】以上説明したように本発明によれば、論
理的に複数のプログラムカウンタを備え、複数のプログ
ラムカウンタにしたがった複数のスレッドの命令を同時
にフェッチ、解釈、実行する複数のスレッド実行ユニッ
トからなるプロセッサにおけるレジスタ内容の継承装置
において、複数の物理レジスタからなる共有物理レジス
タファイルを複数のスレッド実行ユニット各々の間で共
有とし、スレッド実行ユニット内の1つの論理レジスタ
を共有物理レジスタファイル中の特定の複数の物理レジ
スタのうちの一つとの間に写像関係を定義する変換テー
ブルと、複数のスレッド実行ユニット各々の変換テーブ
ルの情報を隣接するスレッド実行ユニットにコピーする
手段とを複数のスレッド実行ユニット各々に設け、1つ
の論理レジスタとの間で写像関係が定義される複数の物
理レジスタ毎にグループ化しかつそのグループ内の位置
を示す情報を変換テーブルの情報に付加して写像関係を
定義することによって、レジスタ内容のコピーを行うこ
となく、in−order発行型及びout−of−o
rder発行型のどちらにも高効率でかつ細粒度のスレ
ッドに対しても高性能とすることができるという効果が
ある。
【図面の簡単な説明】
【図1】本発明の第1の実施例によるプロセッサにおけ
るレジスタ内容の継承装置の基本的な概念を示す図であ
る。
【図2】本発明の第1の実施例によるプロセッサにおけ
るレジスタ内容の継承装置の構成を示すブロック図であ
る。
【図3】図2のスレッド実行ユニット各々のパイプライ
ンステージを示す図である。
【図4】図2の物理共有レジスタファイルの詳細な構成
を示す図である。
【図5】図4の物理レジスタのフォーマットを示す図で
ある。
【図6】図2のレジスタ写像テーブルの詳細な構成を示
す図である。
【図7】図2のレジスタ写像テーブルの1エントリの詳
細な構成を示す図である。
【図8】本発明の第1の実施例における通常の動作時の
グループ選択ビット、物理拡張ビット、変更ビットの値
の遷移とそれによってレジスタ継承が実現できる仕組み
を説明するための図である。
【図9】本発明の第1の実施例における投機的なスレッ
ド生成を伴う場合のグループ選択ビット、物理拡張ビッ
ト、変更ビットの値の遷移とそれによってレジスタ継承
が実現できる仕組みを説明するための図である。
【図10】図3に示すパイプラインの動作における写像
情報のコピーのタイミングを示す図である。
【図11】本発明の第2の実施例によるレジスタ写像テ
ーブルの詳細な構成を示す図である。
【図12】図11のレジスタ写像テーブルの1エントリ
の詳細な構成を示す図である。
【図13】本発明の第2の実施例における通常の動作時
のグループ選択ビット、物理拡張ビット、変更ビットの
値の遷移とそれによってレジスタ継承が実現できる仕組
みを説明するための図である。
【図14】本発明の第2の実施例における投機的なスレ
ッド生成を伴う場合のグループ選択ビット、物理拡張ビ
ット、変更ビットの値の遷移とそれによってレジスタ継
承が実現できる仕組みを説明するための図である。
【図15】本発明の第3の実施例によるプロセッサにお
けるレジスタ内容の継承装置の構成を示すブロック図で
ある。
【図16】図15のレジスタ写像テーブルの詳細な構成
を示す図である。
【図17】図15のレジスタ有効テーブルの詳細な構成
を示す図である。
【図18】図15のスレッド実行ユニット各々のパイプ
ラインステージを示す図である。
【図19】図18に示すパイプラインの動作における写
像情報のコピーのタイミングを示す図である。
【図20】図17に示すレジスタ有効テーブルにおける
有効/無効の決定論理を示す図である。
【図21】本発明の第4の実施例によるプロセッサにお
けるレジスタ内容の継承装置の構成を示すブロック図で
ある。
【図22】図21のレジスタ写像テーブルの詳細な構成
を示す図である。
【図23】従来のフォーク1回モデルの概念を示す図で
ある。
【図24】従来のマルチスカラプロセッサの構成を示す
ブロック図である。
【図25】従来のレジスタ写像テーブルを用いたマルチ
スレッドプロセッサの構成を示す図である。
【図26】図24のプロセッサのレジスタ写像テーブル
の構成を示すブロック図である。
【符号の説明】
1−0〜1−3 スレッド実行ユニット 2 物理共有レジスタファイル 3 スレッド管理ユニット 10−0,10−1 プログラムから使用される論理レ
ジスタ 11−0〜11−3,63−0〜63−3 レジスタ写
像テーブル 12−0〜12−3 命令キャッシュ 13−0〜13−3 命令デコーダ 14−0〜14−3 演算ユニット 21 物理レジスタ 22 論理レジスタ番号 23,41 グループ選択ビット 26,43,43a,43b 物理拡張ビット 31 命令フェッチステージ 32 命令デコードステージ 33 レジスタ変換ステージ 34 実行ステージ 35 レジスタ書き戻しステージ 42 継承時グループ選択ビット 44,44a,44b 変更ビット 45,45a,45b 書き戻しビット 46 グループ選択変更命令未完了ビット 51a,51b 加算器 52a〜52f マルチプレクサ 53 書込み動作論理 61−0〜61−3 命令発行キュー 62−0〜62−3 レジスタ有効テーブル 64 追い書きビット 66 有効ビット 67−0〜67−3 有効決定論理

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 論理的に複数のプログラムカウンタを備
    え、前記複数のプログラムカウンタにしたがった複数の
    スレッドの命令を同時にフェッチ、解釈、実行する複数
    のスレッド実行ユニットからなるプロセッサにおけるレ
    ジスタ内容の継承装置であって、前記複数のスレッド実
    行ユニット各々の間に共有されかつ複数の物理レジスタ
    からなる共有物理レジスタファイルと、前記複数のスレ
    ッド実行ユニット各々に設けられかつ前記スレッド実行
    ユニット内の1つの論理レジスタを前記共有物理レジス
    タファイル中の特定の複数の物理レジスタのうちの一つ
    との間に写像関係を定義する変換テーブルと、前記複数
    のスレッド実行ユニット各々の変換テーブルの情報を隣
    接するスレッド実行ユニットにコピーする手段とを有
    し、前記1つの論理レジスタとの間で前記写像関係が定
    義される複数の物理レジスタ毎にグループ化しかつその
    グループ内の位置を示す情報を前記変換テーブルの情報
    に付加して前記写像関係を定義することを特徴とする継
    承装置。
  2. 【請求項2】 前記複数の物理レジスタ毎に、コピー元
    の情報を保持するための選択側のグループと、前記コピ
    ー元の情報が自ユニットで変更された際にその変更後の
    情報を保持するための非選択側のグループとに夫々グル
    ープ化したことを特徴とする請求項1記載の継承装置。
  3. 【請求項3】 前記非選択側のグループに属するレジス
    タは、前段のユニットの前記非選択側のグループで用い
    られたレジスタの次段のレジスタとするようにしたこと
    を特徴とする請求項2記載の継承装置。
  4. 【請求項4】 前記選択側のグループと前記非選択側の
    グループとに対する選択変更命令が未完了か否かを示す
    情報を保持しておき、当該情報によって当該選択変更命
    令の取消しと判定した時に前記グループの選択状態を当
    該選択変更命令実行前の状態に復帰するようにしたこと
    を特徴とする請求項2または請求項3記載の継承装置。
  5. 【請求項5】 継承したレジスタの値の有効/無効を示
    す有効テーブルを含み、前記継承したレジスタを参照す
    る際に前記有効テーブルの内容を基に前記継承したレジ
    スタの値が有効であることを確認してから参照を行うよ
    うにしたことを特徴とした請求項1から請求項4のいず
    れか記載の継承装置。
  6. 【請求項6】 前記有効テーブルは、前記継承したレジ
    スタの値が共有物理レジスタファイルに反映されている
    か否かを示す情報を基に判定された前記継承したレジス
    タの値の有効/無効を格納するよう構成したことを特徴
    とする請求項5記載の継承装置。
  7. 【請求項7】 自ユニットの前記変換テーブルの内容
    及び前記有効テーブルの内容から次ユニットの有効テー
    ブルに対する有効/無効を決定して出力するようにした
    ことを特徴とする請求項5または請求項6記載の継承装
    置。
  8. 【請求項8】 前記複数のスレッドの命令を保持する命
    令キューを前記複数のスレッド実行ユニット各々に含む
    ことを特徴とする請求項1から請求項7のいずれか記載
    の継承装置。
JP00081999A 1998-04-28 1999-01-06 プロセッサにおけるレジスタ内容の継承装置 Expired - Fee Related JP3209205B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP00081999A JP3209205B2 (ja) 1998-04-28 1999-01-06 プロセッサにおけるレジスタ内容の継承装置
US09/298,978 US6330661B1 (en) 1998-04-28 1999-04-26 Reducing inherited logical to physical register mapping information between tasks in multithread system using register group identifier
GB9909773A GB2340271B (en) 1998-04-28 1999-04-28 Register content inheriting system in multi-processor

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP11766698 1998-04-28
JP10-117666 1998-04-28
JP00081999A JP3209205B2 (ja) 1998-04-28 1999-01-06 プロセッサにおけるレジスタ内容の継承装置

Publications (2)

Publication Number Publication Date
JP2000020326A true JP2000020326A (ja) 2000-01-21
JP3209205B2 JP3209205B2 (ja) 2001-09-17

Family

ID=26333905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00081999A Expired - Fee Related JP3209205B2 (ja) 1998-04-28 1999-01-06 プロセッサにおけるレジスタ内容の継承装置

Country Status (3)

Country Link
US (1) US6330661B1 (ja)
JP (1) JP3209205B2 (ja)
GB (1) GB2340271B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281250B2 (en) 2001-07-12 2007-10-09 Nec Corporation Multi-thread execution method and parallel processor system
JP2012234519A (ja) * 2011-04-05 2012-11-29 Arm Ltd マルチスレッド処理のためのスレッド選択
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
JP2018173956A (ja) * 2017-03-31 2018-11-08 三星電子株式会社Samsung Electronics Co.,Ltd. 半導体装置

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353881B1 (en) * 1999-05-17 2002-03-05 Sun Microsystems, Inc. Supporting space-time dimensional program execution by selectively versioning memory updates
US6463526B1 (en) * 1999-06-07 2002-10-08 Sun Microsystems, Inc. Supporting multi-dimensional space-time computing through object versioning
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
JP3817436B2 (ja) * 2000-09-28 2006-09-06 株式会社東芝 プロセッサおよびリネーミング装置
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US6976155B2 (en) * 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US7055020B2 (en) * 2001-06-13 2006-05-30 Sun Microsystems, Inc. Flushable free register list having selected pointers moving in unison
GB2411029B (en) * 2001-07-12 2006-02-22 Nec Corp Multi-thread executing method and parallel processing system
JP3702815B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置
JP3702814B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading
US7155721B2 (en) * 2002-06-28 2006-12-26 Hewlett-Packard Development Company, L.P. Method and apparatus for communicating information between lock stepped processors
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
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
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
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
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
EP1658563B1 (en) 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US8166282B2 (en) * 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7533139B2 (en) * 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
US20060288193A1 (en) * 2005-06-03 2006-12-21 Silicon Integrated System Corp. Register-collecting mechanism for multi-threaded processors and method using the same
US8032821B2 (en) 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US9858077B2 (en) 2012-06-05 2018-01-02 Qualcomm Incorporated Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US9342688B2 (en) * 2013-03-07 2016-05-17 Qualcomm Incorporated Apparatus and method for inheriting a non-secure thread context
JP5986543B2 (ja) * 2013-07-19 2016-09-06 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム
US20160011877A1 (en) * 2014-07-11 2016-01-14 Cavium, Inc. Managing instruction order in a processor pipeline
GB2580327B (en) * 2018-12-31 2021-04-28 Graphcore Ltd Register files in a multi-threaded processor
US11748024B2 (en) * 2020-04-01 2023-09-05 Samsung Electronics Co., Ltd. Apparatus and method of managing registers based on register group
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
DE69131228T2 (de) 1990-08-23 1999-09-23 Cray Research Inc Doppelebenenablauffolgeplanung von prozessen
JP2970553B2 (ja) 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281250B2 (en) 2001-07-12 2007-10-09 Nec Corporation Multi-thread execution method and parallel processor system
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
JP2012234519A (ja) * 2011-04-05 2012-11-29 Arm Ltd マルチスレッド処理のためのスレッド選択
JP2018173956A (ja) * 2017-03-31 2018-11-08 三星電子株式会社Samsung Electronics Co.,Ltd. 半導体装置
JP7154788B2 (ja) 2017-03-31 2022-10-18 三星電子株式会社 半導体装置

Also Published As

Publication number Publication date
US6330661B1 (en) 2001-12-11
GB9909773D0 (en) 1999-06-23
JP3209205B2 (ja) 2001-09-17
GB2340271A (en) 2000-02-16
GB2340271B (en) 2000-07-05

Similar Documents

Publication Publication Date Title
JP3209205B2 (ja) プロセッサにおけるレジスタ内容の継承装置
US5710902A (en) Instruction dependency chain indentifier
US6721874B1 (en) Method and system for dynamically shared completion table supporting multiple threads in a processing system
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
CN107003837B (zh) 用于推测性编译器优化的轻量级受限事务存储器
EP1221086B1 (en) Execution of multiple threads in a parallel processor
US6073159A (en) Thread properties attribute vector based thread selection in multithreading processor
EP1236094B1 (en) Branch instruction for multithreaded processor
EP1221105B1 (en) Parallel processor architecture
US5809268A (en) Method and system for tracking resource allocation within a processor
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US20070234009A1 (en) Processor having a dedicated hash unit integrated within
JPH1078880A (ja) マルチスレッド実行方法
JP2003029986A (ja) プロセッサ間レジスタ継承方法及びその装置
JPH06259253A (ja) データプロセッサおよびその動作方法
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
US6957323B2 (en) Operand file using pointers and reference counters and a method of use
JPH02227730A (ja) データ処理システム
JP2001092657A (ja) 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
JP3604029B2 (ja) マルチスレッドプロセッサ
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法
WO2001016703A1 (en) Instruction for multithreaded parallel processor
JP2883465B2 (ja) 電子計算機
EP1235139A2 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070713

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080713

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090713

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130713

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees