Explicit Data Graph Execution (EDGE) とは
Explicit Data Graph Execution (EDGE) 、またはEDGEとは、命令セットアーキテクチャ(ISA)の一種です。従来の
CPUの性能を大きく向上させることを目指し、個々の命令を結合して「ハイパーブロック」と呼ばれる、容易に並列実行可能なグループにまとめ、多数の実行ユニットで実行させることを特徴とします。
EDGEの基本概念
現代的な
CPU設計における並列実行は、8個程度の実行ユニットと1〜4個程度のコアで頭打ちになっていますが、EDGEの設計では数百個のユニットを内部的に持つことが可能であり、これまでの設計に対して数百倍の高速化を実現しようとしています。EDGEの概念は、2012年までに1チップで1TFLOPS(テラフロップス)を実現させることを目指した米国
国防高等研究計画局(DARPA)のPolymorphous Computing Architecturesプログラムの下、
テキサス大学オースティン校が牽引しています。
従来のCPU設計の限界
従来の
CPUは、データをある形態から別の形態へと変換する命令列を実行します。
CPUの目的は、このデータ変換を可能な限り高速に行い、性能を向上させることであり、
CPUがサポートする命令セットは、その変換が高速になるように設計されています。
1960年代にはメモリが高価だったため、
CPU設計者はメモリ資源を有効活用できるよう、命令とデータを密に詰め込んだ命令セットを開発しました。例えば、AとBを加算し、Cに出力する命令は、AとBを主記憶、インデックス、レジスタなど様々な場所から取り出すために異なる種類のものが用意されていました。これによりプログラマは、最もメモリ消費量が抑えられる命令を選択できました。
しかし、
1970年代後半にはメモリが安価になったものの、相対的に性能が低くなり、
CPUはメモリの数倍の速度で動作できるようになりました。その結果、直交的な命令セットはメモリ上のスペースをわずかに節約できるものの、性能向上には寄与しなくなり、
RISC(Reduced Instruction Set Computing)の設計思想が主流となりました。
RISCでは、命令数を減らすことで命令デコーダが簡潔になり、
CPUに大きな空きスペースが生まれたため、レジスタを大きく増やすことができました。データをレジスタ内に保持することでアクセスが高速になり、
RISC設計の
CPUは
CISC(Complex Instruction Set Computing)設計の
CPUを性能で上回りました。
1990年代にはチップの設計技術が進歩し、安価なプロセッサにも多くの機能を盛り込めるようになりました。そのため、
CPUは内部的に並列性を獲得するようになり、スーパースケーラと呼ばれる設計が導入されました。スーパースケーラは、関連のないデータを処理する命令を同時に実行できますが、スケジューラが命令間の依存関係を調べることのできる数には限界があり、演算ユニットの数も飽和状態になっています。また、レジスタとのやり取りに伴う遅延も問題となってきています。
EDGEの理論
既存の
CPU設計における性能上のボトルネックは、データとそれを処理する命令がメモリ上に分散していることです。メモリ性能が全体の性能を規定し、従来の「動的配置、動的発行」モデルは性能の限界に達しています。
VLIW(Very Long Instruction Word)アーキテクチャは「静的配置、静的発行」モデルを採用しましたが、プログラム実行時の振る舞いを予測し、適切にスケジュールすることが困難であることがわかってきました。
EDGEアーキテクチャは、「静的配置、動的発行」設計に基づいた新しい種類のISAです。EDGEシステムは、
ソースコードを静的に割り当てられた数百から数千の命令からなる「ハイパーブロック」を形成するようにコンパイルし、これらのハイパーブロックが
CPUによって動的にスケジュールされます。EDGEは、
VLIWのコンパイル時にデータの依存関係を見つけるという概念と、データが利用可能になったときに命令を実行するというスーパースケーラの
RISCの概念の利点を組み合わせています。
現実世界の大半のプログラムは、データと命令の関連が明示的です。プログラムは、開始点と終了点が明確に定義されたデータの入出力を行うブロックに分割されます。EDGEでは、この情報を命令セットレベルでサポートし、基本ブロックをメモリへのアクセスを詳細に定義する方法で行うことで、プロセッサが関連したブロックをロードし、スケジュールし、あるブロックの出力をそれを用いるブロックに直接与えることができます。これにより、汎用のグローバル
レジスタファイルが不要になり、
コンパイラがレジスタへのアクセスをスケジュールする作業が簡略化されます。
EDGEアーキテクチャの利点
EDGEの設計における最大の利点は、そのスケーラビリティです。ローエンドの設計では、ブロック実行エンジンを一つしか持たず、スケジューラもプログラムから呼び出すとおりにブロックをエンジンに送出するだけ、といった構成にすることができます。デスクトップ向けのEDGEプロセッサの設計では、数百個のブロック実行エンジンを備えるでしょう。
また、消費電力も劇的に改善され、管理も簡潔になります。消費電力上の必要に応じて、各ブロックの実行エンジンを有効・無効にすることができ、それが電力消費に正比例します。
さらに、EDGEはあらゆる種類のデータ処理に適応可能です。
CPUの異なる部分が異なる種類のデータ専用になっている現代の
CPU設計とは異なり、EDGE
CPUは通常、1種類のALU(算術論理演算ユニット)から構成されます。さまざまなプログラムを同時に実行するデスクトップユーザーも、浮動小数点演算のみを用いる科学技術演算ユーザーも、同じ恩恵を受けることができます。
EDGEの実装例
テキサス大学オースティン校は、TRIPSと呼ばれるEDGE命令セットアーキテクチャを開発しています。TRIPSでは、ハイパーブロックにいくつかの制約を設けることで、EDGEを動作させる
CPUのマイクロアーキテクチャを簡略化しています。また、カーネギーメロン大学(CMU)のCASHは、特定のアーキテクチャを対象としたコードを生成するのではなく、中間コードを生成する
コンパイラです。ワシントン大学のWaveScalarアーキテクチャは、命令をwaveに静的に配置しない点でEDGEと異なりますが、実質的に似たコンセプトです。
まとめ
EDGEは、従来の
CPUの限界を克服し、性能を飛躍的に向上させる可能性を秘めた新しいアーキテクチャです。大規模な並列処理を可能にし、多様なデータ処理に対応できる柔軟性を持つため、今後のコンピュータアーキテクチャの発展に大きな影響を与えることが期待されます。