スクラッチパッドメモリ
スクラッチパッドメモリ(Scratchpad memory)とは、CPUの近くに配置された高速なメモリのこと。
概要
CPUにデータを供給するメモリのバスの帯域が狭すぎるため、CPUの性能をフルに発揮できない、という問題がある。特にCPUのコア数が爆発的に増えるメニーコア時代には、その傾向が顕著になる。そこで、CPUの近くにオンチップで小容量でも超高速なメモリを載せておき、よく使うデータはそこへ保存してそこから読み込むことで解決する。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Xbox-One-Console-wController-FL.jpg/320px-Xbox-One-Console-wController-FL.jpg)
仕組みとしてはキャッシュメモリに似ているが、キャッシュメモリを利用する際には一旦メインメモリにアクセスして、メインメモリからキャッシュへデータをコピーする必要があるのに対して、スクラッチパッドメモリを利用する際にはメインメモリにアクセスすることなく、プログラムの方の明示的な指示さえあれば、直接これを使える。なので、例えばゲーム機で「低速だが大容量のメインメモリと、高速だが小容量のスクラッチパッドメモリ」という構成を取った場合、スクラッチパッドメモリを使いこなせさえすれば、メインメモリの遅さに足を引っ張られず、同価格帯のパソコンよりも遥かに高速なシステムとなる。例えば、Xbox One(2013年発売)のメインメモリのDDR3 SDRAMの理論性能がせいぜい数十GB/secなのに対し、スクラッチパッドメモリのeSRAMの理論性能は100GB/secであり、しかもSRAMはDRAMのようなリフレッシュによる遅延が無い分、実効性能では理論値以上の(マイクロソフト的には競合機であるPS4(2013年発売)のメインメモリGDDR5の176GB/sに対抗できるほどの)大きな差がつく[1]。
キャッシュメモリの登場以前はパソコンでもスクラッチパッドメモリがよく採用されていたが、プログラミングの際にメモリの局所性を考えて明示的にアクセスする必要があるのでスケジューリングが面倒、そのハードのアーキテクチャに依存した(スクラッチパッドメモリがある前提の)設計となりがち、などの理由で、キャッシュメモリの登場以後は廃れてしまった。1996年に発売されたCyrix 6x86は、X86互換CPUとしてスクラッチパッドを採用した史上唯一の製品であるが、市場に受け入れられなかった。
ゲーム機では、特定のハードのアーキテクチャに依存することが問題とならず、またメモリ管理が面倒でもとにかく性能が高ければよいと考えるファーストパーティがあるので、よく採用されている。例えば、PS2(2000年発売)、PS3(2006年発売)、Xbox Oneなどで採用されている。ただしスクラッチパッドメモリを搭載すると、メインメモリのみの構成と比べて実装のコストがかかる上に、サードパーティのプログラマの負担も大きい。例えばPS3のCPU・Cell Broadband Engineは、パソコン用CPUに先駆けてメニーコア時代の端緒を告げたCPUであるが、その演算ユニット・SPEは各ユニットごとに256KBの「ローカルストア」と称するスクラッチパッドメモリを搭載し、各ローカルストアがDMAを経由してメインメモリと明示的にやり取りし、各ローカルストアとメインメモリとのコヒーレントはキャッシュメモリのようにハードウェアが保障するのではなくプログラマ自身が面倒を見ないといけない、そんな面倒なプログラムを書くことをプログラマに強いるという、大変なシステムであった[2]。PS3のCELLコンピューティング構想の頓挫もあり、後継機のPS4(2013年発売)ではメインメモリとして高速なGDDR5を搭載することで性能を稼ぐことになり、プレイステーションの歴史において初めてスクラッチパッドメモリが搭載されなかった。スクラッチパッドメモリを搭載した初期型Xbox Oneも、どの程度活用されたのかは疑問で、上位互換機の「Xbox One X」(2016年発売)ではスクラッチパッドメモリは廃止され、帯域幅326GB/sのGDDR5を搭載することで性能を稼ぐことになった。
スパコンやサーバーでもごくまれにスクラッチパッドメモリが採用されたシステムが登場する。特にストリーミングコンピューティング(次々流れてくるデータを次々処理していくようなプログラム)などのリアルタイム処理では、スクラッチパッドメモリは大きな効果を発揮する。PS3のCell/B.E.の演算ユニット・SPEが各々のローカルストアを搭載したのも、もともとはこちらの方面での活用を見据えてのことであり(PSの父・久夛良木健はこれを「CELLコンピューティング」と称した)、実際にCell/B.E.を搭載したスパコンのRoadrunnerは2008年6月から2009年6月までのTOP500ランキングで1位となり、人類は初めて1PFLOPSの壁を乗り越えた。しかし、やはりプログラマの負担や汎用性などがネックとなり、PS3以外のCell/B.E.の採用例はスパコンや家電なども含めてもあまり無く、CELLコンピューティング構想は頓挫してしまった。ただし、2016年6月のTOP500ランキングで1位となった中国のスパコンの神威太湖之光でもスクラッチパッドメモリが搭載されるなど、スパコンでスクラッチパッドメモリを活用しようという試みは潰えたわけではない。
Intel Xeon PhiのKnights Landing(2016年発売)は、16GBのMCDRAMをオンパッケージで搭載しており、MCDRAMをDDR4(メインメモリ)のキャッシュメモリとして使うこともできるし、スクラッチパッドメモリとして使うこともできるようになっている。