このページの本文へ

前へ 1 2 3 次へ

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

イロモノだと思っていたSamsungのプロセッサー内蔵メモリーがわりと本気だった AIプロセッサーの昨今

2021年10月11日 12時00分更新

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

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

 3ヵ月近く間が空いてしまったが、AIプロセッサーに戻りたい。今週のお題は、SamsungのPIM(Processor In Memory)である。このSamsungのPIMは連載606回で一度触れている。この時はISSCCにおける発表をベースにPIMの内部構造をお届けした。

 実のところ、この時の説明はまだ研究室レベルの話であり、それもあって記事の最後では「今回のものはあくまでも研究レベルの話で、今すぐこれで製品を実用化できるものではない。研究レベルであれば問題ないが、実際にこれを利用するためには開発環境と稼働環境について、OSレベルから手を入れる必要がある(少なくとも今のLinuxのままでは動作しない)」と書いたのだが、今年のHot Chipsでこれをひっくり返す発表があった。

データの移動を減らして電力を下げるため
プロセッサーをメモリー内部に入れるアイデア

 PIMについて簡単にまとめておけば、AIに限らず処理性能を高めつつ消費電力を抑えようとすると、どうしてもデータの移動が大きな問題にならざるを得ない。単に、高い処理性能のためには高いメモリー帯域が必要というだけでなく、メモリーとCPUの間でのデータ移動に必要な電力が高くなりすぎる、という問題である。

 これを一気に解決するのが、プロセッサーをメモリー内部に入れるというアイディアだ。PIMがProcessor In Memoryの略なのは、まさにこれを狙った効果である。

「ノイマン型プロセッサーは煩雑にメモリーとの間でデータのやり取りが行なわれる」とまで描かれてしまうと、なんと評したものか……。Hot Chipsは一応IEEEが主催する学会なので、こういう大げさな表現も許されると言えば許されるのだが

 もっともここにx64コアやArm v9コアなどを突っ込むのはさすがに無理がある。プロセッサーの実装密度はメモリーと比較して桁違いに大きいからだ。

 例えば1bitの記憶素子を構成するのに、DRAMならトランジスタ1個、SRAMでもトランジスタが8個あれば足りる。32bit演算(C=A+B)を実現するのに、記憶領域はA~Cそれぞれ32bitづつ必要だから、DRAMならトランジスタ96個、SRAMなら768個必要になる。

 これに対してプロセッサーは、Intel 4004ですら2200個、8080なら4500個ほどだ。32bit演算が普通にできる80386だと、トランジスタ数は27万5000個である。要するに、汎用のプロセッサーをメモリーに組み込もうとすると、メモリーとプロセッサの比率がかなりおかしなことになる。

 これは汎用プロセッサーを組み込もうとするから無理があるのであって、特定機能に絞ったプロセッサーを作れば回路規模もずっと小さくなるので、メモリーに組み込むことも現実的になる。SamsungのPIMの場合、畳み込み演算に必要な乗加算と積和回路のみを実装することで回路規模を最小に抑えたことで、HBM2メモリーセルと混載させることが可能になった。

 具体的な混載のさせ方、PIMがサポートする命令やPIMに対する命令の与え方、PIMとDRAMセルとのデータのやり取りの方法といった技法は連載606回で説明した通りだが、今回もう少し詳細も明らかにされたのでこちらを説明したい。

 ちなみにSamsungはHBM2メモリーにAquaboltという商品名を付けており、それもあって今回のHBM2ベースのPIMはAquabolt-XLという名称が付けられている。

Aquabolt-XLの構造。この後出てくるAXDIMMなどはAquaboltの名前は使われていない

 まずPIMの内部構造について説明しよう。連載606回では下図で説明したが、これをもう少し見やすくしたのがその下の画像だ。

連載606回で示したPIMの内部構造

乗算器と加算器の2種類のSIMDエンジンがあり、これを単独で使うとADDかMUL、両方連動させるとMAC/MADが実行できる形だ

 PIMの演算ユニットは16レーンのFP16 SIMDエンジンというのは今回初発表である。命令種類が全部で9つ、というのは606回でも説明したが、その内訳が下の画像だ。

例えばC=A+Bを行なうのに、AとBがSRC0/1に、CがDSTに相当するわけで、それを汎用レジスターとバンク、スカラーレジスターのどれにするかで最大40種類の組み合わせがあるとする

 RISC風命令とあるのは、演算結果は汎用レジスターにしか書き出さないというあたりであろうか。これをメモリーセルに戻すには、そのあとMOVE命令を実行する必要があるわけだ。

 また連載606回で「論文を読む限りは、すべてのPCUには共通の命令が与えられることになり、一斉に処理する格好になる。」と書いたが、この詳細が下の画像だ。

この遷移に関してはPIMのConfiguration Registerに値を設定することで実施される格好だ。復帰は同じくConfiguration RegisterのABMR(All-Bank Mode Register)に0を設定することで行なうようだが、PIMのプログラムからの復帰はできないのだろうか?

 Single BankとAll Bankはメモリーセルへのアクセスのみであり、PIMを動かすのはAll BankからAB-PIMモードに推移させることで行なわれる格好だ。全バンク一緒に動作、ということなのでやはり全PCU上では同一のプログラムが稼働する格好になると思われる。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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