コンピュータは、物理からソフトウェアまで、同じシステムを違う抽象度で見ているだけ。
このマップは4科目を貫く 10のテーマ × 4種類のMermaid図 で、 「いつ」「どの科目で」「何と何が」「どう繋がるか」まで可視化する。
物理 → アナログ回路 → デジタル回路 → アーキテクチャ → ソフトウェア の5層を、4科目が分担して積み上げてる。
4月から6月まで、各科目が 「どの日に何を積み上げたか」 をgitのコミット履歴風に見せる。 ブランチ = 科目、コミット = 各回の授業。
読み方のポイント:
main ブランチ = 論理設計学・計算機通論・プログラミング通論(4月から始まる)denki ブランチ = 電気電子回路(5/18から合流、ブランチ名はASCIIのみ)4科目を貫く最大の進化の流れ。論理設計学は4月から6月まで2ヶ月かけてこの1本を積み上げてる。
物理 → 論理ゲート → 記憶素子 → レジスタ → CPU、という一本のチェーン:
論理設計学の授業時系列:
講義の順序が偶然シンクロしてて一番感動する繋がり。
電気電子回路で「コンデンサの電圧は急に変わらない(連続)」→ 時定数τ = CR → トランジスタのスイッチング時間 → クリティカルパス → 最大クロック周波数が決まる。
ノートの証拠:
論理設計学の 全加算器 が、計算機通論の 2の補数 と ALU に直結し、プログラミング通論の 最適化 にまで繋がる。
「2の補数で減算できる」の論理的な根拠:
論理設計学の「don't-care状態からの復帰」が、CPU設計の根底に流れる思想と同じ。
Moore型とMealy型の対比(順序回路の出力決定方式):
| 比較項目 | Moore型 | Mealy型 |
|---|---|---|
| 出力の決め方 | 状態のみ | 状態 + 入力 |
| 出力のタイミング | クロックエッジ後 | 入力変化と同時 |
| パイプライン | 投機実行しやすい | 入力で即変化(偽出力リスク) |
| 用途例 | カウンタの状態表示 | 組み合わせ的な制御 |
計算機通論で生のスタック操作を学んだ直後に、プログラミング通論で抽象データ型としてのスタックが出てくる。 同じ動作を違う抽象度で見てるだけ。
| 概念 | 計算機通論(MIPS) | プログラミング通論(C言語) |
|---|---|---|
| スタックの構造 | $spが指すメモリ領域 |
head→nextの連結リスト |
| push | addi $sp,-4; sw |
insert(head, x) |
| pop | lw; addi $sp,+4 |
delete(head) |
| LIFO | 再帰呼出のフレーム積み重ね | 逆向き出力・スタックソート |
| エラー処理 | — | underflow/overflow チェック |
「配列 vs 連結リスト」の本当の違いは計算量だけじゃなく、キャッシュの効き方にある。
メモリアクセスパターンと局所性の関係:
Error parsing Mermaid diagram!
Parse error on line 18:
... 連結リスト: 挿入O(1)だが空間局所性×
----------------------^
Expecting 'SPACELINE', 'NL', 'EOF', got 'NODE_ID'
カウンタは、CPUの「プログラムカウンタ(PC)」そのもの。
3bitバイナリカウンタの遷移(状態遷移図):
CPUのクロック信号の元は、電気電子回路のLC共振の応用。
異なる科目で同じ「直列/並列」のトレードオフが繰り返し現れる。
プログラミング通論で学ぶ「仕様と実装の分離」は、計算機通論で学ぶ「ISA(命令セットアーキテクチャ)」と全く同じ概念。
具体例で対比:
| 概念 | プログラミング通論 | 計算機通論 | 論理設計学 |
|---|---|---|---|
| 公開する操作 | API(insert, delete) | 命令(lw, sw, add) | 真理値表 |
| 隠蔽する実装 | 配列 or 連結リスト | SRAM or DRAM or SSD | NAND or NOR or トランジスタ |
| 透過性 | ユーザは実装を気にしない | プログラマは記憶媒体を気にしない | 設計者はゲート素子を気にしない |
抽象データ型・API設計 のメモ:
ユーザの利点:リストの実装方法によらず同じコードが使える 実装側の利点:ユーザーからの呼出しだけ維持すればさらに効率的な実装をできる
これは RISCの設計思想そのもの :「ハードウェアが命令セットの仕様さえ守れば、回路の最適化は好きにやっていい」
| 日付 | 内容 | 繋がる科目・トピック |
|---|---|---|
| 5/18 | ⚡大学/授業_2年前期/1_1電気電子回路/20260518_1 RC/RL交流回路・直列並列の位相・アドミタンス | → 論理設計学のNAND/NOR変換と「直列/並列」のパターン |
| 5/25 | ⚡大学/授業_2年前期/1_1電気電子回路/20260525_1 RLC共振回路・Q値・並列共振・ラジオ受信機 | → CPUクロック(水晶発振子)の原理 |
| 6/1 | ⚡大学/授業_2年前期/1_1電気電子回路/20260601_1 交流電力・実効値・力率・皮相電力・無効電力 | — |
| 6/8 | ⚡大学/授業_2年前期/1_1電気電子回路/20260608_1 伝達関数・LPF/HPF・カットオフ周波数・インピーダンス法 | → τ = CR → トランジスタのスイッチング速度 |
| 6/15 | ⚡大学/授業_2年前期/1_1電気電子回路/20260615_1 RC/RL過渡現象・RLC2次系・3つの減衰モード | → τ = 時定数 → セットアップ/ホールドタイム |
| 6/22 | ⚡大学/授業_2年前期/1_1電気電子回路/20260622_1 ダイオード・整流回路・負荷線・ツェナーダイオード | → 論理ゲートの入力保護 |
| 6/29 | ⚡大学/授業_2年前期/1_1電気電子回路/20260629_1 トランジスタのスイッチング・増幅・小信号等価回路 | → 論理設計学のNANDゲートの物理的実装 |
| 日付 | 内容 | 繋がる科目・トピック |
|---|---|---|
| 4/9 | ⚡大学/授業_2年前期/4_4論理設計学/20260409_4 ブール代数・NOT/AND/OR・スイッチ対応 | → 電気電子回路のトランジスタスイッチ |
| 4/16 | ⚡大学/授業_2年前期/4_4論理設計学/20260416_4 排他的論理和・コンセンサス・最小/最大項展開 | → 全加算器のS=A⊕B |
| 4/23 | ⚡大学/授業_2年前期/4_4論理設計学/20260423_4 半加算器・全加算器・全減算機・カルノー図 | → 計算機通論の2の補数/ALU |
| 4/30 | ⚡大学/授業_2年前期/4_4論理設計学/20260430_4 桁上げ先見加算器・不完全定義関数・ドントケア | → 計算機通論の2の補数/ALU |
| 5/7 | ⚡大学/授業_2年前期/4_4論理設計学/20260507_4 NAND/NORのみで全論理式・多段回路 | → 電気電子回路のトランジスタでNAND |
| 5/14 | ⚡大学/授業_2年前期/4_4論理設計学/20260514_4 — | — |
| 5/21 | ⚡大学/授業_2年前期/4_4論理設計学/20260521_4 S-Rラッチ・NANDラッチ・ゲート付きラッチ・スリーステート・エンコーダ/デコーダ | → D-FFの構成要素 |
| 5/28 | ⚡大学/授業_2年前期/4_4論理設計学/20260528_4 D-FF・マスタースレーブ・J-K FF | → 計算機通論パイプラインレジスタの構成要素 |
| 6/11 | ⚡大学/授業_2年前期/4_4論理設計学/20260611_4 レジスタ・シフトレジスタ・カウンタ・LFSR | → 計算機通論のレジスタファイル |
| 6/18 | ⚡大学/授業_2年前期/4_4論理設計学/20260618_4 カウンタ設計(T/D/SR/JK-FF)・よく使うカウンタ | — |
| 6/25 | ⚡大学/授業_2年前期/4_4論理設計学/20260625_4 Moore型/Mealy型・パリティチェッカー・Ch12解析 | → 計算機通論の制御回路設計 |
| 日付 | 内容 | 繋がる科目・トピック |
|---|---|---|
| 4/13 | ⚡大学/授業_2年前期/1_2計算機通論/20260413_2 基数表記・2の補数・浮動小数点IEEE754・IEEE754特殊値 | → 論理設計学の全加算器で加減算 |
| 4/20 | ⚡大学/授業_2年前期/1_2計算機通論/20260420_2 ノイマン型・機械語・マルチサイクル実行 | → プログラミング通論の計算量 |
| 4/27 | ⚡大学/授業_2年前期/1_2計算機通論/20260427_2 — | — |
| 5/11 | ⚡大学/授業_2年前期/1_2計算機通論/20260511_2 命令セット分類(RISC/CISC)・アドレス指定・コンパイラ/インタプリタ | → 電気電子回路の直列/並列パターン |
| 5/18 | ⚡大学/授業_2年前期/1_2計算機通論/20260518_2 MIPSレジスタ・呼出規約・アラインメント・エンディアン | → 論理設計学のレジスタ設計 |
| 5/25 | ⚡大学/授業_2年前期/1_2計算機通論/20260525_2 MIPS命令形式(R/I/J)・条件分岐・乗除算・SPIM | — |
| 6/1 | ⚡大学/授業_2年前期/1_2計算機通論/20260601_2 MIPS配列操作・サブルーチン | → プログラミング通論の配列処理 |
| 6/8 | ⚡大学/授業_2年前期/1_2計算機通論/20260608_2 スタック操作・フレーム・再帰呼出 | → プログラミング通論のstack実装 |
| 6/15 | ⚡大学/授業_2年前期/1_2計算機通論/20260615_2 パイプライン・スループットとレイテンシ | → 論理設計学のD-FF(パイプラインレジスタ) |
| 6/22 | ⚡大学/授業_2年前期/1_2計算機通論/20260622_2 パイプライン詳細・ハザード・フォワーディング | → 論理設計学のD-FFのエッジトリガ動作 |
| 6/29 | ⚡大学/授業_2年前期/1_2計算機通論/20260629_2 データハザード・SRAM/DRAM・局所性 | → 電気電子回路の過渡現象(DRAMリフレッシュ) |
| 日付 | 内容 | 繋がる科目・トピック |
|---|---|---|
| 4/14 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260414_3 C言語基礎・if/switch・スコープ | — |
| 4/21 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260421_3 ポインタ・配列・malloc・参照渡し | → 計算機通論のメモリとアドレス |
| 4/27 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260427_3 キュー実装(ring buffer)・再帰・計算量O(n) | → 計算機通論の再帰呼出 |
| 5/12 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260512_3 — | — |
| 5/19 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260519_3 プログラム実行性能・キャッシュ・再帰除去 | → 計算機通論のパイプライン・キャッシュ |
| 5/26 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260526_3 ポインタ・リスト構造の実装 | → 計算機通論のメモリとアドレス |
| 6/9 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260609_3 スタックとキュー(連結リスト実装)・リスト応用 | → 計算機通論の$sp操作と同じLIFO |
| 6/16 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260616_3 抽象データ型・API設計 | → 計算機通論のISA(仕様と実装の分離) |
| 6/23 | ⚡大学/授業_2年前期/2_3プログラミング通論/20260623_3 リスト応用・逆転・整列・バックトラック法 | → 計算機通論のメモリアクセスパターン |
「電気電子回路の過渡現象、何の役に立つの…」→ 「DRAMのリフレッシュの理由」「なぜD-FFにセットアップタイムが必要かの物理的根拠」「最大クロック周波数の限界」が全部ここから来てる。
矢印の意味: