第2回 1GHz! 世界を支配するクロックなるモノ:頭脳放談
CPUの世界を支配しているのがク ロックである。800MHzだ1GHzだと一喜一憂しているが、自然現象的には、ペコペコと脈動を繰り返す電気信号でしかない。
コンピュータの世界というのは人が決めたルールに従っている、というのは「一応」の建前である。実際、ユーザーがマウスを動かすと、信号パルスがキーボード コントローラに伝わり(PS/2マウスの場合。USBマウスはまた異なる)、キーボード コントローラが発生した割り込み信号が割り込みコントローラを介してCPUに伝わって割り込みが発生し、割り込みハンドリングのための複雑なシーケンスを経てマウス ドライバが起動され、ドライバはOSを介してアプリケーション ソフトにイベント発生を伝え、アプリケーション ソフトは、OSが持つ何千ものAPIのうちの何かを呼び出し、OSがまたデバイス ドライバを呼び、デバイス ドライバがI/Oレジスタに値を書き込んだりして、ようやくユーザーが求めた結果や予期しない結果を導き出している。この過程を見るにつけ、APIとかインターフェイスとか、たとえそれが人の作ったルールであっても、それらが何百、何千と重なると、もう1人の人が全体を完全に理解するのはほとんど不可能ではないかと思われる。その中でわれわれプロセッサ設計者は、特殊な位置を占めている。なぜならば、われわれの上位にはプロセッサの命令セットという人の決めたコード(いってみればハードウェアにとってソフトウェアのAPIに対応するもの)があり、人の決めたルールの世界であるが、われわれの仕事の奥底には自然現象が横たわり、人がルールを決められない別の世界があるからだ。今回は、その世界をちょっとだけほじくって戻ることにする。深入りしたい人は、エンマ大王かAndy Grove(アンディ グローブ)氏(*1)にでも相談してもらおう。
*1 インテル社元社長、伝説の秀才であり、偉大な科学者であり、神ともあがめられる経営者。半導体理論に関する著書は業界でバイブルともいわれる古典的名著。
同期式回路ゆえにクロックが存在する
この世界(同期式回路(*2)と呼ばれている)のすべての事象を支配しているのがクロックというものである。このクロックの速度が、800MHzだ、1GHzだと一喜一憂しているが、自然現象的には、ペコペコと脈動を繰り返す電気信号でしかない。そのペコペコの回数が800MHzや1GHzということは、1秒間に8億回とか10億回に達するわけで、無闇やたらと速いことに違いないが、実に単純な信号である。それに人がクロックという名を与え、ラッチと呼ばれる回路素子の記憶のスイッチの開け閉めに使った瞬間、それはすべての回路を支配する信号となる。クロックは、回路がある状態から別の状態へと遷移するスタートであり、遷移した先のゴールでもある。プロセッサとは、この輪廻にも似た遷移をクロックが与えられる限り無限に続けている小世界(有限状態機械と呼ばれている)なのだ。われわれデザイナーは、クロックが状態を確定した瞬間、瞬間をデザインする。遷移の途中は信号が伝播し、状態は変わりつづけ、その状態は神のみぞ知る、とでもいうべき時間である。この遷移途中の状態が表に現れてしまうと、デザインの意図とは関係ない動作が起こるので、「バグ」と呼ばれることになる。
*2 同期式回路というからには、非同期式回路というものも存在している。因みに、最初のコンピュータは非同期式であったそうな。最近、クロックを使った同期式設計に閉塞感があり、また非同期式が見直されている。そうするとクロックはなくなってしまうことになる。
クロックが速ければ、プロセッサ内世界の遷移の動きが速くなるから、速さを求める人々はそれに高いお金を払い、1GHzのAthlonやPentium IIIを手に入れることになる。しかし、同期回路の遷移の速さが実際のソフトウェアの速さと完全に連動しているかというと、そうではないのは多くの先覚者が指摘しているとおりである。現在のシステムは、たかが10万円パソコンといっても非常に多くの要素で構成されているので、プロセッサのクロックだけがすべてを支配しているわけでない。とはいえ、プロセッサのクロックは重要な要素の1つではあるので、速度競争は続くことになる。
さて、ここで質問がある。 われわれ設計者は、どうやってクロックの上限を決め、人々に伝えたらよいだろうか? 単純には、プロセッサの動く上限の周波数を測定し、その周波数のラベルを貼って売る、という考えがある。この考えはまったくもって正しい! 学会発表などでは、ともかく動作した最高の周波数を言ってしまう、というのが通例だ。しかし、実際に売るとなるといろいろな問題が発生する。このほとんどは、プロセッサの回路が自然現象の支配を受けているために起こる。
温度がクロックを左右する
Pentium IIIにしろ、Athlonにしろ、現在ほとんどすべてのプロセッサはシリコン半導体である。第一にこのシリコン半導体は温度によって性能が大幅に変わってしまう。一般に半導体は温度が高くなると遅くなり、ある温度を超えると動作しなくなる。動かないとなると、当然ユーザーから文句が出るので、設計者は、これこれこういう温度条件のもとで、こういう周波数を保証すると言わなければならない。そうでないと知らぬ間に100度を超えるクルマのエンジン ルームの中で使われて、CPUが熱暴走、車も暴走して事故が起きるとか、アルマゲドンを救いに行くつもりのスペースシャトルがCPU不調で飛べなくなって、人類を滅亡に導いてしまう、というような悲惨な状況に陥ることになる。一般の半導体では、外気の温度で例えば0度から70度といった条件を付け、その条件の悪い側(この例では70度)で保証できる最大の周波数を公表するというのが一般的だ。白熱電球並みに熱くなり、強制冷却なしには動作できない昨今のx86プロセッサでは、強制冷却(冷却ファンなど)による放熱条件まで指定して、最大周波数を決めなければならない。
ここに1つポイントがあるわけだ。AMDやインテルが1GHz品を発表する以前に、1GHzのプロセッサを搭載したマシンを発表していた小さなPCメーカーがあった。これは、プロセッサ ベンダが決めた条件以上に冷やせば、大抵の石(半導体)はより速く動くことを利用したものだ(秋葉原界隈では、このための強制冷却用のキットが販売されている)。強力に冷却すれば、理屈のうえではクロックを上げられるハズだが、プロセッサ ベンダの保証外なので、何かが起きる危険性もある。マシンがクラッシュするような場合は、目で見えるので分かりやすいが、もしかすると掛け算の結果のほんの一部だけ間違っているとか、ささいな特定の操作だけおかしくなるようなこともあり得る。実際、最高動作周波数を測定する場合には、プロセッサ ベンダはすべての演算、すべての機能を試験するため、何千本ものテスト プログラムを実行させて、それぞれの試験結果をチェックして決めている。われわれ設計者は、目標周波数に合わせてすべての回路をチューニングしているので、掛け算はやたらと速いけれど、足し算は遅いといったデコボコはあまりないのが通例であるが、やはり、神ならぬ人とコンピュータ(コンピュータを設計するのにコンピュータは必須だ)の合作であるので、弱い部分も現れる。その一番弱いところに引っかからないように、余裕を持たせて最大周波数を決めているのだから、あまり引っ張りすぎるとそこに引っかかるのは必定である。
電圧上げれば速度もあがる?
第2に電源電圧がある。 現状、 Pentium IIIもAthlonも1.5V前後の電圧で動いている。こうしたx86プロセッサを含む大規模な半導体集積回路のほとんどは、CMOSと呼ばれる製造技術が採用されている。このCMOS半導体は、これに与える電源電圧を高くすれば、速度も増す傾向にある。われわれがプロセッサを売るためには、これこれこういう電源条件(古くは5Vプラスマイナス5%などというのが長らく業界の基準であった)のもとで、こういう周波数を保証すると言わなければならない。ここでの第2のポイントは、最高動作周波数を高めるには電源電圧を上げればよい、ということにある。
ところが、そうは簡単に電源電圧を高められない。1.5Vと聞けば、乾電池1個分の低い電圧に感じるかもしれないが、半導体からすればそうではない。現在、Pentium IIIやAthlonとも0.18ミクロン プロセスで作られている。何が0.18ミクロンなのかというと、最小加工寸法(普通これは最小のトランジスタの幅なのだが)のことなのだ。この0.18ミクロン幅のトランジスタの両端に1.5Vという電圧がかかるというのは、1センチ幅の両端に約7万V(!)をかけたのと同等の電界が生じる。そして、その電界を絶縁するゲート酸化膜の厚さは数十オングストローム、すでに原子の個数で何個と数えられる程度の厚さしかないのだ。そのため、下手に電源電圧を上げすぎると、「パシッ」(音は聞こえるかどうかわからないが)といって、絶縁膜が破壊されてしまう。最近は、消費電力を低減するという目的もあり、電源電圧と最高動作周波数は、あらかじめ壊れないと分かっている範囲内で可変とする傾向にある。この技術では、新興のx86ベンダであるTransmeta社のCrusoe(クルーソー)プロセッサが進んでいる。Crusoeは0.05V刻みに動的に電源電圧を調整し、200MHzから700MHzまで動作周波数を変えることができるのだ。
●半導体は畑で穫れる?
第3に、Pentium IIIもAthlonも、すべての半導体製品は、工業製品といいつつ、昔からの格言どおり「農業」的製品であるということだ。「半導体農業」というやつで、工業製品には珍しく、穫れたり、穫れなかったりするのだ。要は、普通の工業製品は、99.9%以上といった良品率で作れるケースが大部分なのだが、半導体は不良が数十%に達することもママあり、特殊なものになると100個作っても1個穫るかどうかということもある。当然、よいといわれる工場ほど不良率が低く、変動が少ない。とはいえ、自動車工場で半導体並みの不良率があったら、間違いなく1カ月で自動車メーカーはつぶれるだろう。それほど、半導体の不良率は一般に予想されているよりも高いのだ。
そうなる原因は、やはり自然現象である。農業が天気に影響されるように、半導体工場もほんのささいな要因に大きく影響される。いくらクリーン ルームといってもわずかにゴミがあるわけで、ゴミが落ちればその半導体は不良になる。ある1個のゴミがどこに落ちるかなど神様以外には予想できない現象である。ましてや、ほんの僅かな温度や濃度の違い、時間差、平面の歪み、どれもが性能に影響するとなると、大量に作られるプロセッサの1個1個が実はすべて異なる条件の元で作られているといってもよいことになる。それら1個1個の運命を予想することはできない。しかし、多数個の傾向については確率、統計という人間業で推し量ることができる。端的にいうと、工場で作られるプロセッサの最高動作周波数は、正規分布に従うと考えられている。この「正規分布」というのは、受験のときに使われる「偏差値」の元になっているものだ。
「偏差値」の悪いやつ、つまり分布のなかで遅いものに合わせて最高動作周波数を定めれば、収穫量は上がる。要するにみんな合格するわけだ。ところが、例えば、偏差値80よりも下は不合格とすれば、まぁどのくらい大変な状況になるかはお分かりいただけるだろう。もちろん、収穫量が落ちたら、エンド ユーザーに馬鹿高く売るというのも手ではあるが、半導体工場のキャパシティには限りがあるから、そのあたりをよく考えて決めないと、作っても作っても物が出回らないという悲惨な状況に陥ることになる。どういう基準を適用するかで大違いなわけだ。普通は、結構ゆるくて偏差値20以上ならすべて合格、といった基準で試験を行っている。これなら、ほとんど全員が合格する基準であるから、お馬鹿もいるが、中には凄くできる(速い)やつも混じっていることになる。このようなケースでは出てきたものをさらに「選別」すれば、より速く動くものを見つけることも可能だ。
マージンも重要なポイントになる
それに、まだまだいろいろ考えておかないとならないことがある。例えば、出荷試験をするLSIテスターは何億円もする高価で精密な機械だが、所詮、神ならぬ測定器であるので、誤差がある。1GHzと測定できたとしても、ほんとうは0.9999GHzに過ぎないのかもしれない。ましてや複数のLSIテスターを使おうとすると、互いの微妙な差も問題になる。片方で1.001GHzでテストに通った半導体が、もう一方のテスターでは0.999GHzと出てテストに落ちることになるかもしれない。一応、プロセッサは工業製品なので、大量生産が前提だ。こういう差はすべてまとめて、マージンということで確保する。つまり、保証値よりはちょっと高めの値でテストして合格とすることが多い。だから、さっきの結構速いやつも混じっているということと合わせて、ベース クロックをちょいっと上げて、プロセッサの動作クロックを多少速くしても問題なく動くわけだ(これを秋葉原族は「ドーピング」などと称している)。もちろん、なかにはすべてのテストにギリギリで合格したデキの悪いプロセッサも混じっているので、ドーピングするとうまく動かないといったことにもなる。また、いくら動作クロックにマージンがあるといっても、無理をするとプロセッサの故障の原因にもなるので、くれぐれもご注意を。
筆者紹介
Massa POP Izumida
日本では数少ないx86プロセッサのアーキテクト。某米国半導体メーカーで8bitと16bitの、日本のベンチャー企業でx86互換プロセッサの設計に従事する。その後、出版社の半導体事業部を経て、現在は某半導体メーカーでRISCプロセッサを中心とした開発を行っている。
「頭脳放談」
Copyright© Digital Advantage Corp. All Rights Reserved.