ロードマップでわかる!当世プロセッサー事情 第636回
イロモノだと思っていたSamsungのプロセッサー内蔵メモリーがわりと本気だった AIプロセッサーの昨今
2021年10月11日 12時00分更新
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という名称が付けられている。
まずPIMの内部構造について説明しよう。連載606回では下図で説明したが、これをもう少し見やすくしたのがその下の画像だ。
PIMの演算ユニットは16レーンのFP16 SIMDエンジンというのは今回初発表である。命令種類が全部で9つ、というのは606回でも説明したが、その内訳が下の画像だ。
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上では同一のプログラムが稼働する格好になると思われる。

この連載の記事
- 第704回 自動運転に必要な車載チップを開発するフランスのVSORA AIプロセッサーの昨今
- 第703回 音声にターゲットを絞ったSyntiant AIプロセッサーの昨今
- 第702回 計52製品を発表したSapphire Rapidsの内部構造に新情報 インテル CPUロードマップ
- 第701回 性能が8倍に向上したデータセンター向けAPU「Instinct MI300」 AMD CPUロードマップ
- 第700回 インテルが10年先を見据えた最先端の半導体技術を発表 インテル CPUロードマップ
- 第699回 Foveros Directを2023年後半に出荷 インテル CPUロードマップ
- 第698回 ARA-2の開発を進める謎の会社Kinara AIプロセッサーの昨今
- 第697回 CPUとDSPを融合させたChimeraはまさに半導体のキメラだった AIプロセッサーの昨今
- 第696回 第4世代EPYCのGenoaとBergamoの違いはL3の容量 AMD CPUロードマップ
- 第695回 遅延が問題視されるSapphire Rapidsは今どうなっている? インテル CPUロードマップ
- 第694回 メモリー帯域を増やして性能を向上させたRDNA 3の内部構造 AMD GPUロードマップ
- この連載の一覧へ