メモリに演算機能を持たせる
メモリに演算機能を持たせる
[画像のクリックで拡大表示]
メモリの階層構造をフラットに
メモリの階層構造をフラットに
[画像のクリックで拡大表示]
演算に必要なサイクル数を低減
演算に必要なサイクル数を低減
[画像のクリックで拡大表示]
1T-1MTJセルを連結して2T-2MTJセルや4T-4MTJセルを構成
1T-1MTJセルを連結して2T-2MTJセルや4T-4MTJセルを構成
[画像のクリックで拡大表示]
アプリケーションに応じてメモリ内の構成を変える
アプリケーションに応じてメモリ内の構成を変える
[画像のクリックで拡大表示]

 東芝はSTT-MRAMだけで演算と記憶を行う新しいコンピューティング・アーキテクチャを「International Electron Devices Meeting(IEDM)2013」(2013年12月9~11日、米国ワシントンD.C.)で発表した(講演番号25.4)。タイトルは「Variable Nonvolatile Memory Arrays for Adaptive Computing Systems」。

 現在、多くのコンピューティング・アーキテクチャでは演算を行うCPUとデータを記憶するメモリが分離されており、メモリ自体もレジスタ・ファイル、1次キャッシュ、2次キャッシュと階層化されている。しかし、最近ではシステムの性能や消費電力を改善する上でCPU-メモリ間のデータ転送がボトルネックになりつつある。そこで、東芝はメモリそのものに演算機能を持たせ、しかも一つのメモリでレジスタ・ファイルから1次キャッシュ、2次キャッシュまで対応できるコンピューティング・アーキテクチャを提案した。なお、利用するメモリとしては東芝が開発を進めている垂直磁化方式のSTT-MRAMを想定している。

 CPU-メモリ間のデータ転送ボトルネックを解消するための方法として、メモリ階層からCPU内部にメモリを“持ち上げて”、CPU内に分散させる方法があり、東芝ではそれを2004年頃に検討していた。だが、結局CPU外部にも大きな容量のメモリが必要であるため、性能が上がらず断念し、これまで別の方法を模索してきたという。今回の手法はメモリだけを用いる点が特徴である。具体的には、ある入力の組み合わせに対応した演算結果(答え)をあらかじめテーブル(表)の形で用意しておき、メモリ内に保存しておく。ここで、ある入力に対してメモリ内から該当する答えを読み出して出力すれば、演算と同じ処理を行ったことになる。

 この手法では1回の読み出し動作で複雑な演算を行ったのと同等の結果が得られるため、処理速度と消費電力を大幅に改善できる。シミュレーションの結果、割り算では通常のCPUでは50サイクルの処理が必要だが、今回の手法では16サイクルで済むことが分かった。100×a+10×b+c=a3+b3+c3を満たすa、b、cの組み合わせを探す「Armstrong」と呼ぶ演算では、通常50サイクルが必要だが、20サイクルに減らせるという。2次方程式を解く場合は、通常408サイクルが必要なところを44サイクルにできる。

 もちろん、演算結果はあらかじめ外部のコンピュータで計算しておかなくてはならない。これは現在のコンピュータがプログラムをあらかじめコンパイルしておかなくてはならないのと基本的に同じだと東芝はいう。また、演算の種類に応じてメモリ内のテーブルは常時書き換えるため、さまざまな演算結果のテーブルを外部メモリに保存しておく必要がある。

 メモリのみを用いた演算は、SRAMでも原理的には可能だが、待機時の消費電力が問題になる。そこで今回は高速かつ不揮発のSTT-MRAMを前提にシミュレーションを行った。東芝はSRAM代替を目指した高速・低消費電力のMTJ技術を「IEDM 2012」で発表している(関連記事)。また、高速で動作する2トランジスタ-2MTJ(2T-2MTJ)構成の1Mビット・アレイを「2013 VLSI Symposia」で発表済みである(関連記事)。今回は2T-2MTJ構成の1Mビット・アレイの実測値を基にシミュレーションを行っている。