本文へジャンプ

動作をテストする

<画面> FPGAに回路のデータを送り込んでテストする

一通りできあがると、実際にFPGAに回路のデータを送り込んでテストします。

それぞれが一見うまく動いているようでも、不具合や仕様の解釈のずれは残っているもので、ここから完成までは思いのほか長くかかります。

根気のいる作業ですが、その代わり検証方法が身に付きます。PCとの通信はほんとうにうまくいっているか、機械語が適切に生成されているか、CPUは仕様通りかなど、すべての可能性を疑って問題を探ります。ハードウェアに不具合がある可能性もあり、出力される信号をオシロスコープで調べることもあります。発熱が原因ではないかと疑ってヒートシンクをFPGAの上に載せてみたらうまく動いた、なんていうこともありました。

チューニングはさらに続く

<画面> 課題プログラムは例年レイトレーシングによるCG。CG映画「TRON」に登場する車が表示される

苦労の末、作ったコンピュータがついに完動する日がきます。課題プログラムのCGも正確に描画されて、これでおしまい……ではなく、実はスピードコンテストに向けたここからの高速化が本番。CPU実験の最も楽しいところです。

過去の例では、パイプライン、レジスタフォワーディング、VLIW、スーパースカラ、キャッシュ、プリフェッチ、分岐予測、スクラッチパッドメモリなどが導入されました(興味のある人はぜひWebなどで調べてみてください)。課題プログラムを徹底的に解析してコンパイラを最適化したり、それに飽きたらず、生成したアセンブリプログラムをさらに手作業で最適化する人もいます。自分たちのコンピュータがどんどん速くなっていくのはとても気分のよいものです。

発表会

<グラフ> 課題プログラムの実行時間の推移。2006年には夢の20秒突破を果たした。

3月の発表会では、訪れた大勢の院生も見守るなか、各チームが半年かけて作った自分たちのアーキテクチャやコンパイラを解説し(自慢し)、無事に完成したチームは課題プログラムを実演してスピードを測定します。

CPU実験が始まって以来、高速化のノウハウはブログなどを通じて先輩から後輩へと伝えられ、先輩は後輩たちがさらに速いものを作るのを楽しみに待つという伝統もできました。

年々記録が更新されていく様子が見てとれるグラフには、先輩から継承されたCPU実験のノウハウが形となって表れています。数年前の「夢の20秒」というフレーズも、いまではすっかり現実のものになりました。

ページトップへ戻る