やかんです。

4Aで取っている授業として

  • コンピュータアーキテクチャ
  • ディジタル回路(過去の録画)
  • ハードウェア設計論
  • VLSIアーキテクチャ

があります。ハードウェア部分の講義ということですが、僕は全くの初学者のためverilogの文法すら知りません。ということで、まずは何はともあれ超簡単なプロセッサを作ってみようと思います。

環境構築

授業で扱われているということもあって、verilogとgtkwaveのセットで頑張ろうと思います。VLSIアーキテクチャでは一歩進んでSystem VerilogとVivadoが推奨されていますが、これは僕のPCがAMRなので動かせないです。

小話

VivadoはLinuxかWIndowsでしか動きません。

https://japan.xilinx.com/products/design-tools/vivado.html

↑公式。

で、僕はM1とM2のmacしか手元にないので仮想マシンでLinux環境作って動作させようとしたんですけど、Linux向けのソフトウェアは基本的にx86_64アーキテクチャには対応しているものの(当然だが)armのアーキテクチャには対応してくれないものが多いみたいです。

仮想マシンでLinux環境作るっていう案がうまくいかなかったので次はエミュレーションを試したんですが、これがまあ遅くて遅くて。

てなわけで、Vivadoの使用は諦めました。

東大生やかんのブログ
やかん

頑張ったのに、、

いざ、作らんとす!

手順として今想定しているのは

  1. 命令セットを定義しよう
  2. コンポーネントを設計しよう
  3. verilogを実際に書こう
  4. gtkwaveを使ってシミュレーションしよう

な感じです。

1. 命令セットを定義しよう

すっごいシンプルなプロセッサを作るので、

  • ADD
  • SUB
  • LOAD
  • STORE

の4つの命令を定義します。ジャンプとかは一旦無視。

2. コンポーネントを設計しよう

これは、そもそもあまり理解してないですが、GPT-4の助けを借りながら以下の4つを作ることにします。

  • レジスタファイル:複数のレジスタからなる。
  • ALU
  • メモリインターフェース
  • 制御ユニット

3番以降はまた次の回に回します。

所感

day1で所感も何もないですが、命令セットを中心に現在授業では勉強しているので、その点をより立体的に理解できるのでは、という期待を抱いています。

東大生やかんのブログ
やかん

まあでも基礎的なこと理解してないので勉強します

ということで、day1を修了しようと思います。お疲れ様でした。最後までお読みいただき、ありがとうございます。