Esperanto TechnologiesはRISC-Vアーキテクチャのメニーコアチップを開発しており、その概要は、以前開催された「RISC-Vサミット」で発表されている。しかし、2021年4月に開催された「COOL Chips 24」では、より詳しい発表が行われたので、その内容を紹介したい。

Esperanto社の創立者はDave Ditzel(David Ditzel)氏で、バイナリトランスレーションでx86のバイナリを動かすことができるCrusoeとそれに続いてEfficeonという低電力プロセサを世に出し、国内ではシャープなどがポータブルPCに組み込んで発売したことを覚えている方も居られると思う。なお、Ditzel氏は現在はEsperanto社のChairmanとなっており、今回のCOOL Chips 24で発表を行ったのは、新たにCEOとなったArt Swift氏である。Swift氏はTransmeta時代のDitzel氏の部下で、それ以降もDitzel氏とは長い付き合いである。

  • Esperanto

    図1 COOL Chips 24でET-SoC-1を発表したEsperantoテクノロジ社のArt Swift CEO (出典:COOL Chips 24でのビデオ発表でのスクリーンキャプチャ)

今回のCOOL ChipsでEsperanto社が発表したプロセサは「ET-SoC-1」という味もそっけもない名前であるが、なかなか興味深いデータセンタ向けの推論エンジンである。ET-SoC-1は次の図の写真に見られるように、TSMCの7nmプロセスで製造される23.8Bトランジスタを集積するチップである。なお、チップサイズは発表されていない。

ET-SoC-1は「ミニオン(Minion)」と「マキシオン(Maxion)」という2種類のRISC-Vアーキテクチャのコアを持っている。ミニオンは省電力の小さいコアで、In-Order実行の簡単なコアである。しかし、大幅に演算性能をあげるため、ベクトル演算器を装備している。一方、マキシオンは高性能の標準型のプロセサで、Out-of-Order実行などを行い、1サイクルに最大5命令を実行することができる。

次の図2で青線で囲まれた34個の区画がミニオンの領域(EsperantoはこれをMinion Shireと呼んでいる)で、マキシオンコアは右上の2番目の狭い区画に4コアが置かれている。右上の端の区画はx8のPCI Express4.0ポートであると思われる。

Minion Shireには32個のミニオンコアがあり、チップ全体で1088個のミニオンコアがある。しかし、実際には不良救済のための冗長コアがあり、チップ上にはより多くのコアが作られている。多分、Minion Shireには33個か34個のミニオンコアが作られており、不良コアは外して繋ぎ、32個の良品コアを確保いるのではないかと思われる。

そして、性能的にはリコメンデーションでは最大50倍、イメージ分類では最大30倍の性能と書かれているが、スライドに書かれた(1)の資料が付いていないので、何と比較しているのか分からない。さらに、推論/Wでは100倍高いエネルギー効率と書かれている。これも根拠は示されていない。

ミニオンは汎用のRISC-V命令を実行するプロセサであるので、新しいアルゴリズムが出てきても、ソフトを変えれば対応は容易であるので、Future Proofはその通りである。

なお、ET-SoC-1チップは、TSMCの工場で製作中であり、まだ、Esperanto社も手に入れていない。この写真は本物のダイの写真ではなく、CADで描いたダイプロットである。また、このレポートに掲載された性能や消費電力などはCADによる設計値であり、実測値ではない。

  • Esperanto

    図2 Esperanto ET-SoC-1プロセサのダイプロットと特徴 (出典:COOL Chips 24でのEsperanto社の発表資料、以下同様)

図3はET-Minionのブロック図である。下の30%くらいに描かれているのがRISC-Vのコアの部分とL1データキャッシュとそのコントロール部である。上側の70%に描かれているのは256bitの浮動小数点演算を行う16本のVector/Tensorユニット、512bitの整数演算を行う16×2本の整数のVector/Tensorユニットとレジスタファイルなどである。そして、右端には超越関数計算用の4つの係数ROMが置かれている。なお、RISC-V命令セットのVector/Tensor拡張の仕様検討スケジュールはEsperanto社の開発スケジュールと合わず、ET-SoC-1では独自にVector/Tensor命令を開発している。

このVector/Tensorユニットは、16bitの浮動小数点演算の場合は1サイクル当たり32演算を実行できる。また、8bitの整数演算の場合は1サイクル当たり128演算を実行できる。したがって、1チップで、クロックが1GHzとすると、16bit浮動小数点の場合は32×1088=34.816TFlops、8bit整数の場合は128×1088=139.264TOPSの演算ができる計算になる。

そして、このプロセサはアーキテクチャと回路設計から、低電圧動作を可能とするように設計されていると書かれている。この辺りはTransmetaの時代から25年あまり、低電力プロセサのノウハウを蓄えてきたEsperanto社のキーエンジニアのグループの面目躍如である。

ET-SoC-1の演算性能はトップエンドのGPUには及ばないとしても、典型的な動作状態で20Wという消費電力を考えると、エネルギー効率ではGPUを上回るのではないかと思われる。

  • Esperanto

    図3 ET-MinionはVector/Tensorユニットを持ち、ハイエンドGPUに迫る演算性能をGPUよりずっと少ない消費電力で実現する

TensorFMA命令の実行は専用のFSM(Finite-State Machine)で制御しており、通常の命令フェッチ、デコード機構を使うより少ないエネルギー消費で実現できる。また、条件分岐の予測ミスが無くなるので、性能も上がる。さらに、レジスタファイルの消費電力も減らせる。

  • Esperanto

    図4 TensorFMAは専用のFSMで制御しており、通常の命令処理系を使うより消費電力が減らせるし、条件分岐ミスが無くなるので、性能も上げられる

次の図5に示すように、8コアをまとめて隣組として、4つの隣組に4×4のクロスバと4個の1MBのメモリバンクをまとめてMinion Shire(ミニオン州)と呼ぶ。この4MBのSRAMはプライベートのL2キャッシュ、あるいはシェアードのL3キャッシュ、あるいはスクラッチパッドとして使えるようになっている。

また、このメモリを使って、高速のアトミック命令やバリア命令などを実現している。

そして、6Tメモリは回路的に低電源電圧では安定に動作させられないので、通常の電源電圧で動作させるが、ミニオンコアとクロスバは0.4Vという超低電源電圧で動作させて、大幅に消費電力を削減しているという。

  • Esperanto

    図5 8コアの隣組を4組集めてMinion Shireを構成する。Minion Shire単位でオンチップのメッシュネットワークに接続する

図6はET-SoC-1チップ全体のブロックダイヤグラムである。Minion Shireが34個(全体で1088 Minionコア)、Maxionコアが4個、x8 PCIe4.0、サービスプロセサ用の1個のMinionコアがあり、図の左右にLPDDR4xメモリコントローラが描かれている。

メモリコントローラには最大32GBのDRAMが接続でき、ピークメモリバンド幅は137GB/sである。

図の下側の帯に、典型的な動作状態での消費電力は20W以下と書かれており、FP16で34.816TFlops、Int8で139.264TOPSのAIエンジンとしては非常に消費電力が小さい。

  • Esperanto

    図6 ET-SoC-1チップの全体ブロックダイヤグラム。Minion Shireが34個、Maxionコアが4個、x8 PCIe4.0、サービスプロセサとして使われる1個のMinionコアとLPDDR4xメモリコントローラを持つ。典型的な動作状態での消費電力は20W以下と小さい

消費電力が小さいので、図7のようにGPU 1個分の消費電力で、6個のET-SoC-1チップを搭載するボード(後出の図8)を作ることができる。そうすると、全体では容量が192GBで、バンド幅が822GB/sのメモリができる。

  • Esperanto

    図7 GPU 1個の電力で6個のET-SoC-1チップを搭載するボードが動かせる。そうすると、6,558個のミニオンコアが動かせ、メモリバンド幅は822GB/sで容量は192GBのメモリができる

このボードの写真を図8に示す。この写真ではET-SoC-1チップは搭載されておらず、3個の空きソケットが見えている。EsperantoのET-SoC-1チップ搭載ボードは表裏に3チップずつ搭載でき、全体では6個のET-SoC-1チップを搭載できる。

Glacier Point v2と呼ぶこのカードは6,558ミニオンコアと192GBのDRAMを搭載し、クロックが1GHzの場合、Int8でのピーク演算性能は800TOPSを超え、消費電力は約150Wと見積もられている。

  • Esperanto

    図8 Glacier Point v2カードは、表裏に3個ずつのET-SoC-1チップを搭載する。消費電力は150W程度になる

そして、Glacier Point v2カードを2枚、Yosemite v2 スレッド(Sled:橇)ホルダに挿入し、このスレッドを19インチラックの横方向に8個並べ、縦方向に8段並べると、19インチラックに384 ET-SoC-1チップを搭載することができる。そして、データセンタには4,000~20,000ラックが設置できることになる。

この時、どれだけのAI演算能力が設置できるかはAI性能/Wが決めることになり、消費電力はハイパースケーラが最も重要視するパラメタである。

  • Esperanto

    図9 Glacier Point 2ボードには6個のET-SoC-1チップを搭載し、1台のラックには32枚のGlacier Point 2ボードが搭載できる。そして、データセンタには4,000~20,000ラックが設置できる

EsperantoのET-SoC-1を使うAIアクセラレータは、C++とPython、一般的なMLフレームワーク記述で使用できるようになっている。Esperantoは、FacebookのGlowコンパイラを使っている。GlowコンパイラはFacebookのOpen Sourceプロジェクトで開発されたコンパイラで、PyTorchやTensorFlowなどで記述されたモデルをGlowの中間表現にコンパイルしてくれる。この中間表現をETのバックエンドを使って、ETハードウェアで動作するプログラムを作成する。

Glowコンパイラを使うと、Glow中間表現から自社のアクセラレータハードウェアのバイナリプログラムを作り出すバックエンドの部分だけを開発すればよい。

そして、ETランタイムやETデバイスドライバ、さらに、診断ユーティリティやファームウェアのアップデータなどを付け加えると、ソフトウェアの開発環境が整う。

  • Esperanto

    図10 EsperantoのET-SoC-1のソフトウェア開発システム。FacebookのOpen Source ProjectのGlow Compilerを使っている

このET-SoC-1チップは、データセンタで一番需要が見込まれる推論用のエンジンであるが、将来的にはMinion Shireの個数を減らしたエッジ向けの製品や、多数のET-SoC-1チップを使う大規模なシステム構成ができる機能を追加して学習も可能にするなどの拡張を考えているという。

  • Esperanto

    図11 Esperantoは、将来はコア数を減らしてエッジ向けの製品や、コア性能の改善や搭載コア数を増やした上位製品、学習用の製品への拡張を考えているという