【レポート】

MICRO39 - 最優秀論文に見るアーキテクチャ研究の最前線

1 最優秀論文(1)

    安藤壽茂  [2007/01/08]

    MICRO-39が2006年12月9日から13日に掛けてフロリダ州のオルランドー(ディズニーワールドなどがある有名な観光地で、日本の旅行案内などではオーランドと書いてあるものが多いが、Orlandoはオル・ランドーという感じで発音しないと通じない)で開催された。MICROはISCAと並ぶコンピュータアーキテクチャの世界最高レベルの学会であり、日本からの論文の採択は、毎回、良くて1~2件で、今回は合計42件の論文発表の内、日本からの発表はゼロである。

    最優秀論文

    このMICRO39で最優秀論文賞を受賞したのが、イリノイ大学のTorrellas教授のグループのドクターコースを今年卒業する学生であるSmruti.R.Srangi氏の発表した"Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware"と題する論文である。なお、この論文はTorrellas教授のグループのiacomaのウェブサイトに掲載されおり、参照することができる。

    ソフトのバグは製品販売後にもパッチを出すことにより修正でき、最近では、Windowsなどは毎週パッチが来るのではないかと思えるほどであるが、プロセサチップのバグは作り直しが必要であり、ソフトのようには行かない。よく知られている1999年のPentium 3の浮動小数点演算のバグでは、出荷した製品の交換に$500Mかかってしまった。これほど規模ではないがAMDのAthlonやIBMのPowerPCでも同様のことが起こっている。

    ということで、出荷後のプロセサチップに対してバグ修正をソフトのようにパッチで修正できないかというのがこの論文のテーマである。

    この論文では、Intel、AMD、IBM、Motorolaの計10種のプロセサのErrata(いわゆるバグリスト)を分析し、結果が誤るとかプロセサがハングするとかいう重大な影響を与えるクリティカルなバグと、それ以外のバグに分類し、更に、クリティカルなバグに関して、種々の条件の組み合わせだけで発生するもの(Concurrentと呼ぶ)とシーケンスに依存するもの(Complexと呼ぶ)に分類している。

    これら10種のプロセサのErrataに記載されたバグ数は18件から103件まで分布しており、プロセサにより内訳は異なるが、平均では69%のバグがクリティカルであるという。

    対象とした10種のプロセサのバグリストに記載されたバグの分析。右端の平均では、クリティカルなバグが半分強であることが分かる(出典:"Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware"より)

    これらのクリティカルなバグがプロセサのどのユニットに起因するかを分析したのが次の図で、大部分はCPUコアではなく、Memory(キャッシュを含む)からI/Oやシステムの部分であることを示している。

    各プロセサのクリティカルなバグの存在するユニットの比率。CPUコアである命令フェッチや実行部よりもメモリ、I/O、システムにバグが多いことが分かる(出典:"Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware"より)

    最近のプロセサでは、プロセサコアは前世代から引き継がれるロジックが多く、新規設計される部分が少ないのでバグが少ないが、キャッシュ以降に関しては、キャッシュの強化やマルチプロセササポートなどで新規に設計されるロジックが多いことがバグ発生を多くしていることが考えられる。また、マルチプロセサになると他のプロセサからのキャッシュコヒーレンシを維持する為の信号や割り込みなどが非同期に入ってくるので、場合の数が多くなり、検証の漏れがでやすい点も影響していると思われる。

    また、これらのクリティカルなバグに関して逃げ手(Workarounds)が有るかどうかに関しては、次の図のようになっている。

    バグの逃げ手の分類を示す図(出典:"Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware"より)

    ハードウェア(HW)と書かれた部分は、CPUチップの外からの信号に細工をして、バグが顕在化しないようにすることにより回避できるケース(但し、これをやるにはチップセットなどのロジックを変更する必要があり、一般ユーザでは出来ない)、Compilerは、バグが顕在化するようなコードをコンパイラが出さないようにする、OSに細工をしてバグが顕在化する状況を発生させないなどで逃げる手があるケースと、逃げ手のないバグの比率を示している。Itaniumは演算器の一部をマイクロコードで制御しており、これを修正することによりバグを逃げられるケースがあり、これがファームウェア(FW)と書かれた部分である。

    しかし、全体としては、何らかの逃げ手のあるのは60%以下であり、40%強のバグに対してはプロセサの作り直し(版数アップ)が必要になる。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン