本章目標
• 了解電腦系統的基本硬體及軟體結構
• 了解各種在電腦中常用的數碼與文數字碼
• 了解各種在電腦中常用的數目系統及其轉換
• 了解電腦如何執行二進制的定點數四則算術運算
• 了解電腦如何執行二進制的浮點數四則算術運算
• 了解IEEE 754浮點數標準格式
個人電腦系統的硬體架構
記 憶 器
音 效 卡 磁 碟 機 光 碟 機 網 路 卡
I/O界 面
. . . 中 央 處 理 器
(CPU )
位 址 匯 流 排
資 料 匯 流 排 控 制 匯 流 排
系 統 匯 流 排
顯 示 器 鍵 盤
時脈產生器
個人電腦系統軟體架構
檔案管理 I/O 驅動程式
命令解釋程式 作業系統 (MS-DOS,UNIX, WINDOWS 98/NT, 2000, XP, LINUX)
編輯程式 編譯程式
連結程式 組譯程式 系統程式庫
載入程式
系統軟體
系統
GUI 系統網路通信程式
嵌入式微處理器系統
嵌入式微處理器系統的典型應用可以分成五大領域:
1. 消費性產品
2. 汽車控制器
3. 辦公室自動化
4. 工業控制器
5. 通信電子產品
典型的可規劃嵌入式微處理器系統架構
Ethernet IIC UART
GPIO
P1394 Timer
SDRAM 中斷要求
控制器 CPU
ADC DAC
DMAC IrDA
PCMCIA DSP
PWM
ASCII碼
MSB LSB
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
0 0000 NUL DLE SP 0 @ P ‘ p
1 0001 SOH DC1 ! 1 A Q a q
2 0010 STX DC2 “ 2 B R b r
3 0011 ETX DC3 # 3 C S c s
4 0100 EOT DC4 $ 4 D T d t
5 0101 ENQ NAK % 5 E U e u
6 0110 ACK SYN & 6 F V f v
7 0111 BEL ETB ` 7 G W g w
8 1000 BS CAN ( 8 H X h x
9 1001 HT EM ) 9 I Y i y
A 1010 LF SUB * : J Z j z
B 1011 VT ESC + ; K [ k {
C 1100 FF FS , < L \ l |
D 1101 CR GS - = M ] m }
E 1110 SO RS . > N ^ n ~
電腦中常用的數碼
權位式數碼 非權位式數碼
十進制數字
8 4 2 1 BCD 加三碼 格雷碼
0 0000 0000 0011 0000
1 0001 0001 0100 0001
2 0010 0010 0101 0011
3 0011 0011 0110 0010
4 0100 0100 0111 0110
5 0101 0101 1000 0111
6 0110 0110 1001 0101
7 0111 0111 1010 0100
8 1000 1000 1011 1100
9 1001 1001 1100 1101
10 1010 0001 0000 0100 0011 1111
11 1011 0001 0001 0100 0100 1110
12 1100 0001 0010 0100 0101 1010
13 1101 0001 0011 0100 0110 1011
二進制數目系統
N a a a a
a
q
q
p p
i
i p
q
i
2 1
1
0 0
1 1 1
2 2 2 2
2
= + + + + +
=
− −
− −
− −
=−
∑
−LL LL
(aq−1aq−2LLa .a a0 −1 −2LLa−p)2
1101 = 1 2× 3 + ×1 22 + ×1 20
轉換二進制為十進制
11010 01101 1 2 1 2 1 2 1 2 1 2 1 2 1 2 32 16 4 1 0 25 0 125 0 03125
53 40625
2
5 4 2 0 2 3 5
10
.
. . .
.
= × + × + × + × + × + × + ×
= + + + + + +
=
− − −
轉換十進制為二進制
1310 = + + =8 4 1 23 + 22 + +0 20 = 11012
轉換十進制為二進制
109 2 54 54 2 27 27 2 13
13 2 6 6 2 3 3 2 1 1 2 0
÷ =
÷ =
÷ =
÷ =
÷ =
÷ =
÷ =
LL LL
LL LL LL
LL LL
1 0 1 1 0 1
1 MSB
LSB
轉換十進制為二進制
0 78125 2 156250 0 56250 2 11250
0 1250 2 0 250 0 250 2 0 500 0 500 2 1 000
. .
. .
. .
. .
. .
× =
× =
× =
× =
× =
= +
= +
= +
= +
= +
1 0 56250 1 0 1250
0 0 250 0 0 500 1 0 000
. . . . .
整數
轉換十進制為二進制
0 43 2 0 86 0 86 2 1 72 0 72 2 1 44 0 44 2 0 88
. .
. .
. .
. .
´ =
´ =
´ =
´ =
= +
= +
= +
= +
0 0 86 1 0 72 1 0 44 0 0 88
. . . . 整數
0 88 2 1 76 0 76 2 152 0 52 2 1 04
. .
. .
. .
´ =
´ =
´ =
= +
= +
= +
1 0 76 1 0 52 1 0 04
. . . 整數
十六進制數目系統
N a a a a
a
q
q
p
p
i
i p
q
i
16 1
1
0 0
1
1 1
16 16 16 16
16
= + + + + +
=
− −
− −
− −
=−
∑
−LL LL
(aq−1aq−2LLa .a a0 −1 −2LLa−p)16
123F E3. 16 = ×1 163 + ×2 162 + ×3 161 + ×F 160 + ×E 16−1 + ×3 16−2
十進制、二進制、與十六進制之間的關係
十進制 二進制 十六進制 十進制 二進制 十六進制
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A(a)
3 0011 3 11 1011 B(b)
4 0100 4 12 1100 C(c)
5 0101 5 13 1101 D(d)
6 0110 6 14 1110 E(e)
7 0111 7 15 1111 F(f)
二進制轉換為十六進制
{ { { { { { 0101 1101 1001 1011 0100 1110 5 D 9 . B 4 E
↓ ↓ ↓ ↓ ↓ ↓
.
轉換十六進制為二進制
} } } } } } 3 7 C . B 8 6
0111 1000 0110 0011 1100 1011
↓ ↓ ↓ ↓ ↓ ↓
.
轉換十六進制為十進制
AED BF A 16 E 16 D 16 B 16 F 16
10 256 14 16 13 1 11 0 0625 15 0 00390625 2797 74609375
16
2 1 0 1 2
10
.
. .
.
= × + × + × + × + ×
= × + × + × + × + ×
=
− −
轉換十進制為十六進制
167 16 10 10 16 0
÷ =
÷ =
LL LL
7
10 MSD
LSD 整數部分 餘數
0 45 16 7 2 0 2 16 3 2 0 2 16 3 2
. .
. .
. .
× =
× =
× =
= +
= +
= + 7 0 2 3 0 2 3 0 2 . . . 小數部分 整數
16710 = A716 0 45. 10 = 0 73. 16
二進制加法運算
1 0 1 0
1 1 1 0
3 2 2 0
(-2) (-2) (-2) (-0)
1 0 0 0
1 +
1 0 0 0
(1) (1) (1) (0) 進位
加數 被加數
二進制減法運算
1 0 1 0
1 1 1 0
2 2 1 0
(-1) (-0) (-0) 0
(1) -
1 1 0 0
(2) (2) (0) (0) 借位
(-1)
被減數
減數
二進制乘法運算
1 0 0 1
1 1 0 1
1 1 0 1
0 0 0 0
0 0 0 0
1 1 0 1
×
+
乘數 被乘數
0 1 0 1
1 1 1 乘積
二進制除法運算
1 0 0 0 1 1 1 1 1 0 1 1
1 0 1 1 1 1 0 1
1 0 1 1 1 0 1 1 1 0 1 1
−
−
−
0 1 1 0 1
除數 被除數
商數
餘數
數目表示法
N2 = (0an−2LLa a .a a1 0 −1 −2LLa−m)2
N ai i
i m
n 2
2
= × 2
=−
∑
−N2 = 2n − N2
2補數算術運算---兩數均為正數
溢位發生,結果錯誤 0110
+ 0100 1010
↑
(b) +6
+ +4 +10 沒有溢位,結果正確
0011 + 0010 0101
↑
(a) +3
+ +2 +5
2補數算術運算---兩數均為負數
1100 + 1001 10101
↑
(b) -4
+ -7 -11
符號位元為0,表 示溢位,結果錯誤 摒除
符號位元為1,
↑
結果正確 1101
+ 1100 11001
↑
(a) -3
+ -4 -7 摒除
↑
2補數算術運算---兩異號數
0110 + 1001 1111
↑
(b) +6
+ -7 -1
符號位元為1,結 果正確
↑
符號位元為0, 沒有進位 結果正確
0111 + 1100 10011
↑
(a) +7
+ -4 +3 摒除
↑
浮點數表示方法
指數(e) 假數(m)
m
× 2
eIEEE 754浮點數標準格式
x = − ( 1 )
s× 2
e bias− × 1 .m
s為符號位元:0為正數;1為負數 e為指數;bias為偏移量
m為假數
IEEE 754標準格式
類型 單精確制 雙精確制 四倍精確制
符號位元(s) 1 1 1
指數(e)位元數目 8 11 15
假數(m)位元數目 23 52 112
語句全部長度 32 64 128
指數偏移量(bias) 127 1023 16383
最大指數值 255 2047 32767
最小指數值 0 0 0
IEEE 754單精確制格式
指數(e) 假數(m)
s
1位元
8位元 23 位元
32 位元
IEEE 754單精確制格式的指數意義
偏移指數 數目符號 真實指數 假數 類別
0000 0000 +
−
---- ----
00…00 00…00
11…11 到 00…01
正 0 負 0
去標準化的數 0000 0001 到 0111 1111 --- −126 到 0 00…00 到 11…11 標準化的數 1000 0000 到 1111 1110 --- 1 到 127 00…00 到 11…11 標準化的數
1111 1111
+
−
−
−
---- ---- ---- ----
00…00 00…00 10…00
00…01 到 11…11
正∞
負∞
未定值 不成立的數
浮點數的四則運算
( )
x + = −y ( 1)xs mx2xe−ye + −( 1)ys my 2ye
( )
x − = −y ( 1)xs mx2xe−ye − −( 1)ys my 2ye
( )
x × = −y ( 1)xs mx × −( 1)ys my 2xe+ye
( )
x ÷ = −y ( 1)xs mx ÷ −( 1)ys my 2xe−ye
早期的IA-32微處理器重要特性
微處理器 出廠年 操作頻率 電晶體
數目
暫存器 資料匯流
排寬度
位址空間 快取記憶器
8086 1978 8 MHz 29 k 16 GP 16 1 MB
286 1982 12.5 MHz 134 k 16 GP 16 16 MB 386 DX 1985 20 MHz 275 k 32 GP 32 4 GB
486 DX 1989 25 MHz 1.2 M 32 GP, 80 FPU 32 4 GB L1:8 kB Pentium 1993 60 MHz 3.1 M 32 GP, 80 FPU 64 4 GB L1:16 kB Pentium Pro 1995 200 MHz 5.5 M 32 GP, 80 FPU 64 64 GB L1: 16 kB
L2: 256/512 kB Pentium II 1997 266 MHz 7 M 32 GP, 80 FPU,
64 MMX
64 64 GB L1: 32 kB
L2: 256/512 kB Pentium III 1999 500 MHz 8.2 M 32 GP, 80 FPU
64 MMX, 128 XMM
64 64 GB L1: 32 kB L2: 512 kB
近期的IA-32微處理器重要特性
微處理器 出廠年 架構類型 操作頻率 電晶體
數目
暫存器 資料匯流
排頻寬
位址空 間
快取記憶器
P III
P III Xeon
1999 P 6 700 MHz 28 M 1.06 GB/s 64 GB L1: 3 kB L2: 256 kB P 4 2000 NetBurst 1.50 GHz 42 M 3.2 GB/s 64 GB L1: 8 kB
L2: 256 kB µop Trace: 12 k Xeon 2001 NetBurst 1.70 GHz 42 M 3.2 GB/s 64 GB L1: 8 kB
L2: 256 kB µop Trace: 12 k Xeon 2002 NetBurst;
Hyper- threading
2.20 GHz 55 M 3.2 GB/s 64 GB L1: 8 kB L2: 512 kB µop Trace: 12 k Xeon MP 2002 NetBurst; 1.60 GHz 108 M
32 GP 80 FPU 64 MMX 128 XMM
3.2 GB/s 64 GB L1: 8 kB