クロックの最終分配

クロックグリッドにしても、DLLによるタイミング合わせにしても、チップの広い範囲に対してタイミングの揃ったクロックを供給する手段である。

チップ上にFFが一様に分布していれば、これで良いが、FFが密に配置されている領域もあれば、FFがあまりない領域も存在する。FFがあまりない領域にはダミーの負荷を付けてやれば、クロック分配系の負荷を均一にできるが、大量のダミー負荷を付けると消費電力も増えてしまい効率が悪い。

また、最近では消費電力削減のためのクロックゲートは必須技術だが、クロックグリッドやDLLの場合は、部分的にクロックを止めることができない。

このため、クロックグリッドやDLLでタイミングを合わせるのは、チップ上の広い領域に対して基準となるクロックを小さなSkewで供給するところまでであり、その後にそれぞれのFFにクロックを供給する最終分配系が設けられる。

図2.19 クロックゲートをもつ最終分配系

図2.19に示すように、クロックゲートを持つ最終分配系は、最初にNAND回路を設けここにクロックとゲート信号を入力する。Clockが"0"のタイミングでゲート信号を"0"にするとその先のクロックは止まり、ゲート信号を"1"とするとクロックが供給される。

一般にレジスタなどはビット数分の個数のFFを横に並べて作られるので、図2.19に示すように、中央から元のクロックを入力し、等長の2分木で分配していく分配系が使われることが多い。このような回路を使うと、レジスタの各ビットのクロックタイミングのSkewを小さく抑えることができる。

一方、レジスタのようなまとまりがなく、あちこちにFFが点在する制御回路などでは、物理的な配置はこのようにきれいな形にはならないが、配線長や負荷を揃えてクロックのSkewを小さくするようにする。また、どうしてもタイミングを一致させられない場合は、そのクロックは遅延したクロックとして、図2.6で述べたように、次のFFまでの遅延やレーシング防止などの条件を満足させるように論理回路を設計する。

クロックの最終分配系は数が多いので、製造バラつきがなければタイミングが揃うという設計で、DLLのようなアクティブな補正は行われないのが一般的であるが、前述のItaniumのクロック系の論文では、チップ全体で約500万箇所のクロックゲートを行う最終分配系に3ビットのデジタル値で設定できる可変遅延機能を持たせ、スキャンチェインを使ってこのデジタル値を外部から設定する機能を持たせている。これらの遅延時間の設定は、かならずしもクロックSkewを減らすというように設定されるわけではなく、遺伝子アルゴリズムなどを使って、動作するクロック周波数が高くなるように設定するという。結果として、FF間のパスが長いところでは受端のFFのクロックを多少遅らせたりするような設定になっていると考えられる。なお、この設定値は工場での試験時に決められ、プロセサのパッケージに搭載されるROMに記憶される。そして、パワーオン時にスキャンチェインを通してプロセサチップにスキャンインされるという構造になっている。

このクロック系は500万箇所の遅延を設定するという複雑な構成で、高性能ではあるが、筆者としてはやり過ぎではないかと思う。同じIntelでもXeonプロセサでは調整を行うのは最終分配より前のステージで、その数はずっと少ない。そして、遅延時間の情報は、チップ上に作られたヒューズに書き込まれており、2コアItaniumのようにROMチップは使っていない。

スペクトラム拡散クロック

基本的にクロックの周期(サイクルタイム)は一定でSkewもできるだけ小さくするが、そうするとチップ内の全部のFFが同時にスイッチすることになる。このため、プロセサチップに供給される電流はクロック周波数とその整数倍の高調波の成分を多く含むことになる。

このようなクロックやその高調波成分は不要な電波輻射を発生し、TVやその他の通信を妨害してしまう。このため、日本ではVCCI協会(業界団体)が不要輻射の規格を設けており、これをクリアしないと発売できないことになっている。パソコンなどのラベルを良く見ると図2.20のようなマークがついている筈である。

図2.20 VCCI規格適合を示すロゴ

このような不要な電波輻射を減らす手段は、プリント基板やLSIなどのノイズ源を金属板で囲んでシールドするというものであるが、記憶媒体の差込口などがあり、開口部を無くすことはできない。また、携帯機器などでは構造や重量の点から十分なシールドを設けることが難しいという場合もあり、規格を満足させることはかならずしも容易ではない。

不要な電波輻射のピーク強度を抑えるために、クロックサイクルタイムをわずかにばらつかせるスペクトラム拡散クロック(Spread Spectrum Clock Generation)という手法が用いられる。クロックサイクルタイムが変わるということはクロック周波数が変わるということであり、電波輻射の周波数が変わる。図2.21に示すように、図の左側の一定のクロック周波数の場合は、クロック周波数やその高調波の所でピークの高い電波輻射が出るが、クロック周波数を変えると右側の図のように可変範囲の周波数に電波輻射が分散してピーク値が下がり、規格のクリアが容易になる。

図2.21 スペクトラム拡散クロックの効果を示す図(出典:富士通セミコンダクターWebサイト)

ただし、最高側のクロック周波数の場合でも動作する論理回路設計にする必要があるが、プロセサの平均の処理性能は中心のクロック周波数で決まるので、スペクトラム拡散なしの場合と比較すると可変範囲の分だけ性能的が下がることになる。

このようなスペクトラム拡散クロック発生機能をもつクロック発生器は一般的で、パソコンでもBIOSでスペクトラム拡散を行うかどうかの設定が出来るようになっているが、やはりスぺクトラム拡散クロックは、携帯用の機器などで多く用いられているようである。