九州大学学術情報リポジトリ
Kyushu University Institutional Repository
ベクトルプロセッサの構成方式に関する研究
弘中, 哲夫
九州大学総合理工学研究科情報システム学専攻
https://doi.org/10.11501/3092828
出版情報:Kyushu University, 1993, 博士(工学), 課程博士 バージョン:
権利関係:
︒
ベクトルフ口セッサの構成方式 に関する研究
平成
5年 4月
弘中哲夫
目次
1 序論
1.1 研究の背景 宇 1
一 一 ー ・ ・ ー一 一 ー ー ー ・ ・ ー一 一 ・ ・ ・ ・ ・一 一 ・ .
1.2 ベクトル演算方式
1 . 2 . 1
ベクトル演算方式 21 . 2 . 2
利点 24 1.3 高速化への課題 .
1.4 研究の概要 5
1.4.1 研究の目的 6 1.4.2 研究成果の要約 6
6 1.4.3 論文の要旨と構成
7 2 ベクトルプロセッサ・アーキテクチャ
1 0 2 . 1
オペランド指定方式10
2 . 1 . 1
オペランドの種類10
2 . 1 . 2
ベクトル長11 2.1.3 チェイニング
1 2 2 . 1
.4 メモリバンド幅1 2 2 . 1 . 5
ベクトル演算に必要な命令ステップ数.. • • • • • • • • • • • • "1 3
2.1.6 必要となる命令の種類 .• • • • • • • • . • • • . • • • • • • • . • " 14 2.1.7 比較結果
14 2.2 ベクトル演算の種類
16
2 . 2 . 1
マクロ演算17
2 . 2 . 2
条件付きベクトル演算.• • • • • • • • • • • • • • • • • • • • • • "1 9 2 . 3
ベクトル命令の実行制御方式 • • • • • • • • • • • • • • • • • • • . • • • . •2 1
2 . 3 . 1
要素並列実行方式2 1 2 . 3 . 2
命令並列実行方式 • • . • • • . • • • • • • • . • • • • • • • • . • •.2 1
2.4 ベクトル・レジスタ構成 .2 3
2.4.1 容量
2 . 5
主 記 憶 構 成2 . 5 . 1
メモリ・バンド幅2 . 5 . 2
データ供給能力 284 . 6 . 1
ベクトル分百U
併 合 方 式 .• • • • • • • • • • • • • • • • • • • • • • • •5 9 4 . 6 . 2
ベ ク ト ル 命 令 実 行 停 止 機 能 • • . • • • . • • . • . . . . • . • . • "6 0 4 . 6 . 3
ベクトルースカラ協調処理 .• • • • • . • • • . • . . • • • • . • • • •6 1 4 . 7
条 件 付 き ベ ク ト ル 演 算 に 対 す る 概 略 評 価 .• • • • . • • • • • • • • • . • ••6 1 4 . 7 . 1
ベクトル分配/併合方式.• • • • • • • • • • • • . • . • • • • . . • • •6 2 4 . 7 . 2
ベ ク ト ル 実 行 停 止 • • • • • • • . . • • • • • • . • • • • . • • • • • .6 2
‑・ ・・・・
2 5
‑・・ ・・ ・ ・ ・ ・ ・ ・ ・ ・ ・ー 4・
2 7 2 7
2 . 6
ベクトル化コンパイラ3 0
2 . 6 . 1
参 照 パ タ ー ン 変 換 • • • • • • • • • • • • • • • • • • • • • • • • • "3 0 2 . 6 . 2
ル ー プ の 再 構 成 .• • • • • • • • . • • • • • • • . • • • . • • • • • "3 1 2 . 6 . 3
多 重 度 に 関 す る 再 構 成 .• • • • • • • • • • • • • • • • • • • • • • • •3 1
4 . 7 . 3
ベクトルースカラ協調処理 4.8 まとめ6 3 6 4
3 MSFV型 プ ロ セ ッ サ3 . 1
基 本 方 針 ・・ ・・宇一ー・・・・・・白色 一一3 3 3 3
5 フ 口 ト タ イ プ MSFV型 プ ロ セ ッ サ の 実 現 方 式
5 . 1
プ ロ ト タ イ プ の 概 要4 プ ロ ト タ イ プ MSFV型プロセッサの命令セット・アーキテクチヤ
4 . 1
レジスタ・アーキテクチヤ.4 6 4 6
5.l.1 ハ ー ド ウ ェ ア 構;成 5.1.2 パ イ プ ラ イ ン 処 理 過 程
5 . 2
1,反想ノfイプライン.5 . 2 . 1
仮想パイプライン制御ユニット5 . 2 . 2
実パイプライン割り当てアルゴリズム5 . 2 . 3
仮想パイプライン制御ユニットの構成5 . 2
.4 実 パ イ プ ラ イ ン .5 . 3
演 算 パ イ プ ラ イ ン .守3弓
3 4 3
ベJ f o f o n k U Q J
﹀
M
7 7 7 7 7 7 7 7 8
広
3 .
1.1
高 ベ ク ト ル 化 率 の 達 成 .• • • • • • • • • • • • • • • • • • • • • • • •3 3 3 .
1.2
実 行 制 御 方 式 . . • • • • • • • • • • • • • • • • • • . • • . • . • • • •3 4 3 .
1.3
高データ供給能力の実現 .• • • • • • • • • • • • • • • • • . • • • ••3 7
3.2 MSFVアーキテクチャ
3 8
3 . 2 . 1
動 作 原 理3 9
3 . 2 . 2
マ ル チ ス レ ッ ド 処 理 .• • • • • • • • • • • • • • • • • • • • . • • "3 9
3 . 2 . 3
ス ト リ ー ミ ン グ .4 3
4 . 2
スカラ命令4 . 3
ベ ク ト ル 命 令 .4 9
4 . 3 . 1
ベクトル演算命令 • • • • • • • • • • • • • • • • • • • • • • • • • • •5 0 4 . 3 . 2
ベクトル・ロード/ストア命令.48
A UV J戸 ︑
ζ u r o
oOOAUnxunxu
vン日ン
. j
一 一 ジ
︑ つ テ テ 一
‑ ス ス テ 灯 C H ス
r u
C C R R W F S F A
‑t
今 ム 司 3 A U T 1 d q J
司3司35
同 コ
5 5
5 1 5 . 3 . 5 PE
ス テ ー ジ 874 . 3 . 3
ベ ク ト ル 編 集 命 令 • • • • • • • • • • • • • • • • • • • • • . • • • • •5 3 4
.4 マ ク ロ 演 算 へ の 対 処 法 .• • • • • • • • • • • • • • • • • • • • • • • • • • • •5 4 4
.4. 1
プロトタイプMSFV型 プ ロ セ ッ サ に お け る 処 理 .• • . • • • • • "5 4
4.4.2 回帰演算の処理例 • • • • • • • • • • • • • • • • • • • • • • • • • • • 55
4 . 5
条 件 付 き ベ ク ト ル 演 算 へ の 対 処 法 .• • • • • • • • • • • • • • • • • • • • • •5 6 4 . 5 . 1
ベクトル分配/併合方式.• • • • • • • • • • • • • • • • • • • • • • • •5 6 4 . 5 . 2
ベ ク ト ル 実 行 停 止 方 式 .• • • • • • • • • . • • • • • • • • • • • • • •5 7 4 . 5 . 3
ベクトルースカラ協調処理.• • . • • • • • • • • • • • • • • • . • • •5 9 4 . 6
プロトタイプMSFV型プロセッサでの対処例 • • • • • • . • • • • • • • ••5 9
5 . 3 . 6
F Wステージ 87 5.4 ロード/ストア ・ノfイフ。ライン .• • • . • • • . • • • . • • • . • • • • • • • • 885.4.1 FCCス テ ー ジ 88
5.4.2 SCHス テ ー ジ .• • • • • • • . • • • • • • • • • • • • • • • . • . • ••
9 0
5.4.3 FRス テ ー ジ .. • • • • • • • • • • • • • • • • • . • • • . • • • • • • •9 1
5.4.4 A Gス テ ー ジ .• • • • • • • • • • • • • • • • • • • • . . • • • • • "
9 1
5.4.5 M Aス テ ー ジ .• • • • • • • • • • • • • • • . • . • • • • • • • . • • •9 2
5.4.6 FWス テ ー ジ . . • • • • • • • • • • • • • • • • • • • • • • • • • • "9 3
5.5 FIFOベ ク ト ル ・ レ ジ ス タ ・ フ ァ イ ル .• • • • • • • • • • • • • • • • . • "9 3
11 111
まとめ 93 5.6
表 目 次
MSFVアーキテクチャの評価 97 MSFVアーキテクチャの評価 6
ー・・ ・・・・・. 97 6.1
‑ ・ ー守 ・ ・ ・ ・ ・ ー ーー ー ・ ・ ー 一一一一ー 今・・・・. 97 シミュレータ
6.1.1
16
2 0
オペランドの種類による比較各種ベクトル化方式における所要処理量の比較 現在のスーパーコンピュータ最上位機種
• •
•
•
• •
•
• •
• •
• •
• •
2 . 1 2 . 2
2.3 9898 98 99
司
‑・・・ ・・・・・・・・・ ・・・・・
‑・・・ ・・ ・ ・ ・ ・ ・ ・ ・ ー 一一一・ー一 ・・ ・・ ・ ・ ・ .
ベンチマーク・プログラム 評価指標
6.1.4 評価項目および評価モデル 評価結果および考察
6 . 1 . 2
6.1.3
6 . 2
. 1 0 0
27 FIFOベクトル・レジスタの評価マルチスレッド処理の評価
6 . 2 . 1
35
49 51
•
• •
• •
• •
• •
• •
• •
•
スカラ命令
ベクトル演算命令
ベクトル・ロード/ストア命令セット
大規模科学技術計算の計算時間における演算内容 3.1
4 . 1 4 . 2 . 1 0 1
ストリーミングの評価.• • • • • • • • • • • • • • • • . • • • • • • • 103 演算スループットとメモリ・バンド幅に関する評価.• • • • • • • •
1 0 4
6.2.4まとめ
. 1 0 7
6 . 2 . 2
6.2.36.3
53 54
‑・・・・ ・・ ・・ ・・ ・ー ョー白色今 ベクトル編集命令 .
従来のベクトル化方式との所要処理量の比較 4.3
4.4 4.5 110
結論
研究の成果 7
58 95 プロトタイプ MSFV型プロセッサの仕様
ベクトル演算命令と実演算パイプラインとの対応関係 5.1
5.2 . 110
. . 1 1 2
今後の課題
7 . 1
7.2
96
ストリーミングの効果
σLOPC)
・.• • • • • • • • • . • • . . • • • • • . • •1 0 4
6.1 117
参考文献
lV V
図 目 次
6.1
S~うm ,
MSVfmお よ びMSFVfmの性能 • • • • • • • • • . • • • • • • • • • •1 0 0 6 . 2
SVsm, MSVsmお よ びMSFY s
mの性能.• • • • • • • • . • • • . • • • • • • •1 0 2
6.3 MSlう m ( π )
,MSlう m (
お), MSY s
m(汀)およびMSVsm(お)の性能.• • • • • •1 0 3
6.4 P(2, 1), P(2, 2)モデルの性能. 1 0 7 6 . 5
P(4,2), P(4,4 )
モデルの性能. 1 0 8
1.1 ベクトル演算方式とスカラ演算方式 3
2 . 1
オペランドの種類による違い • • • • • • . • • • • • • • • • • • • • • • • ••1 5 2 . 2
総和演算装置の例.• • • • • • • • • • • • • • • • • • • • • • . • • • • • • ••1 7 2 . 3
要素並列実行方式. . • • • • • • • . • • • • • • • • • . • • • • • • • • • . ••2 2 2
.4 ベクトル命令とスカラ命令の並列実行 • • • • • • • • • • • • • • • • • • "2 3 2 . 5
チ ェ イ ニ ン グ . . • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •.2 4 2 . 6
ベクトルレジスタの基本構成 • • • . • • • • • • • • • • • • • • • . • • • • •2 6 2 . 7
マルチパンク・メモリの基本構成.• • • • • • • • • • • • • . . • • • • • ••3 2
3.1 MSFVアーキテクチャの動作原理.• • • • • • • • • • • • • • • • • • • • • •
4 0
3.2 MSFVアーキテクチャの基本構成.• • • • • • • • • • • • • . • . • • . • • •4 3 3 . 3 LFK13 ( 2 ‑ D
Partic1e in Cell). . . ..4 5
5 6 7 8 9 0 1 2 6 6 6 6 6 7 '?
? ド
一 一 価 一
﹀ 咽 価 呼 . 理
・
‑ P
評 理 一 式 . 処 ト ゅ の 処 . 方 止 調 ク ぽ 止 調 合 停 協 エ 方 停 協 例 併 行 ラ ジ 合 行 ラ のノ
f
実 カ プ 洲 市 安 力 算 配 令 ス オ 配 令 ス 演 分 命 一 の 分 命 一
ヨ市
レ レ レ
11
レ レ レ
/ー 凡 l F v j y J E A
︐ ノ
v J T J
回 ト ト ト
χ
ト ト ト 次 ク ク ク
4
ク ク ク 一 ベ ベ ベ
図 ベ ベ ベ 1 2 3 4 5 6 7 8
A斗 バ 斗
A斗λ
斗 バ 斗
A斗AUTAUT
5 . 1
プロトタイプMSFV型 プ ロ セ ッ サ の 全 体 構 成 .• • • • • • . • • • • • • ••7 5 5 . 2
仮想、パイプライン制御ユニットの位置付け.• • • • • • • • • • • • • • . ••7 7 5 . 3
トークン・リング方式.• • • • • • • • • • • • • • • . • • • • • • • • • • ••7 8
5.4 ベクトル処理過程.• • • • . • • • • • • • • • • • • • • • • . • • • • • • • •.8 0
5.5 演 算 パ イ プ ラ イ ン の 構 成 .• • • • • • • • • • • • • • • • • • • • • • • • • "8 4 5 . 6
ロード/ストア・パイプラインの構成 • • • • • • • • • • • • • • • • • • • ••8 9
Vl Vll
第 1 章 序 論
本論文は,科学技術計算等の処理速度向上をはかるプロセツサ・アーキテクチャとして ベクトル・アーキテクチャに着目し,その構成方式について行った研究に関してまとめた
ものである.
1 . 1 研究の背景
半導体技術,計算機構成方式などの進歩により,以前では考えることができなかった大 規模な計算ができるようになった.今日のコンピュータにおける桁はずれな計算能力の量 的増大は計算能力を質的にも変化させている.以前は,計算機は単なる計算を補助する 機械であり,コンビュータの計算結果が直接,新しい現象の発見につながるとは考えられ なかった.このような質的な変化の代表が数学モデルに基づき,コンピュータを用いて解 析を行う数値シミュレーションにおける能力である.現在ではコンビュータによる数値シ ミュレーションにより通常ではおこせないような物理現象の解析や,危険性やコストが非 常に高く,実験が不可能または困難な現象(量子色力学,気象予測,原子炉挙動,船舶や 航空機の特性試験,等)のシミュレーションが日常的に行われている.
しかしながら,このようなシミュレーションにおいて要求される計算能力は非常に大き し現在の計算能力を持ってしでもまだ十分でない.現在の目安としては 1T干LOPS(Tera fioating‑point operations per second)の計算能力を有する計算機システムの実現が課題とさ
れている1[WiI89]・このような性能は半導体技術の進歩だけで達成するのは難しく,その ため,コンピュータの高速化を目指した計算機構成方式について,多くの研究が行われて
lアメリカのHPCC(High PeゆrmanceCompuring & Communication)プログラムでGrandChallengesと 呼ばれる問題群(乱流,量子色力学,気象,画像認識,等)を解くためには11下LOPSの性能と lOGWords のメモリが必要と言われている.
いる.
計算機構成方式による高速化は主にプログラムに内在する並列性を利用することで高速 処理を達成する.プログラムに内在する並列性としては次の3つがある.
(1)サブルーチン聞の並列性 (2)ループ構造に内在する並列性 (3)機械命令間の並列性
これらの並列性の内,一般的な科学技術計算で比較的簡単に,かつ,最も多く利用でき るのが(2)の並列性である.このループ構造に内在する並列性の利用に特化した計算機構 成を持つのがベクトルプロセッサである.次に大きな並列性を持つのが(1), (3)の並列性 である.(1)の並列性を用いる計算機構成として複数のプロセッサを結合することで形作 られるマルチプロセッサ・システム, (3)の並列性を用いる計算機構成として複数の機械 命令を同時に実行するスーパースカラ・プロセッサやVLIWプロセッサなどがある.これ らの計算機構成方式はそれぞれ直交しており,それぞれの計算機構成方式を混合して使用 することができる.事実,今日の商用スーパーコンピュータと呼ばれる計算機は大部分ベ クトルプロセッサを要素プロセッサとした小規模なマルチプロセッサ・システムである.
そのため,今日の商用スーパーコンピュータで使用される要素ベクトルプロセッサは必要 なメモリバンド幅などの点から大規模なマルチプロセッサ・システムに向かない.このよ うな理由により少ないメモリバンド幅でより高速なベクトル・プロセツサを目指す研究は 重要である.
LOOP: LOAD FRO 今一一一一 (GRl) 配列Aのロード"
LOAD FRl ←ーーーー (GR2) 配列Bのロード"
MUL FRO f‑ーーー FRO,FR1
LOAD FR3 十一ーーー (GR3) 配列Cのロード"
ADD FR3 ←‑ FRO,FR3 IADD GR2 ←ーー一ー GR2,4 CMP CC 守一一一 GR2 IADD GR1 や一一ーー GR1,4 IADD GR3 +ー一一ー GR3,4
STORE (GR4) ←ーーー FR3 配列Xのストア"
IADD GR4 ←一一一 GR4,4
BRANCH LOOP CC 分岐"
(a)スカラ演算方式
VLOAD VRO 十一ー一 (GRl) 配列Aのロード"
VLOAD VR1 ←一ーーー (GR2) 配列Bのロード"
V恥1UL VR2 +ー一一ー VRO,VR1
VLOAD VR3 十ー一一 GR3 配列 Cのロード"
VADD VR4 ←一ーーー VR2,VR3
VSTORE (GR4) 令ーーーー VR4 配列 Xのストア"
(b)ベクトル演算方式
図 1.1 ベクトル演算方式とスカラ演算方式
1 . 2 ベクトル演算方式
ここで図1.1の 2つのオブジェクト・コード (a),(b)を比較する.(a)のスカラ演算方式 では1.1式を lつの tに付き 12個の命令を用いて演算し,これを N回繰り返すことで処 理を行う.これに対し, (b)のベクトル演算方式では Ai,
Bi,
Ci1ふれ =
1,2, ..N)のデータをそれぞれまとめてベクトル
A
,B
,C
,X
とし,このベクトルを単位とした演算命令を用 いて演算を行っている.このベクトルを単位とした演算命令をベクトル演算命令と呼ぶ.すなわち,
1 . 2 . 1 ベクトル演算方式
一般に科学技術計算では配列の異なった要素に対して同じ演算を繰り返し行うこと に多くの時間を費やしている.一例としては1.1式のような演算を浮動小数点数の配列 j¥j,Aj,Biぅ
C i ( i
= 1,2,…, !l)に対し行う場合である.. Xi
=
Ai X Bi+
Ci (i=1,
2, . . . ,
N) ︑Fls︐. ︐
﹄
A‑
唱 ・
・
A〆
tt︑ X=AxB+C ( 1.2)
図1.1の(a)に1.1式を通常の計算機で行った場合に相当するスカラ演算方式のオブジェ クト・コード,図1.1の(b)にベクトルプロセッサで行われるベクトル演算方式に基づく オブジェクト・コードを示す.
として演算する.これがベクトル演算方式である.ここで
,
Ai,
Bi,
Ci,
‑'Yjなどをベクト ル要素と呼ぶ.ベクトル演算方式では 1.1式のすべての演算を 6ベクトル命令で処理する ことカすで、きる.2 3
1 . 2 . 2 利点
ベクトル処理は,多くの科学技術計算において同一の演算を多数のデータ要素に対し て施すようなデータ処理に,大部分の計算時間を費やす性質を利用したものである.ここ この種の計算を通常のスカラ演算方式に基づく高性能スカラプロセッサにおいてスカ で
ラ命令のループとして実行すると,達成可能なスピードは次のような要因によって制限さ れる[Erc88].
‑各スカラ演算ごとにスカラ命令を読出し, デコードする必要がある.
‑各演算命令ごとにベクトル要素のアドレス計算行う必要がある.
‑個別のロード/ストア命令によりベクトル要素をメモリから読出し,または,メモリ に格納する必要がある.このため,メモリ・アクセスの規則性を利用した高いメモリ バンド幅を得るインタリーブ・メモリなどの手法を有効に使用できない.
‑高い演算スループットを達成するため,演算器は通常パイプライン化されている.
この演算パイプラインが有効に使用されるように,通常演算命令のスケジ、ユールを行 うがループ制御での本質的な逐次化により,パイプラインを効率よく利用することが 困難になる.
‑分岐命令やループの実行回数を計数する命令などの,演算には本質的には関係ない ループ制御命令によりオーバヘッドが生じる.また,ループ時に必要な分岐命令の存 在によって効率のよい先行制御が困難となる.
これらの性能低下要因は, 1つまたは複数のベクトル要素に対して同一演算の繰り返し 実行を規定するベクトル命令の導入,および,この命令を効率良く実行するハードウェア を用いるベクトル演算方式を導入することで解決することができる.ベクトル演算方式の 導入によりスカラ演算方式に比べ,次のような利点が存在する[長島 92].
(1) 1命令でベクトルをまとめて演算するので 素づっデータを操作する必要がない.
スカラ演算方式のように 1ベクトル要
(2)各演算命令ごとに必要であったベクトル要素のアドレス計算に使用される命令が不 要である.
(3)演算の繰り返しのための分岐命令, およびループの実行回数を計数する命令が不要 となる.
また ベクトルを単位とした演算命令には次の 3つの性質が存在する.
(1)すべてのベクトル要素に対して同ーの演算を施す.
(2)異なる tを用いたベクトル要素の演算は相互干渉しない.
(3) iを一定値の値づつ(図1.1の例では1)増加させながら演算する.
これらの性質より,
(1)演算パイプラインの性能を完全に出し切ることが可能となる.
(2)インターリープ・メモリなどメモリのスループットを上げる手法が非常に有効に適 用でき,高いメモリバンド幅を得やすい.
このようにベクトル・プロセツサでは大規模科学技術計算内の演算に良く見られる特徴 を有効に活用することで高速演算を実現する重要な方式であると言える.
1 . 3 高速化への課題
ベクトル演算方式を有効に動作させ,演算の高速化をはかるためには次のような課題に 対処する必要がある.
‑高ベクトル化率の達成:プログラムの実行をベクトル処理によって高速化するため には,プログラム中でベクトル化可能な部分を可能な限り多くする必要がある. この ため,ベクトル化が適用可能な範囲をできるだけ拡大する必要がある.
‑スカラ処理部の高速化:プログラム全体がベクトル化可能であることは少ない.し たがって,システム全体の性能を向上させるためにはスカラ処理部分の性能を向上さ せる必要がある.
‑メモリバンド幅の節減:一般にメモリバンド幅を向上させるために必要なハード ウェア・コストは非常に大きく,また,非常に大きいメモリバンド幅をもっメモリを 実現するのも非常に困難である.したがって,より少ないメモリバンド幅でより大き なベクトル処理性能を達成する必要がある.
‑高データ供給能力:プログラムにおける実行性能をあげるには,瞬間的なピーク演 算性能ばかりでなく,実効演算性能を高める必要がある.この実効演算性能を決める のが演算器稼働率である.演算器稼働率はプログラムのベクトル化率と供に演算器に 対するデータ供給能力に支配される.このデータ供給能力を可能な限り高くしてやる 必要がある.
‑マイクロベクトルプロセッサを実現可能なアーキテクチャ:単体のベクトルプロ セッサの高速化だけでは今後増大する要求される計算能力への対応には不十分であ る.高性能なベクトルプロセツサを要素プロセツサとしたマルチプロセツサ・システ
ムを考慮する必要がある.そのためには,マルチプロセッサ構成が容易であるように マイクロプロセッサ化されている必要がある.また,マイクロプロセッサ化されるこ とでワークステーションやパソコンなどの高速プロセッサとしても利用可能になる.
1 . 4 研究の概要
1 . 4 . 1 研究の目的
本研究の目的は斬新なアーキテクチャを導入することで,高速かつ柔軟なベクトル処理 が可能なベクトルプロセッサを実現することであり,以下の内容を含んでいる.
(1)ベクトルプロセッサの課題の整理と,高速かつ柔軟な演算が可能な構成方式の提示 :より高速なベクトルプロセッサを実現するには上記1.3節で述べた高ベクトル化率 の達成,スカラ処理部の高速化,メモリバンド帽の削減,高データ供給能力といった 課題に対処する必要がある.これらの課題に対する解決策を提案する.
(2)プロトタイプ・プロセッサ設計により提案方式の実現性を検証:(1)で提案した解決 策を取り入れたプロトタイプ・プロセッサを設計し,提案した解決策を実際のハード
ウェアで実現する上での問題点の洗い出し,実現性の評価を行う.
(3)ソフトウェア・シミュレーションによるシステム構成方式の妥当性の検証:実際に 期待する性能を得ることができるか評価を行うとともに, (1)で提案した解決策の実 用性の評価し,得られた性能,および,解決策実現に必要なハードウェア・コストを 比較し,両者のトレードオフを明確にする.
1 . 4 . 2 研究成果の要約
本研究で得られた研究成果は以下の通りである.
(1) MSFVアーキテクチャの提案
従来のベクトル演算方式に比べて,高速かつ柔軟なベクトル処理を実現する MSFV (Multithreaded StreaminglFIFO 防ctor)アーキテクチャを提案した .MSFVアーキテ クチャは
F I F O
ベクトル・レジスタ,ベクトルースカラ協調処理, マルチスレッド処 理,柔軟なチェイニングを特長とする[弘中 91a].(2)マク口演算への柔軟な対処法の提案
6
総和,内積,最大値探索,回帰演算などを行う
DO
ループは,本来ベクトル化に不 適なデータ依存関係にあるので,通常のベクトル演算用のハードウェアではベクトル処理できない.そこで,従来のベクトルプロセッサではこれらをマクロ演算として 定義し,特殊な専用ハードウエアを用いてベクトル処理を行っている.これに対して プロトタイプ MSFV型プロセツサでは,M S円 fアーキテクチヤの特長である柔軟な チェイニング能力により,特別なハードウェアを必要とすることなくベクトル処理を 可能としている[橋本92a].
(3)条件付きベクトル演算への対処法の提案
I I F
文を含むDO
ループJ
のベクトル化は困難である.そこで,I I F
文を含むDO
ループjに対処するため MSFVアーキテクチャの特徴を利用した,ベクトル分配/併 合方式,ベクトル実行停止の 2つの新しいベクトル化手法により効果的に対処する [岡崎90].
( 4 )
部分ベクトル化可能なループへの対応法の提案リストベクトル・アクセスなどでよく見られるベクトル化不可能なデータ依存関係 や,ベクトル化に不適当な制御依存関係を含むループではループ全体をベクトル化で きない場合がある.このようにループ全体がベクトル化可能でなければ,コンパイラ 手法である部分ベクトル化,および,MSFVアーキテクチャの特長であるベクトルー スカラ協調処理により効果的に対処する [HIR91].
(5)プロトタイプ MSFV型プロセッサの設計および評価
MSFV型プロセツサにより達成可能な性能を評価するため,MSFV型プロセツサ のアーキテクチャをシミュレートするソフトウエア・シミュレータを作成し,評価を 行った.評価結果から,MSFVアーキテクチャが有する特長により総合的には プ ロトタイプ MSFV型プロセッサは従来型のベクトル・プロセッサに比べて,最低で 16.3%,最高で334.9%(相乗平均で59.0%)性能が良いことが判明した[橋本92a]・
1 . 4 . 3 論文の要旨と構成
多くの科学技術計算では,多数のデータ要素に対して同一演算を施すデータ処理に,多 大な計算時間を費やす.この種の処理の高速化をはかる方式のーっとしてベクトル演算方 式がある.このベクトル演算方式の有効性はさまざまな点から実証されており,現在の商 用スーパーコンピュータに一般的に取り入れられている.
現在のスーパーコンピュータで行われているベクトル演算方式には次のような 3つの 課題がある. 1.ベクトル演算の対象となるループの種類が大きく限定されている点, 2.
7
ベクトル演算を実行する上でプロセッサに対するベクトルデータのロード/ストアに非常 に大きなメモリバンド幅が必要な点, 3.ベクトル演算とスカラ演算聞の並列処理が十分 に行われていない点である.
本研究では,これらの現在のベクトルプロセッサの課題を整理し,その課題を解決す る高速かつ柔軟なベクトル演算が可能なベクトルプロセッサ・アーキテクチャを提案する と共に,本アーキテクチャに基づくベクトルプロセッサの構成例を示し,そのアーキテク チャの妥当性をシミュレーションによって評価・検証した.
本論文は 7章から構成される.
第 1章ではベクトルプロセッサが生まれるに至った背景について述べ,ベクトルプロ セッサの根幹をなすべクトル演算方式について説明し,その高速化を達成する上での課題 について述べ,最後に本研究の目的とその成果の概要について述べる.
第2章と第3章は現状のベクトルプロセッサに関する基本事項をまとめ,ベクトルアー キテクチャの提案を行う.まず,第2章ではベクトルプロセッサ・アーキテクチャの現状 についてまとめる.第3章では現状のベクトルプロセッサ・アーキテクチャの問題点を洗 い出し,従来のベクトル演算方式に比べて,より柔軟で、かつ高速なベクトル演算を可能と する MSFV(Multithreaded Streaming/FIFO Vector)アーキテクチャの提案を行う .MSFV アーキテクチャは以下に示すような特長をもっ.
(1)マルチスレッド処理(M:Multithreaded ) :ベクトル命令レベルでマルチスレッド処 理を行う.すなわち, 1本のパイプラインは, 1個のベクトル命令の実行に占有され るのではなく,複数個のベクトル命令に時分割共有される.これにより,パイプライ ン使用率を向上させると同時に,一時に実行可能なベクトル命令の数を増やせる.
(2)ストリーミング (S:Streaming ) :スカラ命令およびベクトル命令の双方からベクト ルレジスタ内のベクトルデータにアクセスできる.これにより,スカラ命令のループ でも
F T F O
ベクトル・レジスタ内のベクトルデータに対する演算が行える.すなわち,小さなオーバヘッドでベクトルースカラ協調処理が可能となる.
( 3 ) F I F O
ベクトル・レジスタ (F:FIFO) :ベクトル・レジスタとしてリングF I F O
パッ ファを用いることにより, 1個のベクトル命令で一時に処理可能なベクトル長を制限 しない.すなわちストリップ・マイニング処理が不要となり,ベクトル命令再発行に 伴うオーバヘッドを取り除くことができる.(4)柔軟なチェイニング機能:チェイニング機能に関して,その方向および対象命令を 柔軟なものとしている.マルチスレッド処理および柔軟なチェイニング機能により,
特殊なマクロ演算命令ないし専用ハードウェアを用いることなく,回帰型演算(総和,
8
内積,最大/最小値検索, 1次回帰等)の効率的なベクトル処理を可能としている.
第4章と第5章ではMSFVアーキテクチヤに基づくプロトタイプ・ベクトルプロセツサ について述べる.まず,第4章ではプロトタイプ・ベクトルプロセツサの命令セットアー キテクチャについて述べた後,MSFVアーキテクチャの特長である
F I F O
ベクトル・レジ スタ,ストリーミング,マルチスレッド処理,および,柔軟なチェイニング機能を用いた マクロ演算,条件付きベクトル演算,ベクトル・スカラ協調処理について述べ,簡単な評 価を行った結果を示す.第5章では MSFVアーキテクチャに基づくプロトタイプ・プロ セッサの具体的なハードウェア構成について述べる.第6章ではMSFVアーキテクチ作の性能評価について述べる.この章では第5章のハー ドウエア構成に対してソフトウエア・シミュレータを用いて評価を行い,その結果を示す.
ソフトウエア・シミュレータによる評価では, 14種の標準的なベンチマーク・プログラ ムに対して,MSFVアーキテクチャの特長である,
F I F O
ベクトル・レジスタ,ストリー ミング,マルチスレッド処理の効果を評価した.その結果,F I F O
ベクトル・レジスタに より最高24.2%(相乗平均 10.7%),ストリーミングにより最高32.9%,マルチスレッド処 理により最高 333.8%(相乗平均43.6%),の性能向上率が得られ,総合的には従来型のベ クトル・プロセツサに比べて最高334.9%(相乗平均59.0%)得られることが示された.ま た,MSFVアーキテクチヤによるメモリバンド幅の節減能力についても評価を行った.そ の結果従来型ベクトルプロセツサの半分程度のメモリバンド幅で同様の演算スループット を達成できることが示された.以上より,MSFVアーキテクチヤが従来型のベクトル演算 方式に比べて,より柔軟で、かつ高速なベクトル演算を可能とするベクトルアーキテクチヤ であることカf明らかになった.最後に第7章において,本研究の成果をまとめると共に,今後の課題について述べる.
9
(3)レジスターメモリ演算方式:上記(1)と (2)の折衷方式で, レジスターレジスタ演算方 式に次のようなベクトル演算命令を追加したものである. 1つのソース・オペランド
と1つのデステイネーション・オペランドはベクトル・レジスタ上に,残りのソース ・ オペランドはメモリ上においてベクトル演算を行う.
IBM 3 0 9 0 V F [ P A D 8 8 ]
に採用さ第 2章
レジスターレジスタ演算方式と, レジスターメモリ演 メモリバンド幅,ベクトル演算に必要な命 れている.
ここではメモリーメモリ演算方式,
ベクトル長,チェイニング,
アーキテクチャ
トルフ口セッサ •
ベク
算方式について
令ステップ数,必要となる命令種の観点で、比較を行う.
本章では,従来のベクトル計算機を構成する上で考慮すべき点について整理する.
ベクトル長 2 . 1 . 2
ベクトル長に関してはメモリーメモリ演算方式とレジスターレジスタ演算方式とではそ
オペランド指定方式
2 . 1
の制限に大きな差がある.
この節では,従来のベクトル計算機で用いられているオペランド指定方式についてまと め,現在の商用スーパーコンビュータで主流となっているオペランド指定方式がレジスタ
‑メモリーメモリ演算方式:ベクトル長は記憶空間の大きさで決まるが,広大な仮想記 憶空間のサポートにより,事実上制限がない(ただし,性能上,実記憶容量で抑えら れる).レジスターレジスタ演算方式では必要となるストリップ・マイニング処理が不 ーレジスタ演算方式である理由を明確にする.
オペランドの種類
2 . 1 . 1
要である.
‑レジスターレジスタ演算方式およびレジスターメモリ演算方式:ベクトル長はベクト ベクトル演算のオペランドであるベクトルを指定する方法で現在のベクトルプロセッサ
を分類すると,次の 3方式に分類される.図
2 . 1
に3方式で記述したオブジェクト・コー ドを示す.ル・レジスタ長で決まる.商用スーパーコンピュータのベクトル・レジスタ長は,
6 4 ( C r a y )
,256(S‑810
,S X )
,5 1 2 ( S ‑ 8 2 0 )
,1 0 2 4 ( V P
の最大レジスタ長)程度である.もしベクトル長がベクトル・レジスタ長より大きい場合,ストリップ・マイニング (1)メモリーメモリ演算方式:
CDC S t
訂ー1 0 0
,CDC C y b e r 2 0 5 [ L i n 8 2 ]
等に代表される方式で, 2つのソース・オペランドと 1つのデステイネーション・オペランドいずれも
これは,ベクトル・レジスタ長をセグメント長とし てベクトル・データのセグメント化を行い,セグメント単位でベクトル処理を繰り返 すことである.とのとき,毎セグメント問でベクトル演算が一時中断し,結果ベクト ルのストア操作および次のセグメントのロード操作が入る場合があり,そのオーバー ヘッドが問題となる.ストリップ・マイニング処理をオプジ、エクト・コードで明示的 に行おうと,あるいは,ハードウェアが自動的に行おうと
( S ‑ 8 1 0 )
,問題は変わらな これが, レジスターレジスタ演算方式の最大の短所の「有限長のベクトル・レジ (strip mining)処理が必要となる.メモリ上においてベクトル演算を行う.
( 2 )
レジスターレジスタ演算方式:C r a y ‑ l [ R u s 7 8 ]
[Tho 8 8 ]
に代表される方式で,2
つの ソース・オペランドと 1つのデステイネーション・オペランドいずれもレジスタ(ベ クトル・レジスタと呼ぶ)上において,ベクトル演算を行う.ベクトル演算の前後に,ベクトル・データのレジスタへ/からのロード/ストアが必要で, ロード/ストア・アー キテクチヤ"とも呼ぶ.
C r a y
社のC r a y [ T h o 8 8
,S e
r91 ]
,富士通V P [
平栗8 3
,清水9 0
,]目立
S [
小高8 3
,河辺8 7
,河辺9 2
],日電S X [
古勝8 4
,松本9 2 ]
等,大部分のベクトル しEスタに起因するオーバヘッド」である.
プロセッサがこの方式を採用している.
11
ハU
'E A
2 . 1 . 3
チェイニング連続ベクトル演算を実現する手段としては,チェイニング(リンケージとも呼ぶ)および 複合命令(例えば,MULTIPLY ‑AND ‑ADD命令)がある.チェイニングとは,フロー依 存関係にある 2つのベクトル命令(たとえば,ベクトル・ロード→ベクトル演算,ベクト ル演算→ベクトル演算,ベクトル演算→ベクトル・ストア)をオーバラップ実行する機能 である.チェイニングはさらに,演算パイプラインの連結を明示的に指示する手法(ここ では,明示的チェイニングと呼ぶ),および,データ依存関係により暗黙的に指示する手 法(ここでは,暗黙的チェイニングと呼ぶ)の2つに分類される.どれを選択すべきかとい う議論もあるが[PAD88],ここでは柔軟性のある暗黙的チェイニングについて考える.こ れについても,メモリーメモリ演算方式とレジスターレジスタ演算方式とでは優劣がつく.
・メモリーメモリ演算方式:メモリを介した暗黙的チェイニングは不可能ではないが,
実際には行われていない.これは,ベクトル・データがメモリ・オペランドである場 合, 2つのベクトル聞のフロー依存関係の解析が極めて困難であるからである.
・レジスターレジスタ演算方式およびレジスターメモリ演算方式:ベクトル・レジスタ を介した暗黙的チェイニングは,レジスターレジスタ演算方式の大きな特長である.
すなわち,先行ベクトル命令のデステイネーシヨン・レジスタと後続ベクトル命令の ソース・レジスタが同一である(つまり,フロー依存関係にある)場合,演算パイプラ インを連結(チェイニング)する.Cray,富士通VP,日電
s x
等,大部分のレジスターレジスタ演算方式のベクトルプロセッサに採用されている.ただし,先行ベクトル 命令→後続ベクトル命令聞でのごく単純なチェイニングしかできない.よって,演算 パイプライン間の特殊な連結を要する演算(内積,総和,最大値検索,再帰演算,な ど)は,単純命令のチェイニングとしてではなく,専用のマクロ演算命令としてしか 提供されていない.
2 . 1 . 4 メモリバンド幅
要求されるメモリ・アクセスの性能に関しても,メモリーメモリ演算方式とレジスタ ーレジスタ演算方式とでは差がある.
・メモリーメモリ演算方式:基本的には lベクトル命令につき,ロード 2回,演算 1回, ストア l回が行われる.よって,演算毎に3回のメモリ・アクセスが必要となる.し たがって,実行演算スループットは,メモリ
‑ J
ンド帽で抑えられる. しかも,演算の度にベクトル・データをメモリからロードしなければならないことから,スタートアツ
12
プ・タイムが大きくなるという弱点もある.また,ロード/ストアのタイミングを演 算と切り離してスケジュールすることができない.
・レジスターレジスタ演算方式およびレジスターメモリ演算方式:演算に先だってベク トル・データをメモリからベクトル・レジスタにロードしておき,全ての演算をレジス ターレジスタ間で行ない,そして最終結果のみをメモリへストアする.中間結果をメ モリに戻す必要がないのでメモリ・トラフイツクが減少する.また, 1個のソース・オ ペランドを複数の演算で用いることも可能である.このように,レジスターレジスタ 演算方式ではメモリ・トラフイツクを減少させ,実効演算スループットをメモリ.lン'Iド幅
より大きくすることが可能になる.また同時に,高速なベクトル・レジスタを用いる ことでスタートアップ・タイムも小さくなる.ただし,
I
ベクトル長がベクトル・レジ スタ長より短いこと」がその条件である.条件を満たさない場合,ストリップ・マイ ニング処理により中間結果をメモリに戻さねばならないことから,結局メモリーメモリ演算方式と大差なくなる.
2 . 1 . 5 ベクトル演算に必要な命令ステップ数
ベクトル演算に必要な命令ステップ数に関してはメモリーメモリ演算方式とレジスター レジスタ演算方式とでは大きく異なる.図2.1の例ではレジスターレジスタ演算方式では9 命令, メモリーメモリ演算方式では 5命令,レジスターメモリ演算方式では 6命令である.
これは次の理由による.
・メモリーメモリ演算方式: メモリーメモリ演算方式では lつのベクトル演算命令で2 つのソース・オペランドのロード,および, 1つのデステイネーション・オペランド のストアをベクトル演算と同時に行う.このため,純粋に行うベクトル演算の数だけ のベクトル命令数でよい.
・レジスターレジスタ演算方式:すべてのベクトル演算命令はベクトル・レジスタ聞 の演算しか許されていない.このためベクトル演算で使用するオペランドを明示的 にベクトル・レジスタにロード,そして,ベクトル・レジスタ上に生成された結果を メモリにストアする必要がある.このためメモリーメモリ演算方式に比べベクトル・
ロード/ストア命令の数だけ多くの命令数を必要とする.
・レジスターメモリ演算方式: 1つのソース・オペランドと 1つのデステイネーショ ン・オペランドはベクトル・レジスタ上に,残りのソース・オペランドはメモリ上ま たはベクトルレジスタのいずれかにおいてベクトル演算を行う.そのため,ベクトル 演算開始時に最低1つのオペランドをベクトル・レジスタ上にベクトル・ロード命令
13
によりロードする必要がある.しかしながら,最低 lつのオペランドがベクトル・レ ジスタ上にロード済みであればメモリ上のオペランドとベクトル・レジスタ上のオペ ランドを使用することで レジスターレジス夕方式で必要な明示的なベクトル・ロー ド/ストア命令を使用することなくベクトル演算が可能である.したがって,
ーメモリ演算方式とレジスターレジスタ演算方式で必要な命令数の中間となる.
2 . 1 . 6 必要となる命令の種類
メモリ
ベクトル演算に必要な命令の種類は使用するソースおよびデステイネーション・オペラ ンドの組合せ数と, ベクトル演算命令の他にベクトル・ロード/ストア命令を必要とする か否かで決まる.
‑メモリーメモリ演算方式:メモリ上のオペランドのみを対象としてベクトル演算を行 うので同じベクトル演算に対するオペランドの組合せは lつしか存在しない.また,
直 接 メ モ リ 上 の オ ペ ラ ン ド に 対 し て ベ ク ト ル 演 算 を 行 う の で 特 別 に ベ ク ト ル ・ ロ ー ド/ストア命令を必要としない.
•
レジスターレジスタ演算方式:ベクトル・レジスタ上のオペランドのみを対象として ベ ク ト ル 演 算 を 行 う た め , ベ ク ト ル 演 算 に 対 す る オ ペ ラ ン ド の 組 合 せ は lつ し か 存•
在しない. しかし,ベクトル・レジスタにメモリ上のオペランドをロードまたはメモ リへストアするため,ベクトル・ロード/ストア命令を必要とする.
リーメモリ演算方式より多種類のベクトル命令を必要とする.
そのため, メモ
レジスターメモリ演算方式: レジスターレジスタ演算方式で必要であったベクトル・
レジスタ上のオペランドのみを対象としたベクトル演算命令に加え,ベクトル・レジ スタとメモリ上のオペランドをソースとするベクトル演算命令が存在する.さらに,
メモリ上のオペランドをベクトル・レジスタヘロード/ストアするため,レジスターレ ジスタ演算方式同様にベクトル・ロード/ストア命令を必要とする.
中最も多くの種類の命令を必要とする.
このため, 3方 式
2 . 1 . 7 比較結果
ここではメモリーメモリ演算方式, レジスターレジスタ演算方式と, レジスターメモリ j寅
算方式について, ベクトル長, チェイニング メモリバンド幅, ベクトル演算に必要な命 令ステップ数,必要となる命令種の観点で比較を行った.表2.1に比較結果をまとめたも のを示す.
14
1
DO 1 K==l,N
X (K) ー Q + Y(K)*(R大Z(K+ユ0) + T肯Z(K+ll) )
Tユ(K)
T2 (K) T3(K) T4 (K) T5 (K)
(a)ソース・コード
骨 一
ーー
‑
骨 一‑
+‑
R T
肯
?を
Z(K+I0) Z(K+ll)
Tl (K) + T2(K) Y(K) 肯 T3(K) Q + T4 (K)
(b)メモリーメモリ演算方式のオブジェクト・コード VRl 叫争ーー
VR2 司$ーー VR3 一ー VR4 一一 VR5 ←ー司
VR6 ーー
VR7
‑ ‑
VR8 ←ー X(K) ーー
Z(K+I0) R * VRl Z(K+ll) T 肯 VR3 VR2 + VR4 Y(K)
VR6 世 VR5 Q + VR7 VR8
(c)レジスターレジスタ演算方式のオブジエクト・コード VR2 一‑
VR4
‑ ‑
VR5 ー一 VR7
‑ ‑
VR8 +‑
X(K) +‑
R 骨蛇 T 官 VR2 Y(K) Q + VR8
Z(K+I0) Z(K+l1) + VR4
t VR5 VR7
(d)レジスターメモリ演算方式のオブジェクト・コード 図2.1 オペランドの種類による違い
表 2.1から,各項目に関して次の方式が最適で、あることがわかる.
‑ベクトル長:メモリーメモリ演算方式,記憶空間にベクトルを置くため,
長に関して事実上制限を持たない.
ベ ク ト ル
‑チェイニング・ レジスターレジスタ演算方式, お よ び レジスターメモリ演算方式,
15
表2.1 オペランドの種類による比較
オペランド種類 メモリーメモリ演算方式 レジスターレジスタ演算方式 レジスターメモリ演算方式
ベ ク ト ル 長 制限なし 制限あり 制限あり
チェイニング 困難 容易 容易
必要なメモリ・バンド幅 大
命令スアップ数 少ない 多 い 中
命令の種類 少ない 中 多い
両方式はレジスタ上にベクトルを置くのでレジスタ番号によりフロー依存関係の解 析が用意である.
・必要なメモリバンド幅:レジスターレジスタ演算方式,および, レジスターメモリ演 算方式,両方式はレジスタ上に中間結果を置くことで演算に必要なメモリバンド幅を 削減できる.
・命令ステップ数:メモリーメモリ演算方式,演算命令がメモリに対するロード/スト ア操作をも行うことため,必要な命令ステップ数を削減できる.
・命令の種類:メモリーメモリ演算方,命令セットが演算命令のみで構成されるため,
行う演算の種類だけの命令数でよい.
このような状況で現在の商用スーパーコンピュータの大部分がレジスターレジスタ演算 方式を採用しているのは,現在のスーパーコンピュータの実装技術では,演算スループッ トに比べ,メモリバンド幅を大きくするのが大変難しく,メモリバンド幅の削減を最重要 項目として設計しているためである.このメモリバンド幅による制約は非常に大きく,今 後パイプライン ・メモリ[西 88]などの主記憶のメモリバンド幅を拡張する技術が導入さ れ,メモリバンド幅が問題とならなくなるまで,レジスターレジスタ演算方式が主流であ り続けるはずである.しかしながら,相対的により少ないメモリバンド幅で済むレジスタ ーレジスタ演算方式であっても,必要とするメモリバンド幅は非常に大きく,さらなるメ
モリバンド幅節減のための工夫が必要である.
2 . 2 ベクトル演算の種類
通常の四則演算の他に次の2種のベクトル演算が存在する. (1)マクロ演算
(2)条件付きベクトル演算
この節ではこれらのベクトル演算に対する,従来のベクトルプロセッサの対処法をしめす.
16
加算パイプライン
図2.2総和演算装置の例
2 . 2 . 1 マク口演算
結果 レジスタ
従来のベクトルプロセッサでは,マクロ演算として,次のものを定義している (1)総和型演算Sこ S土Ai
(2) 内積型演算 S=S土AixBi (3)累積型演算 S
=
SxAi(4)最大値/最小値探索 Xニ m以 {Ai},X = min{Ai}
(5) 回帰演算 Xi=Ai土Xi‑1xBi
これらの演算を行う
DO
ループは,本来ベクトル化に不適なデータ依存関係にあるの で,通常のベクトル演算用のハードウェアではベクトル処理できない.そこで,従来のベクトルフ。ロセツサで、は,上記の演算をマクロ演算として定義し,特別 の専用ハードウェアを用いて次のようにベクトル処理している.
(1)総和型演算
図2.2に示す総和演算装置を用いる.そして,次式に示すように,ベクトル要素の 演算順序を変更する.つまり,ベクトル要素を連続して加算するのではなく,演算パ イプラインのステージ数分だけの間隔(図 2.2の例では 4つ)おきにベクトル要素の加 算を行う.図 2.2の例では,以下の4個の部分和を生成する.
So
Ao+A4
十A 8
十・・・ SIA I + A 5 + A 9 +
・・・S2
A
2+ A 6 +
AJO +・.. (2.1 ) S3 一一A 3
十A 7 +
AlI +・.•最終的には,すべての部分和の和を取り総和とする.
(2)内積型演算
17
図2.2において,乗算パイプラインを加算パイプラインの前段に設け,その出力を 加算パイプラインの入力とすることで内積を得る.
(3)累積型演算
図2.2の加算パイプラインを乗算パイプラインに置き換えることで累積を得る.
(4)最大値司最小値探索
図2.2の加算パイプラインを比較演算パイプラインとし,大きい(小さい)方の値を 演算結果とすることで最大値(最小値)の候補を複数得る.これらの候補の間で最終 的に比較演算を行うことで 最終的な最大値(最小値)を得る.
(5)回帰演算
一次回帰演算
Xi=Ai+Xj
ー1xBj
を考える.この一次回帰演算の実行には次の2
つの方法がある.
a)逐次ベクトル処理
一次回帰演算
Xj = Aj+Xj
一lxBj
をこのままの形でマクロ演算装置によりベクト ル処理を行う.ただし,データ依存関係のため通常のベクトル命令ほどは高速処 理できない.b)並列ベクトル処理
まず,元の式
Xi = Aj +X j
ーIxBj
をX
j 二 A.i + AjーlxBi+.,/¥←2x(Bjー1xBi)Xi+l ‑ Ai+l
+
Ai X Bi+l+
/,.Yi‑I X (Bi X Bi+l)(2.2)
のように変形し,偶数要素と奇数要素を独立に計算可能にする.得られた 2.2式 における各演算の演算開始時間を調整することで, 1つのパイプライン演算器を 用いて 2つの演算結果を得る.これにより,式の展開により増加した演算回数
を,データ依存関係により生じるパイプライン空きステージを用いて演算するこ とで展開前の式と同じ実行時間で2倍の演算結果を得ることができる.よって,
a)より高速に処理することが可能となる[Wad88].同様な方法を用いて,よりソ フトウェア的に実行する方式[Tan88]も存在するが,一般に非常に長いベクトル 長でないと効果的でない.
18
2 . 2 . 2 条件付きベクトル演算
DOループ中の E文を含む条件付きベクトル演算をベクトル化するために用いられる のが条件付きベクトル演算方式で、ある.ここで従来のベクトルプロセッサで用いられてい るマスクベクトルを用いた条件付きベクトル演算方式について説明する[小高 88,三浦 88, 渡辺 88,長島 92].マスクベクトルとは2つのベクトルを比較し,比較条件が成立した場 合を 1,不成立の場合を Oとするピット列ベクトルを生成したものである.マスクベクト
ルを用いたベクトル化の方法には,次の3方式がある.表2.2の各方式において必要とな る所要処理量を示す.
(1)マスクベクトル選択方式:比較条件に関係なく,通常のベクトル演算命令によりす べてのベクトル要素に対して演算を行う.比較条件は得られた演算結果から対応する マスクベクトル要素が真(あるいは偽)であるベクトル要素のみを選択混合すること で反映される.
(2)マスク付きベクトル演算方式:マスク付きベクトル演算命令が,通常のベクトル演 算命令と同様に,すべてのベクトル要素に対して演算を行う.ただし,対応するマス
クベクトル要素が真(あるいは偽)であるベクトル要素に対してのみ演算結果を格納 する.
(3)ベクトル収集/拡散 (gather/scatter)方式: まず,対応するマスクベクトル要素が真 (あるいは偽)であるベクトル要素のみを収集したベクトルを生成する.演算は,この 収集したベクトルに対して行う.したがって, (1),(2)のように元のベクトルの全要素 に対して演算を行う必要がない.演算結果であるベクトルに対しては,各要素がベク
トル内の正しい位置に格納されるようにこれを拡散する.これには,次の 2つの方法 が存在する.
・ベクトル圧縮/伸長 (compress/expand)方式:収集/拡散すべきベクトル要素のイ ンデックスが,対応するマスクベクトル要素のインデックスで直接与えられる.
ベクトル圧縮/伸長命令により,ベクトルレジスタ問あるいはベクトルレジスター メモリ間で,ベクトルの収集/拡散を行う.
・りストベクトル・アクセス方式:収集/拡散すべきベクトル要素のインデックス が,インデックス・リストにより与えられる.これにはまず,マスクベクトルか らインデックス・リストを作成して,元のベクトルがリストベクトルとしてアク セスできるようにする必要がある.そして,リストベクトル・アクセス命令によ りリストベクトルをロード/ストアすることで,当該ベクトルの収集/拡散を行う.
19