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
54
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
6
C# async/await 勉強会
ikorin24
0
10
Other Decks in Programming
See All in Programming
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
5
1k
AWS Serverless Application Model入門_20250708
smatsuzaki
0
120
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
950
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
380
実践 Dev Containers × Claude Code
touyu
1
230
コンテキストエンジニアリング Cursor編
kinopeee
1
670
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.8k
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
13
3.2k
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
1
210
新世界の理解
koriym
0
140
Honoアップデート 2025年夏
yusukebe
1
830
物語を動かす行動"量" #エンジニアニメ
konifar
14
5.4k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Faster Mobile Websites
deanohume
309
31k
Producing Creativity
orderedlist
PRO
347
40k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Typedesign – Prime Four
hannesfritz
42
2.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
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