マイクロプロセッサ実装RTA(Copilot活用部門)

この記事は EEIC Advent Calendar 2023の13日目の記事として書かれています。

はじめに

EEICの3Aセメスターの必修科目「電気電子情報実験・演習第二」(通称後期実験)では、各実験室が主催する種目から選択(+抽選)で3~6つ(各5日/10日)で選択することができ、 各研究室の研究テーマに近い内容や入門部分について学ぶことができます。

今回はわたしが選択したうちの一つ、EEICの後期実験「マイクロプロセッサの設計と実装」で、RISC-Vプロセッサ実装のRTAをした話です。 本当は別の実験で考えていた、FPGA上でユークリッド距離を高速に求める方法を探求した話を書こうと思っていたのですが、最近それに関する素晴らしい記事を発見してしまいわざわざ書く気がなくなってしまいました。これ面白いので読んでみてください。 dora.bk.tsukuba.ac.jp

本題。「マイクロプロセッサの設計と実装」では、10日間の実験で各自RISC-VマイクロプロセッサをVerilogFPGA上に実装し、CoreMarkというベンチマークを用いて性能を評価します。以下に資料が公開されています。 exp.mtl.t.u-tokyo.ac.jp

実験期間が10日間しかないため半数くらいの人は期間内ギリギリでようやくCoreMarkが動くかどうかで、動いたやったー!で実験が終わるのですが、せっかくなので色々な工夫を実装してバリバリ性能上げたいですよね。ということで、前提のCoreMark完動に到達するまでの時間でRTAをしました。

レギュレーション

  • 実験初日にタイマースタート、CoreMarkがFPGA上で完動したらタイマーストップ
  • 配布されているALU・Decoderのテスト、サンプルのヘッダファイルは最大限活用する。
  • GitHub Copilotによる補完を活用する。

結果

実験開始直後、仕様をざーっと読んで出来そうなところから実装を始めます。時間内にALUを実装し、用意されていたテストを通過。その夜Decoderの実装とテストが終了しました。 この部分ではかなりCopilotが猛威をふるいました。配布されていたヘッダーファイルに実装するべきISAを列挙してあったので、いくつかの実装を示せば残りを補完してくれます。

Copilotによる補完のイメージ
そのため、正しいことが書かれているかを一個ずつチェックして、修正していけば自然とALUが完成します。(ちなみにこの画像の補完は結構色々間違っていますね)

その後も、Copilotが正しく推論できるようになるところまで自分で記述し、Copilotが補完してくれるようになったら自分が思っている内容と一致しているか照合、という流れを繰り返し、実装を進めました。 結果、なんと実験2日目が終了した時点でプロセッサの各パーツと、それらをつなぐそれっぽいトップモジュールが完成しました。

でも全体テストをいくつか実行しても全く動かない!ここからしばらくデバッグ編に入ります。 結局CoreMarkがシミュレーション上で動くようになったのが4日目、実機で動いたのが5日目のはじめになってしまいました。大幅なロスタイム

バグの原因は主に自分で実装した部分で、設計を見直して各モジュールの組み換えを行うことで解決しました。なお最後に残っていたバグはこれでした。

命令デコードの際、即値を符号拡張し忘れていた
この部分Copilotがうまく書いてくれなかったから自分で書いたんですよね……。ISAをちゃんと読んでいないことが原因でした。全然Copilotのせいじゃなかった

まとめ

今回、Copilotを駆使してマイクロプロセッサを実装した結果、実験5日目にしてCoreMarkを完動することができました。ここ2年の中ではトップタイの速度だったようです(進捗報告リストから確認)

完走した感想ですが、Copilotとか以前にプロセッサ書き書きがかなり楽しかったです。分岐予測をちょっとずつアップデートしてちょっとずつ正解率を上げたり、少し接続を変えて周波数を上げるみたいな細かい最適化をしたりするのが楽しかったです。

Copilotはかなり強力で、ある程度流れを示してあげるだけで残りを補完してくれるので実装が爆速になります。 しかし補完の内容は結構間違っていて、またまっさらな状態を渡しても補完してくれないので、

  • 実装したいことが自分の中ではっきりしている
  • 補完した内容の正しさを判定できる
  • 埋め込んだバグを気づかなかった自分の責任だと思える

ときに限って有用なツールであると感じました。Pilotではなく、あくまでCopilotであるということを認識しておきましょう。

GitHub Copilotは学生なら無料で試すことができるので、まだ試していない人はぜひ。 education.github.com

その後

実験の時間が余ってしまったので、残りの時間はCoreMarkスコアアタックに費やしました。 パイプライン化・分岐予測器・乗除算器を実装し、当初から10倍性能を向上しました。 過去スーパースカラを実装した人が何人かいらして、その人達のスコアには届かなかったので、時間があるときにリベンジしようと思います。

最終日の発表資料を載せておくので、興味があれば御覧ください。 drive.google.com

情報系大学生が2万のPCで1年過ごしてみた

この記事は EEIC Advent Calendar 2023 の8日目の記事として書かれています。

現状、本郷周辺の美味しいごはん屋さん情報が中心のようです。ちなみにわたしは大学での昼食の半分をオリジン弁当のタルタル海苔弁当に依存しています。もう半分はSubway

 

早速ですが、みなさまはどのようなコンピュータをお使いですか。東大生は7割くらいMacBookを使っている印象ですが、MacBookってちょっと高すぎませんか。

この記事ではわたしのPC遍歴と、いまわたしが使っている激安PCについてご紹介しようと思います。

PC遍歴

わたしが初めて自分用PCを買ってもらったのは中学1年の春で、Lenovo ThinkPad E450でした。

www.lenovo.com

Core i5 第5世代 / メモリ8GB / HDD500GB / Windows 8.1だった気がします。SSD換装やメモリ増設をして、頑張って高校3年まで使い続けました。最後の方はSpaceキーが外れちゃって、変換無変換キーをSpaceに置換してました。

大学に入り、流石にPCを買い替えようと思ったのですが、当時まだまだオンライン授業時代。大学でPCを開くことはしばらくないだろうと思い、デスクトップPCを組むことにしました。Core i7 第11世代 / メモリ16GB / SSD500GB / GTX1650 / Windows 10で組んで、現在も特に弄ることなく使っています。

大学2年秋、進振りが終わりEEICに進学。授業がほとんど対面になりました。流石にノートPCが欲しくなり、購入を検討。しかし夏休みに遊びすぎてしまい口座はすっからかん、MacBookどころか満足するスペックのPCは全然手が届かない状態です。

ということで、情報系大学生の外用PCとして十分なスペックのPCをなるべく安く手に入れる戦いが始まりました。

激安ノートPC探し

目標

今回ほしいPCの条件は次のとおりです

  • 安い (出して3万)
  • 遅くない (コーディング・ブラウジングならサクサク。動画は見れなくても良い)
  • 重くない (片手で持つのがしんどくなければOK)

また、自宅を探すと

  • DDR3L メモリ 8GB * 2
  • SATA SSD 256GB

を発見しました。さっきのThinkPadの中に。ということでメモリとSSDは換装できるタイプなら古くても大丈夫そう。

メルカリ探し

3万を切るとなると、2015年くらいに発売されたものが狙い目です。そのなかでメモリ増設が可能なものとして、Let's NoteのSXシリーズを探すことにしました。

メルカリの海をしばらく探して、これを買いました。

メルカリで見つけたLet's Note CF-SX2(2012年モデル)

スペック

  • Core i5 3340M 2.70GHz
  • メモリ 4GB
  • SSD 120GB(新品)
  • 1.33kg

CPU性能はちょっと不安ですが、ほかはぱっと見問題なさそうですね。バッテリーに関する記述が怪しげでしたが、この辺のLet's Noteはバッテリーリコールの関係で新品がそれなりに手に入りやすいので気にしないことにしました。こだわるとキリがないです。

今調べてみると、これより良いスペックが1万切るくらいで出品されてますね。狙い目です。

届いた

頼んだ商品が家に届きました。キーボード、黄ばみすぎじゃね?ファンからめっちゃタバコのニオイする……。

メモリ・SSDの換装をします。……いや、SSDは新品載ってるらしいし一旦いいか。

Let's Note CF-SX2のメモリは、一つが裏面すぐのところ、もう一つは結構中にあります。……とりあえず裏に8GB1枚さしとくか。困ったら中のも変えましょう。

ということで、メモリ12GB、SSD120GBにして使うことにしました。

Windowsはうごく?

ちょっと厳しい気がするので、もう少し軽そうなOSをいれることにします。Arch Linuxとタイル型ウィンドウマネージャを使ってみたかったので、比較的人気なディストリビューションであるEndeavourOSとi3-wmにしてみました。

1年間使った結果

\13,000で買い、数千円相当のメモリを差し、数千円でバッテリーを交換した総額2万のノートPCを昨年冬から1年ほど使いました。

基本家の外でしか使わなかったので、TwitterしたりSlackみたり、授業のメモをhackmdで取ったり、授業や実験のプログラムを書いたり実行したりという日常的なタスクが多めでした。

この範囲でスペック不足を感じることは殆どありませんでした。ソフトの立ち上げはそれなりに高速だし、ChromeVSCodeとSlackを同時に動かすくらいは問題なくできる感じです。ChromeYouTubeを開いてるとちょっと厳しいかなくらい。Zoomよくやる人も厳しいかも。

ファンがたばこ臭い問題も、数週間つかっていたら次第にきれいな空気が出てくるようになりました。Chromeを起動しただけでたくさん排熱してくれるので、今の時期は良い暖房器具です。キーボードは黄ばんだまま。一応軽く掃除してから使いました。

あと今回タイル型ウィンドウマネージャデビューしたんですが、かなり便利です。勝手にイイカンジにウィンドウを配列してくれて、入れ替えや大きさの変更がキーボードだけで完結します。解像度があまり高くないノートPCとの相性が良いと思います。

まとめ

ちょっと外で作業する分には2万円のPCで十分でした。みなさんも安ノートPCに乗り換えませんか?余ったMacBookは僕に譲ってくださいね