プロセサ・アーキテクチャ5

プロセサ・アーキテクチャ5
マイクロプログラミングからVLIWへ
「計算機アーキテクチャ」(第12回目)
今井慈郎([email protected])
VLIWとは何かNo1
• スーパーパイプラインおよびスーパースケーラにつ
いて概観.共に,VLSIコンピュータを構成する技術
(マイクロアーキテクチャ).両者とも,過去とのバイ
ナリコード互換性を保ったまま速度向上を図るという
方針を有する.
• 問題点も顕在化.特に,スーパースケーラ方式では,
並列処理を効率よく実行するため,分配機構などを
如何に効果的かつ効率的に設計できるかが,成否
の鍵.
VLIWとは何かNo2
• ジレンマ:並列処理をできるだけ,効率よく実現する
ジレンマ
ためには,並列性の識別が大変重要.
• しかし,一般
一般には
一般には,
には,命令シーケンス
命令シーケンス内
シーケンス内の近接する
近接する命
する命
令群よりも
令群よりも,
よりも,少し離れた命令群
れた命令群の
命令群の方が構造ハザード
構造ハザード
やデータハザードを
データハザードを引き起こす可能性
こす可能性が
可能性が低い(並列
性が高 い ) .
• このような命令群を素早く発見することが並列処理
の成否を決定.
どこまで命令
どこまで命令の
命令の先読みを
先読みを行
みを行うか?
うか?
VLIWとは何かNo3
• スーパースケーラでは,並列処理の精度を上げるた
め,CPU内に,動的な実行順序制御機構(分配機構
やアウトオブオーダ実行機構など)が不可欠.ハード
ウェアが重たくなり,価格性能比低下の要因.
• VLIW方式では,このような専用ハードウェアを基本
的にCPUの外へ(ハードウェアからソフトウェアへ)移
動.
コペルニクス的転回
コペルニクス的転回 的転回 ・・・ ・・・ by Immanuel Kant
VLIWとは何かNo4
• バイナリコード互換性を放棄.ソースコード互換性に
のみを提供.
• ソースを再コンパイルする時,複数の命令の並列実行
をCPU内の複数の実行ユニット(パイプライン)に静的
に割り当てる. ・・・ (対比)動的な実行順序制御機
構をCPUに内蔵するスーパースケーラでは,対象とな
る命令群をCPU内のハードウェアが識別して,その範
囲で動的に割り当てる.
• 並列処理をハードウェアではなく,ソフトウェアで識別
し,スケジューリングする
VLIWとは何かNo5
• 並列性の記述:スーパースケーラでは暗示的,一方,
VLIWでは明示的.・・・ コンパイラが生成する命令語
(バイナリコード)は並列性を反映したものになる.
• では,命令語はどのような構成にすべきか?過去の
CPUで動作していた命令語と同じような機能か?(バ
イナリコード互換性は維持されるか?)
実はここでも「コペルニクス的転回」が必要
VLIWとは何かNo6
• 非互換性の当然の帰結として,CPUに並列処理を指
示するためには(一度に多数の処理をさせるために
は),複数の実行制御情報*をつなぎ合わせた「非常
に長い命令語」(Very Long Instruction Word: VLIW)
を用意することが有効(名称の由来).
*CPUに対してハードウェア制御を指示する情報,実行
するべき処理を指示するためのビット列
• 命令語レベルで明示的に並列処理を指示することで,
並列化(高速化)を図る.
VLIWとは何かNo7
• 各命令間には依存関係*がないように,コンパイル時
にチェック ・・・ コンパイラの役割大.
*パイプラインハザードの要因
• 予めコンパイラによって,高級言語
高級言語プログラム
高級言語プログラムを
プログラムを並列
処理記述ができる
処理記述ができる「
ができる「非常に
非常に長い命令語」
命令語」系列に
系列に翻訳.
翻訳
VLIWとは何かNo8
• 並列処理向きに
が
並列処理向きに最適化
きに最適化された
最適化された命令系列
された命令系列*を
命令系列 を,CPUが
読み込んで,
んで,解釈し
解釈し,並列動作可能な
並列動作可能な複数の
複数のパイプラ
インに
インに同時投入して
同時投入して,
して,並列処理を
並列処理を実行.
実行
*過去のバイナリコードとは非互換.
*長大な1つの命令語に複数の操作が盛り込まれる
• 長大な語長の命令で,多数の処理を同時に指示でき
るので,飛躍的な性能向上が期待される.
VLIWとは何かNo9
• コンパイラによって,長大な語長の命令語の各フィー
ルドに並列動作の記述が効果的に埋め込まれる
• 1つの命令語に複数の操作が存在. ・・・ マイクロ命
令を思い出してください
• これはマイクロプログラミングと同じ発想でハードウェ
アを並列制御することを意味する
マイクロプログラミングの
マイクロプログラミングの再評価
• 但し,VLIW用のプログラムを,マイクロプログラム(あ
るいはファームウェア)などとは言わないが・・
アイデアは全く同じ
VLIWの特徴No1
• 1つ長大な命令語中に,複数の命令(マイクロ命令に
相当:メモリ読出し・書込み,算術(整数・浮動小数)演
算,分岐命令など)を同時に指示可能.
• 常に決まった数の命令が同時に実行ユニット(パイプ
ライン)に投入され,同時に実行可能.
• 各命令間には並列処理できないような依存関係を持
たせないよう,コンパイラによって最適化した命令系列
を生成.
VLIWの特徴No2
• 同時に実行できる命令がない場合,ハードウェアを間
違って動作ささないよう,NOP(No Operation,何もしな
い命令)を割当
• VLIWでは,語長128ビットなどの長大な命令語を使用
• 依存関係がないので,スーパースケーラのような動的
な実行順序制御機構が不要 ・・・ ハードウェアを簡
素化
• VLIWの処理性能(並列処理)を最大限に引き出すた
め,コンパイラによるコード最適化技術が不可欠
VLIWの特徴No3
• 通常のプログラムの場合:並列実行できる命令数は
あまり多くなく,そのままではVLIW技術の有効活用
が困難
• VLIW向けのコンパイラでは,分岐元と分岐先の命令
を同時に実行.分岐の結果に応じて,どちらかの値を
採用. ・・・・ 結構複雑な最適化が必要
VLIWの特徴No4
• VLIWでは,命令セットや命令実行アーキテクチャが
既存のプロセサとは大きく異なるため,マシン語レベ
ルでの互換性を取るのが非常に困難
• しかし,IA-32の行き詰まりのため,IntelとHewlettPackardは共同開発で次世代マイクロプロセッサに
VLIW技術を採用
IA-64 アーキテクチャではVLIWが
が主役
VLIWの歴史的技術的背景No1
スーパースケーラとの
スーパースケーラとの比較
との比較(スーパーパイプラインからスーパー
スケーラへの歴史的流れを反芻する形で追いかけてみる
と ・・・・)
• スーパースケーラ・アーキテクチャは「直列に入ってく
る命令を並列に並べ替えて実行」すると表現できる.
• 従って,スケジューラ(動的な実行順序制御機構)が
重要.CPU内部でデコードされた命令流から並列性を
リアルタイムに抽出して並列実行可能なように並べ直
し,パイプラインに投入する必要あり.
VLIWの歴史的技術的背景No2
スーパースケーラとの
スーパースケーラとの比較
との比較
• その代償は大きい:「チップ面積の増大」,「消費電力
も膨張」.しかも,ハードウェアのみによるリアルタイム
処理(並列性をリアルタイムに抽出)にも限界
新しいアーキテクチャが渇望
VLIWの歴史的技術的背景No3
VLIWの登場 (並列処理記述の再評価 or コロンブスの卵?)
• 予め「命令に並列実効可能かどうかを記述」しておけ
ば,複数の命令を一挙(並列に)に読み込んで同時に
(並列に)実行することができる. ・・・・ 「並列に入っ
てくる命令列をそのまま並列に実行」すると表現する
こともできる.
• VLIWという考え方は古くから研究
マイクロプログラム制御
VLIWの歴史的技術的背景No4
VLIWの登場
• 当時は並列性を抽出するためのコンパイラ技術が難
解と批評され,実用対象とならず.
• 非常に長い命令語を採用しても,処理手順に並列性
を抽出できなければ(すなわち,並列処理記述できな
ければ),命令にも実行ユニットにも無駄が生じると批
判
• 命令語にはNOPが,実行ユニットであるパイプライン
にはアイドリングやストールが多ければ,ハードウェア
の無駄使いとなる.
コンパイラ技術
コンパイラ技術が
技術が鍵
スーパースケーラの
スーパースケーラの基本構造
1本の命令流を
命令流を読み込んで・・・
んで・・・
ハードウェア化
ハードウェア化された
並列実行可能性を識
別し,命令実行を分
配する機構
従来型の コンパイラ
VLSI Computer
複数本の
複数本の実行ユニット
実行ユニット(
ユニット(パイプライン)
パイプライン)を同時に
同時に稼動
VLIWの基本構造
ソースプログラムを
ソースプログラムを読み込ん
で・・・
ソフトウェアに
ソフトウェアに移行した
移行した
並列実行可能性を識別
し,命令実行を分配す
る機構
VLSI Computer
VLIW仕様
のコンパイラ
並列性を
並列性を抽出!
抽出!
Very Long Instruction Word
複数本の
複数本の実行ユニット
実行ユニット(
ユニット(パイプライン)
パイプライン)を同時に
同時に稼動
VLIWの歴史的技術的背景No5
VLIW登場の
登場の背景
• コンパイラがスーパースケーラに対応する過程で,必然的に命
令レベルでの並列性をコンパイラでも解析することが一般的に.
• VLIW対応コンパイラも実現不可能な存在ではなくなった.
• ハードウェアで抽出できる並列性に限界 ・・・ スーパースケー
ラでのスケジューラ機能を向上させるとハードウェア(チップ内
占有率)が巨大化の一途を辿り,回路の複雑性で設計プロセス
がパンクし始め,1チップ化には欠かせない消費電力の低減が,
スケジューラなどの制御回路実装で破綻をきたし始めた.
VLIWの歴史的技術的背景No6
VLIW登場の
登場の背景
• スーパースケーラの普及で,実行ユニット(パイプライ
ン)をCPU内に複数持つことが当然というレベルにま
で一般化
• VLIW化(VLIWアーキテクチャを採用)すると,CPUか
ら並列性抽出部やアウトオブオーダ実行など複雑な
制御ハードウェアが省略可能
ハードウェア設計
ハードウェア設計が
設計が容易