©SIProp Project, 2006-2008 1 
計算機(物理) 
Noritsuna Imamura 
noritusna@siprop.org
©SIProp Project, 2006-2008 2 
我是誰? 
台湾でのんびり暮らしてます 
近場でKernel/VM開かれたので、来ました。 
飛行機で1時間半!!! 
家から飛行場まで、2時間以上!!!
©SIProp Project, 2006-2008 3 
ITRIについて 
工業技術研究院 
https://www.itri.org.tw/ 
台湾経済部(経産省相 
当)直轄の産業研究開 
発機関である工業技術 
研究院 
日本でいう産総研や理 
研をすべて足し込んだよ 
うな組織 
台北・新竹・台南に存 
在
©SIProp Project, 2006-2008 4 
今日の議題:分析 
低layerの変態たちがておくれ度を争う会らしい 
• LLVMと殴り合う 
• Yes!Eject!!! 
User Land層 
• PDP-11を移植する 
• Plan9できゃっきゃうふふ 
Kernel層 
• FPGAでCPUを作る 
• GPUをbakeする 
IC層 
物理層• ???
©SIProp Project, 2006-2008 5 
今日の議題 
計算機(物理)を作る 
≒CPU+表示器(物理)
©SIProp Project, 2006-2008 6 
CPUの構造 
Register 
値や命令を保持する記憶装置 
Decoder 
命令を解析して、実行可能状態にする装置 
ALU (Arithmetic and Logic Unit) 
論理演算や四則演算などの演算をおこなう装置 
Program Counter 
次の命令の取り出し先Address用Register
©SIProp Project, 2006-2008 7 
CPUの処理の流れ 
命令のFetch 
命令のDecode 
ALUで実行 
結果の保存(表示器へ)
©SIProp Project, 2006-2008 8 
Register
©SIProp Project, 2006-2008 9 
Register 
値や命令を保持する記憶装置
©SIProp Project, 2006-2008 10 
Register(物理) 
10進数を一つ保持するRegister
©SIProp Project, 2006-2008 11 
完成品 
CPU部表示器部
©SIProp Project, 2006-2008 12 
開発環境
©SIProp Project, 2006-2008 13 
Editor
©SIProp Project, 2006-2008 14 
各種Editor(物理) 
•3DPrinter 
•CNC Milling 
Machine 
•Miter Saw 
•Jig Saw
©SIProp Project, 2006-2008 15 
統合開発環境(物理):Kitchen
Programming風景 
©SIProp Project, 2006-2008 16
©SIProp Project, 2006-2008 17 
Compiling Register
©SIProp Project, 2006-2008 18 
Compiling 表示器
四則演算してみよう! 
©SIProp Project, 2006-2008 19 
(ALU実行)
©SIProp Project, 2006-2008 20 
加算
©SIProp Project, 2006-2008 21 
加算 
12 + 34 
 演算手順 
1. 10の位に「1」をセット 
2. 1の位に「2」をセット 
3. 10の位を「+ 3」する 
4. 1の位を「+ 4」する
©SIProp Project, 2006-2008 22 
減算
©SIProp Project, 2006-2008 23 
減算 
54 - 18 
 演算手順 
1. 10の位に「5」をセット 
2. 1の位に「4」をセット 
3. 10の位を「- 1」する 
4. 1の位を「- 8」する 
5. !!!!!!!
©SIProp Project, 2006-2008 24 
Carry Flag
©SIProp Project, 2006-2008 25 
Carry Flag 
加算時のCarryや 
減算時のBorrowを処理する装置
一回転したら、上位Registerを一つ動かす 
©SIProp Project, 2006-2008 26 
Carry Flag(物理)
©SIProp Project, 2006-2008 27 
減算 
54 - 18 
 演算手順 
1. 10の位に「5」をセット 
2. 1の位に「4」をセット 
3. 10の位を「- 1」する 
4. 1の位を「- 8」する 
5. Carry Flagが10の位を 
「- 1」する
©SIProp Project, 2006-2008 28 
乗算
©SIProp Project, 2006-2008 29 
乗算 
34 × 5 
 演算手順 
1. 10の位に「3」をセット 
2. 1の位に「4」をセット 
3. ????????
©SIProp Project, 2006-2008 30 
Decoder
©SIProp Project, 2006-2008 31 
Decoder 
命令を解析して、 
実行可能状態にする装置
©SIProp Project, 2006-2008 32 
Decoder(物理) 
ALUが処理できる形に変換する装置 
俺
©SIProp Project, 2006-2008 33 
Decoder(物理) 
34×5とは! 
34を、5回加算すること! 
すなわち! 
34 + 34 + 34 + 34 + 34 
である!
©SIProp Project, 2006-2008 34 
乗算 
34 × 5 
 演算手順 
1. 10の位に「3」をセット 
2. 1の位に「4」をセット 
3. 10の位を「+ 3」する 
4. 1の位を「+ 4」する 
5. 3-4を5回繰り返す
©SIProp Project, 2006-2008 35 
除算
©SIProp Project, 2006-2008 36 
除算 
10 ÷ 2 
 演算手順 
1. 10の位に「1」をセット 
2. 1の位に「0」をセット 
3. ????????
©SIProp Project, 2006-2008 37 
Decoder(物理) 
10 ÷ 2とは! 
10から、2を減算していって、 
減算できなくなるまで! 
すなわち! 
10 – 2 – 2 – 2 - 2 – 2 < 2 
である!
©SIProp Project, 2006-2008 38 
だ・け・ど・・・ 
何回引いたか、忘れそう・・・ 
ボクの脳内・・・1,2,いっぱい 
Program Counter
©SIProp Project, 2006-2008 39 
Program Counter 
次の命令の取り出し先Address用Register 
Programのどこを実行しているのか? 
出典:http://www.kumikomi.net/archives/2008/07/15stack.php?page=2
©SIProp Project, 2006-2008 40 
Program Counter(物理) 
紙と筆
©SIProp Project, 2006-2008 41 
Program Counter(物理) 
10 - 2
©SIProp Project, 2006-2008 42 
Program Counter(物理) 
10 – 2 - 2
©SIProp Project, 2006-2008 43 
Program Counter(物理) 
10 – 2 - 2 - 2
©SIProp Project, 2006-2008 44 
Program Counter(物理) 
10 – 2 - 2 - 2 - 2
©SIProp Project, 2006-2008 45 
Program Counter(物理) 
10 – 2 - 2 - 2 - 2 - 2
©SIProp Project, 2006-2008 46 
除算 
10 ÷ 2 
 演算手順 
1. 10の位に「1」をセット 
2. 1の位に「0」をセット 
3. 1の位を「- 2」する 
4. Program Counterに 
状況を書き込む 
5. 3-4を繰り返す
©SIProp Project, 2006-2008 47 
考察 
正の字Counter 
中華圏でも使える!
©SIProp Project, 2006-2008 48 
小数点数 
(FPU)
©SIProp Project, 2006-2008 49 
小数点数:整数 
=123.
©SIProp Project, 2006-2008 50 
小数点数:第一位 
=12.3
©SIProp Project, 2006-2008 51 
小数点数:第二位 
=1.23
©SIProp Project, 2006-2008 52 
小数点数:第三位 
=.123
©SIProp Project, 2006-2008 53
小数点数・もう一度 
©SIProp Project, 2006-2008 54
©SIProp Project, 2006-2008 55 
小数点数:整数 
=123.
©SIProp Project, 2006-2008 56 
小数点数:第一位 
=12.3
©SIProp Project, 2006-2008 57 
小数点数:第二位 
=1.23
©SIProp Project, 2006-2008 58 
小数点数:第三位 
=.123
©SIProp Project, 2006-2008 59
©SIProp Project, 2006-2008 60 
符号
©SIProp Project, 2006-2008 61 
符号:-値 
=-123
©SIProp Project, 2006-2008 62
符号・もう一度 
©SIProp Project, 2006-2008 63
©SIProp Project, 2006-2008 64 
符号:ー値 
=-123
©SIProp Project, 2006-2008 65
©SIProp Project, 2006-2008 66 
3D Printed Computer 
The Turbo Entabulator 
http://www.chrisfenton.com/the-turbo-entabulator/

計算機(物理)