VLIW

VLIW(超長命令語)とは



VLIW(Very Long Instruction Word、超長命令語)は、プロセッサの命令セットアーキテクチャ(ISA)の一種です。VLIWプロセッサは、複数の命令(ロード、ストア、演算、分岐など)を一つの長い命令語にまとめ、それらを並列に実行する点が特徴です。この長い命令語は、実行ユニットが同時に処理できる命令の集合体であり、各命令は「atom」、まとまった命令語は「molecule」と呼ばれることもあります。

VLIWの仕組み



VLIWの命令語は、複数の命令が同時に実行できるよう、タイミングが調整されています。この調整はコンパイラの役割であり、ハードウェア側では命令の依存関係を解決する機構を持ちません。命令語には、実行されないスロットを埋めるためのNOP(No Operation)命令が含まれることもあり、命令語の長さは常に固定です。

VLIWプロセッサの設計は、RISC(Reduced Instruction Set Computer)のコンセプトをさらに推し進めたものと見なされます。しかし、その長い命令語は、マイクロプログラム方式における水平型マイクロプログラムを直接的に表現しているとも言えます。VLIWの「超長命令」という名前は、命令語のビット長が非常に長いことに由来します(例: 128ビット以上)。

VLIWの利点と欠点



スーパースカラやアウトオブオーダープロセッサとは異なり、VLIWプロセッサでは、命令列をフェッチしたまま実行ユニットに投入できます。命令の並列性を分析する必要がないため、ハードウェアコストが削減され、高速な動作が期待できます。しかし、VLIWプロセッサの性能を最大限に引き出すためには、コンパイラの高度な最適化が不可欠です。そのため、RISCよりもソフトウェアに依存するアーキテクチャと言えます。

また、VLIWという用語は、命令セットアーキテクチャだけでなく、マイクロアーキテクチャを指すこともあります。

VLIWの採用例



サーバ向けマイクロプロセッサの例としては、IntelとHPが共同開発したIA-64(Itanium)のEPICアーキテクチャがあります。EPICは修正VLIWアーキテクチャとされることもありますが、IA-64は当初の目的であったx86の代替としては普及しませんでした。

一方で、組み込み用プロセッサでは、VLIWアーキテクチャが広く採用されており、多くのメーカーから様々な製品が提供されています。

VLIWの歴史



VLIWの概念は、1980年代初頭にイェール大学のジョシュ・フィッシャーによって考案されました。しかし、同時期には集積回路の集積度向上や、CGなどの膨大な計算量を必要とするアプリケーションの登場により、同様のアイデアが他の場所でも独立して考案されていました。例えば、日本の富田眞治らが1983年に完成させたQA-2は、VLIWアーキテクチャの先駆けとされています。

トレーススケジューリング



フィッシャーは、ニューヨーク大学大学院生時代に、トレーススケジューリングというVLIWコンパイラ技術を開発しました。これは、プログラムの実行頻度が最も高い経路(トレース)を優先的に最適化する技術です。VLIW以前にも、機能ユニットをソフトウェアでスケジューリングする考え方は、水平型マイクロコードの開発過程で確立していましたが、フィッシャーの功績は、一般的なプログラミング言語で記述されたプログラムを水平型マイクロコードに変換するコンパイラを開発したことにあります。

フィッシャーの研究により、ワイドイシューマシンで高性能を達成するためには、基本ブロック内だけでなく、それを超えた並列性を追求する必要があることが明らかになりました。彼は、基本ブロックを超えた並列性を見つけるためのリージョンスケジューリングも開発しました。

VLIWアーキテクチャの設計原則



フィッシャーは、ターゲットCPUのアーキテクチャはコンパイラ向けに設計されるべきであり、VLIWのコンパイラとアーキテクチャは協調設計されるべきであると主張しました。この考えは、彼がイェール大学で浮動小数点システムFPS164のようなアーキテクチャ向けのコンパイラを作成する際に、複雑な命令体系がコード生成を困難にしたという経験に基づいています。

フィッシャーは、セルフドレインパイプライン、広いマルチポートレジスタファイル、メモリアーキテクチャなど、VLIW設計を特徴づける原則を開発しました。これらの原則により、コンパイラは高速なコードを容易に生成できます。

VLIWコンパイラとMultiflow



最初のVLIWコンパイラは、ジョン・エリスの博士論文で発表されました。ジョン・ルッテンバーグも、スケジューリングに関する重要なアルゴリズムを開発しました。

1984年、フィッシャーはイェール大学を離れ、Multiflowというスタートアップ企業を設立しました。Multiflowは、TRACEシリーズというVLIWミニコンピュータを生産し、1988年頃に販売を開始しました。TRACEシステムは、28個の演算を並列に実行できましたが、異なる集積技術(MSI、LSI、VLSI)を混在させていたため、市場での評価は必ずしも高くありませんでした。

Multiflowは少し時代を先取りしすぎていましたが、主要な半導体企業は、その技術の価値を認め、コンパイラやアーキテクチャのライセンスを取得しました。

VLIWの後方互換性



シリコン技術の進歩により、より多くの実行ユニットが実装可能になりましたが、初期のVLIWプロセッサ向けにコンパイルされたバイナリプログラムは、より多くの実行ユニットを持つプロセッサでは実行できません。これは、VLIWの命令セットがプロセッサの実行ユニット数に依存していたためです。

TransmetaのCrusoe



Transmetaは、x86アーキテクチャのCrusoeという実装で、バイナリ・バイナリソフトウェアレイヤ(コードモーフィング)により後方互換性を維持しようとしました。Crusoeは、内部的にはVLIWプロセッサですが、実行時にx86オペコードに変換・最適化を行います。

IntelのItanium



IntelのItaniumアーキテクチャでは、より一般的な方法で後方互換性を維持しています。命令は複数のオペコードを持ち、各オペコードには、前のVLIW命令との依存関係を示すビットフィールドが割り当てられています。このビットはコンパイル時に設定されるため、ハードウェアで依存関係を調べる必要がありません。

VLIWの課題



VLIWアーキテクチャのもう一つの課題は、すべての実行ユニットを常に使用できるわけではなく、NOP命令が実行される場合があることです。これは、コード内に命令の依存関係が多い場合に発生します。

しかし、チップ上に搭載できるトランジスタ数が増えるにつれて、VLIWのこれらの欠点は重要性が薄れてきました。VLIWは、アプリケーションごとにカスタマイズされたプロセッサを使用できる組み込み市場で人気が高まっています。

組み込み向けVLIWプロセッサは、富士通のFR-V、PixelworksのBSP15/16、STMicroelectronicsのST231、NXPのTriMedia、CEVAのCEVA-X DSP、Improv SystemsのJazz DSP、Silicon Hiveなど、多くのメーカーが開発・販売しています。また、テキサス・インスツルメンツのC6xxxファミリーのTMS320 DSPもVLIWに分類されます。

主なVLIWプロセッサ



Apollo PRISM
Intel i860
Crusoe
Itanium
FR-V
Radeon HDシリーズ (HD 2xxx、HD 3xxx、HD 4xxx、HD 5xxx)

関連項目



CISC
EPICアーキテクチャ
* IA-64

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。