“壊れ”の質が違う
ここからは上記のニーズを満足するための技術の話に移ろう。
まず、「壊れる」とはどういうことなのか。この点について、ハードウェアとソフトウェアでは決定的な違いがある。
ハードウェアには必ず寿命があり、部品はいずれ壊れる運命にある。全く同じ使い方をしていても、つい今まで正常に動作していた部品がある時突然動かなくなる。しかも、全く同じ部品を同じ場所で同じ人が同じように作っても、部品ごとにやってくるその時が違う。さらに、温度依存などいったん壊れたように見えたものが、再び復活する場合もある。
一方、ソフトウェアは全く同じ使い方をしている限り、決して壊れない。正常でなくなるのは、使い方が変わったりして、これまでと動作が違う場合であって、いわゆるバグが顕在化するためである。検証済みの動作でもともとバグがないところに、ある時突然バグ現れることなどない。もっともハードウェアにも設計不良はありうるので、ハードウェアはソフトウェア以上に厄介な問題を抱えているとも言える。
誤解のないように補足しておくが、ハードウェアが難しくてソフトウェアが簡単だなどとは決して言っていない。ソフトウェアの方が桁違いに規模や組み合わせ条件が大きく、検証が格段に難しい場合が多い。検証が難しいか簡単かの問題ではなく、“壊れ”の「質が違う」と言いたいのである。
「壊れにくい」の意味
次に、「壊れにくい」とはどういうことなのか。部品単体で見たときは、製造方法やプロセス管理・検査方法などがどれだけうまく機能しているかということが重要になる。装置で見たときは、使用する部品の数やこれらの接続方法などが関係し、一般的には使う部品の数や接続数を減らすと壊れにくくなる。
たとえば数十回路のICと数万回路のLSIを比べれば、一つずつならICの方が壊れにくいが、同じ規模の回路を構成するのに数百個のICと1つのLSIを使う場合で比べれば、LSIの方が壊れにくい。ICとプリント基板のハンダ付けなどでも接続不良を起こす可能性があるので、全体としては圧倒的にLSIの方が壊れにくい。
半導体技術の進歩とともに高集積のLSIを使用することで、コンピュータの小形化・低価格化が進み、同時に信頼性も向上させてきた。では、高集積のLSIを使用するようになった今の時代で比べた場合、パソコン(PC)とメインフレームでは違いがなくなったのだろうか。ある面ではYes、ある面ではNoである。
たとえば、主記憶に使用しているDRAMメモリ素子は同じようなものを使っており、総容量が同じなら同じくらいの部品数で構成されている。部品数を減らしたことによる信頼性向上という点では両者に共通する。
だが、メインフレームではエージングなどで弱い部品を除去するスクリーニング技術がしっかりしており、同じ部品を使っていながら壊れにくいのだ。ハンダ付けの出来具合をしっかり検査して、不具合があればプロセスにフィードバックし、常に良好な製造を追究するなどの地道な活動が、装置としての信頼性の違いを生み出している。とはいっても、部品自体の信頼性も向上するので、コスト対効果のバランスを良く考え、時代に合った製造方法に適宜変更されている。
「故障」と「障害」の違い
これまでに述べた技術は、装置の部品故障をいかに削減するかというものだったが、これからは部品故障があった場合でも装置を正常に動作させ、装置の障害にならないようにするための技術について述べる。
ここで、意味を正確に理解していただくために、「故障(Fault)」と「障害(Failure)」という用語の違いを説明しておきたい。部品が壊れてその機能を失うことを「故障」と呼び、それが起因して装置が誤動作したり機能を失うことを「障害」と呼ぶ。
つまり、1つの部品が故障してそれが装置にまで影響する場合は装置の障害で、部品の故障があっても装置自体は正常に動作できる場合はユーザーから見ると無害である。もし、複数の装置で構成されるシステムで1つの装置が壊れた場合も、システムが正常であればシステム障害とは呼ばない。つまり、装置としては障害で、システムとしては故障というように、同じ装置の“壊れ”でも、見るレベルによって呼び方が変わる。
「どこかおかしい」と感じられるかどうか
ところで、故障と簡単に言うが、どこが故障したかを装置自身が認識することは容易ではない。人間でも「どこかおかしい」と気づいても、単なる睡眠不足なのか病巣を抱えているのかは病院で精密検査を受けない限り正確にはわからない。病巣があっても「どこかおかしい」とすら感じない場合も往々にしてある。
だが、これを可能とするように古くからメインフレームは考えられている。たとえば、パリティチェックに代表されるように、回路の不具合を認識して異常を報告する各種チェッカーが付加されている。α線による一時故障率が高かったDRAM部分では、1ビットエラーが訂正できるECC(Error Correcting Code)などが採用されてきた。さらに、チェッカーの点灯パターンや点灯順序をトレースすることで、どの部位に故障があるかを解析するLOA(Logout Analysis)といったツールも準備している。
多くの部品を何百枚ものボードに搭載して1つの装置を構成していた時代、少なくともどのボードが壊れたのかを認識して交換できるようにしておかないと、保守すらできないという状況の中で培われた技術であり、生まれたときからボード1枚で装置が構成できるようなPCには縁の薄い文化でもある。