【コンピュータシステム】コンパイラが並列化を指揮する!「VLIW」|情報処理問題1000本ノック
CPUが実行時に「どの命令を同時に動かせるか」を考えるのではなく、あらかじめコンパイラが「これとこれは同時にやってOK」とセットにして送り出す職人技のような手法を攻略しましょう。
1. 問題:非常に長い命令語による高速化
【 問題 】 コンパイラが、依存関係のない複数の命令を一つにまとめ、非常に長い一つの命令語として定義します。CPUはそれを一度に読み込み、複数の演算器で並行して実行するアーキテクチャを何と呼ぶでしょうか?
ア、RISC イ、CISC ウ、VLIW エ、SIMD
2. 正解:プロセッサアーキテクチャに関する正解
正解: ウ、VLIW(Very Long Instruction Word)
3. 解説:ハードウェアの負担をソフトウェアが肩代わりする
VLIWは、その名の通り「非常に長い命令語」を意味します。1つの長い命令の中に、複数の小さな命令が詰め込まれています。
【図解:VLIWの仕組みと特徴】
■ 仕組み
・コンパイラがプログラムを解析し、同時に実行できる命令をパックします。
・CPUは、届いたパックをそのまま複数の演算器に流し込むだけなので、構造が非常にシンプルになります。
■ メリット
・CPU側に「並列実行できるか」を判断する複雑な回路(スケジューラ)が不要になり、省電力化や高効率化が図れます。
■ デメリット
・コンパイラの性能に依存します。また、互換性のある新しいCPUが出た場合でも、命令の長さが変わると再コンパイルが必要になるなど、互換性の維持が難しい側面があります。
■ 仕組み
・コンパイラがプログラムを解析し、同時に実行できる命令をパックします。
・CPUは、届いたパックをそのまま複数の演算器に流し込むだけなので、構造が非常にシンプルになります。
■ メリット
・CPU側に「並列実行できるか」を判断する複雑な回路(スケジューラ)が不要になり、省電力化や高効率化が図れます。
■ デメリット
・コンパイラの性能に依存します。また、互換性のある新しいCPUが出た場合でも、命令の長さが変わると再コンパイルが必要になるなど、互換性の維持が難しい側面があります。
[ スーパースカラとの比較 ]
★ スーパースカラ:実行時に「CPU」が並列化できるか判断する(ハード依存)。
★ VLIW:コンパイル時に「ソフトウェア」が並列化を決定する(ソフト依存)。
★ スーパースカラ:実行時に「CPU」が並列化できるか判断する(ハード依存)。
★ VLIW:コンパイル時に「ソフトウェア」が並列化を決定する(ソフト依存)。
1. 理解のコツ: 「お弁当箱」をイメージしてください。おかず(命令)をどう詰めるかを「コンパイラ」が事前に完璧に決めておき、食べる人(CPU)は蓋を開けて一気に全部食べるだけ、というスタイルがVLIWです。
2. 試験対策の視点: 「コンパイラが命令を最適化・並列化する」「非常に長い命令語」というキーワードがあればVLIWです。かつては高性能サーバーや特定のDSP(デジタル信号処理プロセッサ)などで多く採用されていました。
4. まとめ
「1つの大きな命令をサイクル毎にまとめて発行する」。これがVLIWです。ハードウェアをシンプルに保ちつつ、ソフトウェアの知能によって高い並列処理能力を引き出す独創的なアーキテクチャです。
PR