Transcript Document
LSI とシステムのワークショップ
12. ベクトル処理アーキテクチャ
五島 正裕
Advanced Computer Architecture
発表の内容
1.
背景
2.
アクセラレータ
3.
アクセラレータ vs 汎用マルチコア
4.
汎用マルチコアの高効率化
2
Advanced Computer Architecture
背景 0 : 製品開発
1.
要求される処理の高度化 / 複雑化
2.
開発期間の短縮
3.
速度は,1st. Priority ではなくなりつつある
3
Advanced Computer Architecture
背景 1 : ハードウェア (LSI) 開発
1.
要求される処理の高度化 / 複雑化
「設計できない」
2.
開発期間の短縮
「発売に間に合わない」
3.
ソフトウェアでも開発は難しくなりつつある
製品の開発を始めてから LSI の開発を始めるのではダメ
LSI 製造コストの高騰
「開発費を回収できない」
個別用途向けに開発したのではダメ
以下のような LSI 開発は困難
個別用途向け
多品種 / 少量
4
Advanced Computer Architecture
背景 2: ソフトウェア開発
開発効率,メンテナンス効率
1.
要求される処理の高度化 / 複雑化
2.
開発期間の長期化 → 開発コストの高騰
3.
ハードウェアの速度向上により,要求は飽和しつつある?
(少なくとも,ユーザは必要性を実感していない)
Java,Ruby などの利用
速度はともかく,開発効率が高い
5
Advanced Computer Architecture
要求される処理の高度化 / 複雑化
例えば MPEG
MPEG-2 (1995年)
ハードウェア化をかなり考慮して策定
MPEG-4 (H.264) (2003年)
ハードウェア化は(MPEG-2 ほどには)考慮されていない
– ソフトウェアでも,正しく書くのは難しい
例えば 暗号
AES
ハードウェア化をかなり考慮して策定
次は?
6
Advanced Computer Architecture
ハードウェア指向 vs. ソフトウェア指向
↑ハードウェア指向
専用ハードウェア
アクセラレータ
GPU
PLAYSTATION 3 Cell
汎用マルチコア(小型コア)
Xbox 360 PX
Larrabee
SH MC
汎用マルチコア(大型コア)
x86 MC (Intel Core, AMD Opeteron, etc.)
POWER
SPARC64
↓ソフトウェア指向
7
アクセラレータ
Advanced Computer Architecture
アクセラレータの普及
特定応用に特化したプロセッサの普及
ゲーム・コンソール用プロセッサ
PLAYSTATION 3 Cell
GPU
画像認識/処理の専用プロセッサ
ビデオ/オーディオ・コーデック
共通した特徴:
データ並列性の高い処理をターゲットとしたプロセッサ
9
Advanced Computer Architecture
データ並列性の高い処理
データ並列性の高い処理
データ処理量が多い
汎用プロセッサで対処しにくい(?)
比較的単純な処理の繰り返し(?)
汎用プロセッサほどの複雑な機構は不要(?)
⇒ 汎用プロセッサ + アクセラレータ
10
Advanced Computer Architecture
アクセラレータの特徴
アクセラレータの特徴(⇔ 汎用マルチコアと比較):
SIMD(⇔ MIMD)
ローカル・メモリ(⇔ コヒーレント・キャッシュ)
11
SIMD
Advanced Computer Architecture
SIMD
1.
SIMD:Single Instruction stream / Multiple Data stream
SIMD プロセッサ
SIMD 命令セット
2.
利点:ピーク性能
3.
問題点:プログラマビリティ
13
Advanced Computer Architecture
SIMD プロセッサ
Single Instruction stream/Multiple Data stream
単一の制御部からの指令により,複数の演算器が同時に同じ処理を行う
Control Unit
Instruction
Broadcast
PE – 0
PE – 1
PE – 2
PE– n-1
Memory
14
Advanced Computer Architecture
SIMD 命令セット
(スーパ)スカラ・プロセッサの拡張命令セット
VIS (Visual Instruction Set)
MMX/SSE/3DNow!, AltiVec, etc.
元々は,64b の演算器を,16b x 4 として使う手法 (VIS,MMX)
1つのレジスタ内に,2~8個程度のデータをパック
1命令で,同種の演算を2~8個程度同時に行う
15
Advanced Computer Architecture
SIMD の利点と問題点
利点: 高い最大性能
演算器間で制御部を共有可能
「1命令で n 個の処理」
演算器により多くの面積を割り当てることが可能
問題点: プログラマビリティ
不規則なループの処理
16
Advanced Computer Architecture
規則的なループ と 不規則なループ
SIMD 化:
効率良く SIMD 命令に変換できること
規則的 (regular) なループ:
SIMD 化可能
配列の連続要素に対し,同一の処理を行う場合など
積和演算
行列積
不規則 (irregular) なループ:
SIMD 化困難,SIMD 化すると性能低下が大きい
17
Advanced Computer Architecture
不規則なループ
1.
if-then-else 構造を持つもの
実行フラグなどにより対処は可能だが,性能は悪化
2.
不規則なメモリアクセスを含むもの
要素毎にポインタを含むものなど
3.
リスト・ベクトル機能
– SIMD 命令セットの範疇では,サポートできない
ループからの脱出
4.
then パート と else パートを逐次実行
自動 SIMD 化コンパイラ (inc. Intel コンパイラ)は SIMD 化しない
袖 (wing) の処理
18
Advanced Computer Architecture
不規則なループの具体例 (1/2)
サーチ:
次にたどるべきノードが適応的に決まる
ソート:
不規則なメモリ・アクセスを含む
クイック・ソートやマージ・ソート等
画像フィルタ:
袖 (wing) の処理
19
Advanced Computer Architecture
袖 (wing) の処理
重み行列
20
Advanced Computer Architecture
不規則なループの具体例 (2/2)
MPEG-4 H.264 AVC:
動き検出 (motion detection)
多重ループからの脱出
適応的な探索
符号化,復号化
多数の分岐
適応的なモード切替
デブロッキング・フィルタ
適応的なアルゴリズム
ウチの研究室の学生が,某有名エンコーダのベンダで SSE 化を担当
「GPGPU で,CPU に勝つのは困難」
21
Advanced Computer Architecture
プログラマビリティ
プログラマビリティの低さを証明するもの:
「アクセラレータでやってみました」系の論文
最近は通らなくなってきた
プログラミング・コンテスト
Cell Challenge, GPU Challenge
プログラミング自体が難しい
しかも,本質的でない困難が多い
プログラミングの流れ:
汎用プロセッサでのプログラミング
最適なアルゴリズムの選択 → プログラミング
アクセラレータでのプログラミング
効率よく実行可能なアルゴリズムの選択 → プログラミング →
書けない → アルゴリズム選択からやり直し
22
アーキテクチャ比較
Advanced Computer Architecture
アーキテクチャ
代表的なアーキテクチャ
専用ハードウェア
SIMD プロセッサ
汎用マルチコア w/ SIMD 命令セット
汎用マルチコア w/o SIMD 命令セット
(ウルトラワイドなスーパスカラ・プロセッサ)
プログラマビリティと最大性能
チップの面積は,演算器 とその 制御部 に分けられる
最大性能は演算器にどれだけ面積を割くかによる
プログラマビリティは制御関連回路のコストにほぼ比例
24
Advanced Computer Architecture
演算器と制御部
SIMD プロセッサ
単一の制御部と複数の演算器から成る
チップ面積の殆どは,演算器に割り当てられる
Out-of-Order スーパスカラ
並列実行可能な部分をハードウェアで動的に検出
チップ面積の殆どは,制御部に割り当てられる
25
Advanced Computer Architecture
プログラマビリティと最大性能のトレードオフ
プログラマビリティ
目標
スーパスカラ
マルチコア
SIMD
演算器
ピーク性能=
演算機の割合
制御回路
チップ面積一定
26
汎用マルチコアの面積効率の向上
Advanced Computer Architecture
コアの規模と数
チップ面積一定として,どちらが有利か?
小型のコア × 多数
大型のコア × 少数
28
Advanced Computer Architecture
コアの規模と数
「マルチコアでは,チップ面積が余っているから,無駄に使ってよい」
⇒ ウソ
シングル・コアの時代:
チップ面積の増加 ⇒ チップ・コストの増加
マルチコアの時代:
チップ面積の増加 ⇒ コア数の減少 ⇒ 性能低下
29
Advanced Computer Architecture
コアの規模と数
マルチコアこそ,(性能 / 面積) を最大化することが肝心
(性能 / 面積) が同程度なら,コア数は少ないほうがよい
マルチプロセッサの経験から
n コアで n 倍スピードアップは無理
– 「コアの性能が低いと,コア数を増やして勝つのは難しい」
30
Advanced Computer Architecture
スーパスカラ・プロセッサの回路面積
w:幅
フェッチ幅
発行幅
キャッシュ:
O(1) ?
演算器:
O(w)
制御部:
O(w3)
各種テーブルを構成する RAM:
ポート数:
O(w)
エントリ数:
O(w)
面積 ∝ (ポート数)2 × (エントリ数)
31
Advanced Computer Architecture
スーパスカラ・プロセッサの回路面積
回路面積
制御
演算器
キャッシュ
w
1
2
4
8
32
Advanced Computer Architecture
コアの規模
チップ面積一定として,どちらが有利か?
小型のコア × 多数
大型のコア × 少数
33
Advanced Computer Architecture
O(w3) から O(w) にするアーキテクチャ技術
ステージ
ユニット
命令フェッチ
命令キャッシュ
リネーミング
RMT
ディスパッチ
スケジューリング
リネームド・トレース・キャッシュ
クラスタ化
命令ウィンドウ
発行
レジスタ読み出し
提案技術
マトリクス・スケジューラ
クラスタ化
演算器
レジスタ・ファイル
バイパス
非レイテンシ指向
レジスタ・キャッシュ・システム
メモリ依存解析
依存解析器
NOSQ
演算器の追加
演算器
ツインテール・アーキテクチャ
実行
レジスタ書き戻し
34
Advanced Computer Architecture
スーパスカラ・プロセッサの回路面積
回路面積
制御
演算器
キャッシュ
w
1
2
4
8
35
Advanced Computer Architecture
コアの規模
チップ面積一定として,どちらが有利か?
小型のコア × 多数
大型のコア × 少数
36
Advanced Computer Architecture
評価
Alpha 21464 のフロアプラン
R. Preston, et al.: Design of an 8-wide superscalar RISC microprocessor
with simultaneous multithreading, Proc. ISSCC (Int'l Solid-State Circuits
Conf.), pp. 334―472 (2002).
SPEC CPU 2006 の平均 IPC
37
Instruction
Reg
Window
File
INT FU
(x8)
20mm
RMT
Insn
Buf
L1 I$
FP FU
(x4)
Insn
Unit
L2 Cache
Tag Array
LSQ
L1
D$
L2 Cache
Control
20mm
: Cache
: Functional Unit
L2 Cache
Data Array
(3MB)
: OoO Control
: Instruction Fetch Unit
: Inter Processor Router,
Memory Controller, IO …
0%
20%
Cache
40%
Functional Unit
60%
OoO Control
80%
Fetch Unit
100%
IO
Other
2
1.8
1.6
OoO-Prop-8w
1.4
OoO-Prop-4w
OoO-Prop-2w
IPC
1.2
OoO-Prop-1w
OoO-Base-8w
1
OoO-Base-4w
OoO-Base-2w
0.8
OoO-Base-1w
Inorder-8w
0.6
Inorder-4w
Inorder-2w
0.4
Inorder-1w
0.2
0
0
50
100
Area
150
7
6
OoO-Prop-8w
5
OoO-Prop-4w
IPC per Area
OoO-Prop-2w
OoO-Prop-1w
4
OoO-Base-8w
OoO-Base-4w
3
OoO-Base-2w
OoO-Base-1w
Inorder-8w
2
Inorder-4w
Inorder-2w
1
Inorder-1w
0
No L2
64KB
128KB
256KB
512KB
L2 Cache Capacity
1MB
2MB
まとめ
Advanced Computer Architecture
まとめ
プログラマビリティが一番 大事
アクセラレータは,プログラマビリティが問題
汎用マルチコアが有望
各コアの面積効率の向上のアーキテクチャ研究が肝心
43