毎年、8月にスタンフォード大学で開催されるHOT Chipsという学会があるが、それの向こうを張って発足したのが、このCOOL Chipsである。Hotもホットな話題と、ハイエンドチップが熱いというのをかけた命名であるが、COOL Chipsは、電気を喰う熱いチップに対するアンチテーゼと、アメリカの若者が「格好良い」とか「素晴らしい」とかいう時に"COOL!"というようなクールの使い方をかけた上手い命名である。

今年で10年目となるCOOL Chips Xが、4月18日から20日に掛けて、横浜のみなとみらい線の日本大通り駅の真上にあたる情報文化センターの大ホールで開催された。

横浜の情報文化センター大ホールで開催されたCOOL Chips Xのレジストレーション風景

ハードのバグをソフトでパッチするPhoenix

今年のCOOL Chips Xは、設計バグと製造ばらつきの影響を軽減するアーキテクチャ手法と題するイリノイ大学アーバナシャンペーン校(UIUC)のトレラス(Josep Torrellas)教授の特別講演で幕を開けた。2週間くらい前に新聞やWebに、「ハードのバグをソフトでパッチする」という記事が載ったので、記憶されている方もあるのではないかと思う。これらの短い記事では技術の中身は分からなかったが、今回の講演は、途中休憩を挟んで2時間半という長い講演で、詳細に中身が説明された。

COOL Chips Xでの講演タイトルと、講演を行うトレラス教授

メーカーは宣伝しないが、マイクロプロセサにはバグがつき物で、IntelやAMDのエラータ(Errata)を見ると、一種類のプロセサに数十件のバグが並んでいる。プロセサメーカーは色々なテストをしてバグを潰してから製品を出荷しているので、単純なバグは無いが、3つ4つと条件が重なった場合にこれらのバグが発見されている。例えば、IntelのPentiumのエラータには、プロセサがパワーダウンモードで、割り込みが入ったサイクルに、同時にキャッシュのスヌープが発生すると正常にスヌープが行われず、キャッシュ内に本来はヒットするエントリがある場合には、キャッシュの状態に矛盾が生じることがあるというようなバグが載っている。

トレラス先生のグループは、これらのバグの内容を調査し、性能測定用やデバグ用の機能のように通常の動作に影響しないバグが1/3程度含まれているが、バグ全体の2/3は、前述のような、結果が間違うとかプロセサがハングするといかいう重大なバグであるいう。これらの重大なバグを更に分類すると、幾つかの条件が同一サイクルに重なった場合に顕在化するバグ(コンカレントバグと呼ぶ)が69%で、時間の要素が入り、ある条件が発生してから何サイクル目から何サイクルの間に何かの事象が発生するとバグが顕在化するというような複雑なケースが31%であったという。

プロセサ内部のキーとなる状態を表わす信号を取り出し、PLAのような可変性のあるロジックでバグが顕在化する条件を検出し、検出されたら、パイプラインをフラッシュして、前述の例ならパワーダウンモードをオフにしてから動作をやり直せば、今度はバグは顕在化しないので正しく動作することが出来るというのがトレラス先生の手法の基本的なアイデアである。この条件を作るPLAの論理を発見されたバグに合わせて生成し、ソフトウェアのパッチと同様にユーザに配れば、チップ自体をリコールして修正しなくてもバグを回避できる。

Phoenixによるバグ回避の概念図

エラータの調査の結果、キーとなる状態としては150~270の信号を取り出せば良く、バグが顕在化する条件を検出する回路は、チップ面積としては0.5%程度のオーバヘッドで、クロック周波数にも悪影響はないという。また、バグが顕在化する条件を検出すると、やり直しに時間が必要であるが、検出はまれであるので全体としての性能低下も無視できる程度であるという。

万事休すと思われたバグのある状態から、不死鳥のように回復できるという期待を込めて、この手法はPhoenixと名付けられている。なお、Phoenixの発音はフェニックスではなく、フィにアクセントを置いたフィーニックスに近い。

また、これらの結論を10種のプロセサのエラータの調査から導き出し、新たに追加した5種のプロセサに対して同じ手法でバグ検出ユニットを作ると、新たなプロセサのエラータに記載されたバグに対してもほぼ同等の検出率が得られたことから、この手法は汎用性があると結論付けている。