プロセッサのクロック周期と機械サイクル
系外の単位 · 量:同期の間隔であり、計算仕事の尺度
2004 年の秋、インテルは十ギガヘルツで走るはずだったプロセッサの開発を取りやめた。これは技術の失敗ではなく、物理の壁を認めたのである。倍の速さで駆られた半導体は四倍の電力を求め、あっさりと溶けた。三十年つづいた周波数の競争は一日で終わり、それとともに、箱に書かれた数で機械を判じる習わしも終わった。
周期そのものは、クロック信号のふたつの縁のあいだの間隔である。半導体の同期した部分がいっせいに切り替わる、まさにその一歩だ。その逆数が周波数であり、だから五ギガヘルツでの一周期は一ナノ秒の二割ほどしか続かない。そのあいだに光は六センチを進み、銅の配線を行く信号はそれよりさらに短く — 半導体の幅にも満たない。
01 · 定義
周期とはクロック信号の周期、すなわち同じ向きのふたつの縁のあいだの間隔であり、そこで半導体の同期した要素がそろって状態を変える。機械サイクルとは、プロセッサがひとつの完結した動作を行うのに要する整数個の周期である。パイプラインの機械では、それが逆の尺度に置き換わる — 命令ひとつあたりの周期数であり、その逆数がまた、一周期に何本の命令がパイプラインを出るかを告げる。
一周期の長さを定めるのは自然ではなく、半導体上の配線である。ふたつのフリップフロップのあいだの最も遅い道より短くてはならず、そこにはフリップフロップ自身の遅れと、ばらつきのための余裕も含まれる。ここから設計者のいつもの手が出てくる — 長い論理の道をパイプラインの二段に切る。周期は半分になり、周波数は倍になり、命令はいまや階段をまるごと上る。
だが周波数を限るのは論理ではなく電力である。動的な消費は周波数とともに、また電圧の二乗とともに増え、その電圧は、回路が高まった周波数に間に合うように上げねばならない。ゆえに熱はおおむね周波数の三乗のように進み、この三乗の依存の上で、ギガヘルツの競争は四のあたりで止まった。
最後に、周期は長さの定まらない単位である。電力の管理は負荷と温度に合わせて毎秒何百回も周波数を変える。だから周期の数から経った時間は判じられないが、なされた仕事は判じられる。周期の計数器は秒ではなく計算の歩を数えており、そこにこそ本当の値打ちがある。
つまみで周波数を運び、反対の向きに分かれてゆくふたつの曲線を見ていただきたい。緑は信号が一周期に進みうる距離である。周波数が高いほどその道は短く、五ギガヘルツでは半導体そのものより小さくなる。深紅は主記憶への往復が周期にしていくらつくかである。そのナノ秒での遅れはほとんど変わらないから、周期で見れば増える一方だ。
仕事を段に切って設計者は周期を短くするが、一本の命令はいまやその階段をまるごと上ることになり、自身の遅れは減るどころか増える。得が現れるのは、段が別々の命令で埋まっているときだけだ。そして分岐の予測を外せば、パイプラインはまるごと空けねばならない — 深いほど高くつく。
02 · 換算
周波数、周期、仕事
周波数か周期の長さを入れていただきたい。カードは逆数、一周期に信号が行く道、そして主記憶への参照が周期にしていくらつくかを示す。第一の族は定義そのままに正しく、第二の族はひとつの演算核の平均に、第三の族は今日の記憶階層のありふれた遅れによっている。
配線を行く信号の速さは光速の十分の六としてある。カードの細かな設定では半分に変えられる。
周波数で比べられるのは同じ演算核どうしだけである。命令ひとつあたりの周期数は、造りが違えば数倍も違うからだ。ある機械は一周期に四本の命令を取り、別の機械はやっと一本を取る。だからこそギガヘルツの数字は広告から去り、その場所に、もはや周期ではなくなされた仕事を測る試験の組が入ってきた。
| 値 | 注記 | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · 桁の並び
対数尺度:一周期から割り当ての時間窓まで04 · 測定器
何が周期を定め、何がそれを数えるか
周期の源は水晶の小片であり、ふつう数十メガヘルツで、千万分の一ほどの確かさで振れている。半導体の上のギガヘルツはそこから来るのではなく、この基準の周波数を掛け合わせて得られる。だから機械全体の落ち着きは、米粒ほどの鉱物の破片から受け継がれている。
位相同期回路は、発振器の分けられた周波数を基準と比べ、位相が重なるまで整える。分ける数を変えれば、周波数は走りながら変わる。まさにこれが電力の管理に、休みのあいだ周期を数百メガヘルツまで下げ、熱の余裕があるうちは数秒だけ上限へ持ち上げることを許している。
演算核の内には、周期、済んだ命令、キャッシュの外し、予測を外した分岐を数えるレジスタが座っており、走っているプログラムから直に読める。これらの数から、命令ひとつあたりの周期数が得られる — その半導体にどれだけよく符号が乗ったかを示す、唯一まっとうな尺度である。
周期そのものを見るには、縁を数ピコ秒の分解能でつかまえる器械がいる。同じ器械が、周波数をこれ以上上げられぬ理由も見せてくれる — 位相の揺れ、半導体の隅々への信号の届きの偏り、長い線での縁のなまりである。
05 · 表記の規則
周期とヘルツは同じものではない
周波数はヘルツで書き、メガとギガでは接頭語を大文字にする。周期の数はどんな単位も付けず整数で書く。周期は SI 単位ではないからだ。性能の指標は大文字で、点を打たず、どの演算核のものかを添えて書く。周波数と性能をひとつの量に混ぜることは許されない。
第一の書き方はふたつの別の量を混ぜている。周期の数は無次元であり、ヘルツは周波数を測る。第二は接頭語の大小を破っており、メガとギガではそれが必ず守られねばならない。第三は、命令あたりの周期数が数倍も違う造りを周波数で比べており、そのような比較からは何も出てこない。第四は、変わりうる量を定まったものとして扱っている。
06 · 隣り合う単位
傍らには、同じ仕事を別の側から測る単位が並ぶ。信号そのものの周波数としてのヘルツ、毎秒の浮動小数点の演算数、そして一周期に当たる命令の数である。周波数とパイプラインの振る舞いが分かりさえすれば、いずれも互いから導ける。
Simetrium の 要覧のうち 隣に並ぶのは ヘルツ、周波数を与えるもの、 秒 およびその分の接頭語、 unix time、そこでも限りを定めるのは機械語であり、そして ビット s バイト、周期が運ぶものを測るためのもの。
07 · 歴史の部
三十年の競争と、取りやめの一日
ひとつの半導体に載った最初のプロセッサが走っていた周波数を、今日の半導体はマイクロ秒の端数で通り過ぎる。そして命令ひとつに八周期を費やしていた。当時の機械サイクルは文字どおりの概念だった — 命令を読み、解き、データを取り、計算し、書く。それぞれの段が自分の周期を取り、すべてが厳しく順に進んだ。
段が別々の命令を同時に扱えるようになるや、慣れた尺度は壊れた。命令はなお五周期を要したが、パイプラインからは毎周期一本ずつ出てきた。数え方を裏返して、命令ひとつあたりの周期数を言うほかなく、よい機械ではそれが一を下回った — すなわち一周期に一本より多くの命令が仕上がる。
三十一段のパイプラインを持つ造りは周波数のために建てられ、熱にぶつかった。約束された十ギガヘルツは、机上の筐体では考えられぬ冷却を求めた。企ては閉じられ、業は多くの演算核へ向かった — それが良いからではなく、消費の三乗の伸びが他の道を残さなかったからである。
今日の演算核にひとつの周波数はない。休みでは数百メガヘルツまで下がり、負荷では五ギガヘルツへ上がって、熱の余裕が続くかぎりそれを保つ。カードの数字は恵まれた条件での約束となり、それで機械を比べることは、作り手も評する者もやめてしまった。
測っている最中に長さの変わる単位
周期は計量に携わる者には具合悪く出来ている。長さを定めるのは標準ではなく半導体上の配線であり、同じプロセッサでも毎秒何百回と変わる。電力の管理が周波数を負荷と温度に合わせるからだ。だから周期の計数器は時間を測るのに向かない。外からは時計に見えるとしても、それを信じるプログラムは、周波数が動いた分だけ狂う。
だが周期が生まれたその務めには、いかなる時間の単位よりもよく合う。周期を数えるとき、我々が測るのは継続ではなく計算仕事の量である。だから命令ひとつあたりの周期数は、周波数がどう変わっても比べうるまま残る — それは符号が半導体にどれだけよく乗ったかを語るのであって、何秒過ぎたかを語るのではない。
カタログ · 測定単位
それぞれの量に一つの要覧
SI 基本単位が七つ、固有の名を持つ組立単位が二十二、そして技術も暦も成り立たない体系外の量。