Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NAND から全加算器まで (CPU の仕組み超入門)
Search
Hiroki Kamiyoshikawa
May 05, 2025
Programming
0
210
NAND から全加算器まで (CPU の仕組み超入門)
NAND から全加算器を作成するまでの解説。
(2024/11/12 社内勉強会用スライド)
Hiroki Kamiyoshikawa
May 05, 2025
Tweet
Share
More Decks by Hiroki Kamiyoshikawa
See All by Hiroki Kamiyoshikawa
コンパイラを作ろう
ikorin24
0
12
C# async/await 勉強会
ikorin24
0
16
Other Decks in Programming
See All in Programming
Claude Codeログ基盤の構築
giginet
PRO
7
3.2k
Claude Code Skill入門
mayahoney
0
360
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
550
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
230
AI 開発合宿を通して得た学び
niftycorp
PRO
0
110
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
220
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
510
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
130
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
120
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1k
Codex の「自走力」を高める
yorifuji
0
1.2k
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
420
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
A Modern Web Designer's Workflow
chriscoyier
698
190k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Making Projects Easy
brettharned
120
6.6k
ラッコキーワード サービス紹介資料
rakko
1
2.6M
Building Applications with DynamoDB
mza
96
7k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Ruling the World: When Life Gets Gamed
codingconduct
0
170
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Paper Plane
katiecoart
PRO
0
48k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
220
Transcript
NAND から全加算器まで ~CPU の仕組み超入門~ 株式会社ホロラボ 上吉川大貴 2024/11/12
コンピュータのパーツ コンピューター = 計算する機械 ディスプレイ CPU GPU メモリ etc... Q.
コンピューターが計算するのに必須なものは? A. CPU 今回は CPU の中で演算を行う中枢である ALU (Arithmetic Logic Unit) の仕組みを見る 2
CPU ってどうやって計算しているの? Q. リアルな物体であるハードウェアが、数字という実体のない論理をどうやって計算する の? A. 計算の論理を電気回路で表すことで、物理現象として電気に解かせる 3
CPU って何でできているの? 1. NAND という電子部品がある (NAND より下層は電気電子の話になるので割愛) 2. NAND があれば全ての論理部品が作れる
3. 論理部品があれば足し算ができる 4. 足し算ができれば四則演算が全てできる ( 減算は負の数の加算、乗算は加算の繰り返し、除算は減算の繰り返し) 5. 四則演算が全てできればあらゆる計算ができる CPU が作れる → NAND があれば CPU が作れる! NAND って何? 4
CPU ができる計算 二進数の1 桁 (1 ビット) の足し算 0 + 0
= 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 究極的には CPU はこの4 つの計算しかできない!超ローテク ( 二進数で 1 + 1 は 10 ( 十進数で2) だが、1 桁しか扱えないので上の桁は消えてなくなる) これを電気信号が流れる論理回路として表す 5
論理回路 入力された信号に対して、出力信号が決定される電子部品で構成される。 この中身はトランジスタ ( の仲間) でできている。 信号線に電気信号 (= 電圧) が来ているなら1
、来ていないなら0 。 AND OR NOT NAND NOR XOR 6
AND AND ( 論理積) 両方とも1 なら1 Input 1 Input 2
Output 0 0 0 0 1 0 1 0 0 1 1 1 7
OR OR ( 論理和) どちらかが1 なら1 Input 1 Input 2
Output 0 0 0 0 1 1 1 0 1 1 1 1 8
NOT NOT ( 論理反転) 入力を反転して出力 Input Output 0 1 1
0 9
NAND AND NOT NAND AND の出力に NOT をつけたもの Input 1
Input 2 Output 0 0 1 0 1 1 1 0 1 1 1 0 10
NOR OR NOT NOR OR の出力に NOT をつけたもの Input 1
Input 2 Output 0 0 1 0 1 0 1 0 0 1 1 0 11
XOR XOR (Exclusive OR; 排他的論理和) 入力が不一致なら1 Input 1 Input 2
Output 0 0 0 0 1 1 1 0 1 1 1 0 12
NAND の完全性 AND, OR, NOT, NAND, NOR, XOR, 部品の種類多くない!? 実はこんなに要らない……
NAND だけあれば、他のパーツ全部 NAND の組み合わせで作成可能 (NAND の完全性) 13
NAND NOT NOT NAND の完全性 (NOT) Input Input nand Input
0 1 1 0 (↓ 参考: NAND) Input 1 Input 2 NAND 0 0 1 0 1 1 1 0 1 1 1 0 14
NAND NOT NAND AND AND NAND の完全性 (AND) I1 I2
I1 nand I2 not (I1 nand I2) 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 15
NAND NOT NAND NOT NAND OR OR NAND の完全性 (OR)
I1 I2 not I1 not I2 (not I1) nand (not I2) 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 16
NAND の完全性 (NOR) NAND NOT NAND NOT NAND OR NOR
NAND NOT NOR 17
NAND の完全性 (XOR) NAND NOT NAND NOT NAND OR NOR
NAND NOT NOR 18
XOR Input 1 Input 2 XOR 0 0 0 0
1 1 1 0 1 1 1 0 1 ビット足し算 1 ビットの足し算に戻る。 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 あれっ!?これって XOR やん!! 19
AND Input 1 Input 2 Output 0 0 0 0
1 0 1 0 0 1 1 1 1 ビット足し算の繰り上がり 繰り上がりを考慮して、2 ビットで考える 0 + 0 = 00 0 + 1 = 01 1 + 0 = 01 1 + 1 = 10 2 つの入力と、出力の2 桁目に注目すると、 あれっ!?出力の2 桁目って入力の AND やん!! 20
XOR AND Half Adder X Y S C 半加算器 (Half
Adder) 上の桁への繰り上がりを考慮した1 ビット足し算回路のことを半加算器 (Half Adder) とい う。 入力が X, Y の2 つ。出力の1 桁目が和 (S; Sum) 、2 桁目が桁上げ (C; Carry) X Y Carry Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 ↑ さっきの足し算そのものですよね? (X + Y = CS) 21
下の桁からの繰り上がりを考慮した足し算 十進数で2 桁の足し算をするとき、 十の位は「左の項の十の位」+ 「右の項の十の位」+ 「一の位からの繰り上がり」で計算す るはず。 二進数でも、同じ桁の和に下の桁の繰り上がりを足す。 下の桁からの繰り上げの考慮と、上の桁への繰り上げを行う1 ビットの足し算を全加算器
(Full Adder) と言う。 22
Half Adder X Y S C Half Adder X Y
S C OR C S C' X Y Full Adder C' Y X Carry Sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 全加算器 (Full Adder) (C': 下の桁からの繰り上がり) 23
C S C' X Y Full Adder C S C'
X Y Full Adder C S C' X Y Full Adder 0 X0 X1 X2 Y0 Y1 Y2 S0 S1 S2 C 任意の桁数の足し算 1 ビットの完全な足し算は全加算器でできる ので、桁数の分だけ全加算器を重ねる。 足し算ができる CPU 完成! 24
CPU って何でできているの? ( 再) 1. NAND という電子部品がある (NAND より下層は電気電子の話になるので割愛) 2.
NAND があれば全ての論理部品が作れる 3. 論理部品があれば足し算ができる 4. 足し算ができれば四則演算が全てできる ( 減算は負の数の加算、乗算は加算の繰り返し、除算は減算の繰り返し) 5. 四則演算が全てできればあらゆる計算ができる CPU が作れる NAND があれば CPU が作れた!! 25