⚡ 4科目横断マップ

コンピュータは、物理からソフトウェアまで、同じシステムを違う抽象度で見ているだけ。

このマップは4科目を貫く 10のテーマ × 4種類のMermaid図 で、 「いつ」「どの科目で」「何と何が」「どう繋がるか」まで可視化する。


🌐 全体俯瞰:5階層のレイヤーマップ

物理 → アナログ回路 → デジタル回路 → アーキテクチャ → ソフトウェア の5層を、4科目が分担して積み上げてる。

実装の隠蔽

命令セット

ゲート実装

回路素子

物理制約

トランジスタでNAND

D-FFでレジスタ

抽象データ型

🖥️ Layer 5: ソフトウェア
プログラミング通論

⚙️ Layer 4: アーキテクチャ
計算機通論

🔲 Layer 3: デジタル回路
論理設計学

⚡ Layer 2: アナログ回路
電気電子回路

🔬 Layer 1: 物理
(半導体の物性)

""

📅 授業時系列コミットグラフ

4月から6月まで、各科目が 「どの日に何を積み上げたか」 をgitのコミット履歴風に見せる。 ブランチ = 科目、コミット = 各回の授業。

maindenki4/9 論理設計学 ブール代数4/13 計算機通論 2進数と2の補数4/14 プログラミング通論 C言語基礎4/20 計算機通論 ノイマン型4/21 プログラミング通論 ポインタ4/23 論理設計学 排他的論理和4/27 プログラミング通論 キューと再帰5/11 計算機通論 RISCとCISC5/12 プログラミング通論 関数とスコープ5/18 計算機通論 MIPSレジスタ5/26 プログラミング通論 リスト構造5/28 論理設計学 D-FFとJ-K FF6/1 計算機通論 配列操作6/8 計算機通論 スタックと再帰6/9 プログラミング通論 スタック実装6/11 論理設計学 レジスタとカウンタ6/16 プログラミング通論 抽象データ型6/22 計算機通論 パイプライン6/25 論理設計学 MooreとMealy6/29 計算機通論 データハザード6/23 プログラミング通論 リスト応用5/18 RCとRL交流回路5/25 RLC共振回路6/8 伝達関数とフィルタ6/15 RC過渡現象と時定数6/22 ダイオードと整流回路6/29 トランジスタと増幅6月末 全層が完成""

読み方のポイント:


🔗 繋がり①:トランジスタ → NAND → ラッチ → FF → レジスタ → CPU

4科目を貫く最大の進化の流れ。論理設計学は4月から6月まで2ヶ月かけてこの1本を積み上げてる。

物理 → 論理ゲート → 記憶素子 → レジスタ → CPU、という一本のチェーン:

スイッチング

NOR/NAND=万能

エッジトリガ化

n個並列

32本

ステージ間

⚡トランジスタ
(MOSFET)

NANDゲート
(CMOS 4個)

SRラッチ
(NAND 2個)

D-FF
(マスタースレーブ)

レジスタ
(D-FF × n)

レジスタファイル
(CPU)

パイプライン
(CPU全体)

""

論理設計学の授業時系列:


🔗 繋がり②:時定数 → クロック周波数の物理的限界

講義の順序が偶然シンクロしてて一番感動する繋がり。

電気電子回路で「コンデンサの電圧は急に変わらない(連続)」→ 時定数τ = CR → トランジスタのスイッチング時間 → クリティカルパス → 最大クロック周波数が決まる。

物理的に同じ

チャネル形成時間

段数ぶん累積

これが上限

キャパシタは
じわじわ放電

RC回路の過渡現象
τ = CR

トランジスタの
スイッチング時間

NANDゲートの
伝搬遅延

クリティカルパス遅延
(最長経路)

最大クロック周波数
f_max = 1 / t_path

DRAMリフレッシュ周期
= キャパシタの放電時定数

""

ノートの証拠:


🔗 繋がり③:全加算器 → ALU → MIPSのadd/sub → 最適化

論理設計学の 全加算器 が、計算機通論の 2の補数ALU に直結し、プログラミング通論の 最適化 にまで繋がる。

プログラミング通論 5/19

計算機通論 4/13-

論理設計学 4/23-4/30

2段重ね

32bit並べる

減算も同じ回路で

高速化の鍵

機械語レベル

再帰関数のコスト

半加算器
S=A⊕B, Co=AB

全加算器
Sum=X⊕Y⊕Cin
Cout=YCin+XCin+XY

桁上げ先見加算器
キャリー伝播を並列化

2の補数
A-B = A+~B+1

MIPS add/sub命令
ALUは1つの加算器

mult命令
Hi/Loレジスタ

最適化
定数畳み込み

末尾再帰除去

""

「2の補数で減算できる」の論理的な根拠:


🔗 繋がり④:ドントケア → Self-Starting → 分岐予測ミスからの回復

論理設計学の「don't-care状態からの復帰」が、CPU設計の根底に流れる思想と同じ。

don't-care状態を
明示的に指定

予測が外れたら
状態を破棄

論理設計学 4/30
カルノー図のdon't-care
都合よく0にも1にも

論理設計学 6/11
Self-Starting
電源投入時の暴走防止

計算機通論 6/22
分岐予測ミス
パイプライン・フラッシュ

""

Moore型とMealy型の対比(順序回路の出力決定方式):

入力

クロック↑

クロック↓

S0

S1

Moore型: 出力は状態のみ
→ クロック後に確定、1クロック遅れ
→ 安定、投機実行に向く

""
比較項目 Moore型 Mealy型
出力の決め方 状態のみ 状態 + 入力
出力のタイミング クロックエッジ後 入力変化と同時
パイプライン 投機実行しやすい 入力で即変化(偽出力リスク)
用途例 カウンタの状態表示 組み合わせ的な制御

🔗 繋がり⑤:スタックは授業を超えて同じ(MIPSの$sp ↔ Cのstack)

計算機通論で生のスタック操作を学んだ直後に、プログラミング通論で抽象データ型としてのスタックが出てくる。 同じ動作を違う抽象度で見てるだけ。

概念 計算機通論(MIPS) プログラミング通論(C言語)
スタックの構造 $spが指すメモリ領域 head→nextの連結リスト
push addi $sp,-4; sw insert(head, x)
pop lw; addi $sp,+4 delete(head)
LIFO 再帰呼出のフレーム積み重ね 逆向き出力・スタックソート
エラー処理 underflow/overflow チェック
スタック領域fact(n)main()スタック領域fact(n)main()関数が呼ばれるたびにフレームが積まれるlw $a0 → 2 復元mul 2*1 = 2lw $a0 → 3 復元mul 3*2 = 6jal fact(3)$sp -= 8sw $ra, 4($sp)sw $a0=3, 0($sp)n != 1 → 再帰呼出jal fact(2)$sp -= 8sw $ra, 4($sp)sw $a0=2, 0($sp)n != 1 → 再帰呼出jal fact(1)n == 1 → return 1""

🔗 繋がり⑥:メモリ階層とデータ構造の選択

「配列 vs 連結リスト」の本当の違いは計算量だけじゃなく、キャッシュの効き方にある。

ストレージ(SSD/HDD)

メインメモリ(DRAM)

キャッシュ(SRAM)

CPU

レジスタ
数十個
数クロック

L1キャッシュ
数十KB
数ns

L2キャッシュ
数MB
十数ns

L3キャッシュ
数十MB
数十ns

8GB〜64GB
50〜100ns

SSD: 数十μs
HDD: 5ms

配列
局所性◎
キャッシュに乗りやすい

連結リスト
局所性×
キャッシュミス多発

""

メモリアクセスパターンと局所性の関係:

Error parsing Mermaid diagram!

Parse error on line 18:
...      連結リスト: 挿入O(1)だが空間局所性×
----------------------^
Expecting 'SPACELINE', 'NL', 'EOF', got 'NODE_ID'

🔗 繋がり⑦:J-K FFのトグル → T-FF → カウンタ → プログラムカウンタ

カウンタは、CPUの「プログラムカウンタ(PC)」そのもの。

J,Kを一本化

T₁=1, T₂=A, T₃=BA

+4ずつインクリメント

J-K FF
5/28
J=K=1でトグル

T-FF
6/11
T=1でビット反転

バイナリカウンタ
6/18
T-FFをn段重ね

プログラムカウンタ(PC)
5/25計算機通論
次命令 = PC + 4

""

3bitバイナリカウンタの遷移(状態遷移図):

主系列に戻る

フォールトトレラント復帰

S000

S001

S010

S011

S100

S101

S110

S111

111→010への遷移を明示的に
指定して自己復帰 Self-Starting
を実現する

""

🔗 繋がり⑧:共振回路 → クロック発振器(水晶振動子)

CPUのクロック信号の元は、電気電子回路のLC共振の応用。

鋭い共振

Q値高い=精度高い

圧電効果で
機械→電気変換

クロックエッジで全FF一斉更新

LC共振回路
ω₀ = 1/√LC

Q値
= ω₀L/R
(直列共振)

水晶振動子
Q値: 10⁴〜10⁶

CPUクロック信号
3.5GHz等

全FFの同期動作

""

🔗 繋がり⑨:直列/並列パターンの抽象対応

異なる科目で同じ「直列/並列」のトレードオフが繰り返し現れる。

Layer 5: プログラミング通論

Layer 4: 計算機通論

Layer 3: 論理設計学

Layer 2: 電気電子回路

構造的対応

構造的対応

設計思想の類似

設計思想の類似

実装の選択

実装の選択

RC直列回路
電流が共通、位相が遅れる

RC並列回路
電圧が共通、位相が進む

直列のANDゲート
A→B→C、順次通過

並列のORゲート
A↘B↗C、いずれか

RISC(レジスタ-レジスタ)
load/store経由、直列的

CISC(レジスタ-メモリ)
メモリ直接操作、並列的

配列: 連続領域
シーケンシャルアクセス◎

連結リスト: ノード分散
ランダム挿入◎

""

🔗 繋がり⑩:抽象データ型(API)= 命令セットアーキテクチャ(ISA)の抽象

プログラミング通論で学ぶ「仕様と実装の分離」は、計算機通論で学ぶ「ISA(命令セットアーキテクチャ)」と全く同じ概念。

インターフェース分離の思プログラミング通論計算機通論論理設計学抽象データ型例:リストISA例:メモリゲートレベル仕様と実装の分離実装を隠蔽APIで操作配列実装連結リスト実装双方向リスト実装どれもinsert/deleteで操作可能命令セットの仕様ハードウェア実装を隠蔽命令で操作SRAMキャッシュDRAMメインメモリSSDストレージどれもload/store命令で操作可能NAND/NORの組合せFFの組合せ機能の抽象化""

具体例で対比:

概念 プログラミング通論 計算機通論 論理設計学
公開する操作 API(insert, delete) 命令(lw, sw, add) 真理値表
隠蔽する実装 配列 or 連結リスト SRAM or DRAM or SSD NAND or NOR or トランジスタ
透過性 ユーザは実装を気にしない プログラマは記憶媒体を気にしない 設計者はゲート素子を気にしない

抽象データ型・API設計 のメモ:

ユーザの利点:リストの実装方法によらず同じコードが使える 実装側の利点:ユーザーからの呼出しだけ維持すればさらに効率的な実装をできる

これは RISCの設計思想そのもの :「ハードウェアが命令セットの仕様さえ守れば、回路の最適化は好きにやっていい」


🧠 概念マップ:全テーマの総まとめ

4科目の横断テーマ抽象度の階層時間的発展物理的制約計算の階層情報の表現性能の階層同期と状態Layer1 物理Layer2 アナログ回路Layer3 デジタル回路Layer4 アーキテクチャLayer5 ソフトウェア4月 基礎・基数・文法5月 構造体・ゲート・回路6月 統合・最適化時定数τスイッチング時間伝搬遅延クロック周波数リフレッシュ周期トランジスタゲートラッチ・FFレジスタ・ALUCPUOSアプリケーション基数補数浮動小数点データ構造抽象データ型命令レベルメモリレベルプログラムレベル順序回路クロックパイプラインレジスタ状態機械パイプラインハザードフォワーディング局所性キャッシュ階層構造計算量最適化並列化""

⏰ 授業進行のタイムライン

4月上旬論理設計学が先陣(ブール代数・ゲート)4月中旬計算機通論と並走(2進数・2の補数・C言語入門)4月下旬ポインタと真理値表(アドレッシング・ポインタ)5月上旬計算機通論が加速(RISC/CISC・MIPS命令)5月中旬電気電子回路が合流(RC/RL・交流回路・共振)5月下旬順序回路の核心(D-FF・J-KFF・リスト構造)6月上旬メモリとスタック(配列・サブルーチン・スタック)6月中旬パイプラインと抽象化(ハザード・抽象データ型)6月下旬全層合流(トランジスタ・パイプライン詳細・メモリ階層)4月から6月までの4科目の積み上げ""

📚 科目別ノート詳細インデックス

⚡ 電気電子回路

日付 内容 繋がる科目・トピック
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 リスト応用・逆転・整列・バックトラック法 計算機通論のメモリアクセスパターン

📐 このマップの使い方

  1. 授業の復習時に、このマップを開いて「今やってることは他の科目のどの部分と繋がってるか」を確認する
  2. 科目間で用語が違っても同じ概念だということに気付く
  3. 授業の「なぜこれを学ぶのか」に詰まったとき、上下のレイヤーを見ると理由が分かることが多い

「電気電子回路の過渡現象、何の役に立つの…」→ 「DRAMのリフレッシュの理由」「なぜD-FFにセットアップタイムが必要かの物理的根拠」「最大クロック周波数の限界」が全部ここから来てる。


🎯 1枚の全体サマリー図

【SW層】プログラミング通論

【アーキ層】計算機通論

【ゲート層】論理設計学

【物理層】電気電子回路

2個でNAND

τ=CR
スイッチング時間

水晶発振子

組合せ

n段重ね

レジスタファイル

状態機械で

仕様

局所性で性能差

ハードウェア
コスト

投機実行

性能要求

局所性で選択

仕様

スタック使用

トランジスタ
スイッチング

RC時定数τ

LC共振・Q値

NANDゲート

D-FF
マスタースレーブ

レジスタ・カウンタ

Moore/Mealy FSM

ALU・パイプライン

キャッシュ・局所性

ISA(MIPS命令)

制御ハザード
投機実行

抽象データ型・API

データ構造

計算量・最適化

再帰・末尾呼出除去

""

矢印の意味: