Skip to content
Published on

インメモリコンピューティングの原理 — メモリの中で演算する

Authors

はじめに

これまで私たちが作ったほぼすべてのコンピュータは、ある構造を共有しています。演算する場所(プロセッサ)とデータを保管する場所(メモリ)が分離していて、データは両者の間を絶えず行き来します。フォンノイマン構造です。

この分離がAI時代に大きなコストになっています。行列積1つのために多数の重みをメモリからプロセッサへ運び、結果をまたメモリへ戻します。演算そのものは安いのに、この往復が時間と電力の大半を食います。これがフォンノイマンボトルネックであり、メモリウォールです。

インメモリコンピューティング(in-memory computing)、あるいは compute-in-memory(CIM)は、この問題に挑発的な答えを出します。「データを演算する場所へ運ぶのではなく、データがあるメモリのその場で演算しよう」。本稿ではその原理、特にメモリセルの物理法則をそのまま演算器として使う発想を順を追って解きほぐします。

本稿は物理に深く入るより、「なぜこの発想が生まれ、どう動作し、どこに使われ、何が難しいか」を直感的につかむことを目標とします。小さな数値例とASCIIダイアグラムを通じて、電気回路を知らなくても核心の原理を追えるように解いていきます。


0. 一文でつかむ直感

本格的に入る前に、この記事全体を貫く一文を先に打ち込んでおきましょう。

「メモリからデータを取り出して演算器へ運ぶコストが、そのデータで行う演算よりはるかに高い。だからデータを運ばず、データがある場所で演算しよう。」

この一文がインメモリコンピューティングのすべてです。残りはすべて「その場でどう演算するか」についての具体的な方法論です。クロスバーアレイ、オームの法則、キルヒホッフの法則、ReRAM、ADCといった用語が後に出てきますが、そのすべては上の一文を物理的に実現しようとする試みです。

なぜ今この発想が重要になったのでしょうか。トランジスタが小さくなるにつれ演算は安くなり続けましたが、データを運ぶコストはそれほど下がらなかったからです。その結果「演算より移動が高い」逆転が起き、AIのような巨大なデータを扱うワークロードでこの逆転が決定的なボトルネックになりました。CIMはこの逆転に正面から答えます。


1. フォンノイマンボトルネックを見直す

典型的なニューラルネット推論の1レイヤーを思い浮かべてみましょう。入力ベクトルに重み行列を掛けるのが核心です(いわゆる MAC、multiply-accumulate 演算の束)。

標準的な流れ
-----------------------------------
1. 重み行列をメモリから読む
2. 入力ベクトルをメモリから読む
3. プロセッサへ運んで掛けて足す
4. 結果をメモリへ書き戻す
   -> データがバスを何度も往復

ここで高くつくのは1番と4番、つまりデータ移動です。モデルが大きくなるほど運ぶべき重みが増え、バスはより忙しくなります。演算ユニットはデータを待ってしばしば遊びます。

CIMの核心的洞察はこうです。重みはメモリにじっと保存されています。ならばその重みをわざわざ引き出さず、入力だけを流してメモリの中で乗算-加算を終えたらどうか。そうすれば重みを運ぶコスト全体が消えます。


2. クロスバーアレイ — 物理学で行列積を解く

CIMの最も優雅な形がクロスバーアレイ(crossbar array)です。横線(ワードライン)と縦線(ビットライン)が格子状に交差し、各交点に抵抗性素子が1つずつあります。

        col0    col1    col2
        |       |       |
row0 ---+G00----+G01----+G02---
        |       |       |
row1 ---+G10----+G11----+G12---
        |       |       |
       (各交点 G はコンダクタンス = 保存された重み)

ここでは2つの物理法則だけ知ればよいのです。

  • オームの法則: コンダクタンス G の素子に電圧 V をかけると電流 I = V x G が流れます。すなわち乗算です。
  • キルヒホッフの電流則: 1本の縦線に複数の電流が集まるとそれらが自動的に足されます。すなわち加算です。

重みを各素子のコンダクタンス G として保存し、入力ベクトルを横線に電圧 V として流すと、各縦線に流れる総電流が入力と重みの内積(MAC結果)になります。行列-ベクトル積がたった一度の電気的動作で終わります。デジタル回路のように無数の乗算器をクロックに合わせて回すのではなく、物理現象が即座に答えを出すのです。

入力電圧を横線に印加
   |
各交点で I = V x G  (オームの法則: 乗算)
   |
縦線で電流を合算     (キルヒホッフ: 加算)
   |
縦線の電流 = 行列-ベクトル積の結果

この一度の動作がCIMの約束するエネルギー効率の源です。データ移動がなく、乗算-加算が物理的に同時に起こります。


3. アナログ vs デジタル インメモリ

CIMには大きく2つの枝があります。

区分アナログCIMデジタルCIM
演算方式電流/電圧で乗算-加算メモリ近傍にデジタルロジック
エネルギー効率非常に高い(潜在的)高い
精度ノイズに弱い精度を保ちやすい
変換コストADC/DAC が必要変換負担が少ない
成熟度研究段階の比重が大きい商用化に近い

アナログCIMは先のクロスバーのように電気物理量で直接演算します。理論的効率は最も高いですが、結果がアナログ電流なのでデジタルに変える ADC(アナログ-デジタル変換器)が必要で、この変換が面積と電力を多く食います。また素子ばらつきとノイズに敏感です。

デジタルCIMはメモリセルのすぐ隣(あるいはSRAMビットセル近傍)に小さなデジタル演算ロジックを置き、データを遠くへ運ばずにデジタルの精度を保ちます。効率はアナログより低いものの、精度と制御が容易で商用化により近いのです。


4. メモリ素子 — SRAM、ReRAM、PCM

CIMをどのメモリ技術の上に建てるかも大きな分かれ道です。

  • SRAMベース: 既存のCMOS工程とよく合い、速く、信頼性が高いです。ただしセルが大きく密度が低く、電源が切れるとデータが消えます(揮発性)。デジタルCIMとよく結びつきます。
  • ReRAM(抵抗変化メモリ): 素子の抵抗状態で値を保存する不揮発性メモリです。小さく密度が高く、クロスバーのアナログCIMによく合います。ただし素子間ばらつき、書き込み耐久性、抵抗ドリフトといった課題があります。
  • PCM(相変化メモリ): 物質の結晶/非結晶状態で値を保存します。多段階の値を表現でき、アナログ重み保存に有利ですが、時間経過による抵抗変化(ドリフト)と書き込みエネルギーが課題です。

不揮発性素子(ReRAM、PCM)の魅力は、重みを一度書いておけば電源が切れても保持される点です。推論時に重みを再ロードする必要がなく、「重みをメモリに永久に刻み、入力だけ流す」というCIMの理想に最もよく合います。


5. 精度とノイズ — 核心のトレードオフ

アナログCIMの最大の敵はノイズと不正確さです。デジタルの乗算は2と3を掛ければ常に正確に6ですが、アナログの世界では電流が正確に決まりません。

問題の出どころを整理するとこうです。

  • 素子ばらつき: 同じ重みを意図しても素子ごとにコンダクタンスが少しずつ異なります。
  • ドリフト: 時間が経つと保存された値が微妙に変わります。
  • 変換ノイズ: ADCがアナログ電流をデジタルに変えるとき量子化誤差が生じます。
  • クロストーク/IRドロップ: 配線抵抗と漏れで理想的な電流値からずれます。

興味深いのは、ニューラルネット推論がこうした不正確さにある程度寛容なことです。推論は学習より低い精度(量子化)でもうまく動くことが多いのです。だからCIM研究は「ノイズがあってもモデル精度が保たれる点」を見つけることに集中します。ノイズをモデル化して学習段階で先に耐えさせたり(noise-aware training)、重要なレイヤーだけデジタルで処理する混合方式が代表的です。

精度 - 効率の綱引き
-----------------------------------
高ビット精度   -> 正確だが効率/面積を損なう
低ビット精度   -> 効率は良いが精度が危うい
CIM設計の核心: モデルが耐える最低精度を見つける

6. エネルギー効率の利点 — なぜ魅力的か

CIMが注目される理由は単なる速度ではなくエネルギー効率です。データセンター電力がAI拡張の実質的な上限になりつつある時代に、「同じ演算をはるかに少ない電力で」は強力な価値です。

利点の源を整理するとこうです。

  • データ移動の排除: 重みを運ばないので移動エネルギーが消えます。先に見たように移動は演算より桁違いに高いのです。
  • 並列性: クロスバーは一度の動作で行列-ベクトル積全体を終えます。本質的に大規模並列です。
  • 不揮発性の活用: 重みを再ロードしないので静的コストが減ります。

もちろんこの利点は理想条件での潜在力です。ADC/DACオーバーヘッド、周辺回路、精度補正コストを差し引けば実際の利得は減ります。だからCIMの実用性は「コア演算の効率」ではなく「システム全体の効率」で判断すべきです。


6.5. エッジでの意味 — バッテリーと常時オン

CIMのエネルギー効率が最も決定的な差を生むのは、データセンターではなく手の中の機器です。バッテリーで動作するエッジ機器では、電力のひとつかみがそのまま使用時間であり、製品の可能性です。

具体的なシナリオを思い浮かべてみましょう。

  • 常時オンの音声検知: スマートスピーカーやイヤバッドは「特定のキーワード」を聞くために常に小さなニューラルネットを回します。この小さな推論がバッテリーを食えば製品が成立しません。CIMはこうした超低電力の常時推論に理想的です。
  • ウェアラブル健康センサー: 心拍・動きのデータを機器内で推論し異常を検知します。データをクラウドへ送らないのでプライバシーにも良く、電力が少ないので長持ちします。
  • センサーノード: 産業現場の多数のセンサーがそれぞれ小さな推論をします。電力予算が極度に厳しく、効率がそのまま配置可能かどうかを分けます。
クラウド推論                     エッジCIM推論
-----------------               -----------------
データをサーバーへ送信           機器内で推論が完結
ネットワーク/遅延/プライバシー負担 低電力、低遅延、プライバシー保護
大型モデルが可能                 小さく効率的なモデルに最適

エッジで「小さく反復的な推論を極度に少ない電力で」という要求は、CIMの強みと正確に重なります。データセンターでCIMが補完材なら、エッジではゲームチェンジャーになる潜在力があります。


7. AI推論への適用

CIMが最もよく合う場所は推論、特にエッジ推論です。

  • 推論は重みが固定されているため、一度刻んで繰り返し使うCIMモデルに自然に合います。
  • エッジ機器(センサー、ウェアラブル、常時オンの音声検知など)は電力予算が極度に厳しく、CIMの効率が決定的な差を生みます。
  • 常時オン(always-on)のキーワード検知のような小さく反復的な推論は、CIMの強みが損失を圧倒する領域です。

一方、学習は重みを絶えず更新する必要があり、書き込み耐久性と精度要求の高いCIMには合いにくいです。またモデルが急速に変わると、不揮発性素子に重みを刻む利点が弱まります。


8. 商用化の課題

CIMが研究室から市場へ出るまでに残る宿題は明確です。

  • 素子信頼性: ReRAM/PCMのばらつき、ドリフト、書き込み耐久性を量産水準に飼いならす必要があります。
  • ADCオーバーヘッド: アナログ結果をデジタルに変えるコストが全体効率を削ります。この変換を減らす設計が鍵です。
  • ソフトウェアスタック: GPUのCUDAのような成熟したコンパイラ/ツールチェーンがないと開発者がモデルを載せにくいです。
  • 精度保証: ノイズがあってもモデル精度を頑健に保つ補正・学習技法が必要です。
  • 工程統合: 既存の半導体工程とどれだけ滑らかに統合できるかがコストを左右します。

8.5. ノイズに耐えるモデルを作る — noise-aware training

CIMの精度問題をソフトウェア側から解く核心の技法が「ノイズを認知した学習(noise-aware training)」です。発想は単純です。推論段階でハードウェアがノイズを加えるなら、学習段階で先にそのノイズを真似て、モデルをそれに耐えるよう鍛えようというものです。

通常の学習                       ノイズ認知学習
-----------------               -----------------
きれいな演算で学習               学習中にノイズを注入
実際のCIMで精度低下のリスク      ノイズに頑健な重みを学習
                                実際のCIMで精度を維持

具体的には、学習時に重みや活性値へ、CIMハードウェアが作りそうな分布のノイズをわざと混ぜます。すると モデルが「このくらいの揺れがあっても正解を当てるよう」学習されます。一種の予防接種です。こうして学習したモデルは、実際のアナログCIMに載せたときノイズによる精度低下が減ります。

この技法が重要な理由は、ハードウェアの不完全さをソフトウェアで補完する協業の良い例だからです。CIMの未来はハードウェア単独ではなく、ハードウェアとモデル・コンパイラが一緒にノイズを扱う共同設計(co-design)にかかっています。


9. 2026年の研究動向と大きな絵

2026年現在、CIMは学界と産業の両方で活発に研究され、一部のデジタルCIMやSRAMベースのアクセラレータは商用製品に近づいています。同時に、メモリウォールを回避しようとする他の流れ(フォトニックインターコネクトと光テンソルコア研究、LightmatterやDARPA関連プロジェクトなど)と並んで、「データをより動かさない」という同じ目標を別の物理学で追求します。

これを全体のアクセラレータ地形に置くと絵がつかめます。NVIDIAがアクセラレータ市場の約75〜80%を占め、Blackwellと次世代Vera Rubinで主流を固め、Google TPUと推論特化ASIC、そしてCerebrasのようなウェハースケール設計がそれぞれの答えを出すなかで、CIMは「最も根本でデータ移動をなくす」一つの枝として位置します。推論capexが学習capexを初めて上回り、電力が上限になる時代に、エネルギーを極端に節約するCIMの価値はますます大きくなるでしょう。


10. GPU・デジタルアクセラレータとの関係

CIMはGPUを置き換えようとするものではありません。GPUとデジタルアクセラレータは汎用性、精度、成熟したエコシステムで圧倒的であり、学習と多様なワークロードの中心であり続けるでしょう。

CIMの位置は補完に近いものです。特定の推論、特に電力が極度に制約されたエッジで、デジタルアクセラレータが構造的に不利な領域を埋めます。未来のシステムは1つの技術がすべてをこなすのではなく、デジタルコアとCIMブロック、そして他の特化アクセラレータが1つのチップまたは1つのボード上で役割を分け合うヘテロジニアス(heterogeneous)構成へ向かう可能性が高いのです。


11. クロスバーをより深く — 符号と多ビット

先に見たクロスバーは、正のコンダクタンスで正の重みを表す簡略化された図でした。実際のニューラルネットの重みには負もありますが、コンダクタンスは負になれません。どう解決するのでしょうか。

よくある方法は2つの素子を1対として使うことです。重みを「正のコンダクタンス - 負のコンダクタンス」の差として表します。一方の素子が正の寄与を、もう一方が負の寄与を担い、2つの電流の差が符号付きの重みになります。

符号付き重みの表現
-----------------------------------
重み w = G_plus - G_minus
   G_plus  : 正の寄与素子
   G_minus : 負の寄与素子
2本の縦線の電流差 = 符号付きMAC

もう1つの課題は多ビット精度です。1つの素子が表現できるコンダクタンスの段階が限られるため、高ビットの重みを1つの素子に収めるのは難しいのです。このときはビットを複数の素子に分けて収めたり(ビットスライシング)、複数段階を表現できる素子(PCMの多段階保存など)を活用したりします。精度を上げるほど素子や回路が必要になるので、ここでも精度と面積・効率のトレードオフが働きます。

こうした細部を見ると、クロスバーの「物理学で行列積を一度に」という優雅さの裏に、符号・精度・ノイズを扱う精緻なエンジニアリングが隠れていることが分かります。


12. ADCオーバーヘッドを直視する

アナログCIMの最も現実的な足かせがADC(アナログ-デジタル変換器)です。クロスバーがどれほど効率的に電流形式のMAC結果を作っても、そのアナログ電流を次のレイヤーが使えるデジタルの数値に変える必要があります。この変換をADCが担いますが、ADCは面積と電力を多く食います。

クロスバー演算 (安い)
   |
アナログ電流の結果
   |
ADC変換 (高い!)  <- ここで効率が漏れ出す
   |
デジタル結果

問題の深刻さは比率にあります。核心の演算(クロスバー)が非常に効率的でも、ADCが占める面積・電力が大きければ、システム全体の効率はその分削られます。ある設計ではADCが全体電力の相当部分を占めることもあります。

だからCIM研究の大きな流れの1つが「ADC負担を減らすこと」です。複数の縦線が1つのADCを共有するようにしたり(時分割)、低解像度のADCでも足りるようアルゴリズムを合わせたり、変換自体をより効率的にする回路を設計したりします。CIMの約束が現実になるには、この変換コストを飼いならすことが鍵です。


13. SRAMベースのデジタルCIM — 最も現実的な経路

商用化に最も近いCIMは、意外にも最も派手でない形、すなわちSRAMベースのデジタルCIMです。新しい素子(ReRAM、PCM)の不確実性を避け、検証されたSRAMとCMOS工程の上で「メモリを遠くへ運ばない」という核心の利点だけを取るアプローチです。

方式はこうです。SRAMビットセルが重みを保存し、そのビットセルのすぐ隣(あるいはビットライン近傍)に小さなデジタル乗算-加算ロジックを置きます。データがメモリからプロセッサまで遠い道を行く代わりに、メモリ内で短い距離だけ動いて演算が終わります。

標準SRAM                         デジタルCIM SRAM
-----------------               -----------------
保存のみ担当                     保存 + 近傍演算
データをプロセッサへ送る         メモリ内で演算
移動コストが大きい               移動コストが小さい

この方式の魅力は均衡です。アナログの極端な効率ではありませんが、デジタルの精度と信頼性を保ちつつデータ移動コストを大きく減らします。新しい素子技術のリスクなしに既存工程で作れるので、量産の観点でリスクが低いのです。だから最初に市場に出るCIMはこの形である可能性が高いです。


14. 他のメモリウォール回避法と並べて

CIMはメモリウォールを回避しようとする数々の試みの1つです。同じ問題を別の物理学で解く仲間たちと並べて見ましょう。

アプローチ核心アイデア狙う利得
HBMメモリをチップの隣に積む帯域増大
ウェハースケールチップを大きくしてデータを閉じ込め通信/移動の削減
チップレット/CoWoSダイを近くにパッケージング距離短縮
フォトニック光でデータを伝送移動エネルギー削減
インメモリ(CIM)メモリで演算移動そのものを排除

この表が示す大きな絵は明確です。演算そのものよりデータ移動が高くなった時代に、すべての道は「データをより動かさない」へ通じます。HBMとチップレットは距離を縮め、フォトニックは移動エネルギーを下げ、ウェハースケールはチップ内に閉じ込め、CIMはそもそも移動をなくします。CIMはこのスペクトラムの最も急進的な端にあります。「データを動かさず、その場で演算せよ」という最も根本的な答えだからです。


開発者への示唆

すぐにCIMチップを扱う開発者は多くないでしょうが、流れを理解することには意味があります。

  • 量子化と頑健性: CIM時代に備えるなら、低精度でうまく動きノイズに頑健なモデルを作る能力がますます重要になります。
  • ワークロード認識: 自分の推論がメモリ帯域に縛られているか、データ移動が電力の大きな割合かを知ることがハードウェア選択の出発点です。
  • ヘテロジニアス思考: 未来のシステムはヘテロジニアスなアクセラレータの組み合わせになる可能性が高いです。「どの演算をどこで回すか」を設計する感覚が資産になります。
  • ソフトウェア・ハードウェア共同設計: CIMはハードウェアだけの問題ではありません。ノイズに耐えるようモデルを学習させ、量子化を積極活用するなど、ソフトウェアがハードウェアの限界を埋める協業の感覚がますます重要になります。

15. 小さな例でたどるクロスバーMAC

抽象的な説明を小さな数値例で具体化してみましょう。2x2の重み行列と入力ベクトルの積をクロスバーがどう解くかを概念的にたどります。(実際の回路は符号・精度の処理がより複雑ですが、直感のために単純化します。)

重みをコンダクタンス、入力を電圧とします。

重み行列 (コンダクタンスで保存)
   col0   col1
row0  G=2   G=1
row1  G=3   G=0

入力ベクトル (電圧で印加)
   row0 -> V=4
   row1 -> V=5

各交点の電流 I = V x G
   col0: (4 x 2) + (5 x 3) = 8 + 15 = 23
   col1: (4 x 1) + (5 x 0) = 4 + 0  = 4

縦線の電流 = 結果ベクトル [23, 4]

ここで起きたことを味わってみましょう。乗算4回と加算2回が、デジタル乗算器なしに、ただ電圧を印加する一度の動作で終わりました。オームの法則が乗算を、キルヒホッフの法則が加算を代行しました。行列が大きく入力が多くなるほど、この「一度の動作」の中で処理される演算量は爆発的に増えます。これがクロスバーの本質的な並列性であり、効率の源です。

もちろん現実ではこのきれいな数字がノイズで揺れ、負の重みは素子対で、高い精度は複数の素子で処理する必要があります。しかし核心の原理はこの小さな例にすべて詰まっています。


16. よくある質問

Q. インメモリコンピューティングはGPUを置き換えますか? いいえ。GPUは汎用性、精度、エコシステムで圧倒的なので、学習と多様なワークロードの中心であり続けます。CIMは特定の推論、特に低電力エッジで輝く補完材です。

Q. アナログ方式がノイズに弱いなら、なぜ研究するのですか? ニューラルネット推論がある程度の不正確さに寛容だからです。低い精度(量子化)でもうまく動く場合が多く、ノイズに耐えるよう設計すればアナログの極端な効率を活用する余地があります。

Q. 不揮発性素子(ReRAM、PCM)が核心ですか? 有利な点が多いです。重みを一度刻めば電源が切れても保持され、推論によく合います。ただしばらつき・ドリフト・耐久性といった課題が残るため、短期的にはSRAMベースのデジタルCIMがより現実的です。

Q. 開発者として今、何を準備すればよいですか? 低い精度で頑健なモデルを作る能力、そして自分のワークロードのボトルネックがどこか(演算かデータ移動か)を測定する習慣です。ヘテロジニアスなアクセラレータ時代に備える最も実用的な準備です。


17. 一目で分かる核心まとめ

  • フォンノイマン構造ではデータ移動が演算より桁違いに高いのです。これがメモリウォールです。
  • CIMはデータを動かさずメモリ内で演算し、このコストを根本的に減らします。
  • クロスバーアレイはオームの法則(乗算)とキルヒホッフの法則(加算)で行列積を一度に解きます。
  • アナログは効率が高いがノイズ・ADCコストが、デジタルは精度が強みです。
  • CIMはGPUを置き換えるより、低電力エッジ推論のような領域でデジタルアクセラレータを補完します。

おわりに

インメモリコンピューティングはコンピューティングの最も古い前提の1つに挑みます。「演算と保存は分離されるべき」という前提です。メモリセルの物理法則をそのまま演算器として使う発想は優雅で、データ移動をなくすという約束は電力が上限になった時代に魅力的です。

この記事をたどりながら、私たちは1つのパターンに繰り返し出会いました。すべての核心的な決定 — クロスバーで行列積を解くにせよ、SRAMの隣にロジックを置くにせよ、不揮発性素子に重みを刻むにせよ — が結局「データをより動かさない」という1つの目標に収束することです。技術の細部は複雑ですが、方向は驚くほど単純です。

同時に、これは易しい道ではありません。アナログのノイズ、素子の不完全さ、未成熟なソフトウェアエコシステムという壁は明確です。CIMがGPUを置き換えることは起きないでしょうが、特定の推論領域でデジタルアクセラレータが到達しにくい効率を提供する補完材として定着する可能性は十分あります。メモリウォールを回避しようとする数々の試みのなかで、CIMは問題の最も根本に触れる優雅な答えです。

技術の価値はしばしば「最も派手か」ではなく「最も根本的か」から生まれます。CIMが投げかける問い — 演算と保存を必ず分離すべきか — はそれ自体が深く、答えがどの方向へ進もうと、私たちがコンピューティングを考える方法を広げてくれます。


参考資料