このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第679回

Tachyumが開発しているVLIW方式のProdigy AIプロセッサーの昨今

2022年08月08日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

NVIDIAのV100に比肩する性能

 Prodigyのパイプライン構造が下の画像である。もちろん分岐予測は必要(でないと動的な判断を入れた瞬間にパイプラインが全フラッシュされる可能性がある)ではあるが、いわゆるフロントエンドはおそろしく簡素である。Schedulerが入るのは、通常のALU以外にベクトルALUが入るためであろう。

AI向け処理に関しては、むしろメインと分離されたベクトルユニットの方が活用されると思われる。後述するが、FP8をすでにサポートしており、なかなか先見の明がある気がする。INT4が未サポートなのは残念である。とはいえ、2018年の時点でここまで見通すのは難しいだろう

 In-Orderで9段というのは結構長めであるが、そもそもVLIWの時点で1段あたりの処理量はかなり少ない。それでも9段にした理由は以下の2つが考えられる。

  • 1段あたりの処理を最小にすることで、動作周波数の引き上げを狙った
  • キャッシュからのロードに時間がかかることを考慮して、ALUを動かすまでのサイクル数を長めに取った

 Tachyumはもう少しProdigyの詳細を公開してくれている。まず命令フェッチ段は下の画像の通り。

Cache Lineが128Bytesというのは、この手のプロセッサーとしてはかなり長い気がするが、16Bytes Bundleで8 Bundle分と考えればこんなものかもしれない

 分岐予測はVLIWとしてはかなり充実している気はするが、昨今のOut-of-Orderを実装したCPU(それこそAlder LakeやZen 3など)に比べればかなりシンプルではある。むしろペナルティーの少なさが特徴的で、分岐ミスのペナルティーが7サイクルというのはIn-Orderならではだろう。といっても、9サイクルのパイプラインで7サイクルなので、ほぼパイプライン・フラッシュに近いという言い方もできる。

 ALU側のパイプラインは下の画像の通り。投機的なデータロード/ストアは、実際にそれが必要になるまでホールドされるのは、In-Order型のパイプラインとしては当然ではある。

ベクトル命令は完全にALUパイプラインと分離されているのも、実装を考えれば妥当である

 プロセッサーの構造を複雑にして、エリアサイズ増大など複雑なメカニズムを搭載するのではなく、素直にIn-Order型の処理で済ませるような実装になっているのは、むしろ自然だとは思う。もともとIPCを無理に引き上げるよりも、多数のコアを同時に走らせることで効率よく処理する構成なので、このあたりはトレードオフとして妥当な実装に見える。

 キャッシュは、L1(16KB)+L2(512KB)がコアごとにあり、L3が共有32MBとなっている。L3がExclusive Cache(排他的キャッシュ)なのは、Prodigyの使い方ではコア間にまたがって共有するようなデータがあまり多くないことを考えれば妥当に思える。

キャッシュの概要。左側の説明ではL2が256KBになっているが、これは512KBが正確の模様

 64コアで32MBなのでコアあたり512KBという計算で、これをInclusive Cache(包括的キャッシュ)にしたら全然意味がなくなってしまう。その意味でもL3が排他的になっているのは必然だったともいえる。

 演算性能のメインとなるのがベクトルユニットである。512bit幅のユニットで、MACなら2演算/サイクル、単純な算術演算なら3演算/サイクルが可能、というのはこの手のものとしてはかなり高性能(AVX512並)である。

ベクトルユニットの概要。今ひとつ、右上の128TFlopsの根拠がわからない(4bitデータ型のサポートはProdigyにはないはずなのだが)

 FP64でMAC演算すると、1サイクルあたり8×2×2=16Flopsとなる。4GHz駆動ならばコアあたり128GFlops、これが64コアなので8TFlopsという計算になる。

 オークリッジ国立研究所に納入されたFrontierで動くAMD Instinct MI250Xが1枚あたり45TFlops、つまりダイ1つあたり22.5TFlopsなことを考えればやや見劣りするという言い方もできるが、2018年時点で言えばNVIDIAのVoltaベースのV100がやはりFP64で7.8TFlopsだったことを考えれば、V100に比肩する性能を叩き出す計算になる。

 これを支えるインターコネクトの構成が下の画像だ。メモリーコントローラーは全部で8chあり、そこからメッシュの形ですべてのコアに対して1clock/hopでアクセスが可能になっている。

性能と消費電力、コストを考えるとHBM3を載せるのは非現実的だとは思う。DDR5では1本のDIMMで2ch動作することはこの構造に盛り込まれていないようだ。2018年の時点でそこまで予見するのは不可能だっただろう

 ここで見るとHBM3に関してはあまり考えていないというか、DDR4/5のキャッシュみたいな使い方になっている。実際DRAM cacheないしMemory Regionの2つというあたりは、少なくともアプリケーションからこれを細かく制御する使い方は考えていないようだ。

 可能性としては、広帯域が必要となるアプリケーションと、通常帯域で足りるアプリケーションを分けて、別のメモリーアドレスに割り振るといった使い方も可能だとは思うが、どこまで現実的かを考えると難しい気もする。

 最後が肝となるソフトウェアである。一応GCCやLLVM、Linux/FreeBSD、ドライバーなどはすべてTachyumが移植を行ない、一方QEMUなどに関してはエミュレーション動作でカバーすることになっている。とはいえこの時点ではまだコンパイラの出来などを議論するには時期尚早といった感じではある。

FreeBSDの移植、というあたりがいかにもである。個人的にはProdigyの上でOSが稼働する必要はあるのか疑問ではあるのだが、AIアクセラレーターではなくユニバーサルプロセッサーを称する以上、OSやミドルウェアを動かす必要があると考えたのだろう

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン