You are on page 1of 46

第 5章 計算機組織

- 計算機組織(Computer Architecture):電腦系統的概念設計及其基本
運作的架構
* 一部獨立電腦的子系統包含:中央處理單元(Central processing
unit, CPU),記憶體(Memory),輸入/輸出(Input/output, I/O)

記憶體
中央處理單元
中央處理單元
.
.
.

輸入 / 輸出

5-1
(a) 中央處理單元 (CPU)
- 中央處理單元:執行資料的運算
R0 暫存器
R1
R2
算術邏輯單元
Rn

PC
控制單元
控制單元
IR

* 包含三部分
# 算術邏輯單元(Arithmetic logic unit, ALU)執行邏輯、移位、算術運算
- 邏輯運算:NOT, AND, OR, XOR
- 移位運算:邏輯移位、算術移位

5-2
- 算術運算:整數與實數的運算(加減乘除)
# 暫存器(Register):暫時保存資料之儲存位置
- 資料暫存器(Data registers: R1, R2 …, Rn):儲存輸入資料與運算結果
- 指令暫存器(Instruction register, IR):儲存指令
→ CPU 從記憶體中讀取指令,並儲存在指令暫存器
- 程式計數器(Program counter, PC)
→ 儲存下一個指令所在的位置,每次指令執行完畢均會自動加 1
(下一個指令的位置)
# 控制單元(Control unit, CU):透過控制線(Wire)控制子系統的運作
- 例如:若有 4 條控制線,其開與關的狀態可定義 16 (42)種指令,例
如:0000 為“increment” (加 1),0001 為“decrement” (減 1) ...

(b) 主記憶體 (Main memory)

5-3
- 主記憶體
* 儲存程式及資料,每個儲存位置都有單一位址(Address)
* 資料以成組的位元形式傳入及傳出記憶體,稱為字組(Word)
# 一個字組 = 8, 16, 32, 或 64 位元(依各電腦規格不同)
→ 8 位元:1 位元組(1-byte word),16 位元:2 位元組...
* 位址空間(Address space):記憶體中唯一可識別位置的總數量
# 例如,16 位元位址的空間:0 ~ 65,535 (216)

位址 → 0000 0000 0111 0010 1100 1100 ← 內容 ( 值 )


0000 0001 0000 0011 1100 1101
0000 0010 1110 1010 1110 1100

1111 1111 0000 0010 1111 1100 記憶體

* 記憶體單位

5-4
單位 位元組數目 近似值
kilobyte (KiB) 210 (1,024) bytes 103 bytes
megabyte (MiB) 220 (1,048,567) bytes 106 bytes
gigabyte (GiB) 230 (1,073,741,824) bytes 109 bytes
terabyte (TiB) 240 bytes 1012 bytes
註:
KB: Kilobytes (103); Kib: Kilo binary bytes (210)
MB: Megabytes (106); MiB: Mega binary bytes (220)
GB: Gigabytes (109); GiB: Giga binary bytes (230)
MB: Terabytes (1012); TiB: Tera binary bytes (240)

* 位址視同位元樣式
# 記憶體位址以無號二進位整數表示
→ 例如 16 位元位址:0000 … 0000 ~ 1111 … 1111 (0 ~ 65,535)
# 範例:一部計算機有 32MB 記憶體,需多少位元來定址每個位元組?
→ 32MB = 32×220 位元組(= 225 byte):需 25 位元來定址每一個位元組
# 範例:一部計算機有 128MB 記憶體,每個字組為 8 個位元組(8

5-5
bytes),需多少位元來定址每個字組?
→ 128MB = 128×220 位元組(= 227 byte),每個字組為 8 個位元組(= 23
byte),227/23 = 224:需 24 位元來定址每一個字組

- 記憶體種類(Memory types)
* 隨機存取記憶體(Random access memory, RAM)
# 「隨機」:依照位址來進行資料存取
# 可讀與寫
# 資料為揮發性(Volatile):電源關閉後資料消失
# 靜態隨機存取記憶體(Static random access memory, SRAM)
→ 使用傳統正反閘(Flip-flop gate)來保存資料
- 正反閘的狀態:0 或 1 (只要有電源,資料即可保存,無須更新)
- 速度較快但昂貴
# 動態隨機存取記憶體(Dynamic random access memory, DRAM)

5-6
→ 使用電容器(Capacitor)來保存資料
- 如果電容器充電,狀態為 1;如果電容器放電,狀態為 0
- 電容器會隨時間而流失電荷:需要週期性更新
- 速度較慢但較為便宜
* 唯讀記憶體(Read-only memory, ROM)
# 僅可讀取
# 其內容是由製造商寫入
# 資料為非揮發性(Non-volatile):電源關閉後資料不會消失
# 例如:開機程式儲存在 ROM 中
# 可程式化唯讀記憶體(Programmable read-only memory, PROM)
- 記憶體裝貨時是空白的
- 使用者可以利用特殊設備將程式存入(僅寫一次:Write only once)
# 可清除可程式化唯讀記憶體(Erasable programmable read-only memory,
EPROM)
5-7
- 使用者可存入程式,而且可利用特殊紫外光設備將程式清除
- 要清除 EPROM 資料需要實際移除及重新安裝 EPROM
# 電壓可清除可程式化唯讀記憶體(Electronically erasable programmable
read-only memory, EEPROM)
- 可藉由電子脈衝來存入程式或清除,不需從電腦中移除

- 記憶體階層(Memory hierarchy)
* 程式及資料均儲存在記憶體中
→ 資料傳輸的速度決定系統的速度:記憶體越快越好
* 但快速的記憶體非常昂貴
→ 解決方案:利用階層式記憶體
# 使用少量的高速記憶體在速度非常重要的地方:暫存器
# 使用適量的中速記憶體來儲存經常存取的資料:快取記憶體(Cache)
# 使用大量的低速記憶體來儲存不常存取的資料:主記憶體

5-8
較貴 最快

暫存器
快取記憶體
較便宜 最慢
主記憶體

- 快取記憶體(Cache memory):置於 CPU 與主記憶體之間

CPU 主記憶體
快取記憶體

* 包含部分主記憶體的備份
* CPU 存取主記憶體一個字組的程序
# CPU 檢查快取記憶體
5-9
# 如果字組存在,CPU 複製此字組;若不存在,CPU 存取主記憶體,
並從所要存取字組的位址開始,複製一個記憶體區塊
# CPU 存取快取記憶體並複製此字組
* 理由:下一個存取的字組極有可能就在這次存取的字組之後
# 80-20 法則(80-20 rule):根據觀察,大部分的電腦主要花費 80%的時
間在存取只有 20%的資料
→ 相同的資料不斷地重複存取(例如:迴圈)
# 快取記憶體可以保存這 20%資料,使存取加快至少 80%的時間

(c) 輸入 /輸出 (Input/output)


- 輸入/輸出
* 電腦與外部連結的設備
* 即使電腦關閉電源,也可儲存資料的設備

5-10
- 非儲存性設備(Nonstorage device):用來通訊,而非儲存
* 鍵盤(Keyboard):輸入,監視器(Monitor):顯示輸出及鍵盤輸入,
印表機(Printer):列印輸出
- 磁性儲存設備(Magnetic storage device):利用磁化來儲存資料
→ 一個位置被磁化代表 1,沒有被磁化則代表 0
* 磁碟(Magnetic disk)
# 塗上一層磁性薄膜的碟片
# 利用讀寫頭(Read/write head) 在磁碟表面讀取或寫入資料
# 表面組織:每一個表面分成許多磁軌(Track),每一個磁軌分成許多磁
區(Sector),磁軌被磁軌間隙(Intertrack gap)隔開,磁區被磁區間隙
(Intersector gap)隔開

5-11
碟片 磁 磁
軌 區


碟片 制



讀寫頭 磁軌 磁區
間隙 間隙

# 資料存取:隨機存取
- 最小存取區域:一個磁區
# 效能:取決於以下因素
- 轉速(Rotational speed):磁碟旋轉速度
- 搜尋時間(Seek time):移動讀寫頭到目的磁軌的時間
- 轉移時間(Transfer time):將資料從磁碟傳到 CPU 或記憶體的時間

* 磁帶(Magnetic tape)
# 塗上一層厚磁膜的塑膠帶子,裝在兩個捲軸上
# 利用讀寫頭(Read/write head) 在磁帶表面讀取或寫入資料
5-12
# 表面組織:每一個表面分成 9 個磁軌(Track),磁軌中每一個位置儲存
1 個位元資訊 → 9 個位元:8 位元儲存資料,1 位元作錯誤偵測
# 資料存取:循序存取
# 效能:較慢但便宜,能儲存大量資料(通常用來備份)

磁帶捲軸 磁帶捲軸 區塊 區塊
磁軌 1

讀寫頭
磁帶 磁帶 磁軌 9 表面組織

- 光學儲存設備(Optical storage device):使用雷射光來存取資料


* 光碟(Compact disk, CD):儲存音訊
* 唯讀光碟(Compact disk-read only memory, CD-ROM)

5-13
# 與 CD 技術相同,但更為強化(具有錯誤偵測)
# 適合大量生產
# 產生 CD-ROM 步驟:
1. 母片(Master disk)是以高功率紅外光雷射在鍍膜的塑膠上產生位元
樣式 → 雷射將位元樣式轉換唯一序列的凹洞(Pit)及平地(land)
2. 從母片製作模版(Mold) → 凹洞變為凸塊(Bump)
3. 將融化的聚碳酸酯樹脂(Polycarbonate resin)射入模版中,以產生和
母片相同的凹洞。再將一層薄鋁(作為反射層)加到聚碳酸酯上,在鋁
層之上上漆作保護並加上標籤。此步驟重複進行以製造每個碟片。
# 讀取:使用低功率雷射光束讀取
- 當光束經過平地,會被鋁層反射 → 偵測到反射
- 當光束經過凹洞,光束被反射 2 次,由凹洞及鋁層分別反射而相互
破壞 → 沒有偵測到反射

5-14
平地 平地 平地
凹洞 凹洞 凹洞 凹洞 凹洞
塑膠或玻璃 模版材料
母片 模版
標籤
保護層
CD-ROM 反射層
聚碳酸酯樹脂

雷射光源 雷射檢測器

# CD-ROM 格式
- 利用漢明碼(Hamming code)將 8 位元資料轉換為 14 位元符號(錯誤
更正碼)
- 74 分鐘 CD-ROM:
* 有 333,000 磁區(Sector),每個磁區有 98 個框架(Frame),一個框
架為 24 位元組(Bytes),容量:333,000×98×24 = 783,216,000
Bytes ≈ 747 MiB (783,216,000/220)
5-15
位元組 (8 位元 ) 符號 (14 位元 )

... 框架 (24 位元組 )


磁區 (98 框架 )
...

# CD-ROM 速度
速度 資料傳輸率(bytes/s) 近似值(/s)
1x 153,600 150 KB
2x 307,200 300 KB
4x 614,400 600 KB
6x 921,600 900 KB
8x 1,228,800 1.2 MB
12x 1,843,200 1.8 MB
16x 2,457,600 2.4 MB
24x 3,688,400 3.6 MB
32x 4,915,200 4.8 MB
40x 6,144,000 6 MB

* 可燒錄光碟(Compact disk recordable, CD-R)

5-16
# 適合小量生產(例如:個人備份)
# 生產成本低
# 一寫多讀(Write-once, read many, WORM)
# 產生 CD-R 步驟(沒有母片或模版)
1. 反射層以黃金製造,而非鋁
2. 沒有實際的凹洞,凹洞和平地都是模擬,在反射層及聚碳酸酯之
間加一層染料
3. CD 燒錄機所產生的高功率雷射光造成染料上一個黑點來模擬凹洞
# 讀取
- 以 CD-ROM 或 CD-R 機器讀取
- 若為平地,光線會被黃金表面反射 → 偵測到反射
- 若為凹洞,因為該點是不透明,所以沒有反射
# 格式與速度:與 CD-ROM 相同

5-17
標籤
保護層
CD-R 反射層
模擬凹洞
聚碳酸酯樹脂 染料

雷射光源 雷射檢測器

* 可覆寫光碟(Compact disk rewritable, CD-RW)


# 適合小量生產(例如:個人備份)
# 生產成本低
# 可讀可寫
# 產生 CD-RW 步驟 → 與 CD-R 相同,以下除外
1. 使用銀、銦、銻、和碲 的合金取代染料 → 2 種狀態:結晶(透明,
平地)和無結晶(不透明,凹洞)
2. 高功率雷射光來產生模擬凹洞

5-18
# 讀取:與 CD-ROM 和 CD-R 相同
# 清除:使用中功率雷射光將凹洞改為平地
# 格式及速度:與 CD-ROM 相同
標籤
CD-RW 保護層
結晶 反射層
( 平地 ) 合金
聚碳酸酯樹脂
無結晶
( 凹洞 ) 雷射光源 雷射檢測器

* 數位多功能光碟(Digital versatile disk, DVD)


# 高容量
# 產生 DVD 步驟 → CD-ROM 相同,以下除外
1. 凹洞較小:直徑 0.4 微米(CD:0.8 微米)
2. 磁軌彼此間更接近

5-19
3. 光束用紅色雷射,取代紅外線雷射
4. DVD 可使用 1 或 2 層、單面或雙面
# 容量
特性 容量
單面單層 4.7 GB

單面雙層 8.5 GB

雙面單層 9.4 GB

雙面雙層 17 GB

# 壓縮:MPEG (單面單層 DVD 可存 133 分鐘視訊)

(d) 子系統之互連 (Subsystem interconnection)


- 連接 CPU 與記憶體
→ 由三組線路連接,每子線路稱為匯流排(Bus):資料匯流排、位址
匯流排、控制匯流排
5-20
資料匯流排
中央處 記憶體
.
理單元 位址匯流排 .
控制匯流排

* 資料匯流排:傳送資料
# 由數條線路組成,每條線路一次傳送 1 位元
# 線路數量由計算機所使用字組大小決定,例如:若字組為 32 位元(一
次傳送 32 個位元) → 32 條線路
* 位址匯流排:指明資料的位址
# 線路數量由計算機所使用位址空間大小決定,例如:若位址空間有
2n 個位元組(以 n 個位元指定位址) → n 條線路
* 控制匯流排:指明資料存取的操作(讀、寫…)
# 線路數量由計算機所使用指令總數量決定,例如:若有 2m 種不同的
5-21
指令 → m 條線路

- 連接輸出入設備(I/O device)
→ 不同的輸出入設備有不同的速度,因此需要輸出入控制器(I/O
controller)
* 串列設備(Serial device):只有一條連接線路
* 並列設備(Parallel device):有數條連接線路
中央處理單元 記憶體
資料匯流排
位址匯流排 .
.
控制匯流排
鍵盤控 監視器 印表機 磁碟機
制器 控制器 控制器 控制器
連接輸出入設
備到匯流排 鍵盤 監視器 印表機 磁碟機

5-22
* 小型電腦系統介面(Small computer system interface, SCSI)
# 有 8、16、或 32 條線路的並列介面
# 雛菊鏈式連接(Daisy chain connection)
→ 雛菊鏈兩端需加上終端設備,每個設備有唯一的位址
中央處理單元 記憶體
資料匯流排
.
位址匯流排 .
控制匯流排
SCSI 終端
控制器 ID = 5 ID = 3 ID = 4 ID = 2 電阻
SCSI 控制器
磁碟機 CD-ROM 掃描器 磁帶機

* 火線(FireWire)
# IEEE 標準,高速串列介面(50 MB/秒),以封包傳送資料

5-23
# 可連接多達 63 個設備,使用雛菊鏈或樹狀連接
中央處理單元 記憶體
資料匯流排
位址匯流排 .
.
控制匯流排
Firewire
Firewire 控制器 掃描機 控制器 印表機

磁碟機 磁帶機 CD-ROM DVD 數位相機

* 通用串列匯流排(Universal serial bus, USB)


# 有 4 條連接線,其中
- 2 條用來傳遞資料、位址、和控制訊號
- 另外 2 條為電源線(+5 伏特),提供低耗電設備電源(高耗電設備需另
接電源線)

5-24
# 慢速串列介面,3 種傳輸率:1.5 Mbps,12 Mbps,480 Mbps
# 資料以封包形式傳遞,每個封包包含位址、控制、及資料部分,所有設
備都會收到封包,但正確位址之設備才會接收資料
# 兩種連接器:
- A 連接器(向下連接):連接 USB 控制器或集線器
- B 連接器(向上連接):連接設備
# USB-2 (USB 2.0 版)以樹狀結構連接(最多可連接 127 個設備),其中
- USB 控制器為樹根,稱為根集線器(Root hub):知道樹狀結構中各
個集線器的所在位置
- 中間節點為集線器(Hub):為被動元件,僅簡單傳遞資料
- 終端節點為設備

5-25
中央處理單元 記憶體
資料匯流排
位址匯流排 .
.
控制匯流排
USB 控制器
USB 排線 ( 根集線器 )

設備 集線器 設備 設備

設備 集線器

USB 控制器 設備 設備

- 定址輸入輸出設備(Addressing I/O devices)


* CPU 使用相同的匯流排來讀寫記憶體或輸出入設備
* 不同的指令指明資料的位置是在記憶體或輸出入設備

5-26
* 輸出入設備定址的 2 種方法
# 獨立式 I/O 定址(Isolated I/O addressing)
- 存取記憶體或輸出入設備的指令不同
- 每個輸出入設備有自己的位址
- 輸出入設備的位址可以和記憶體的位址相同
* 例如,Read 101 (記憶體)及 Input 101 (輸出入設備)
中央處理單元 記憶體
系統匯流排

.
Read 101 .
Input 101

101 103
102 104

控制器

5-27
# 記憶體對映輸出入定址(Memory-mapped I/O addressing)
- CPU 將輸出入控制器裡的暫存器視為記憶體裡的一個字組
- 讀取記憶體或輸出入設備的指令相同:若位址為記憶體字組,就從
記憶體讀取;若位址為輸出入的暫存器,就從輸出入設備讀取
- 優點:指令的數量較少
- 缺點:部份記憶體空間必須配置給輸出入暫存器
中央處理單元 記憶體
系統匯流排

.
Read 101 .
Read 64001

64001 64002
64003 64004

控制器

5-28
(e) 程式之執行 (Program execution)
- 機器週期(Machine cycle)
→ 電腦執行一個指令的三步驟:擷取、解碼、執行
* 擷取:控制單元命令系統複製下一個指令到 CPU 的暫存器
# 指令位址存在程式計數暫存器中(Program counter register)
# 複製後,程式計數加 1
* 解碼:控制單元辨識指令
* 執行:控制單元送出工作命令到 CPU 的組件,例如:告知系統從
記憶體載入(讀取)一份資料

開始 擷取
擷取 解碼
解碼 執行
執行
沒有
指令 停止

5-29
(f) 輸入 /輸出運算 (Input/output operation)
- 輸出入設備比 CPU 慢得多
→ CPU 需要和輸出入設備同步(Synchronization)
* 同步方法:程式化 I/O (Programmed I/O),中斷驅動 I/O (Interrupt-
driven I/O),及直接記憶體存取(Direct memory access, DMA)
- 程式化 I/O (Programmed I/O)
* CPU 等待輸出入設備
→ CPU 什麼都不做,直到資料傳送完成
* CPU 不斷檢查輸出入設備狀態:浪費時間
* CPU 和輸出入設備之間的資料傳送
# 輸出動作之前,資料先傳送到記憶體
# 輸入動作之後,資料即傳送到記憶體

5-30
發出
發出 I/O
I/O 檢查設
檢查設 備妥 傳送
傳送 11
命令
命令 備狀態
備狀態 個字組
個字組
開始 沒有
字組
停止

- 中斷驅動 I/O (Interrupt-driven I/O)


* CPU 通知輸出入設備,即將傳送資料
→ CPU 不檢查輸出入設備之狀態
* 當輸出入設備準備就緒,即通知(中斷) CPU
→ CPU 時間並未浪費(在受到中斷之前,CPU 可做其他事情)
* CPU 和輸出入設備之間的資料傳送
# 輸出動作之前,資料先傳送到記憶體
# 輸入動作之後,資料即傳送到記憶體

5-31
發出
發出 I/O
I/O 做其他事,但 傳送
傳送 11
命令
命令 會監督中斷 個字組
個字組
開始 沒有
字組 中斷
停止

- 直接記憶體存取(Direct memory access, DMA)


* 從記憶體直接傳送一大區塊的資料到高速輸出入設備(例如:磁碟)
* 需要 DMA 控制器:控制器有緩衝區能暫存大量資料
* 運作方式
# CPU 送訊息給 DMA
- 訊息:傳送型態(輸入或輸出)、記憶體位址、需傳送多少位元組
- CPU 即可做其他事
# 當輸出入設備就緒,DMA 控制器通知 CPU 需要匯流排的控制權
# CPU 停止使用匯流排
5-32
# 資料直接在記憶體與 DMA 之間傳送(CPU 暫停工作)
中央處理單元 記憶體
系統匯流排

訊息 (1)
.
.
匯流排要求 (2)
資料 (3)
位址 磁碟控
DMA 控制 制器
計數 ACK (4) 磁碟
緩衝區

發出
發出 I/O
I/O 等待
等待 停止
命令
命令
開始

中斷 中斷
做其他事,但 (DMA 準備 釋放匯流排 (DMA 完成
會監督中斷 並等待 DMA 完成
傳輸資料 ) 資料傳輸 )

5-33
(g) 各種計算機架構
- 複雜指令集電腦(Complex instruction set computer, CISC)
* 大的指令集(包含許多指令)
* 複雜的工作只要一個指令即可完成,程式設計簡單
* CPU 電路及控制單元較複雜
- 精簡指令集電腦(Reduced instruction set computer, RISC)
* 小的指令集(包含較少指令)
* 複雜的指令用許多簡單的指令加以模擬完成,程式設計較困難
* CPU 電路及控制單元較簡單
- 管線處理(Pipelining)
* 早期計算機:執行一個指令之擷取、解碼、和執行 3 個階段運算必
須依序完成後,才能執行下一個指令
5-34
指令 1 指令 2 指令 3

擷取 解碼 執行 擷取 解碼 執行 擷取 解碼 執行
時間

* 管線處理:讓控制單元在執行一個指令時,同時可以執行 2 或 3
個機器週期步驟,使下一個指令可以提前執行
# 生產量(Throughput)增加:單位時間執行指令之總量
# 適合循序指令,如遇跳躍指令,管線中預先執行的指令需丟棄

擷取 解碼 執行 擷取 解碼 執行 擷取
擷取 解碼 執行 擷取 解碼 執行 擷取 解碼
擷取 解碼 執行 擷取 解碼 執行 擷取 解碼 執行
時間

- 平行處理(Parallel processing):依據 M.J. Flynn 的分類

5-35
* 單一指令流,單一資料流(Single instruction, single data, SISD):處
理單元同一時間內只能處理單一指令,同時也只能存取一筆資料
# 只有一個控制單元、一個處理單元、和一個記憶體單元,例如單一
CPU 的個人電腦
SISD

Load R1 40 14
Load R1 50 22
... ... CU PU MU
指令流 資料流 控制單元 處理單元 記憶體單元

概念 實作

* 單一指令流,多重資料流(Single instruction, multiple data, SIMD):


處理單元同一時間內只能處理單一指令,但一次可存取多筆資料
# 有一個控制單元、多重處理單元、和一個記憶體單元,例如管線電腦與

5-36
超級電腦中的陣列處理機或向量處理機
# 所有處理單元接受控制單元的指令,對不同的資料做運算
SIMD
14
22
... PU
Load R1 40 25
Load R2 50 32 CU
CU
... PU
...
17
指令流 81
... 資料流 PU

概念 實作

* 多重指令流,單一資料流(Multiple instruction, single data, MISD):


處理單元同一時間內可處理多個指令,但只能存取一筆資料
# 較不實用,多用於容錯系統(Fault tolerant system),不同的處理器處理

5-37
同一資料,以資驗證
MISD Load R1 40
Load R2 50
...

Load R3 80 14
指令流 Load R4 81 22
... ...

Load R8 20 資料流
Load R9 10
...

* 多重指令流,多重資料流(Multiple instruction, multiple data,


MIMD):處理單元同一時間內可處理多個指令,同時也能存取多
筆資料,例如平行處理電腦或分散式系統

5-38
MIMD
Load R1 40 14
Load R2 50 22 CU
CU
... ... PU

Load R3 80 71
指令流 Load R4 81 25 CU
CU PU
... ...

Load R8 20 32
Load R9 10 11 CU
CU PU
... ...
資料流
概念 實作

(h) 一個簡單的計算機
- CPU 分三部分
* 資料暫存器:16 個 16 位元暫存器
* 控制單元:含程式計數器(8 位元)及指令暫存器(16 位元)

5-39
* 主記憶體
# 256 個 16 位元的位置(0000 00002 ~ 1111 11112 或 0016 ~ FF16)
# 前 64 個位置(0016 ~ 3F16)儲存程式,之後 190 個位置儲存資料(4016 ~
FD16),最後 2 個位置對映輸出入設備(FE16、FF16)
- 輸入/輸出子系統
* 鍵盤和螢幕:有記憶體對映位址,分別為 FE16 及 FF16
- 指令集
* 共有 16 個指令,指令長度 16 位元,格式如下:
# 運算碼(Opcode):4 位元
# 運算元(Operand):12 位元,可包含 1 到 3 項資料,資料可為暫存器
位址(R-位址,4 位元)、記憶體位址(8 位元)、或數字(4 位元)

5-40
運算碼 運算元
指令格式:

4 位元 12 位元
指令類型:
運算碼 R- 位址 R- 位址 R- 位址 運算碼 記憶體位址 R- 位址
運算碼 R- 位址 R- 位址 運算碼 R- 位址 記憶體位址
運算碼 R- 位址 運算碼 R- 位址 n 0或1
運算碼

碼 運算元
指令 動作
d1 d2 d3 d4
HALT 0 停止程式執行
LOAD 1 RD MS RD ← MS (將記憶體 MS 內容載入暫存器 RD)
STORE 2 MD RS MD ← RS (將 RS 內容存入記憶體 MD)
ADDI 3 RD RS1 RS2 RD ← RS1 + RS2 (RS1 及 RS2 整數相加,結果存

5-41
入 RD)
ADDF 4 RD RS1 RS2 RD ← RS1 + RS2 (RS1 及 RS2 浮點數相加,結果
存入 RD)
MOVE 5 RD RS RD ← RS (將 RS 內容載入 RD)
NOT 6 RD RS RD ← RS (將 RS 反轉內容載入 RD)
AND 7 RD RS1 RS2 RD ← RS1 AND RS2
OR 8 RD RS1 RS2 RD ← RS1 OR RS2
XOR 9 RD RS1 RS2 RD ← RS1 XOR RS2
INC A R R←R+1
DEC B R R←R–1
ROTATE C R n 0 或 1 Rotn R (d4 = 0/1: 位元向右/左旋轉 n 個位置)
JUMP D R n 若 R0 ≠ R,則 PC = n,否則繼續

說明: d1、d2、d3、d4:第 1、2、3、4 個 16 進位數字


RS、RS1、RS2:來源(Source)暫存器之 16 進位位址
RD:目的(Destination)暫存器之 16 進位位址

5-42
MS:來源記憶體位置之 16 進位位址
MD:目的記憶體位置之 16 進位位址
n:16 進位數字

- 兩整數相加運算範例:C ← A + B
* 假設 A 及 B 分別儲存在記憶體位址 40 (M40)及 41 (M41),C 儲存在
42 (M42)位址
* 共 5 個指令:
1. 載入 M40 的內容到暫存器 R0:R0 ← M40
2. 載入 M41 的內容到 R1:R1 ← M41
3. R0 和 R1 的內容相加且結果放到 R2:R2 ← R0 + R1
4. 儲存 R2 的內容到 M42:M42 ← R2
5. 停止
* 指令編碼:

5-43
編碼 解釋
(1040)16 1: LOAD 0: R0 40: M40
(1141)16 1: LOAD 1: R1 41: M41
(3201)16 3: ADDI 2: R2 0: R0 1: R1
(2422)16 2: STORE 42: M42 2: R2
(0000)16 0: HALT

* 機器週期
# 假設:
- 5 個指令分別儲存在記憶體位址 00 ~ 04
- A = 161 (00A116),B = 254 (00FE16)
- PC 目前內容為 00 (第 1 個指令位址),初始資料如下:

5-44
資料匯流排
00 1040
R0
01 1140
R1 02 3201

R2 03 2422

IR 04 0000

流 PC 40 00A1
00
排 控制單元
控制單元 41 00FE
42
記憶體

* 5 個週期:每個週期均歷經 3 個步驟 → 擷取、解碼、執行


1. 擷取 00 位址指令到 IR,解碼並執行:將 M40 的內容載入 R0
→ 1040: LOAD R0 40,R0 = 00A1, PC = 01
2. 擷取 01 位址指令到 IR,解碼並執行:將 M41 的內容載入 R1
→ 1141: LOAD R1 41,R1 = 00FE, PC = 02
3. 擷取 02 位址指令到 IR,解碼並執行:R0 及 R1 相加,結果放在 R2
→ 3201: ADDI R2 R0 R1,R2 = 019F (A + B = 415 = 019F16),PC = 03
5-45
4. 擷取 03 位址指令到 IR,解碼並執行:將 R2 內容儲存到 M42
→ 2422: STORE 42 R2,M42 = 019F,PC = 04
5. 擷取 04 位址指令到 IR,解碼並執行:停止
→ 0000: HALT,PC = 05

00 1040 R0 00A1 00A 1 00A1 00A1


01 1141 00FE 00FE 00FE
R1
02 3201
R2 019F 019F
03 2422
04 0000 IR 1040 1141 3201 2422

PC 01 02 03 04
40 00A1
第 1 個週 第 2 個週 第 3 個週 第 4 個週
41 00FE
期結束 期結束 期結束 期結束
42 019F

5-46