VLIW(Very Long Instruction Word)は、並列実行できる複数の操作を一つの長い命令語にまとめる方式です。ポイントは、主にコンパイラが実行順序と組合せを決めることです。
VLIWの仕組み
一つの命令語に、演算やメモリアクセスなど複数の操作を入れるスロットを用意します。コンパイラは操作間の依存関係や実行ユニットの制約を考慮し、同時に実行できる操作を組み合わせます。
依存関係の例
たとえば「A=B+C」と「D=E+F」は、互いの結果を使わず、必要な実行ユニットがあれば並列実行の候補になります。一方、「A=B+C」と「D=A+F」は、後者が前者の結果を使うため、そのまま同時に実行できません。
スーパースカラとの違い
| 方式 | 並列実行の組合せを決める主な役割 |
|---|---|
| VLIW | コンパイラが事前に命令語へ組み込む |
| スーパースカラ | プロセッサが実行時に依存関係などを調べて発行する |
これは基本的な方式の比較です。いずれも複数の操作を並列実行できますが、並列化を判断する主な場所が異なります。VLIWを「命令を長くすれば必ず速くなる方式」と覚えないようにしましょう。
利点と注意点
並列実行の計画をコンパイラ側に任せることで、プロセッサ側の動的な判断回路を簡素化しやすくなります。一方、十分な並列性が見つからなければスロットを使い切れません。従来型の固定幅VLIWでは空いたスロットにNOPを入れることがありますが、符号化方式によっては未使用部分を圧縮するなどの工夫もあります。
性能は、依存関係、利用できる実行ユニット、メモリアクセス、コンパイラのスケジューリングなどに左右されます。また、異なる構成のプロセッサへ移す際はコードの互換性や再コンパイルが課題になる場合があります。
確認問題
VLIWで、並列実行する操作の組合せを事前に決める主な役割を担うのは、コンパイラと実行時のプロセッサのどちらでしょうか?
解答・解説を見る
コンパイラです。依存関係や実行ユニットの制約を考慮して、操作を命令語へまとめます。
次に学ぶ教材を探す
ほかのコンピュータ構成要素も復習したい方は、資格・目的別のnote教材ナビで学習テーマを選べます。

コメント