3.2 2 パス限定投機システムのハードウェア設計
3.2.4 PALS のハードウェア構成
PALSでは,各プロセッサコアが投機スレッドを実行する.このプロセッサコア には,汎用のプロセッサコアが持つ演算機能の他に,回復処理やデータの同期通 信といった投機スレッドの実行をサポートする機能を実装する必要がある[19].投 機実行のための機能を実装したプロセッサコアを,スレッド実行機構 TU (Thread Unit) と呼ぶ.
図3.9にPALSのハードウェア構成を示す.図中の四角はそれぞれハードウェア 機構を表しており,矢印はハードウェア間における通信の関係を表している.こ のうち,太線はデータが通信されることを表しており,細線は投機スレッド生成 の通知等の信号 (以下,単に通知と呼ぶ)が通信されることを表している.ここで,
レジスタやメモリに格納される値のみをデータとして定義し,メモリアクセスに 用いるアドレスはデータの定義に含めず,通知として定義する.
マルチスレッド制御機構TMUは内部に2-level path predictorを持つ.これは,
3.1.3節で述べた2レベルパス予測器を基本とし,PALS向けに変更したものであ
る.先頭・末尾のスレッドを実行しているTUの番号を格納するレジスタ等が追加 されている.TMUは,TUに対して投機スレッドの生成とマルチスレッド実行の 制御を行う.TMUの詳細な構成,機能については3.2.5節で述べる.
TMUは内部のパス予測器から受け取った予測結果に基づき,#1パスを実行す るか,あるいは#2パスを実行するかといった具体的な投機スレッドの実行開始の 指示をスレッド実行機構TUに渡す.TUは受け取った指示に基づき,対応するパ スの投機スレッドコードの実行を開始する.また,TUからTMUには投機スレッ ドの成否判定が通信される.TMUとTUは双方向に通信を行うが,データの通信 は行わないため多くの通信帯域を必要としない.
3.1.5節で述べた2パス限定投機方式の実行モデルを実現するためには,連続す
るスレッドが通信を行えるようTUをリング構造のトポロジで接続し,リングに 沿ってスレッドを割り当てる形が自然であると考えられる.そこで,TU間のネッ トワークは,双方向通信を行うリング構造とする.TMUは,リングに沿ってTU に対して順次投機スレッドを割り当てていく.また,TU間ではレジスタ間データ 通信を実装し,投機スレッドの実行において更新したレジスタの値を後続スレッ ドがすぐに使用できるよう,レジスタデータを送ることができる.一方,先頭ス レッドの方向にはデータを送ることはないため,後続スレッド方向への通信に必
要な通信帯域に比べ,先頭スレッド方向への通信に必要な通信帯域は少ない.TU の詳細な構成,機能については3.2.6節で述べる.
メモリアクセス機構MAUはMemory Buffer (MB) およびLoad Shelter (LS)に よって構成され,投機的なメモリアクセスを適切に処理する.TUとMBは1対 1で接続され,TUは全てのメモリアクセスをMBに対して行う.このため,TU とMB間では双方向にデータ通信を行う.また,隣接するMB間はTUと同様の 双方向通信を行うリング構造となる.PALSではMB間におけるメモリ間通信を 実装し,後続スレッドのMBは先行するスレッドのMBに対して,あるメモリア ドレスに格納されているデータを要求することができる.LSはTUからの投機的 なストアデータの格納をMBが保証するための補助的役割を担う記憶機構であり,
全てのMBと接続される.L1データキャッシュ (以下,単にキャッシュ)は全ての MBと接続されるが,データアクセスを行うことができるのは先頭スレッドのMB のみである.
3.2.5 マルチスレッド制御機構 TMU
TMUは,リング構造により接続されたTUに対して,リングに沿って投機スレッ ドを割り当てる必要がある.そこでTMUでは,先頭スレッドおよび末尾のスレッ ドを実行しているTUの番号を記録し,どのTUが投機スレッドを実行中であり,
どのTUが投機スレッドを割り当てられていないか,といったTUの状態を即座に 把握するためのレジスタを用意する.
図3.10にTMUの内部構成を示す.input portsおよびoutput portsはTUと接 続するためのポートである.TUからの通知はinput portsからTMU controllerへ
渡され,TMU controllerはTMUが次に行う動作を決定する.マルチスレッド実
行中は複数のTUから同時に通知が送られることも考えられるが,その場合TMU controllerは,TUとTMUの状態を保持しているcontrol registersを確認し,送ら れた通知に優先度をつけ順に実行していく.予測の際には,2-level path predictor から送られたパス予測結果をthread initiatorが受け取る.リングに沿って投機ス レッドを割り当てるため,thread initiatorはcontrol registersを確認し,末尾の投 機スレッドを実行しているTUの次のTUに対して投機スレッドを生成する指示を 送る.
Thread Management Unit
2-level path predictor
Thread Unit
TU) #0 TU #1 TU #N-1
Memory Buffer MB) #0 Load
Shelter (LS)
Data Cache
(TMU) data transfer
hardware
MB #1 MB #N-1
control signal
Memory Access Unit
(MAU)
Main Memory Instruction
Cache
Instruction Cache
Instruction Cache
図 3.9: PALSのハードウェア構成
3.1.3節で述べた2パス限定投機方式における2レベルパス予測器では,ひとつ
の履歴レジスタ (#1パスHR) でパターン履歴テーブル (#1パスPHT)にアクセ スしていた.しかし,この場合には実行が確定したパスの履歴情報しか利用する ことができず,複数の投機スレッドを起動するときにもそれらの予測結果は同一 のものとなってしまう.そこで,PALSでは後続の投機スレッドの予測精度を向上 するため,予測のための履歴レジスタに実行が確定していない投機スレッドの情 報を反映させる.
図3.10の2-level path predictor内のprediction update registerは,#1パスHR にTU台数−1分のビットを加えたレジスタであり,次のパスを予測するための 履歴レジスタである.prediction update registerには,予測した投機スレッドが
v0
v2R-1 2R-1
0
#1-path pattern history table
2-level path predictor
prediction controller
prediction history register update history register
threshold
thread initiator control registers
TMU controller
output ports input ports
TU
#0
TU
#1
TU
#N-1
TU
#0
TU
#1
TU
#N-1 R bit
R + (N-1) bit
1 v1
図 3.10: TMUのハードウェア構成図
#1パスであったかという情報を記録する.また,update history registerは従来の
#1パスHRに相当し,実行が確定したパスのみを記録する.図において,update history registerのレジスタ長をR,TU台数をNとしているため,prediction update registerのビット長は,R+ (N−1)となる.履歴レジスタに実行履歴を記録する際 は,履歴レジスタの内容を1ビット左シフトする.投機失敗となった場合は,TMU controllerとprediction controllerにより,破棄するスレッド分だけ履歴レジスタの 内容を右シフトすることにより履歴情報を巻き戻す.予測を行う際は,レジスタ の下位Nビットを#1パスPHTのインデックスとして,閾値との比較を行う.
こちらのレジスタはカウンタテーブルの値を更新する際に利用する.