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
150
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
10
C# async/await 勉強会
ikorin24
0
14
Other Decks in Programming
See All in Programming
Navigating Dependency Injection with Metro
l2hyunwoo
1
200
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
gunshi
kazupon
1
130
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
640
CSC307 Lecture 02
javiergs
PRO
1
740
Cell-Based Architecture
larchanjo
0
160
チームをチームにするEM
hitode909
0
430
Grafana:建立系統全知視角的捷徑
blueswen
0
270
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
TestingOsaka6_Ozono
o3
0
260
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
27
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
990
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
530
Mind Mapping
helmedeiros
PRO
0
45
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Test your architecture with Archunit
thirion
1
2.1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
160
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
220
WENDY [Excerpt]
tessaabrams
9
35k
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