本講義の基本的な情報
- 講義日:毎週木曜日 4 限
- 担当 :M1,M2のみんな
教科書と参考書
-
教科書:プログラマーのためのCPU入門
目標
CPUがどう動いているかのイメージを掴む。プログラマーとして知っておくべきCPUの構造を理解する。
輪講形式で教科書を読む。 各人が割り当てられた担当部分の講義資料を作成し、プレゼンを行う。 プレゼン中は随時質疑応答を行う。 プログラムがある場合は、それを動かす。
本書を読むにあたって必要な知識(序章より)
担当分け
担当箇所 | ページ数 | 担当者 | 日程 |
---|---|---|---|
第1章 CPUは如何にしてソフトウェアを高速に実行するのか | |||
第2章 命令の密度を上げるさまざまな工夫 | |||
第3章 データ依存関係 | |||
第4章 分岐命令 | |||
第5章 キャッシュメモリ | |||
第6章 仮想記憶 | |||
第7章 I/O | |||
第8章 システムコール、例外、割り込み | |||
第9章 マルチプロセッサ | |||
第10章 キャッシュコヒーレンス制御 | |||
第11章 メモリ順序付け | |||
第12章 不可分操作 | |||
第13章 高速なソフトウェアを書く際には何に注目すべきか |
輪講資料で注意すべきこと
- 自分が大切だと思った要点をまとめること
- 教科書の全文をコピー&ペーストする必要はない。たとえば、教科書に載っている事例は、輪講資料に載せる必要は必ずしもない
- 分かりやすいように、要点を列挙したり、教科書の文章をまとめ直したりすること
- 5行以上の文章は、箇条書きなどに構成しなおす(NEW!)
- たとえば、以下のような形です
- 図を描いて説明する。ノートに手書きしたものを写真に撮る形でも OK です
- 文章から重要な部分を抜き出して、箇条書きにする
- 重要な部分を太字にする
- 時間内に説明できることを心がけること。たとえば、教科書に載っている事例を、輪講中に説明する必要は必ずしもない
輪講資料の作り方
資料を作成するときは、GitLab と Markdown を使います。
具体的には、ゼミの資料ページを clone して、自分の担当する章の branch を作って、docs ディレクトリの下の担当の章のディレクトリで作業をして、push してマージリクエストをする流れになります。
資料自体は Markdown で書くこと。
GitLabプロジェクトへのメンバー追加とclone
みなさんを、輪講の GitLab プロジェクトにみなさんを Developer として登録します。
ですので、GitLab.com のアカウントを私に教えてください。もし作っていない人は作ってね。
また、以下のコマンドでリポジトリを clone してください。
1 |
|
作業開始
リポジトリの docs ディレクトリの内部で作業をします。
また、自分の作業用ブランチを必ず切ってください。
main
ブランチは保護されているので、直接コミットができません。
たとえば、第 2 章を担当する人は、chapter2
ブランチを作成した後、docs/chapter2/{chapter2.md,figures/}
以下で作業をしてください。
資料作成
clone できたら資料を作ります。 今回は、Markdown から Web ページを作成する際には、mkdocs というものを使っています。 Linux 環境で mkdocs をインストールして、やってみてください。1
make install
するとmkdocsのインストールができます。make serve
してhttp://127.0.0.1:8080
にアクセスするとmkdocsがリアルタイムでレンダリングされます。- 数式を囲むときは、
$
ではなくて、$`と`$で囲むので注意してください。 {: style="height:150px"}
こんな風に書くと画像の表示サイズが調整できます。- 一部使えない拡張があるかもしれません。
- mkdocs の環境構築がつらい、という人は GitLab.com の Web インタフェースで書くこともできます。
資料作成をマージ
資料が完成したら push して、マージリクエストのページから自分のブランチをmain
ブランチにマージするリクエストを作成してください。
また、みやじまに Slack などでマージしてほしい旨を連絡してください。
少しするとページが更新されるますので、できあがりを確認してください。
なお、コミットすると自動的に CI が走る設定ですが、自分の GitLab アカウントでクレカの登録が必要です。 これが原因で CI が失敗になりますが、失敗でもかまいません。 課金はされないので、登録できる人はしてください。 CI の結果は、プロジェクトページのCIの部分で見られます。
-
https://zenn.dev/mebiusbox/articles/81d977a72cee01 ↩