JP2003241961A - マルチスレッドプロセッサにおける共有レジスタファイル制御方式 - Google Patents
マルチスレッドプロセッサにおける共有レジスタファイル制御方式Info
- Publication number
- JP2003241961A JP2003241961A JP2002040899A JP2002040899A JP2003241961A JP 2003241961 A JP2003241961 A JP 2003241961A JP 2002040899 A JP2002040899 A JP 2002040899A JP 2002040899 A JP2002040899 A JP 2002040899A JP 2003241961 A JP2003241961 A JP 2003241961A
- Authority
- JP
- Japan
- Prior art keywords
- register
- context
- window
- register file
- control method
- 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
Links
Abstract
ッドでレジスタファイルを共有して有効利用をはかるこ
とにより、レジスタファイルの容量を抑えつつ高性能動
作を行うこと。 【解決手段】このため本発明では、複数のスレッドを同
時に実行するとともに、論理レジスタより多数の物理レ
ジスタ402からなるレジスタウィンド構成のレジスタ
ファイルを備えるマルチスレッドプロセッサにおいて、
レジスタファイル401を複数のスレッドで共有し、各
スレッド毎に割り当てられるレジスタファイル401
の、ウィンドスタート位置とウィンドエンド位置を記入
する特殊レジスタ404、405を設け、各スレッドに
連続した物理レジスタ402を割り当てることを特徴と
する。
Description
トより多くの物理レジスタからなるレジスタウィンド構
成を備えるプロセッサで、複数のスレッドが同時に実行
されるマルチスレッドプロセッサにおいて、複数スレッ
ドでレジスタファイルを共有してその有効利用をはかる
ことにより、レジスタファイルの容量を抑えつつ高処理
性能を実現するようにした、共有レジスタファイル制御
方式に関する。
に実行されるマルチスレッドプロセッサが注目されてお
り、MT(Multi Threading)、SMT
(Simultaneous Multi Threa
ding)と呼ばれるアーキテクチャの研究が行われて
いる。
命令キャッシュミス時などの命令フェッチができない場
合に、フェッチするスレッドを積極的に切り替えること
で、複数スレッドで共有する機能ユニットやキャッシュ
などのハードウェア資源を有効利用し、少ないハードウ
ェアコストで高性能を実現することを狙ったものであ
る。
おいては、複数のスレッドを同時実行するのに必要なプ
ログラム・カウンタやレジスタセットなどのコンテクス
トについては、同時実行可能なスレッド数分がハードウ
ェア実装される。
は、アプリケーションから明示的にアクセスされる論理
レジスタの数は限られているが、多くの実効レジスタを
実現するためにレジスタウィンドと呼ばれる構成をとる
ことが多い。図11はレジスタウィンドの概念図を示
す。
102では、アプリケーションから明示的にアクセスさ
れる論理レジスタセット101よりも多くの物理レジス
タをハードウェア実装する。レジスタファイル102
は、論理レジスタセット101に相当する複数のレジス
タウィンド103に分けることができる。図11の例で
は、レジスタウィンド103−0、103−1・・・1
03−7に分けることができる。そして参照するレジス
タウィンド103について、これを103−0→103
−1・・・と右にずらしていく(SAVE)ことで、新
しく異なる論理レジスタセット101と対応させて利用
する。論理レジスタセット101は例えば32個の論理
レジスタで構成され、レジスタウィンド103−0〜1
03−7は例えば32個の物理レジスタで構成されてい
る。
103−7→・・・103−1→103−0と左にずら
していく(RESTORE)ことで、以前に対応づけら
れた論理レジスタセットに戻ることができる。図11に
は、各レジスタウィンドに対応づけられた論理レジスタ
セットのID(レジスタウィンド103−0、103−
1・・・を、0番目、1番目・・・の論理レジスタに対
応させる)の例を示している。
スタセットに対応済で、新しい論理レジスタセット10
1との対応がとれない場合には、最も古いレジスタウィ
ンドの値をメモリ領域に一時待避させ、該当レジスタウ
ィンドを新しい論理レジスタに対応させて使用する。図
11中の例では、最も古く使用された0番目の論理レジ
スタセットに対応したレジスタウィンド103−0の値
をメモリ領域104に一時待避し、該当レジスタウィン
ド103−0を新しく8番目の論理レジスタセット10
1に対応させて使用している。このようにレジスタウィ
ンドが不足するとき、時間のかかるメモリ領域104へ
のアクセスが発生するため処理性能低下が起きる。
時実行可能なスレッド数分のレジスタセットが必要とな
る。図12は同時実行可能なスレッド数分のレジスタウ
ィンドを、コンテクスト(プログラムカウンタとか、処
理される値を保持する論理レジスタセット等の如く、マ
ルチスレッドプロセッサで実行されているスレッドの状
態を保持するもの)ごとに実装したときの概念図であ
る。
立したコンテクスト(論理レジスタセット203やプロ
グラムカウンタ204を有する)が存在する。図12は
コンテクスト0〜3の4つのコンテクストの存在する例
を示す。各コンテクスト毎に論理レジスタ203とレジ
スタファイル201内のレジスタウィンド202の対応
がとられている。
では、コンテクスト毎に十分な容量のレジスタウィンド
を実装するとハードウェアコストが問題となり、またス
レッドが実行されていない、停止状態のコンテクストが
存在する場合には、レジスタファイルの利用効率が悪
い。
レッド毎のレジスタファイルの容量を小さくすること
は、レジスタウィンドの不足につながり、メモリ領域へ
のアクセス増加にもとづく処理性能低下が問題となる。
を解決した、コンテクスト毎に十分な容量のレジスタウ
ィンドを実装することなく処理性能低下を抑制したマル
チスレッドプロセッサにおける共有ファイル制御方式を
提供することである。
示す。図1において300はマルチスレッドプロセッ
サ、301はレジスタファイル、302−0、302−
1・・・302−15はレジスタウィンド、303−
0、303−1・・・303−3は論理レジスタセット
であって1つ以上の論理レジスタで構成されるもの、3
04−0、304−1・・・304−3はプログラムカ
ウンタ、305は命令読出部、306−0、306−1
・・・306−3は命令バッファ、307は命令解読
部、308は命令発行部、309は命令実行部、321
−0、321−1、321−2は対応処理手段である。
セッサ上に複数のスレッドが同時実行可能なプロセッサ
であり、論理レジスタセット303−0〜303−3、
プログラムカウンタ304−0〜304−3、命令バッ
ファ306−0〜306−3などは同時実行可能なスレ
ッド(コンテクスト)ごとに設けられる。命令読出部3
05、命令解読部307、命令発行部308、命令実行
部309などは複数のスレッドで共有される。
コンテクストごとにレジスタファイルを実装するのでは
なく、複数コンテクストで共有されるレジスタファイル
301を実装し、レジスタウィンド302−0、302
−1・・・302−15を適当な数で各コンテクストに
割り当てる。各コンテクストは、割り当てられたレジス
タウィンドの範囲内で論理レジスタとレジスタウィンド
の対応関係を切り替えることで、コンテクスト毎のレジ
スタウィンドとして機能する。
にあるため、動作状態にあるコンテクスト0にレジスタ
ファイル301のレジスタウィンド302−0、302
−1の2個を割り当て、コンテクスト1にレジスタウィ
ンド302−2〜302−9の8個を割り当て、コンテ
クスト2にレジスタウィンド302−10〜302−1
5の6個を割り当てて使用しているものを示す。
度つまり切り替え単位については後述する図5に示す如
く、例えば4個のレジスタウィンドで構成されるグルー
プ単位や、1個毎のレジスタウィンド単位等が考えられ
る。
ロセッサで同時実行可能なコンテクスト数で等分したグ
ループに分割し、動作状態のコンテクスト数に応じてグ
ループ単位で割り当てを行う。この場合、動作状態のコ
ンテクスト数に依存するので、スレッド生成/終了時に
コンテクストの割り当てを行う。
く、細かい単位のレジスタウィンド/物理レジスタ単位
で割り当てを行う。この場合、各コンテクストの動作状
況によって動的にレジスタウィンドの割り当てを変更す
ることで、より効率的なレジスタファイルの利用ができ
る。
ィンドのグループ単位でコンテクスト割り当てを行う場
合の具体的な制御方式として、以下のa、bのようなも
のがあげられる。
頻度に関する統計情報を測定しておき、スレッドが生成
され新しいコンテクストにレジスタウィンドのグループ
を割り当てる際には、参照頻度の低いグループを新しい
コンテクストに割り当てる。
ィンドのメモリ領域への一時待避の回数を測定してお
き、一時待避の発生頻度が高くレジスタウィンドが不足
しがちなコンテクストに、スレッド終了により解放され
たグループを追加して割り当てる。
レッド実行の状態に応じて、一定期間ごと、もしくはレ
ジスタウィンド不足時に、動的に細かい粒度(例えば1
個のレジスタウィンド)でレジスタウィンド割り当てを
変更することで、より高いレジスタファイルの利用率が
実現できる。具体的な制御方式として、以下のイ、ロの
ようなものがあげられる。
ンドのメモリ領域への一時待避の回数を測定し、一時待
避の発生頻度が高く、レジスタウィンドが不足しがちな
スレッドにより多くのレジスタウィンドを割り当てる。
る統計情報を測定しておき、スレッドに割り当てられた
レジスタウィンドが不足した際に、隣接する他のコンテ
クストのレジスタウィンドの参照頻度が低ければ、割り
当ての境界をずらして該当コンテクストに割り当て直
す。
より達成することができる。
ルチスレッドプロセッサで、且つ論理レジスタより多数
の物理レジスタからなるレジスタウィンド構成のレジス
タファイルを備えるプロセッサにおいて、レジスタファ
イル301全体を複数のスレッドで共有し、各スレッド
毎に割り当てられるレジスタファイル301の、ウィン
ドスタート位置とウィンドエンド位置を記入する特殊レ
ジスタを設け、各スレッドに連続した物理レジスタを割
り当てることを特徴とする共有レジスタファイル制御方
式。
制御方式において、マルチスレッドプロセッサ300で
同時実行可能なスレッド数で前記レジスタファイル30
1を複数のグループに分割し、コンテクストの動作状態
を示す特殊レジスタを設け、動作状態にあるコンテクス
トに、前記分割されたグループを割り当てることを特徴
とする共有レジスタファイル制御方式。
制御方式において、動作スレッドの実行状態に応じて、
コンテクスト割り当てをレジスタウィンド単位で動的に
変更することを特徴とする共有レジスタファイル制御方
式。
ファイル制御方式において、各グループ毎あるいは各レ
ジスタウィンド毎にアクセス回数を示すアクセスカウン
タを設け、アクセス回数の少ないグループ又はレジスタ
ウィンドを、より多くのグループ又はレジスタウィンド
を必要としているコンテクストに割り当てることを特徴
とする共有レジスタファイル制御方式。
制御方式において、レジスタウィンドが不足した際に発
生するメモリ領域への一時待避が行われた回数を測定す
るspillカウンタを各コンテクスト毎に設け、その
一時待避の発生頻度が高いコンテクストに、低いものよ
りも多くのレジスタウィンドを割り当てることを特徴と
する共有レジスタファイル制御方式。
ッドで共有し、各スレッド毎に割り当てられるレジスタ
ファイルの、ウィンドスタート位置とウィンドエンド位
置を記入する特殊レジスタを設け、各スレッドに連続し
た物理レジスタを割り当てるので、レジスタファイルの
容量を抑制しつつ、高性能の処理を遂行することができ
る。
スレッド数で複数のグループに分割するとともに、動作
状態にあるコンテクストにこの分割したグループを割り
当てることにより、割り当て直すときのオーバヘッドが
軽くなるので、レジスタファイルの容量を抑制しつつ高
性能の処理を遂行することができる。
コンテクスト割り当てをレジスタウィンド単位で動的に
変更するので、動作スレッドの実行状態に応じて、細か
い粒度のレジスタウィンド又は物理レジスタ単位で、動
的にコンテクスト割り当てを変更することが可能とな
り、処理の実態に対応した細かい粒度での割り当てを行
うことが可能となり、これまたレジスタファイルの容量
を抑制しつつ高性能の処理を遂行することができる。
ィンド毎にアクセス回数を示すアクセスカウンタを設
け、アクセス回数の少ないグループ又はレジスタウィン
ドを、より多くのグループ又はレジスタウィンドを必要
としているコンテクストに割り当てることができ、割り
当てのときのオーバヘッドを軽くするとともにレジスタ
ファイルの容量を抑制し、高性能の処理を遂行できる。
生するメモリ領域への一時待避が行われた回数を測定す
るspillカウンタを各コンテクスト毎に設け、その
一時待避の発生頻度が高いコンテクストに、低いものよ
りも多くのレジスタウィンドを割り当てるので、メモリ
領域への一時待避の発生頻度の高いコンテクストに、低
いものより多くのレジスタウィンドを動的に割り当てる
ことができ、メモリ領域への一時待避の発生頻度を抑制
できるので、レジスタファイルの容量を抑制し、高性能
の処理を遂行できる。
4に基づき説明する。図1は本発明の一実施の形態であ
って本発明の共有レジスタファイルを持つマルチスレッ
ドプロセッサの一般的な概念図、図2は複数スレッドで
共有するレジスタファイルの制御方式の一実施例説明図
であって図1中の対応処理手段の実現例、図3は新しく
レジスタウィンドと論理レジスタの対応をとる場合の動
作説明図であって図2に示す特殊レジスタ群を用いた対
応手段の動作説明図、図4は既に論理レジスタと対応づ
けられているレジスタウィンドに参照を戻す場合の動作
説明図であって、図2で示す特殊レジスタ群を用いた対
応処理手段の動作説明図である。
サ、301はレジスタファイル、302−0〜302−
15はレジスタウィンド、303−0〜303−3は論
理レジスタセット、304−0〜304−3はプログラ
ムカウンタ、305は命令読出部、306−0〜306
−3は命令バッファ、307は命令解読部、308は命
令発行部、309は命令実行部、321−0〜321−
2は対応処理手段である。
のスレッドを同時に実行するプロセッサである。
クスト0〜コンテクスト3で共有されるものであって、
レジスタウィンド302−0、302−1・・・302
−15で構成される。
クスト0により読み出されるアプリケーションのスレッ
ドから明示的にアクセスされるレジスタである。同様に
論理レジスタセット303−1〜303−3は、コンテ
クスト1〜3により読み出されるアプリケーションのス
レッドから明示的にアクセスされるレジスタである。
スト0により制御されるスレッドを構成するプログラム
を読み出すものである。同様にプログラムカウンタ30
4−1〜304−3はコンテクスト1〜3により制御さ
れるスレッドを構成するプログラムを読み出すものであ
る。
ッサ300が処理すべき命令を読み出すものである。読
み出された命令は、各コンテクスト毎に設けられる命令
バッファ306−0〜306−3に一時保持される。
−0〜306−3に保持された命令が存在する場合、こ
れを解読するものである。
7により命令を解読した結果にもとづき命令実行部30
9が実行すべき命令を発行するものである。
8から伝達された命令を実行するものである。
るコンテクスト0をレジスタファイル301のどのレジ
スタウィンドに割り当てるかを対応処理するものであ
り、対応処理手段321−1、321−2は動作状態に
あるコンテクスト1、2をレジスタファイル301のど
のレジスタウィンドに割り当てるかを対応処理するもの
である。図1の例では、コンテクスト0にレジスタファ
イル301のレジスタウィンド302−0、302−1
が割り当てられ、コンテクスト1にレジスタウィンド3
02−2〜302−9が割り当てられ、コンテクスト2
にレジスタウィンド302−10〜302−15が割り
当てられ、コンテクスト3は停止状態にあるためコンテ
クスト3にはレジスタウィンドの割り当てがない場合を
示す。
例えばレジスタウィンド302−14、302−15が
割り当てられる。
2に示す如く、特殊レジスタ403、404、405、
406、407、408が具備されている。403は該
当コンテクスト(スレッド)が動作状態か否かを現す
(例えば「1」なら動作状態、「0」なら非動作状
態)、つまりステータス(STATUS)を示すレジス
タである。404は該当コンテクストに割り当てられて
いるレジスタウィンドの開始ID(図2のレジスタウィ
ンド402中に記入された数字)を示すレジスタであ
る。ウィンエンド(WINEND)レジスタ405は該
当コンテクストに割り当てられているレジスタウィンド
の最終IDを示す。CWP(Current Wind
ow Pointer)レジスタ406は現在アプリケ
ーションから参照されているレジスタウィンドを指すポ
インタである。キャンセーブ(CANSAVE)レジス
タ407は、論理レジスタセットとして対応づけられて
いないレジスタウィンドの数が記入される。キャンリス
トア(CANRESTORE)レジスタ408は既に論
理レジスタセットと対応済みのレジスタウィンドの数
(ただしCWPは除く)を示す。
図4にもとづき説明する。図2はレジスタファイル40
1が0〜15の番号の付されたレジスタウィンド402
で構成され、コンテクスト0〜2が動作状態にあり、コ
ンテクスト0は0番と1番のレジスタウィンド402が
割り当てられ、コンテクスト1は2番〜9番のレジスタ
ウィンド402が割り当てられ、コンテクスト2は10
番〜15番のレジスタウィンド402が割り当てられ、
コンテクスト3は非動作状態にあり、コンテクスト0で
は現在アプリケーションから参照されているレジスタウ
ィンドが0番であり、コンテクスト1では同じく6番で
あり、コンテクスト2では11番である場合を示す。こ
の各コンテクスト0、1、2に対するレジスタウィンド
の割り当ては、OSがスレッドの生成や、動作終了を行
うので、このようなときにOSにより行われる。
論理レジスタに新しくレジスタウィンドを参照させるた
めにポインタを右に移動させる指令が到達した場合に、
コンテクスト1について説明する。図3の処理はハード
により、図1に示す対応処理手段321−1が行う。
スタ405の値が等しくないかどうか判別する。
Pのポインタの示している6番の右側には未参照のレジ
スタウィンドが存在していることが判別できるので、C
WPのポインタの値を1つ右にずらす。この場合は7に
する。
のポインタの値は右端を指しているので右に移動できな
いため、左端のレジスタウィンドの開始IDであるWI
NSTARTの値にする。
タ407のCANSAVEの値が0か否か判別する。
トとの対応付けの行われていないものを示しているの
で、CANSAVEの値を1つ減らし、それからCAN
RESTOREの値を1つ増やす。
に割り当てられたレジスタウィンド全部が論理レジスタ
と対応づけられている状態なので、該当レジスタウィン
ドの内容をメモリ領域に一時待避させ、前のデータが消
去されることを防止する。
新したCWPのポインタで示す該当レジスタウィンドを
新しく論理レジスタと対応させて使用する。
割り当てられたレジスタウィンドを用い、既に論理レジ
スタと対応づけられたレジスタウィンドに参照を戻す場
合(図2において、CWPのポインタを6→4の如く移
動)の動作を説明する。このような動作命令はアプリケ
ーションが発生するが、処理は、前記対応処理手段32
1−1等がハードにより行う。
TARTのレジスタ404の値が等しくないかどうか判
別する。
位置が左端にないことを示しており、左側には余裕があ
るのでCWPのポインタの値を1つ左にずらす。図2の
場合は5にする。
Pのポインタの値は左端にあることを示しているので、
CWPのポインタを、1番右端に位置させるため、WI
NENDの値にする。
ジスタ408の示すCANRESTOREの値が0か否
か判別する。
み込まないでそのままリストアできることを示している
ので、CANSAVEの値を1つ増やし、CANRES
TOREの値を1つ減らす。
今度はCANRESTOREしようとするレジスタウィ
ンドには別のものが記入されていることを示しているの
で、メモリ領域に一時待避してある該当論理レジスタの
内容を該当レジスタウィンドに回復させる。
新したCWPのポインタで示す該当レジスタウィンドを
既に対応済みのレジスタウィンドとして使用する。
態として、レジスタファイル701をコンテクスト数の
グループに分割して割り当て制御を行う場合について説
明する。図5においては図2で示す特殊レジスタCW
P、CANSAV、CANRESTORE等も必要であ
るが、これらは省略している。
サで同時に実行可能なコンテクスト数(図5の例では
4)で分割したレジスタウィンドのグループ単位での、
動作状態にあるコンテクストへのレジスタウィンドの割
り当て例を示す。
はコンテクスト0〜コンテクスト3の4つのコンテクス
トを持ち、レジスタウィンド702をグループ702−
0、702−1、702−2、702−3の4つのグル
ープに分けている。各コンテクストには、図5のに代
表的に示す如く、動作状態を示すステータスレジスタ7
03、ウィンスタートレジスタ704、ウィンエンドレ
ジスタ705が設けられ、動作状態、レジスタウィンド
の範囲等が示される。
スレッド(コンテクスト)のとき、で示す如く、レジ
スタウィンド702の0〜15が割り当てられる。動作
状態にあるスレッド数が2スレッド(コンテクスト)の
とき、で示す如く、レジスタウィンド702の0〜7
(グループ0、1)、とレジスタウィンド702の8〜
15(グループ2、3)との範囲で割り当てられ、動作
状態にあるスレッド数が3スレッド(コンテクスト)の
とき、で示す如く、コンテクスト0にはレジスタウィ
ンド702の0〜7(グループ0、1)が割り当てら
れ、コンテクスト2、3にはレジスタウィンド702の
8〜11(グループ2)、12〜15(グループ3)が
割り当てられる。そして動作状態にあるスレッド数が4
スレッド(コンテクスト)のとき、で示す如く、コン
テクスト0にはレジスタウィンド702の0〜3(グル
ープ0)が割り当てられ、コンテクスト1には4〜7
(グループ1)が割り当てられ、コンテクスト2には8
〜11(グループ2)が割り当てられ、コンテクスト3
には12〜15(グループ3)が割り当てられる。
ジスタウィンドを割り当て直すときの、OSのオーバヘ
ッドが軽くできる。
明する。図6は、図5で示したグループ単位でのレジス
タウィンド割り当て方法を示すものであって、レジスタ
ウィンドのグループの利用頻度に基づいたスレッド生成
時のレジスタウィンド割り当て状態を示す。
グループ802−0からグループ802−3までの4つ
のグループに分けられている。そして各グループ802
−0〜802−3毎にアクセスカウンタ801(図6で
は4個)を持ち、各グループが一定期間中に該当コンテ
クストからアクセスされた回数を測定しておく。図6で
は先ずレジスタウィンド802はグループ0と1及びグ
ループ2、3に分けられてた状態で2つのコンテクスト
に割り当てられ、その後3つのコンテクストに割り当て
られた状態を示している。
ンテクストのCWPで指示されていないグループ(図6
の例ではグループ1と3)のアクセス値2と1を比較
し、利用頻度の低いグループ3を新しいコンテクストに
割り当てる。なお図6(A)はグループ0〜3の利用頻
度が10、2、8、1であることを示す。このようにし
て図6の(B)に示す如く、レジスタウィンド802の
グループ0、1を1つのコンテクストに割り当て、グル
ープ2を他のコンテクストに割り当て、さらにグループ
3を新しいコンテクストに割り当てる。図6(B)に示
す如く、新しいコンテクストに割り当てられたアクセス
カウンタの値は、初め0を示している。
にグループ分けすることができる。
明する。図7は、図5で示したグループ単位でのレジス
タウィンドの割り当て方法を示すものであって、スレッ
ド終了時に解放されたレジスタウィンドの割り当て直し
た状態を示す。
グループ902−0からグループ902−3までの4つ
のグループに分けられている。またコンテクスト0〜3
に、それぞれスピル(spill)カウンタ901を有
し、各コンテクストに、レジスタウィンドが不足してメ
モリ領域への一時待避が行われた回数を測定しておく。
スタウィンドのグループが解放されるときに、動作が続
行しているコンテクストのスピル(spill)カウン
ト値をもとにして、レジスタウィンドが不足がちなコン
テクストに、解放されたグループを追加して割り当て
る。
たコンテクスト3のスレッドが終了したとき、コンテク
スト2のスピルカウンタの値が大きいので、これにグル
ープ3を追加して割り当て、図7(C)に示す如く、コ
ンテクスト2にグループ2と3を割り当てるものであ
る。このようにしてスピルによるメモリアクセスの回数
の多いものにレジスタウィンドを追加割り当てし、スピ
ルによるメモリアクセス回数の減少をはかることができ
る。
スタファイルを複数のレジスタウィンド構成されるグル
ープに等分し、スレッド生成/終了時にグループの割り
当てを変更する場合について説明した。しかしレジスタ
ウィンドの割り当てを細かい粒度のウィンド単位で行う
例について次に説明する。動作スレッドの状態に応じて
より細かい粒度でレジスタウィンドの割り当てを変化さ
せるため、制御は複雑になるが、より効率的なレジスタ
ウィンドの利用が可能である。
明する。図8は、レジスタウィンド単位でのレジスタウ
ィンド割り当て方法を示すもので、レジスタ不足による
メモリ領域への一時待避の発生回数に基づいた動的レジ
スタウィンド割り当て状態を示す。
それぞれスピルカウンタ1001を有し、各コンテクス
トに、レジスタウィンドが不足しメモリ領域へ一時待避
が行われた回数を測定する。図8(A)に示す状態で
は、コンテクスト0ではメモリ領域へ一時待避が行われ
た回数が100回、コンテクスト1では10回、コンテ
クスト2では10回であったことを示している。
がコンテクスト1よりも極端に大きいコンテクスト0に
対して、ウィンエンドに相当するレジスタウィンド10
02−1に隣接する、レジスタウィンド1002−2を
該当スレッド(コンテクスト0)に割り当て直してい
る。なお極端に大きいとは、例えば差の値があらかじめ
決めた閾値を越えた場合等で決める。
ため、つまり一貫性を保つため、レジスタウィンドのコ
ンテクスト割り当ての変更は、当該コンテクストのCW
Pがレジスタウィンド1002−1にある時点、つまり
CWPがそのコンテクストに割り当てられたレジスタウ
ィンドの最右端にある時点に行う。このようにして図8
(B)の割り当て状態を図8(C)に示す割り当て状態
にすることができ、効率的なレジスタウィンドの利用が
可能となる。
明する。図9は、レジスタウィンド単位でのレジスタウ
ィンド割り当て方法を示すもので、レジスタウィンドの
利用頻度に基づいた動的レジスタウィンド割り当て状態
を示す。
アクセスカウンタ1101を有し、各レジスタウィンド
が一定期間中に該当コンテクストからアクセスされた回
数を測定する。図9(A)ではレジスタウィンド110
2−0、1102−1がコンテクスト0(図示省略)に
割り当てられ、レジスタウィンド1102−2〜110
2−9がコンテクスト1(図示省略)に割り当てられ、
レジスタウィンド1102−10〜1102−15がコ
ンテクスト2(図示省略)に割り当てられた例を示す。
ウィンド1102−1にある時点でコンテクスト0(図
示省略)のレジスタが不足した場合、コンテクスト1
(図示省略)に割り当てられている隣接するレジスタウ
ィンド1102−2のアクセスカウンタをチェックし、
利用回数が低ければ(この場合はアクセスカウント値は
0)、このレジスタウィンド1102−2を、図9
(B)に示す如く、レジスタウィンド1102−0、1
102−1と同じ該当コンテクスト0(図示省略)に割
り当て直す。
り当てを変更する際の制御について説明する。割り当て
を変更するとき、レジスタウィンドのコンシステンシを
保つために、レジスタウィンドを増やしたいコンテクス
トのCWPがWINENDの位置を指す場合にのみコン
テクスト割り当ての変更を行う。この変更は図1に示す
対応処理手段がハードで行う。
やしたいコンテクストが存在したとき、そのコンテクス
トのCWPがWINENDと等しいか否か判別する。
合には、CWP(該当コンテクストのWINEND)の
右隣に隣接するレジスタウィンドはコンテクストに割り
当てられているか否かをチェックする。具体的には、他
コンテクストのWINSTARTレジスタと比較して一
致しなければ割り当てられていないことがわかる。
他コンテクストに割り当てられている場合には、隣接す
るコンテクストのWINSTARTは論理レジスタに対
応ずみか(CLEANでないか)否かチェックする。
ないつまり有意義な値が存在するので、隣接するコンテ
クストのCANSAVEは0か否かチェックする。
接するコンテクストのレジスタウィンドのうちCLEA
Nなレジスタウィンドを右(WINEND)から探索
し、該当レジスタウィンドの値をコピーする。
るコンテクストのCANSAVEを1つ減らし、WIN
STARTを1つ右にずらす。また前記S17において
対応ずみでない(CLEANな状態の場合)も、同様な
処理が行われる。
ウィンドを該当コンテクストに追加する。そして該当コ
ンテクストのCANSAVEを1つ増やしWINEND
を1つ右にずらす。前記S16において割り当てられて
いない場合も同様な処理が行われる。
NENDが等しくない場合はレジスタウィンドの割り当
ては変更しない。また前記S18において隣接するコン
テクストのCANSAVEが0の場合は、レジスタウィ
ンドが全部使用されている状態であるので、レジスタウ
ィンドの割り当ては変更しない。
されるマルチスレッドプロセッサにおいて、レジスタウ
ィンド構成のレジスタファイルを複数コンテクストで共
有することでレジスタファイルの容量を抑えると共に、
各コンテクストの状態に応じて適当な数のレジスタウィ
ンドを割り当てることでレジスタウィンドを有効利用
し、高性能の動作が実現される。
できる。
ッドで共有し、各スレッド毎に割り当てられるレジスタ
ファイルの、ウィンドスタート位置とウィンドエンド位
置を記入する特殊レジスタを設け、各スレッドに連続し
た物理レジスタを割り当てるので、レジスタファイルの
容量を抑制しつつ、高性能の処理を遂行することができ
る。
スレッド数で複数のグループに分割するとともに、動作
状態にあるコンテクストにこの分割したグループを割り
当てることにより、割り当て直すときのオーバヘッドが
軽くなるので、レジスタファイルの容量を抑制しつつ高
性能の処理を遂行することができる。
コンテクスト割り当てをレジスタウィンド単位で動的に
変更するので、動作スレッドの実行状態に応じて、細か
い粒度のレジスタウィンド/物理レジスタ単位で、動的
にコンテクスト割り当てを変更することが可能となり、
処理の実態に対応した細かい粒度での割り当てを行うこ
とが可能となり、これまたレジスタファイルの容量を抑
制しつつ高性能の処理を遂行することができる。
ィンド毎にアクセス回数を示すアクセスカウンタを設
け、アクセス回数の少ないグループ又はレジスタウィン
ドを、より多くのグループ又はレジスタウィンドを必要
としているコンテクストに割り当てることができ、割り
当てのときのオーバヘッドを軽くするとともにレジスタ
ファイルの容量を抑制し、高性能の処理を遂行できる。
生するメモリ領域への一時待避が行われた回数を測定す
るspillカウンタを各コンテクスト毎に設け、その
一時待避の発生頻度が高いコンテクストに、低いものよ
りも多くのレジスタウィンドを割り当てるので、メモリ
領域への一時待避の発生頻度の高いコンテクストに、低
いものより多くのレジスタウィンドを動的に割り当てる
ことができ、メモリ領域への一時待避の発生頻度を抑制
できるので、レジスタファイルの容量を抑制し、高性能
の処理を遂行できる。
イル制御状態説明図である。
る。
レジスタと対応づけられているレジスタウィンドに参照
を戻す場合の動作説明図である。
ファイルをコンテクスト数のグループに分割して割り当
てて制御を行う場合の説明図である。
ウィンドのグループの利用頻度にもとづいてスレッド生
成時のレジスタウィンド割り当てを行う場合の説明図で
ある。
終了時に解放されたレジスタウィンドの割り当て直しの
場合の説明図である。
不足によるメモリ領域への一時待避の発生回数にもとづ
いた動的レジスタウィンド割り当てを行う場合の説明図
である。
ウィンドの利用頻度にもとづいた動的レジスタウィンド
割り当てを行う場合の説明図である。
り当てを変更する場合の制御例である。
数コンテクスト固有レジスタファイルの概念図である。
Claims (5)
- 【請求項1】複数のスレッドを同時に実行するマルチス
レッドプロセッサで、且つ論理レジスタより多数の物理
レジスタからなるレジスタウィンド構成のレジスタファ
イルを備えるプロセッサにおいて、 レジスタファイル全体を複数のスレッドで共有し、各ス
レッド毎に割り当てられるレジスタファイルの、ウィン
ドスタート位置とウィンドエンド位置を記入する特殊レ
ジスタを設け、各スレッドに連続した物理レジスタを割
り当てることを特徴とする共有レジスタファイル制御方
式。 - 【請求項2】請求項1の共有レジスタファイル制御方式
において、 マルチスレッドプロセッサで同時実行可能なスレッド数
で前記レジスタファイルを複数のグループに分割し、 コンテクストの動作状態を示す特殊レジスタを設け、 動作状態にあるコンテクストに、前記分割されたグルー
プを割り当てることを特徴とする共有レジスタファイル
制御方式。 - 【請求項3】請求項1の共有レジスタファイル制御方式
において、 動作スレッドの実行状態に応じて、コンテクスト割り当
てをレジスタウィンド単位で動的に変更することを特徴
とする共有レジスタファイル制御方式。 - 【請求項4】請求項2又は請求項3の共有レジスタファ
イル制御方式において、 各グループ毎あるいは各レジスタウィンド毎にアクセス
回数を示すアクセスカウンタを設け、アクセス回数の少
ないグループ又はレジスタウィンドを、より多くのグル
ープ又はレジスタウィンドを必要としているコンテクス
トに割り当てることを特徴とする共有レジスタファイル
制御方式。 - 【請求項5】請求項2又は請求項3の共有レジスタ制御
方式において、 レジスタウィンドが不足した際に発生するメモリ領域へ
の一時待避が行われた回数を測定するspillカウン
タを各コンテクスト毎に設け、その一時待避の発生頻度
が高いコンテクストに、低いものよりも多くのレジスタ
ウィンドを割り当てることを特徴とする共有レジスタフ
ァイル制御方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002040899A JP3727887B2 (ja) | 2002-02-19 | 2002-02-19 | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002040899A JP3727887B2 (ja) | 2002-02-19 | 2002-02-19 | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003241961A true JP2003241961A (ja) | 2003-08-29 |
JP3727887B2 JP3727887B2 (ja) | 2005-12-21 |
Family
ID=27781447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002040899A Expired - Fee Related JP3727887B2 (ja) | 2002-02-19 | 2002-02-19 | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3727887B2 (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006039815A (ja) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | マルチスレッドプロセッサおよびレジスタ制御方法 |
JP2008507034A (ja) * | 2004-07-13 | 2008-03-06 | エヌヴィディア コーポレイション | 下位ポートカウントメモリーを用いたマルチポートメモリーのシミュレート |
JP2012038328A (ja) * | 2011-09-27 | 2012-02-23 | Intel Corp | プロセッサ内のマルチスレッド間通信 |
JP5201140B2 (ja) * | 2007-06-20 | 2013-06-05 | 富士通株式会社 | 同時マルチスレッドの命令完了制御装置 |
JP2013140446A (ja) * | 2011-12-28 | 2013-07-18 | Fujitsu Ltd | 情報処理装置および不正アクセス防止方法 |
KR20170132907A (ko) * | 2012-06-15 | 2017-12-04 | 인텔 코포레이션 | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 |
US10592300B2 (en) | 2012-06-15 | 2020-03-17 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
US10643162B2 (en) | 2015-03-30 | 2020-05-05 | Fujitsu Limited | Method, apparatus, and storage medium |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013188696A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | An instruction definition to implement load store reordering and optimization |
WO2013188460A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A virtual load store queue having a dynamic dispatch window with a distributed structure |
TWI599879B (zh) | 2012-06-15 | 2017-09-21 | 英特爾股份有限公司 | 在處理器中之免消歧義失序載入儲存佇列方法和微處理器 |
WO2013188306A1 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
KR101996351B1 (ko) | 2012-06-15 | 2019-07-05 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
-
2002
- 2002-02-19 JP JP2002040899A patent/JP3727887B2/ja not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7834881B2 (en) | 2004-07-13 | 2010-11-16 | Nvidia Corporation | Operand collector architecture |
JP2008507034A (ja) * | 2004-07-13 | 2008-03-06 | エヌヴィディア コーポレイション | 下位ポートカウントメモリーを用いたマルチポートメモリーのシミュレート |
JP2011238271A (ja) * | 2004-07-13 | 2011-11-24 | Nvidia Corp | 低ポート数メモリーを用いたマルチポートメモリーのシミュレート |
US8447959B2 (en) | 2004-07-26 | 2013-05-21 | Fujitsu Limited | Multithread processor and method of controlling multithread processor |
US7805594B2 (en) | 2004-07-26 | 2010-09-28 | Fujitsu Limited | Multithread processor and register control method |
JP2006039815A (ja) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | マルチスレッドプロセッサおよびレジスタ制御方法 |
JP5201140B2 (ja) * | 2007-06-20 | 2013-06-05 | 富士通株式会社 | 同時マルチスレッドの命令完了制御装置 |
JP2012038328A (ja) * | 2011-09-27 | 2012-02-23 | Intel Corp | プロセッサ内のマルチスレッド間通信 |
JP2013140446A (ja) * | 2011-12-28 | 2013-07-18 | Fujitsu Ltd | 情報処理装置および不正アクセス防止方法 |
KR20170132907A (ko) * | 2012-06-15 | 2017-12-04 | 인텔 코포레이션 | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 |
US10592300B2 (en) | 2012-06-15 | 2020-03-17 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
KR102248470B1 (ko) * | 2012-06-15 | 2021-05-06 | 인텔 코포레이션 | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 |
US10643162B2 (en) | 2015-03-30 | 2020-05-05 | Fujitsu Limited | Method, apparatus, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP3727887B2 (ja) | 2005-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3727887B2 (ja) | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 | |
US7743233B2 (en) | Sequencer address management | |
US8732711B2 (en) | Two-level scheduler for multi-threaded processing | |
JP5413001B2 (ja) | キャッシュメモリ | |
US9329988B2 (en) | Parallel dynamic memory allocation using a nested hierarchical heap | |
US10217184B2 (en) | Programmable graphics processor for multithreaded execution of programs | |
TWI509519B (zh) | 維持公平和秩序的資源管理子系統 | |
CN108595258B (zh) | 一种gpgpu寄存器文件动态扩展方法 | |
US7185167B2 (en) | Heap allocation | |
US7533236B1 (en) | Off-chip out of order memory allocation for a unified shader | |
US20040268093A1 (en) | Cross-thread register sharing technique | |
EP3475809A1 (en) | System and method for using virtual vector register files | |
US10095548B2 (en) | Mechanism for waking common resource requests within a resource management subsystem | |
JP2009245047A (ja) | メモリバッファ割当装置およびプログラム | |
JP2002342163A (ja) | マルチスレッドプロセッサ用キャッシュ制御方式 | |
TW201435734A (zh) | 條件阻擋以及急性阻擋的硬體排程之系統及方法 | |
US20120030430A1 (en) | Cache control apparatus, and cache control method | |
JP3810735B2 (ja) | スケーラブル・メモリの効率的なスレッドローカル・オブジェクト割り当て方法 | |
EP1760581A1 (en) | Processing operations management systems and methods | |
US8405665B2 (en) | Programmable graphics processor for multithreaded execution of programs | |
US8860737B2 (en) | Programmable graphics processor for multithreaded execution of programs | |
US6631452B1 (en) | Register stack engine having speculative load/store modes | |
US10585701B2 (en) | Dynamically allocating storage elements to provide registers for processing thread groups | |
US8266379B2 (en) | Multithreaded processor with multiple caches | |
JP3991443B2 (ja) | タスク切り替え方法及びデータ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040903 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050927 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050929 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081007 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091007 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091007 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101007 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101007 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111007 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111007 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121007 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121007 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131007 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |