.@_hito_ さんのメモリまわりのめんどくさい話を聞こう

14
hito @_hito_

メモリまわりのめんどくさい話をしてみよう。業の深い自作erだとちょっとだけ分かるかも、みたいな話だ。

2013-06-11 21:16:28
hito @_hito_

一般的に、「良い環境」に置かれた半導体はあんまり壊れない。もちろん設計寿命を超えたらあかんし、ランダムに不良が交じるのはお約束だけど。

2013-06-11 21:17:06
hito @_hito_

が、DRAMのたぐいは、高熱にさらされるとランダムに壊れるようになる。まあたいていの半導体がそうなんだけど、特にDRAM類は熱に弱い。どれぐらいかっつーと、50〜55度ぐらいで顕著に悪化する感じ。おまえはタンパク質か。

2013-06-11 21:18:13
hito @_hito_

あと、DRAM類は電圧が安定しない環境に置かれるとぜんぜんマトモに動かない。しかも山ほど電源レーンを必要としやがるので、電源屋さんがたまにキレることがある。

2013-06-11 21:19:10
hito @_hito_

そんな感じなので、「熱に弱い」「電圧の変動に弱い」というのがDRAM運用の基本となります。さあ冷静になって考えてみよう。PCの中ってどっちも全力でアウトでは。

2013-06-11 21:20:24
hito @_hito_

……というような理由で(だけじゃないけど)、Microsoftは一時期、ECCメモリを標準にしようと試みていたフシがある。たいていのパブリックベータ類のクラッシュレポートで、「メモリが不安定じゃないかぎり一定値を示すデータ」がぶち壊れてたらしい。

2013-06-11 21:22:19
hito @_hito_

DRAMが熱に弱いんならファンを回せばいいよね? って思うかもしれない。しれないが、冷静になって考えよう。ファンってモーターで回る=つまり動力=電圧安定しない。なんで、ファンを近くで回すのはダメだ。

2013-06-11 21:24:41
hito @_hito_

あと、ファンなんか回した日には、ホコリが帯電してDRAMセルをぶち壊しにくる。静電気の電圧は放電が目に見える程度に電圧が高いので、冬場にパチっとかやったら死ぬよん、というのはみなさんご存知の通り……なので、ファンを回す路線もたいてい壊滅的な結果になって終わる。

2013-06-11 21:25:41
hito @_hito_

メモリ類の扱いは、 ・熱のこもらない場所で、 ・ファンの風が直接あたらないようにした上で、 ・風洞設計に封じ込める というのが定石になって、「しないとコロス」ぐらいの扱いになったらしい。この教訓を最近再現したのは、某社の初代AthlonMPを搭載した1Uサーバー。

2013-06-11 21:28:25
hito @_hito_

x86なHPCをお使いの大学様ではまだまだ置かれている、「なにそれ宇宙船?」みたいな名前の某社さんです。ちなみに初期ロットは風洞設計になってなかったので、難燃性の分厚い紙だか繊維だかで風洞をあとづけした模様。

2013-06-11 21:29:35
hito @_hito_

ちなみにDRAMさんの電圧変動における豆腐メンタルっぷりは、電源ユニットを変更するだけでなぜかメモリ不具合の発生率が変動することで裏付けられたりしちゃうらしい。しかもよくある。

2013-06-11 21:31:17
hito @_hito_

んで。ごくごくふつーに生活していると、メモリさんは不死身なよーな気がしてきますが、大規模に運用してるとふつーに壊れます。……ええ、壊れるロットと壊れないロットがあるんだなーって分かる程度に。

2013-06-11 21:32:16
hito @_hito_

すげー同じベンダで同じ型番なのに、このbrith dateなやつだけ壊れてるじゃーんみたいな、あくまのよーな結論に至ることがまれではなくよくある。

2013-06-11 21:33:22
hito @_hito_

もちろん、「このベンダのこの型番」というレベルでしか言えないねーあははー、みたいなオチもよくある。あと、「この型番のマザーボードのこのスロットに挿すとやたら壊れる」みたいなのもありがち。

2013-06-11 21:34:17
hito @_hito_

あと、半導体技術の限界とか、そもそもの設計があかん感じな世代だとぼっこぼこに壊れる。最近だとFB-DIMMが好例で、これは設計があかんパターン。

2013-06-11 21:35:51
hito @_hito_

FB-DIMMさんは、「DRAMみたいなうざったいコントローラの必要なインターフェースはメモリ側で完結させて、ノースブリッジからはシリアル接続させろよ」みたいな設計のブツ。この「メモリ側で完結させる」=シリアルとDRAM I/F両方しゃべる子をAMBという。

2013-06-11 21:37:48
hito @_hito_

ここで問題です。DIMMモジュールのあのせっまい空間に、「シリアルとDRAM I/F両方しゃべる子」などというインテリジェントなチップを載せると何が起きるでしょうか。 こたえ:熱が出る→まわりのDRAMチップが死ぬ

2013-06-11 21:38:37
hito @_hito_

AMBは当時(Woodcrest時代)にはまだまだプロセスルールの問題で高発熱デバイスだったので、なんつーの、ネコとネズミを同じ場所で飼っちゃダメでしょ! みたいな感じで、世紀の失敗作として語られる結果になりました。

2013-06-11 21:40:45
hito @_hito_

んで、たいした枚数ではないものの(だって正常なやつ5桁枚ぐらいと戦ってもせいぜい3桁だし)、DRAMの壊れ方から、なんとなーく特定の挙動が見て取れることがある。

2013-06-11 21:46:22
hito @_hito_

だいたい、  ・特定のセルだけ壊れる  ・特定のセルと欄/行を共有しているやつも壊れる  ・なんだかよくわからない飛び地な壊れ方をする の3パターンがメジャーで、4:4:1ぐらいの体感。

2013-06-11 21:47:00
hito @_hito_

なんでやねーん、という気分になるけど、あいつら、欄か行は同じバスを経由してアクセスしてるので、  特定セルが死ぬ(軽症)→アドレス線が死ぬ(重症) とゆーことらしいと本社が言っていた、と某メモリ屋さんから大昔に聞いたことがある。

2013-06-11 21:48:43
hito @_hito_

「そこまでは推定通りなんで分かるんですが、ランダムに死んでるヤツはなんすか?」って聞いたら、静電気でお亡くなりになるケースがソレだそーです。セルとか行/欄死亡は熱で死んでるケース。

2013-06-11 21:51:21
hito @_hito_

つまり、冬場にパチっ、ってやったケースでは故障解析すると露骨に分かるらしーぞ。

2013-06-11 21:51:59
hito @_hito_

あと、複数セルランダムにお亡くなり事案は、「ECC非対応(検証がいいかげんなケースも含む)マザーにECCメモリを挿してしまった→メモリ系のレギュレータに過剰負荷→電圧変動→ランダムにセルがおなくなり」みたいなケースが *とても* よくあるらしい。

2013-06-11 21:54:03
hito @_hito_

さらに複数セルお亡くなり事案、「特定ベンダのバッファチップ(Registeredなやつ作るのに使うやつね)を積んでるRDIMMでのみ発生する」とか、なんつーかろくでもないケースばっかか、みたいな。

2013-06-11 21:55:00