アレニウスの式

部品の故障は、配線やトランジスタがミクロに物理的な変化や化学的な変化を起こして正常に動作しなくなることで起こる。このような変化は温度が高くなるにつれて活発になり、温度と寿命の関係は、

というアレニウスの式で表される。ここで、Lは寿命、Aは部品ごとの定数、Eaは活性化エネルギー、kはボルツマン定数、Tは絶対温度である。

活性化エネルギーはeV(電子ボルト)で表され、異なる数点の温度(ここではT0、T1、T2)で寿命(L0、L1、L2)の測定を行い、図1.11に示すアレニウスプロットを作成して、その傾きからEaの値を求める。

図1.11 アレニウスプロット

原理的には、故障を起こす反応ごとに違う活性化エネルギー値を持つ複数の故障メカニズムの複合となると考えられるが、上記のような実測で得られるのは、使用する温度範囲で支配的な反応の活性化エネルギーであると考えられる。

LSIの場合、具体的な活性化エネルギーの値は、1.0eV程度というのが典型的な値である。ボルツマン定数は1.38×10-23(J/K)であり、1eVは1.6×10-19(J)であるので、活性化エネルギーが1.0eVであるとすると、T=300Kではアレニウスの式のExpの括弧の中の値は約38.65となるのに対して、350Kでは約33.13となり、50℃の温度上昇で寿命は1/250になってしまう。

プロセサの仕様書をみると、100℃のチップ温度まで動作するというように書いてあるが、これは100℃でも満足に機能するということは保障しているが、100℃での動作では概ね保証期間(通常1年)は満足するとしても、それより長い寿命があることを保証するものではない。従って、長い寿命や故障率を低くしたい場合には、できるだけチップ温度を下げて動作させてやることが望ましい。また、チップ温度を下げるとトランジスタのリーク電流が減少するので、消費電力がある程度減るというメリットもある。

プロセサを9万個近く使用する「京」スパコンでは、信頼度を高めるために13℃程度の冷たい水でプロセサチップを水冷し、チップの温度を30℃程度に抑えている。空冷の場合に比べて数10℃低い温度になっており、プロセサチップの故障率は大幅に低くなっていると考えられる。

この逆に、LSIの動作温度を意図的に上げて動作させてやれば、常温で動作させる場合と比べてずっと短い期間で故障を発生させることが出来るので、短時間で初期故障を出し尽くすためには高温で動作させるバーンインを行うわけである。

バーンインにより、元々できの悪い部分に起因する初期故障が取り除かれると、部品の故障率は低い状態で推移する。しかし、プロセサの中には何10億個ものトランジスタがあり、初期故障になるほど出来が悪くなくても、いろいろな状態のものが存在する。その中で弱いものがパラパラと故障していくので、故障率はゼロにはならない。一般に部品の故障率というときは、この安定した期間の故障率をいう。

そして、問題なくできていたトランジスタや配線などもくたびれてくる時期が来る。こうなると故障率が上がってくる。この状態を部品の寿命という。ただし、この寿命は、同じ部品でも使い方によって変わってくる。

バーンインのところで述べたように、温度を高くしたり、電源電圧を上げたりすると、図1.12の破線のカーブのように、その部品のライフの時間の進み方が速くなり、寿命は短くなる。また、同じ数の故障が加速された短い時間で発生することになり、バスタブの底の故障率も上がってしまう。

図1.12 高温で動作させると寿命が短くなり故障率も上がる

Intelのプロセサはチップ上のトランジスタの温度が100℃程度まで動作させることができ、仕様書に書かれた電源電圧などの範囲を守っていれば、1年以上の寿命がある。しかし、仕様の範囲ならどの条件でも寿命は同じではなく、低い温度で動作させる方が寿命は長くなり、故障率も減少する。

また、故障の原因にはゲート絶縁膜の破壊などのように電圧に依存するものや、配線の断線などのように電流値に依存するものがあり、電圧を上げてオーバクロックすると、強力に冷やしてチップ温度を許容範囲以下に下げたとしても、寿命が保証されるとは限らない。

部品の故障率は一般にfitという単位で表す。fitはFailure in Timeから来ており、109時間(10億時間)に1回の故障率を1fitと呼ぶ。部品の故障率はプロセサなどの大物のLSIはfit数が高く、チップコンデンサなどの小さな部品では小さくなる。また、コネクタやプリント基板のビアなども頻度は低いが故障するので、fit数がある。

一般にはシステムは部品の故障率がバスタブの底のところで使われる。このため、私たちがPCを使っていても、それほど頻繁にハードウェアが故障するという印象ではないと思う。まあ、PCの故障率は数年に1回から数10年に1回程度の頻度というところであろう。10年というのは約9万時間であり、10年に1回の故障率は11,000fitということになる。

10年に1回の故障ならPCのユーザとしてはそれほど気にならないが、120台のサーバを使うクラスタの場合、各サーバが10年に1回の故障率とすると、毎月1回、どれかのサーバが故障するという頻度になる。「京」スパコンのように9万に近い計算ノードを持つシステムでは、年間9000回の故障で、平均して1時間に1回の故障となってしまって使い物にならなくなる。

一例として、IBMのBlue Gene/Lスパコンの論文に示された故障率の見積もりを図1.13に示す。左から2番目の列が各部品のfit数、そして、65,536(64K)ノードのシステムでの各部品の個数、システム全体での各部品のfit数、1週間の故障頻度が順に書かれている。この見積もりでは、システム全体では約5.3Mfitで、1週間に0.89回の故障率となっている。

図1.13 IBMのBlue Gene/Lの論文に記載されている部品の故障率と64Kノードシステムでの故障率の見積もり(P. Coteus,et. al., "Packaging the Blue Gene/L supercomputer", IBM J. RES. & DEV. VOL. 49 NO. 2/3 MARCH/MAY 2005, pp.213-248)

大規模システムの開発にあたっては、図1.13に示したように、各部品のfit数を積算してシステムの故障率を見積る。それが要求される故障率よりも高い場合には、より故障率の低い部品に変える、動作温度を下げて故障率を減らす、あるいは、1個の部品が壊れてもシステムは止まらないような構成にするなどの対策が取られることになる。