スピン注入メモリ STT-RAM の可能性

 筆者が子供の頃には学校で (すくなくとも大学に行くまでは) 素粒子に付いて教わる機会が有りませんで、当時は独学で勉強しましたが、今はどうなのでしょう? 遅くとも中学校くらいで概要くらいは教えるべきだと思います、でなければ素粒子関連の技術と霊感商法の区別が出来ない一般人を大量生産してしまうからです。

 1985年に開催されたつくば万博を観に行った際、素粒子(或いは素粒子より更に小さい物)を子供の私でも理解出来る様に展示してあるだろうと勝手に期待していたので、会場で物質の最小単位が原子であるという説明を受けた時には希望に満ちた夢の世界に居たのに、突然崖の上から突き落とされたくらいに残念な思いをし、科学万博というイベントに限界を感じた事を今でも覚えています。

 本題に入りますが、スピン注入メモリの速度はDRAM以上SRAM未満と解釈しています。しかも不揮発です。経年劣化的な寿命は現時点ではDRAMより少し劣る程度で半永久と考えて良いと思います。Bit化けは同様に磁気反転で記憶するHDDのBit化け頻度と同程度ではないでしょうか?その様に推測しています。

 電子部品としては1Gbitのチップが製品化されつつある様で、256Mbit品は既にDDR3互換のチップが流通していて小容量DRAMの置き換えとしてSSDのキャッシュメモリ等に利用されていると思います。DRAMの様なリフレッシュ動作は不要なので省電力低発熱で、かつ不揮発な為にキャッシュ用途に適しているからです。

 1Gbitチップが8枚あれば1GBですから、下の写真の様に片面16枚+ECC用2枚、両面で36枚搭載したDIMMを作れば4GBのDIMMが作れます。写真は普通のDRAMを使った DDR3 ECC Registerd DIMM の1例ですから、写真自体はSTT-RAMではありませんが、STT-RAMの1GbitチップはDDR3/DDR4の互換チップですから写真と同じレイアウトが可能と思われ、DDR4互換の4GB DIMMの製品が(どこかの企業が政治的に潰さなければ)まもなく登場すると思われます。この写真の例ではチップ枚数は片面が主DRAM16枚+ECC用DRAM2枚+レジスタ1枚=片面19枚、両面で38枚です。仮にチップ1枚の卸価格が千円なら4GBのDIMMは3万8千円+数百円が原価ですね。
ECCREGISTERDDIMM.jpg

 磁気メモリを考えるには永久磁石の原理を知っておく必要が有りますが、永久磁石がなぜ磁石なのか?と言えば、私の理解では、
 1:素粒子にはスピンと呼ばれる特性が有り、常に一定方向に自転している。
 2:電子は荷電粒子なので上記の自転により電子単体で電磁石化している。
 3:永久磁石は何らかの方法で電子の自転の向きを一定方向に揃えた結晶。

 逆に言えば、(永久磁石ではない)普通の物質は電子のスピンの向きがバラバラで磁気が中和された状態に成っている。と理解していますが、ではなぜ物質中でスピンの向きが一定方向に”固定”されるのか?に付いては全く理解出来ていませんが微小質量でも光速で回転する為にジャイロ効果的なものが強烈なのかもしれません。しかし、それならどんな物質でも永久磁石化が出来そうですし、コイルの鉄芯などが磁化した後に元に戻ったりする現象の説明になりません。そもそも、なぜ電子は超電導物質の様に永久機関さながらにスピンし続け磁力線を放出し続けているのか?が理解出来ていませんので、その辺りの知識を深める必要が有りそうです。

 とは言え、この永久磁石の特性と、魚釣り等で利用される偏光メガネ(偏向メガネではない)の様に電子のスピンの向きを揃えるフィルタを組み合わせた素粒子レベルでの磁気メモリがスピン注入メモリ STT-RAM (もしくは ST-MRAM / STT-MRAM ) です。素材はレアメタルではなくスズとマンガンの様などこにでもある物が利用出来る様ですから、安価で大量に作れそうな気配が有ります。

 フィルタを通過してスピンの方向が一定の電子は、同様に一定の向きに固定された永久磁石内部で磁気的に大きく影響を受けて抵抗値が変化するという性質が容易に想像出来ると思いますが、その抵抗値を1個のトランジスタ(もしくはFET)で増幅した物を 1bit として読出しに使うのが STT-RAM の様で、構造的にDRAMと同じくらい微細化出来るだろう事が想像できると思います。逆に記憶する際には、電圧を上げて一定方向のスピンを持つ電子を強引に通過させて永久磁石部分に磁気反転を起させる=スピン注入動作という事の様です。フィルタの構造(スピン注入する際の電圧にフィルタが負けて劣化するケースや、エレクトロマイグレーションが起きる可能性など)により寿命が決まるのかもしれません。HDDはヘッドの物理移動と磁性体円盤の回転が直交したタイミングで特定bit(連続してセクタ全体)へのアクセスを行いますが、STT-RAMでは古典物理的には移動する物が無く、強いて言えば電子だけが移動するのですから速度面には圧倒的な差が有り、逆に集積密度はHDDと同等以上に高められる事が容易に想像出来ると思います。

 3D XPoint に比べても速度では STT-RAM の方が2桁以上早いのですから、残るは集積面での工場現場の熟練度です。1Gbitチップが登場し、積層してHBM化してCPUの隣に配置すれば、DRAM と NAND-SSD や 3D-XPoint が不要の産廃と化す可能性が有ります。

 AMD は Zen 世代のCPUをSoC化しています (どういう訳かコンシューマ向けのマザーにはチップセットが載っていますが、21号機のマザーボードの様にチップセットが無くても動くはずです) から、Zen と STT-RAM が有ればハイエンドPCがラズパイ並の名刺サイズに収まる可能性も有り得ます。但しハイエンドPC並の性能を出すには携帯端末では電力面で不利が有りますから携帯するには2GHz以下になるんでしょうね。
 
 
 
スポンサーサイト

メモリアクセスレイテンシ と 投機実行

例えば、こちらのツール(若干古いですが)を使うと概ねの実効レイテンシを簡易的に計測出来ます。

下記は一例として筆者の17号機(SandyBridge-EP)で上記ツールを使って計測したレイテンシ(レジスタは計測値ではありませんが通常1サイクルだと思いますので・・・)です。

 レジスタ : 1 clock ( 0.3ns )
 SRAM-L1 : 3.5 clock ( 1.2ns )
 SRAM-L2 : 11 clock ( 4ns )
 SRAM-L3 : 45 clock ( 17ns )
 DRAM  : 215 clock ( 80ns )

余談ですが、最近購入したi386用マザー で使える 30pin SIMM が 60ns ~ 80ns ですから、レイテンシの点でDRAMは30年以上停滞している事が判ります、Sandraでも同様の値を計測出来ます(が重たいツールのインストールや宣伝などが付属してきます)。Sandraでは「ベンチマーク」 → 「メモリーコントローラ」 → 「メモリーのレイテンシ」 → 「グローバルデータメモリ:完全なランダムアクセスパターン」を選択して計測すると上記のツールと概ね同じ値に成りました。

本題に戻って、一例として、下記の様なCPUID取得ルーチンを考えてみます。

 命令1 : レジスタEAXに定数を代入する
 命令2 : レジスタEAXに従ったCPUIDを取得する
 命令3 : レジスタEAXをメモリ上の値と比較する
 命令4 : 上記の結果が同じなら分岐
 命令5 : レジスタEAXと定数の論理積を計算する

たぶん、上記は1~2クロックで投機実行が終わるのではないかと思いますが、命令3の比較に使われるメモリ上の値を取込むまでの間は命令3以降の結果を確定出来ません。

具体的には、

 命令4の分岐予測に失敗する可能性
 命令5の論理積演算結果を破棄する可能性

が投機実行の時点では生じてしまいます。

運よくL1やL2にデータが有れば(パイプライン上で並列に取得出来れば)事実上レイテンシは無視出来るので即時結果を確定出来ますが、L3なら数十クロック、DRAMまで取りに行く場合は200クロックくらい待たされ、2クロック程度の簡単な処理の処理時間がレイテンシに依存して数百倍も掛る事になります。

レイテンシを待つ間にも命令6以降を並列して投機実行出来るかもしれませんが、命令4の分岐予測に失敗していた場合は、それらの投機実行結果も全て破棄して最初からやり直さなければなりません、その判断にもレイテンシの200クロックくらい待たされる事に成りますね。とは言え、最近は分岐の両方を同時に投機実行する様ですから、破棄してやり直す確率は低いのかもしれませんが結果を確定できない点はどうにもなりません。

DRAMのスペックが向上しているのはバースト転送速度が向上している = シーケンシャルアクセスが向上しているだけで、ランダムアクセス(レイテンシ)は向上していない様です。

これはもう主メモリやRAMと言うより、DRAM改めDSAM(Dynamic Sequential Access Memory)と捉えるか、外部記憶デバイス として捉えるべきなのかもしれません。L2までが主メモリ(RAM)で、DSAM(DRAM)はスワップストレージ、L3はスワップストレージ用キャッシュくらいの感覚で、スワップ読み込みで待たされている間は別のスレッドを処理する事に成りHyperThreadが・・・と、まるでOSのカーネル的な処理をCPU内部でという所につながってくるのですね。

人に例えるなら、

 SRAM = 暗算で即答
 DRAM = コーヒー飲みながら辞書を持ち出しネット検索して回答
 スワップ = 神保町まで古書を買いに行き読破研究してから回答

くらいの差でしょうか・・・
 
 

Meltdown に関係する投機的な実行に付いて

下図は筆者の自作機を構成するパーツ間の帯域を調査してボトルネックを見付ける目的(例えばこの記事リンク先は2015年になっていますが元々2012年10月頃の記事です、掲載順を変更する目的で2015年に変更しています)で5年前から書き始めたブロック図からCPUコア回りを抜き出して少し加工した物です。

CPUARCH11_20180218203812c49.png

Meltdownで話題に成った投機実行ですが、上図で言えば主にDecoder(デコーダ)とCache(キャッシュ)の部分で発生する問題です。図の通りP6系やK7系はデコーダが3個以上並列にあり、3命令以上を同一クロックサイクルで処理しますので、メモリの速度はCPU側の1クロックサイクルで3命令以上を引き出す帯域が必要になります。NetBurstの場合はデコーダは1個ですがトレースキャッシュにヒットした場合は2命令以上が並列になります(トレースキャッシュにミスした場合は最大1命令1サイクル)。

専門的には、フォン・ノイマン・ボトルネック(Von Neumann bottleneck)として半世紀前から知られていた事ですが、CPUを高速化しようとすると、プログラムやデータの読み込み回路がボトルネック(bottle - neck:瓶の口が細いと、中身を出し入れする時に口の部分が邪魔に成って液体の速度が遅くなる事の例え)に成るので、その対策として高速なメモリが演算装置近くに必要になります。

創業当初のIntelは元々は上記の様にして演算装置の近くで使われる事が期待されていた高速なSRAMメモリを製造する会社からスタートして、現在に至るまで主要製品としてSRAMを製造し続けています(現在はCPUに内蔵する形でSRAMを製造し、その速度で優位性を確保しています)、その為、今回のMeltdownは皮肉にも創業当時から得意とする専門分野での失敗でした。

このフォン・ノイマン・ボトルネックを解消する為に読み込まれたSRAMキャッシュ上のデータが盗用されてしまう抜け道が発見されたのが Intel 製P6以降のCPU全般で見付かったMeltdownで、AMD製では抜け道が塞がれていたという訳です。

投機実行とは、本来、順番に1個づつ実行されるべき命令を上記の通り高速化目的でとりあえず間違っている(かもしれない)事も命令の前後関係をある程度無視して同時多発的に実行してしまい、後で間違っていた命令は中断したり結果を破棄して、やり直す仕組みで高速化しているので、投機的な実行と呼ばれる様になりました。

この投機実行の間違いをわざと起して本来は読み込んではいけないデータをキャッシュに間違って先読みさせ、そのキャッシュを読み取るのが Meltdown です。AMD製のCPUでは防止策が機能していて騙されても問題が起きない様になっていましたが、Intel 製のCPUでは騙されるとパスワードでもなんでもキャッシュに(高速に)読み込んで晒してしまい、悪い人にも(高速に)お渡ししてしまうというのが今回のオチです。ちょっとイジワルな言い方になってしまいましたが・・・

Intelは、最近Vega世代のRadeonをCPUに統合する計画を発表した様ですが、そのうちGPUだけでなく AMD Zen のセカンドソース契約をして AMD Zen と同じ物を製造するセカンドソースCPUの製造会社になってしまうかもしれませんね・・・AMDはIntelのCPUと同じ物を作ってはいけないという契約を結んでいるらしいですが、逆の制限は無い様な事が何処かに書いてあったのでIntelは勝手にAMD Zenと同じ物を作っても良い権利を最初から持っているのかもしれませんが・・・それはちょっと酷い話しでもあるとも思います。

 
 

Meltdown

Meltdown と言うと麦野さんを連想してしまう筆者はアニオタですが、ブログの趣旨的にCPUの話です。

話題としては既に御存知とは思いますが、Intel の Core 系 CPU で発生する投機実行に起因する脆弱性です。
AMDでは発生しません(AMDでは同じ現象が確認できない)。

Intel の Core と言えば AMD K8 ~ K10 の脅威に曝されていた Intel を救ったアーキテクチャで、今の Intel の地位を固めたアーキテクチャだと断言出来ます。逆に言えば Intel に Cora アーキテクチャが無ければ Intel は壊滅的打撃を受けて危険な経営状態に陥っていた可能性があります。

こちらの表に IPC が端的に表れていますが、

20120506135357f3f_2014120908550163d.png

イスラエルチームがP6系アーキテクチャを元に改良を加えた Banias ~ Yonah で IPC が飛躍的に向上しているのが判ります。この時期はちょうど K8 vs NetBurst で Intel が苦戦していた時期と重なり、イスラエルチームの動きは伏兵的な動きとも言えます。

その飛躍的な IPC向上の為には投機実行の高速化が必須ですが、Meltdown の様な攻撃に対する対策は投機実行の高速化に逆行する行為ですから、あえて放置して(或いは元々のP6には備わっていた防御機能を撤去して) K8 を IPC で上回る事を最優先課題にした可能性が有りそうですね。あくまで推測ですが・・・
 
その推測を確かなものにするには、P6系統の流れを汲むアーキテクチャのどの時点以降で Meltdown が起きるのか検証すれば判明すると思うのです。最初の Core アーキテクチャと言われる物は Yonah です(Intelが追認)。Yonah は表を見て判る通り当時ES品として既にベンダーが入手可能だった K10 の IPC を抜く事が出来た(当時)唯一のIntel製アーキテクチャです。 Banias までは K8 に負けていました。 Dothan で K10 と並び K8 を僅かに上回っています。

追記--
読者の方に教えて頂きましたこちらのドイツ語サイトによりますと Meltdown は Intel では P6(Pentium Pro)以降の全てが影響を受けるが AMD は影響が無い様です、しかし Intelさん自身の発表では Nehalem 以降になっていますね。Core2世代以前は実際の所どうなんでしょう?筆者の機体で Nehalem 以降の Intel CPU 搭載機は13号機17号機それから今年予定していた22号機が対象となりそうです。
--追記ここまで

Meltdown と同時に発表された Spectre は AMD でも発生する可能性が示唆されてはいますが、具体的な実現性を検証出来ていませんし脆弱性として顕在化出来ないかもしれず、これを同時発表する事で Intel だけが悪者に成る事を回避する為に併せて発表されたダミーの可能性が有りそうです。実際に検証済みの脆弱性として顕在化しているのは Intel Core だけなのですから・・・

脆弱性の発表と同時に(予め準備していた)パッチをIntelが公開しましたが、過去5年に発売されたCPUのみがパッチの対象です。日本の製造物責任10年のような法律は無視して5年しか対応しないつもりなのか、それとも今後対応する予定なのか?どうなるのでしょう・・・

ところで、 VIA Nano兆芯 或いは Vortex86 などの x86第三勢力の事が、この件では一切語られていませんが、どうなんでしょうね?
 
 
 

量子コンピュータとは?

「量子コンピュータ」は、そもそも定義が曖昧です。

例えば16号機#1の VIA C3 Nehemiah には量子的振舞を元にしたハードウエア乱数発生機が搭載されていると宣伝されて一部の人達に衝撃を与え、この様な報告書まで作成されていますが、最終結論というかジャッジを誰がするの?という問題もあります。

そもそも、今のPCは量子力学無しには語れない程に微細化され、量子的振舞が無ければ稼働しない半導体を使って作られていますから、定義次第ではパソコンはみな量子コンピュータとも言えます。

とは言え、0と1が共存(重ね合わせ)する不確定性原理を応用した量子ビットの並列演算機が量子コンピュータだという事になっていると思いますが、そうだとして誰がそれとそれに類似する物を「量子コンピュータ」だと定義するのでしょうね!?

え?そんな事を言ったら、全ての言葉の定義は誰がするの><って事になりますが・・・

例えば、国や国連などが量子コンピュータ認定機構の様な物を作ったとして、他の国や国連に参加していない国や批准しない国などではどうなんでしょう?という問題が有りますし、そもそも、その認定機構が全てのコンピュータに平等公平な基準を元に平等公平な判定を行うか?と言えば無理でしょう。例えば仁科芳雄の様な人物がシュレディンガーやディラックやハイゼンベルグの様な人達と同列に語られる事が無いのと同じです。

他の例として、例えばDOS/V互換機とは?と言えばオリジナルのIBM DOS J4.0/Vが正常に動作するものと規定する事が出来るかもしれませんが、Macやスマホ等の異機種上で動作する仮想PCの様なエミュレータやハイパーバイザ等はどうなるのか?UEFIは互換機なのか?Macのブートキャンプは?といった疑問が未解決ですし、そもそも現代のCPUはオリジナルのDOS/Vが登場した当時とは事情が異なり、入れ替え可能なマイクロコードによる80386上位互換のCISC命令群をエミュレートするRISCエミュレータCPUで動作していますから広義では全部がエミュレータ上で動いています。具体例を挙げるとCISC命令体系であるx86-64互換のVIA IsaiahⅡはマイクロコード入れ替えだけでRISCであるARMに切り替え可能な物として設計されたと言われています。このCPUはVIA EPIA M920-20Q / M920-16QEに搭載されて実際に発売され筆者も入手しています

話を戻すと、結局、個々人の認知次第であって、大勢がそうだと思えばそうなってしまいますし、全く異なる基準でマーケティングやプロパガンダを行えば半年後には大勢の基準は簡単に変わり人々の認知も変わってしまいます。量子力学自体が出来てから未だ数十年しか経っていない未完成の力学ですから古文書の様な物は存在しませんので、古代の文献によると的な説明は出来ません。

ですが、今までのクロックやコア数といった指標・基準とは次元の異なるコンピュータに成る事は明らかだと思います。その意味で16号機#1に搭載されている VIA C3 Nehemiah の量子的振舞を元にしたハードウエア乱数発生機が量子コンピュータと言っても良いかもしれません。結局、自分の自作機が量子コンピュータだよと言いたいだけとも(笑
 
 

プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて二十数台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です(以降、Bull/nano/Ryzenと数台仮組レベルで組んでいます)。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR