本文へジャンプ

ほんとうのコンピュータ自作 CPU実験 コンパイラ、ツールを作る

課題のプログラムはMLというプログラミング言語で書かれているので、このプログラムを自分たちのCPUで実行できるように、MLコンパイラが必要です。最近はMLで実装されたきれいでわかりやすいMLコンパイラがあるので、これを改造してまず動作させ、より効率のよい命令列を生成するよう最適化することが多いようです。

一方、好きなプログラミング言語でゼロから実装する人も、例年います。高速なプログラムを生成するために、最初はよく知られている最適化手法を調べて実装したりもしますが、やはり自分たちのCPUに合った最適化のためには、試行錯誤で独自の方法を考えることになります。

三角関数のような関数ライブラリも、コンパイラとともに用意します。一般的には、高級言語よりもアセンブリ言語のほうがCPUに合わせて無駄の少ないプログラムができるので、高速化のためにアセンブリ言語で書く人が多いのですが、コンパイラの最適化をがんばった結果、MLで記述したほうが速くなった人もいます。

プロジェクトのカギとなるツール開発

<画面> 拡張基板に追加の端子やLEDをハンダ付け。製作者の好みがでるところ。

 実験のあいだには、いろいろなツールを作成します。代表的なものはCPUのシミュレータで、コンパイラが生成した命令列の検証や、実行時間を予測してアーキテクチャを改良するために使います。

CPUが動作するようになるまでは、シミュレータがなければコンパイラを開発できません。そこで、まず簡単なものを作成し、必要に応じて改良していきます。命令の取捨選択のために各命令の呼び出し回数の統計をとったり、アーキテクチャの改良のためにパラメータを変えて実行する機能が加わることもあります。様々な条件でまとめてデータをとるために、性能の高い情報科学科のクラスタシステムを利用してシミュレーションすることもあります。

以上の作業と並行して拡張基板に追加端子やLEDをハンダ付けし、FPGAボードでのテストの準備も進みます。

ページトップへ戻る