ロードマップでわかる!当世プロセッサー事情 第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の略なのは、まさにこれを狙った効果である。
![](/img/2021/10/11/3267946/l/a89876ebf9254d48.jpg)
「ノイマン型プロセッサーは煩雑にメモリーとの間でデータのやり取りが行なわれる」とまで描かれてしまうと、なんと評したものか……。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には共通の命令が与えられることになり、一斉に処理する格好になる。」と書いたが、この詳細が下の画像だ。
![](/img/2021/10/11/3267950/l/2e5da78a1a4012f2.jpg)
この遷移に関してはPIMのConfiguration Registerに値を設定することで実施される格好だ。復帰は同じくConfiguration RegisterのABMR(All-Bank Mode Register)に0を設定することで行なうようだが、PIMのプログラムからの復帰はできないのだろうか?
Single BankとAll Bankはメモリーセルへのアクセスのみであり、PIMを動かすのはAll BankからAB-PIMモードに推移させることで行なわれる格好だ。全バンク一緒に動作、ということなのでやはり全PCU上では同一のプログラムが稼働する格好になると思われる。
![](/img/blank.gif)
この連載の記事
-
第781回
PC
Lunar LakeのGPU動作周波数はおよそ1.65GHz インテル CPUロードマップ -
第780回
PC
Lunar Lakeに搭載される正体不明のメモリーサイドキャッシュ インテル CPUロードマップ -
第779回
PC
Lunar LakeではEコアの「Skymont」でもAI処理を実行するようになった インテル CPUロードマップ -
第778回
PC
Lunar LakeではPコアのハイパースレッディングを廃止 インテル CPUロードマップ -
第777回
PC
Lunar Lakeはウェハー1枚からMeteor Lakeの半分しか取れない インテル CPUロードマップ -
第776回
PC
COMPUTEXで判明したZen 5以降のプロセッサー戦略 AMD CPU/GPUロードマップ -
第775回
PC
安定した転送速度を確保できたSCSI 消え去ったI/F史 -
第774回
PC
日本の半導体メーカーが開発協力に名乗りを上げた次世代Esperanto ET-SoC AIプロセッサーの昨今 -
第773回
PC
Sound Blasterが普及に大きく貢献したGame Port 消え去ったI/F史 -
第772回
PC
スーパーコンピューターの系譜 本格稼働で大きく性能を伸ばしたAuroraだが世界一には届かなかった -
第771回
PC
277もの特許を使用して標準化した高速シリアルバスIEEE 1394 消え去ったI/F史 - この連載の一覧へ