# コンピュテーショナルRAM

**コンピュテーショナルRAM**（略：**C-RAM**）は同一チップ上に統合された処理素子付きランダムアクセス・メモリである。これはC-RAMをSIMDコンピュータとして使用されることを可能にする。またこれはメモリチップ内のメモリ帯域幅をより効率的に使うことも可能にする。メモリ内で計算を行う一般的なテクニックはProcessing-In-Memory（PIM、メモリ内処理）と呼ばれる。

## 概要

コンピュテーショナルRAMの実装で最も影響したものはバークレーIRAMプロジェクトから来ていた。ベクターIRAM（V-IRAM）は同一チップ上に統合されたベクター・プロセッサとDRAMを結合させる。

再構成可能アーキテクチャDRAM（RADram）は同一チップ上に統合された再構成可能コンピューティングFPGA論理素子付きDRAMである。SimpleScalarシミュレーションは（在来型のプロセッサを持つシステムで）RADramが一部の問題に関しては（前者と同じプロセッサを持つシステムで）従来のDRAMよりも桁違いに優れたパフォーマンスを実現できることを示している。

いくつかの自明な並列性を持つ計算問題はCPU―DRAM間のフォン・ノイマン・ボトルネックによって既に制限されている。一部の研究者は（同額の総費用において）コンピュテーショナルRAMで構築されたマシンは、この種の問題に関して従来の汎用コンピュータよりも桁違いに高速に実行できると予想している。

2011年時点では、「DRAMプロセス（2〜3層; 大容量向けに最適化）」と「CPUプロセス（高周波向けに最適化; 通常はDRAMの2倍のBEOL層があり; 層が追加されるたびに歩留まりが低下し製造コストが増加するため、このようなチップは相対的にDRAMと比較して平方ミリメートルあたりのコストが高い）」はコンピュテーショナルRAMを実現する3つのアプローチを支えるには十分な他とは全く別個な性質を持つ:

* CPU最適化プロセスと大量の埋込みSRAMで開始する場合、（平方ミリメートルあたりのコストがさらに高くなる）埋込みSRAMを埋込みDRAM（eDRAM）に置き換えることを可能にする追加の処理工程を追加し、SRAM領域の面積が約(≈)3倍節約され（結果チップあたりの純コストが削減される）。
* CPUとDRAMチップ分離式のシステムから開始する場合、CPU―DRAM間の狭いボトルネックによって速度が低下する可能性のある(メモリの選択された領域をゼロフィルし、巨大なデータのブロックをある場所から別の場所にコピーし、データのブロック内で指定されたバイトが（どこかにある場合）発生する場所を見つけるなどをする)処理を実行するために、(DRAMプロセスの制限内で動作しそしてDRAMに少しエリアを食う)「コプロセッサ」の計算能力を少量DRAMに追加する。結果として得られるシステム – 変更されていないCPUチップと「スマートDRAM」チップ – は、元のシステムと少なくとも同じ速度でありながら、コストがわずかに低くなる可能性がある。少量の追加領域のコストは（「スマートDRAM」における計算能力はDRAM満載のウェハについて並行して内部的に大抵のテストを実行するのに十分な計算能力が現在あるため）高価な外部自動テスト装置を使用して一度に1つずつDRAMチップを完全にテストするという従来のアプローチではなく、高価なテスト時間の節約として十分に回収されることが期待される。
* DRAM最適化プロセスで開始する場合、プロセスを微調整して「CPUプロセス」に少し寄せ、そのプロセスの制限内で（比較的低周波、しかし低電力かつ超高帯域幅な）汎用CPUを構築する。

（特にCPU用に最適化された「CPU」または「ロジック」プロセス技術ではなく）DRAMプロセス技術に基づいて製造されるように設計された一部のCPUにはバークレーIRAMプロジェクト、TOMIテクノロジー、そしてAT&T DSP1が含まれる。

オフ=チップ・メモリ用メモリ・バスにはオン=チップ・メモリ・バスの何倍もの静電容量があるため、DRAMチップとCPUチップが分離しているシステムでは、同じコンピュータ性能のIRAMシステムの数倍のエネルギー消費が発生する可能性がある。

コンピュテーショナルDRAMは在来のDRAMよりも高温で動作し、そしてチップ温度が上昇した結果としてDRAMの格納セルからの漏電がより速くなることが予想されるため、コンピュテーショナルDRAMでは、より頻繁なDRAMリフレッシュが必要になることが予想される。

## プロセッサ＝イン＝/ニア＝メモリ

**プロセッサ＝イン＝/ニア＝メモリ (PINM)**は一般的に同一シリコンチップ上に、コンピュータ・プロセッサ (CPU)とメモリが緊密に結合された物を指す。

この手法における処理コンポーネントと記憶コンポーネントの統合の主目的はメモリレイテンシの削減と帯域幅の向上にある。その他にも、距離の削減はデータ移動に伴うシステムの電力要求を減らすことにつながる。現在のプロセッサの複雑さ（そしてそれゆえ消費電力）の大半は、メモリ・ストールを回避するための戦略に起因する。

## 一例

* 1980年代において、FORTHが実行されるタイニーCPUはPUSHとPOPを改善するためにDRAMチップに組み付けられていた。FORTHはスタック指向プログラミング言語であり、これはその効率性を改善した。
* トランスピュータも80年代初頭に作られたそれは本質的にはプロセッサ=イン=メモリにさせる性格を与えられた大規模なオンチップメモリを同様に持った。
* 著名なPIMプロジェクトにはカリフォルニア大学バークレー校のバークレーIRAMプロジェクトと ノートルダム大学のPIMプロジェクトの取り組みが含まれる。

## DRAMベースのPIMタクソノミー（分類法）

DRAMベースのニア=メモリとイン=メモリ設計は以下の４つのグループにカテゴライズされる:

* DIMMレベル・アプローチでは処理ユニットをメモリチップ付近に置く。 これらのアプローチはデータ・レイアウトにおいて最小／無変更を要求する（例えば、ChameleonとRecNMP）。
* 論理層レベル・アプローチは3D積層メモリの論理層に処理ユニットが組み込まれ、3D積層メモリの高帯域幅からの利益を得られる（例えば、TOP\_PIM）。
* バンク=レベル・アプローチは処理ユニットを各バンク近く、メモリ層の中に置く。UPMEMとサムスンのPIM がこれらのアプローチの一例である。
* サブアレイ=レベル・アプローチはデータを各サブアレイ内で処理する。サブアレイ=レベル・アプローチは最高のアクセス並列性を提供するが、しかしメモリ行全体に対するビット単位の演算や（例えば、DRISA）もしくはシングル=ワードALUを使用したメモリ行の逐次処理（例えば、Fulcrum）のような単純な演算だけを実行することが多い。

* コンピューティング・ウィズ・メモリ
* SyNAPSEは同様に1つのチップ内でプロセッシングとメモリを結合する。
* インメモリ処理
* WRAM (Window RAM)
* ザ・マシン (コンピュータ・アーキテクチャ)
* シリアル・コンピュータ#超並列マシン
* スクラッチパッドメモリ

* ASCII.jp
	+ Samsung
		- 2021年
			* 10月11日 – イロモノだと思っていたSamsungのプロセッサー内蔵メモリーがわりと本気だった AIプロセッサーの昨今
				+ 03月15日 – Samsungがついにメモリー内にプロセッサーを統合 AIプロセッサーの昨今
* GIGAZINE
	+ AIをさらに効率的に動かせる新型チップ「NeuRRAM」発表、より小型のデバイスで大規模なAIアルゴリズムの実行と精度アップが可能に – 2022年11月16日

## ビブリオグラフィ

* Duncan Elliott, Michael Stumm, W. Martin Snelgrove, Christian Cojocaru, Robert McKenzie, "Computational RAM: Implementing Processors in Memory", *IEEE Design and Test of Computers*, vol. 16, no. 1, pp. 32–41, Jan–Mar 1999. doi:10.1109/54.748803.