Cybozu Labs

ComProc プロジェクト

ComProc はコンパイラとプロセッサ(CPU、マイコン)を手作りするプロジェクトです。手作りの過程をまとめて、コンピュータの原理を学ぶ教材を作ることを目的としています。プロジェクトの公式ページはComProc プロジェクト | うーろぐです。

コンパイラと CPU を同時並行に作る

やはりコンパイラや CPU は「自作ネタ」として根強い人気があります。『低レイヤを知りたい人のためのCコンパイラ作成入門』(Rui Ueyama)」や『コンピュータシステムの理論と実装』(O'Reilly Japan)を読まれた方は多いと思います。第 13 期ラボユース生の櫻井さんは、ラボユース採択前も修了後も、NAND だけで 16 ビット CPU を作るというテーマで活動し続けています。

多くのプロジェクトや教材では、CPU だけ、あるいはコンパイラだけを作ります。両方を作るものもありますが、それらでも CPU とコンパイラを繋ぐ仕様(ISA)を決め、それに合致する CPU とコンパイラを別々に作るのが普通かと思います。この方法では CPU とコンパイラを互いに独立に開発できるというメリットがあり、現実世界で広く採用されています。

ComProc プロジェクトの大きな特徴は、コンパイラと CPU を同時並行で作っていくところにあります。ISA をがっちり決めず、少しずつコンパイラと CPU を育てます。最初は整数 1 つだけが書かれたソースコードを読む「コンパイラ」と、整数 1 つを受け取って処理(LED に表示するとか)する「CPU」を作ります。次は加算できるよう改造し、その次に乗算をサポートします。さらに変数や関数、制御構文などを順次サポートしていきます。そうしていくと、最初は「これはコンパイラ・CPU と呼んで良いのだろうか?」というレベルのおもちゃだったものが、気付いたらかなり本格的なものになっているのです。

対外露出

サイボウズ・ラボの外への主な露出をまとめます。

イベント出展

ComProc プロジェクトはいくつかのイベントに出展し、見学者の方と意見交換してきました。主なイベントを紹介します。

ワークショップ

「CPU+コンパイラ自作ワークショップ」と題し、2022 年から 2023 年にかけて 4 回開催しました。このワークショップでは、ComProc CPU Board の半田付けと FPGA による CPU 回路作成を体験していただきました。多くの方に参加いただき、ありがとうございました。詳しい紹介はこちら:CPU+コンパイラ自作ワークショップを開催しました - Cybozu Inside Out | サイボウズエンジニアのブログ

ワークショップを通して得た知見は ComProc CPU Board のレイアウトや製作手順などの改良に役立てられています。また、作成中の教材にも大きな影響を与えています。

セキュリティ・キャンプ

セキュリティ・キャンプ全国大会2023 と同 2024 にて、ComProc を題材とした講義を開講しました。セキュリティ・キャンプ全国大会は 5 日間ほど泊りこみで講義を受ける合宿イベントです。初日や最終日は全体的な活動で、中 3 日ほどがそれぞれ個別の講義の時間です。受講生は 3 日間のうち初日の半分ほどで ComProc CPU Board の半田付けを終わらせ、その後はコンパイラと CPU の開発を行います。

たったの 3 日間ですから、複雑なプログラムがコンパイルでき、誤動作なく CPU がきっちり処理するという理想的な目標までは到達しないわけですが、それでもいくつかの文法を備えた小さなコンパイラと、それが出力した機械語を実行する CPU は作れるということを体験できます。受講生が楽しそうに C 言語によるプログラミングと Verilog による回路記述の腕を上げていく様子を見ると、コンパイラと CPU を作るというテーマは幅広く技術に触れられる良いテーマだと思えてきます。

同人誌

個人活動として技術書典 14 にてコンパイラとCPU どっちも作ってみた ―ComProc世界の歩き方―を頒布しました。ComProc CPU Board Rev.4 の前世代からの改良点や、2023 年 4 月に行った ISA および CPU 回路の大規模な設計変更などを説明した同人誌です。