Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NAND から全加算器まで (CPU の仕組み超入門)
Search
Hiroki Kamiyoshikawa
May 05, 2025
Programming
450
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NAND から全加算器まで (CPU の仕組み超入門)
NAND から全加算器を作成するまでの解説。
(2024/11/12 社内勉強会用スライド)
Hiroki Kamiyoshikawa
May 05, 2025
More Decks by Hiroki Kamiyoshikawa
See All by Hiroki Kamiyoshikawa
コンパイラを作ろう
ikorin24
0
51
C# async/await 勉強会
ikorin24
0
27
Other Decks in Programming
See All in Programming
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
Workers Cache を知る
syumai
0
360
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
ActionController meets Protocol Buffers
sorah
0
520
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
140
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
180
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
270
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
10k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Fireside Chat
paigeccino
43
4.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Claude Code のすすめ
schroneko
67
230k
Building Adaptive Systems
keathley
44
3.2k
The agentic SEO stack - context over prompts
schlessera
0
970
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Code Reviewing Like a Champion
maltzj
529
40k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
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