You are on page 1of 141

第四章

MARIE:
一個簡單計算機的介紹
2

MARIE:一個簡單計算機的介紹

「當你想以使用工具的方式來做事
時,不要讓自己把事情變複雜了。」

—Leonardo da Vinci

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


3

4.1 緒論
在本章中我們先來看看一台非常簡單的稱為
MARlE:a Machine Architecture that is Really
Intuitive and Easy 的計算機
接著敘述Intel 與 MIPS 機器,兩個廣受採用且
分別反映出 CISC 與 RISC 設計原理的架構的
簡要概觀
目的是為了讓你瞭解計算機如何發揮功能

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


4

4.2 CPU (中央處理單元) 的基礎與組織

中央處理單元 (central
processing unit, CPU) 負
責擷取程式指令、解碼擷取到的指令、並對恰
當的數據執行應該的一序列運作
所有計算機都有一個內含兩部分的CPU:
 第一部分是數據通道 (datapath),是以匯流排聯
結而交織在一起的儲存單元 (暫存器) 與算術邏
輯單元 (用於對數據執行各種運算),其間的時
序以時脈訊號控制
 第二個部分是負責使運作依序發生並確保恰當
數據在恰當時間會處於恰當位置的控制單元
(control unit)
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
5

4.2.1 暫存器 (register)


暫存器在計算機系統中是用以儲存各種不同數
據,例如位址、程式計數器以及程式執行所需
數據的一些地方
 暫存器位於處理器中,因此其中資料可被快速
存取
 暫存器在每一時脈脈衝接受輸入且直至下個時
脈脈衝前不得作變化 (輸入於是被儲存)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


6

4.2.1 暫存器
計算機中的數據處理一般在儲存於暫存器中固
定大小的二進字組上進行
 常見的大小有 16、32 與 64 位元
暫存器的數量隨架構而異,不過一般均為2 的
次方並以 16、32 與 64 個最常見
有些暫存器被指定作「特定目的」且只存放數
據、只存放位址或只存放控制資訊;其他暫存
器較通用而可在不同情況下存放數據、位址或
控制資訊
暫存器與記憶體的定址方式不同
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
4.2.2 ALU
7

(算術邏輯單元 arithmetic logic unit )


ALU 一般具有二個數據輸入與一個數據輸出
在ALU 中執行的運作往往會影響狀態暫存器
中的位元 (依據譬如滿溢有否發生等來設定該
位元的值)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


8

4.2.3 控制單元 (control unit)


控制單元由記憶體提取指令、解碼該等指令、
確保數據在適當時間處於適當位置、告知 ALU
應使用哪些暫存器、是否發生要求服務的插斷,
並啟動恰當的 ALU 線路來執行所需運作
 使用程式計數器 (program counter) 暫存器來提取
要執行的下一道指令,以及狀態暫存器來追蹤
滿溢、進位、借位等等

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


9

4.3 匯流排 (bus)


匯流排是形成用來聯結系統中多個子系統的共
用且共通的數據傳輸通道的一組導線
任何時刻僅有一個裝置(可以是一個暫存器、
ALU、記憶體或一些其他組件) 可使用匯流排;
不過這樣的共用易於形成通訊的瓶頸
裝置經常被區分成主動 (master) 與被動 (slave)
兩類
 主動裝置是可發起動作者
 被動者是回應主動者請求的裝置

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

4.3 匯流排 (bus)


匯流排可以是連接兩個特定組件的點對點
(point-to-point) 型 (如圖 4.1a 所示) 或是連接數
個裝置彼此必須共用之的共通的通道 (common
pathway) 型,又稱為多點 (multipoint) 匯流排並
示於圖 4.1b 中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


11

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


12

4.3 匯流排 (bus)


4.2 表示典型的包括數據線、位址線、控制
圖
線與電源線的匯流排

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


13

4.3 匯流排 (bus)


 數據匯流排 (data bus) 用於傳送數據
 各控制線 (control lines) 指出哪個裝置被允許使
用匯流排以及使用的目的
 位址線 (address lines) 指出 (譬如在記憶體中的)
數據應被讀出或寫入的位置
 電源線 (power lines) 提供所需電力

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


14

4.3 匯流排 (bus)


匯流排可分為不同類型
 處理器 - 記憶體匯流排 (processor-memory buses)
是短而高速的仔細配合機器內記憶體系統,以
求盡可能提高頻寬 (指單位時間內能傳送的數據
量)且多屬特殊設計的匯流排
 I/O 匯流排 (I/O buses) 一般較處理器—記憶體匯
流排長,且可配合許多種類的不同頻寬的設備
 背板匯流排 (backplane bus) (圖4.3) 真的是做在
機器的底板上來連接處理器、I/O 設備與記憶體
(因此所有設備共用一條匯流排)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


15

4.3 匯流排 (bus)


許多計算機中具有階層式的匯流排,或是同時
有兩條匯流排 (例如一條處理器—記憶體匯流
排與一條 I/O 匯流排) 甚至更多

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


16

4.3 匯流排 (bus)


同步匯流排(synchronous buses) 具有時脈訊號,
事件只有在時脈變動時發生
 任何時脈偏斜 (clock skew) (不同位置上看到的
時脈間的漂移) 可能會造成問題,表示匯流排必
須保持越短越好,以免時脈飄移過大
非同步匯流排 (asynchronous buses) 中,控制訊
號協調各項運作,並且需要使用複雜的握手協
定 (handshaking protocol) 來確保時序
 舉例來說,要從記憶體讀出一個字組的數據:

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


17

4.3 匯流排 (bus)


1. ReqREAD:這條匯流排控制線被致動,同時數
據的記憶體位址被放到恰當的匯流排線組上。
2. ReadyDATA:這條控制線在記憶體系統已經把
所需的數據放上匯流排的一組數據線時被設定。
3. ACK:這條控制線是對方用於表示ReqREAD 或
ReadyDATA 已經被對方知悉。
裝置要使用匯流排時必須先預約它,因為同一
時間只有一個裝置可以使用匯流排
在多於一個主動裝置的系統中則需要作匯流排
仲裁 (bus arbitration):
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
18

4.3 匯流排 (bus)


 賦予各個主動裝置優先權,同時確保不具最高
優先權的設備不至於餓死 (表示永久等待下去)
 匯流排仲裁方法可分為四大類:
1. 雛菊鏈仲裁 (daisy chain arbitration):這個方法使
用了一條從最高優先權裝置逐漸向最低優先權裝
置傳遞下去的「同意授予匯流排」控制線。這個
方法簡單但不公平
2. 集中式平行仲裁 (centralized parallel arbitration):
每個裝置在匯流排中有一條請求用的控制線,一
個集中式的仲裁器選擇其中哪一個可以使用匯流
排。使用這一種仲裁方式可能會有瓶頸形成

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


19

4.3 匯流排 (bus)


3. 使用自我選擇的分散式仲裁 (distributed arbitration
using self-selection):這方法與集中式仲裁類似,
但是是由各裝置自行決定誰有最高的優先權來取
得匯流排
4. 使用碰撞偵測的分散式仲裁 (distributed arbitration
using collision detection):每個裝置都可以請求使
用匯流排。如果匯流排偵測到碰撞 (多個同時的
請求),則各裝置需要再送出請求 (乙太網路使用
這一種仲裁方式)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


20

4.4 時脈
它像是節拍器或交響樂團指揮般決定了系統中
所有事情發生的步調
CPU 執行每一道指令都需要用到特定數量的時
脈變換,因此指令執行時間往往以時脈週期數
(clock cycles) 而非多少秒來表示
大部分的機器是同步的:具有一個主控且以規
律週期滴答運行 (週而復始由 0 變 1 再變回 0)
的時脈訊號

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


21

4.4 時脈
能把時脈週期變得多短是有極限的:當時脈變
換、新數據載入暫存器,暫存器的輸出也將更
新;改變後的輸出值必須傳遞經過機器中所有
線路直到它們抵達要被儲存於其中的下一批暫
存器的輸入為止
 最小的時脈週期時間一定要至少與從各個暫存
器輸出到暫存器輸入間線路中最大的傳遞延遲
一樣大
 如果我們想縮短暫存器間的距離來縮短傳遞延
遲的話,可以在從暫存器輸出到對應的暫存器
輸入這條路徑的中間加入額外的暫存器
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
22

4.4 時脈

通常當我們提到時脈 (clock),意思指的是管控
CPU 與其他組件的系統時脈 (system clock) 或
主控時脈
 匯流排時脈 (bus clock) 通常較 CPU 時脈緩慢

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


23

4.5 輸入/輸出 (I/O) 子系統


輸入與輸出設備 (input
and output, I/O, devices)
使我們可以與計算機系統通訊
這些裝置並不直接連結至 CPU,而是由一個介
面 (interface) 來處理數據的傳輸
 CPU 經由 I/O 暫存器與這些外部裝置通訊
數據交換的方式有兩種:
 在記憶體映射 I/O (memory-mapped I/O) 中,介
面中的暫存器被定址於計算機的記憶體空間中,
因此存取記憶體與存取 I/O 設備的方式並無不同

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


24

4.5 輸入/輸出 (I/O) 子系統


 在根據指令的 I/O (instruction-based I/O) 中,
CPU 使用特殊的指令來進行輸入與輸出;雖然
這樣並不會用到記憶體空間,但是它需要特殊
的 I/O 指令
插斷在 I/O 中占有重要的角色,因為它們是通
知 CPU 已經可以進行輸入與輸出的有效方式

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


25

4.6 記憶體組織與定址
記憶體可視為位元所組成的矩陣
 每一列如同一個暫存器,其長度一般就代表機
器中可定址單元的大小
• 通常記憶體是以位元組為可定址單位 (稱byte
addressable),表示每一個位元組都有一個位址
 每一個暫存器 (更常被稱為一個記憶體位置,
momory location) 有特定的位址;記憶體位址通
常以無號整數由 0 開始往上排列
 圖4.4
• 當一個字組內含多個位元組時,最低位址的位元
組決定了整個字組的位址
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
26

圖 4.4

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


27

4.6 記憶體組織與定址
如果架構是位元組定址而指令集架構中字組大
於一個位元組,則必須考慮對齊 (alignment)
 確認 (1) 字組儲存於自然的對齊邊界上與
 (2) 存取是從該邊界開始
 有些架構允許某些指令執行非對齊的存取

記憶體由隨機存取記憶體 (random access


memory, RAM) 晶片構成
記憶體通常以長×寬(L×W) 來標註
例如,4M×8

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


28

4.6 記憶體組織與定址
 要對這個記憶體 (設為以位元組定址) 定址,則
需能夠個別指出 222 個項次
• 需要以二進數字從 0 數到(222 − 1);這需要多少個
位元?
• 通常當計算機的記憶體含有 2N 個可定址的單元,
則需N 個位元來唯一地定址每個單元

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


29

4.6 記憶體組織與定址
RAM 晶片,
主記憶體的大小一般會大於單一
因此多個這種晶片會被組成所需容量的一個整
體記憶體
 例如,所需的是32K × 8
以位元組定址的記憶體
而手上的 RAM 晶片是
2K × 8 的,則可以將 16
個這種晶片成列連接如
圖 4.5 所示

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


30

4.6 記憶體組織與定址
• 記憶體的位址需有 15 個位元,但每一晶片僅需11
條位址線
▪ 以解碼器來解碼位址中或是最左或是最右 (按:或
是任意) 的 4 個位元來判斷含有該位址的晶片
▪ 選用了哪 4 個位元來解碼以選擇晶片決定了記憶體
中的位址如何交錯 (interleaved,或稱穿插)
記憶體交錯 (memory
interleaving) 中記憶體內
含多個記憶體模組 (或稱排,banks),此時各模
組可同時作存取,有助提高整體存取速度
 排的數量與可定址項次的數量有關,而無關乎
每個項次的大小
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
31

4.6 記憶體組織與定址
 若為低序交錯 (loworder interleaved),則會以位
址中的低序位元選擇所欲的排;若為高序交錯
(high-order interleaved),則使用位址中的高序位

• 高序交錯是最直覺的方式,分派位址的方式是使
模組內包含的位元組其位址均連續
• 低序交錯記憶體將連續的記憶體位置置於不同記
憶體模組中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


32

範例 4.1

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


33

4.6 記憶體組織與定址
雖然低序交錯容許循序的記憶體位置(例如擺
放陣列或程式中的指令時)被同時存取,高序交
錯的方式似更自然。因此本書之後均假設採用
高序交錯

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


34

4.7 插斷
有關這些組件如何與處理器互動的觀念:插斷
(interrupts) 是會改變 (或插入、攪亂) 系統中正
常執行流程的那些事件
插斷可被各種原因觸發,包括:
• I/O 請求 • 頁錯誤 (將於第六章中
• 算術錯誤 (例如除以0) 詳述)
• 算術滿溢或短值 • 無效指令(往往肇因於
• 硬體錯動作 (例如記憶 指標事件)
體同位錯誤) • 其他原因
• 使用者定義的斷點 (例
如在做程式除錯時)
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
35

4.7 插斷
 對每一種插斷採取的應對 (稱為插斷處理,
interrupt handling) 相當歧異
插斷
 可以由使用者或系統來發起
 可以是可被遮蓋 (maskable) (禁止或忽略之) 或不
可被遮蓋 (nonmaskable) (具高權限因而不可被禁
止並且一定要回應的插斷) 的
 可在指令執行過程中或與指令的執行無關的
 可以是同步 (每次發生都是在程式執行到相同的
地方時) 或非同步的 (無法預期其發生者)
 在插斷處理完成後可造成程式結束或繼續執行者
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
36

4.8 MARIE

Machine Architecture that is Really Intuitive


and Easy

具有實用計算機所應具備的所有功能組件

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


37

4.8.1 架構
圖4.8 表示MARIE 的架構
 以二進制運作,數值採二的補數表示法
 內儲程式,固定的字組長度
 以字組 (非位元組)為定址的對象
 主記憶體有4K個字組的空間 (這表示位址中需要
12 個位元)
 16 位元長的數據 (字組長度為16)
 16 個位元的指令:4 個位元表示運作碼及12 個
位元表示位址
 一個16 位元的累加 (暫存) 器 (AC)
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
38

4.8.1 架構
 一個16 位元的指令暫存器 (IR)
 一個16 位元的記憶體緩衝暫存器 (MBR)
 一個12 位元的程式計數器 (PC)
 一個12 位元的記憶體位址暫存器 (MAR)
 一個8 位元的輸入暫存器
 一個8 位元的輸出暫存器

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


39

圖4.8 MARIE 的架構

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


40

4.8.2 暫存器與匯流排
MARIE 中共有 7 個暫存器,說明如下:
 AC:累加器 (accumulator),存放數值。屬通用
型暫存器 (general-purpose register),存放的是
CPU 需處理的數據。現在的計算機大部分都已
經有許多個通用型暫存器 (按:也因此多以編號
R0、R1、R2 來稱呼了)
 MAR:記憶體位址暫存器 (memory address
register),存放所要存取位置的記憶體位址
 MBR:記憶體緩衝暫存器 (memory buffer
register),存放才從記憶體讀入、或正要寫出至
記憶體的數據
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
41

4.8.2 暫存器與匯流排
 PC:程式計數器 (program counter),存放程式
中下一道要被執行的指令的位址
 IR:指令暫存器 (instruction register),存放下一
道要被執行的指令
 InREG:輸入暫存器 (input register),存放由輸
入設備傳來的數據
 OutREG:輸出暫存器 (out register),存放要傳
給輸出設備的數據

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


42

4.8.2 暫存器與匯流排
MAR、MBR、PC
與 IR 存放非常特定的資訊
並且不能用作任何上述以外的用途,例如不可
以將從記憶體取得的一個任意數值放入PC
 要存放任意的數值就一定要用 MBR 或 AC
還有一個存放能指出 ALU 發生了滿溢、算術
或邏輯運算的結果是否為 0、計算中是否產生
了進位,以及結果是否為負值等資訊的狀態
(status) 或稱旗標暫存器 (flag register)
 為了清晰起見,各圖中將不會顯示這個暫存器

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


43

4.8.2 暫存器與匯流排
MARIE
中使用的是共用匯流排的方式。每個
連接到匯流排的設備都需要有一個編號
還有一些能使執行更快速的通道:
 一條通訊路徑位於 MAR 與記憶體間
 一條聯結了 MBR 與 AC
 一條從 MBR 拉到 ALU 來容許 MBR 中的數據
能直接用於算術運算
 一對可以由 AC 經過 ALU 再回到 AC 中

圖 4.9 表示MARIE 中的數據通道

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


44

圖4.9 MARIE 中的數據通道

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


45

4.8.3 指令集架構
機器的指令集架構 (instruction
set architecture,
ISA) 指出計算機能執行的指令與每一道指令的
格式
 ISA 實質上是軟體與硬體間的介面
MARIE 中每道指令的長度均為 16 位元
 最高位的 4 個位元,位元 12 至 15,組成說明指
令運作內容的運作碼 (opcode) (因此共可有16 道
指令)
 MARIE 的指令格式示於圖 4.10 中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


46

4.8.3 指令集架構
ISAs 中的指令可分為處理數據、移動
大部分
數據與控制程式執行順序等三類
 MARIE 指令集中的指令示於表 4.2 中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


47

4.8.3 指令集架構
• Load 指令不需指出 AC 是其最終存放數據處;該
暫存器在該指令中是隱喻的
• 其他指令也以類似方式使用 AC 暫存器
• 輸入與輸出是相對繁複的動作
▪ 目前的計算機中輸出入以ASCII 形式進行
• 既然所有輸入與輸出都是以 ASCII 為之,計算機
如何知道應該視某個 I/O 值為數值或 ASCII?
▪ 答案是計算機依據使用該數值當時的環境即可得知
• 在 MARIE 中我們假設輸出入均為數字
• Halt 指令使程式的執行終止

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


48

4.8.3 指令集架構
• Skipcond 指令執行條件分支 (conditional branching)
▪ 需要檢視 AC 中的值:指令利用兩個位址位元 (設
使用兩個最靠近運作碼欄位的位址位元,位元10 與
11) 來指出測試的條件
• Jump 指令是非條件式分支 (unconditional branch),
也會改動 PC

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


49

4.8.3 指令集架構
你會喜歡用命令 Load、Add 與 Halt,還是它們
的二進形式 0001、0011 與 0111,來寫程式呢?
 希望使用指令的名稱或助憶詞 (mnemonic)
 二進形式的指令稱為機器指令 (machine
instructions)
 助憶詞指令是組合語言指令 (assembly language
instructions)
 組合語言指令與機器指令間具有一對一的關係
(按:上述敘述並不正確;一般的組譯器允許一
道組合語言指令可以對應至 0 至多道機器指令)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


50

4.8.4 暫存器傳遞表示法
每一指令看似非常簡單;然而若你檢視在組件
層級中真正發生什麼事,每一指令都包含許多
運作
 有很多「小型指令」被執行了
 這些小型指令稱為微運作 (microoperations) 並界
定可執行於暫存器中數據上的基本運作
(elementary operations)
用以描述這些微運作行為的符號表示法稱為暫
存器傳遞表示法 (register transfer notation, RTN)
或暫存器傳遞語言 (register transfer language,
RTL)
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
51

4.8.4 暫存器傳遞表示法
 Load X
MAR ← X
MBR ← M[MAR]
AC ← MBR
 Store X
MAR ← X, MBR ← AC
M[MAR] ← MBR

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


52

4.8.4 暫存器傳遞表示法
 Add X
MAR ← X
MBR ← M[MAR]
AC ← AC + MBR
 Subt X
MAR ← X
MBR ← M[MAR]
AC ← AC – MBR

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


53

4.8.4 暫存器傳遞表示法
 Input
AC ← InREG
 Output
OutREG ← AC
 Halt
不會對暫存器作動作

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


54

4.8.4 暫存器傳遞表示法
 Skipcond
If IR[11-10] = 00 then {若IR 中的位元10 與11 均為0}

If AC < 0 then PC ← PC + 1
else If IR[11-10] = 01 then { 若IR 中的位元11 = 0 且10 = 1}
If AC = 0 then PC ← PC + 1
else If IR[11-10] = 10 then {若IR 中的位元11 = 1 且10 = 0}
If AC > 0 then PC ← PC + 1
 Jump X
PC ← X

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


55

4.9 指令的處理

擷取- 解碼- 執行週期

插斷與指令週期

MARIE 的 I/O

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


56

4.9.1 擷取- 解碼- 執行週期


擷取- 解碼- 執行週期 (fetch-decode-execute
cycle) 表示計算機遵循以執行程式的一連串步

在這個過程中特定時脈週期中動作的各步驟如
下所列
 注意:步驟 1 與 2 形成擷取階段,步驟 3 形成
解碼階段,而步驟 4 則是執行階段
1. 將 PC 內容複製入 MAR 中:MAR ← PC

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


57

4.9.1 擷取- 解碼- 執行週期


2. 前往主記憶體擷取MAR 中位址處的指令,並
置入 IR;將 PC 遞增 1 (現在 PC 指向程式中
的下一道指令):
IR ← M[MAR] 且之後 PC ← PC + 1
3. 複製 IR 中右側 12 個位元進 MAR 中;同時解
碼 IR 中左側 4 個位元來判斷 opcode 的意義:
MAR ← IR[11-0] 與解碼 IR[15-12]。
4. 在指令需要時透過 MAR 中的位址前往記憶
體擷取數據、置入 MBR (以及可能AC) 中、
然後執行指令:MBR ← M[MAR] 並執行指令相
關運作 (按:至此似乎尚未包含Store 指令所
需執行的動作)
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
58

4.9.1 擷取- 解碼- 執行週期


這樣的週期示於圖
4.11 的流程圖中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


59

4.9.2 插斷與指令週期
插斷理由包括
 程式出錯 (如除以 0、算術滿溢、堆疊滿溢或試
圖存取記憶體中受保護的區域)
 硬體出錯 (包括記憶體同位錯誤或供電異常)
 I/O 完成 (發生於請求讀取磁碟與數據傳輸完成時)
 使用者插斷 (如按 Ctrl-C 或 Ctrl-Break 來停止程式)
 由作業系統設定的計時器發出的中斷 (如配置虛
擬記憶體或執行某些簿記功能時所需做的)
 共通點:它們插斷常態的擷取- 解碼- 執行週期,
指示計算機停止其手上的工作並轉而做別的事

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


60

4.9.2 插斷與指令週期
計算機處理插斷的速度對決定計算機的整體效
能具關鍵角色
 硬體插斷 (hardware interrupts) 可由系統中包括
記憶體、硬碟、鍵盤、滑鼠甚至數據機等周邊
設備產生
• 插斷的好處就在於它們不需要 CPU 持續檢視這些
設備,僅在有需求時由設備或事件主動告知 CPU
 各種軟體應用程式中也採用軟體插斷 (software
interrupts),亦稱設陷阱捕捉 (traps) 或例外 (處理)
(exceptions)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


61

4.9.2 插斷與指令週期
 計算機以插斷處理器 (interrupt handlers 或可稱
插斷處理程序)支援軟體與硬體插斷二者
 各種插斷連同相關的插斷服務程序 (interrupt
service routines, ISRs) 的相關資訊都儲存於插斷
向量表 (interrupt vector table) 中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


62

4.9.2 插斷與指令週期
CPU每完成一道指令即在擷取-解碼- 執行週期
開始時檢視是否有插斷需求發生,如圖4.12 中
所示
 一旦CPU 回應一個插斷,則需立刻處理之

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


63

4.9.2 插斷與指令週期
 上圖中「處理插斷」方
塊的細節說明於圖 4.13

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


64

4.9.2 插斷與指令週期
對非重大的插斷可利用位於旗標暫存器中的一
個遮蓋插斷位元來表示暫不偵測對應的插斷要

 此稱之為插斷遮蓋 (interrupt masking),而可被
遮蓋的插斷則稱為可遮蓋的 (maskable) 插斷
 不可遮蓋 (nonmaskable) 的插斷不可以被遮擋

組合語言提供特定指令來處理硬體與軟體插斷
 最常見的工作之一就是以軟體插斷處理 I/O

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


65

4.9.3 MARIE 的 I/O


I/O
處理是計算機系統設計與編程最大的挑戰
之一
MARIE
有兩個處理輸入與輸出的暫存器:第
一個是輸入暫存器,存放從輸入設備傳送進計
算機的數據;第二個是輸出暫存器,存放準備
要送往輸出設備的資訊
 MARIE 的輸出動作只是簡單地將數值置入
OutREG
• 該暫存器可以被輸出控制器讀取並送往恰當的輸
出設備如螢幕、印表機或磁碟等

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


66

4.9.3 MARIE 的 I/O


 在輸入方面,MARIE 這個再簡單不過的系統讓
CPU 一直等待直到字元符號進入 InREG
• 之後程式師需將 InREG 的內容複製到累加器中做
後續處理

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


67

4.10 簡單的程式
(位於主記憶體中的)數字相加,之
程式將兩個
後儲存和於記憶體中 (暫時不理會I/O)
 表4.3 列出這樣的組合語言程式與對應的機器語
言程式

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


68

4.10 簡單的程式
 程式結束時,位置 0x106 的內容成為
0000000000001100,亦即十六進 000C
 圖4.14 表示程式執行過程中各暫存器的值

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


69

圖4.14 將二個數字相加的程式執行的過程

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


70

圖4.14 將二個數字相加的程式執行的過程

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


71

4.11 組譯器 (assembler) 的討論

組譯器做什麼?

為何使用組合語言?

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


72

4.11.1 組譯器做什麼?
組譯器的工作是將 (使用助憶詞的) 組合語言程
式轉換成 (全部包含二進數字或長串的 0 與 1
的) 機器語言程式
 組譯器讀入來源檔 (source code) 並產出目的檔
(object file) (即機器碼,machine code)
 來源檔能以標籤 (label)
(一些簡單的名稱) 來辨
識或稱呼特定的記憶體
位址,以使組合語言編
程更容易
• 表 4.4 說明這個觀念
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
73

4.11.1 組譯器做什麼?
 組譯器一般會規定組合指令的格式規則,包括
如何使用標籤
• MARIE 規定標籤之後必須接一逗點
 組譯器要將程式從開頭到結尾閱讀兩次:
• 在第一次過程中組譯器建立稱為符號表 (symbol
table) 的一組對應關係
• 在第二次閱讀程式時「填入空白的格子」
▪ 符號表:

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


74

4.11.1 組譯器做什麼?
▪ 轉譯出來的指令可能還不完整,如下所示:

• 在第二回合的轉譯時,組譯器根據符號表填入位
址來得出對應的機器語言指令

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


75

4.11.1 組譯器做什麼?
 一般可使用某類組譯器指令 (assembler directive,
專門對組譯器下達而且不應被譯成機器碼的指
令) 告知組譯器以何種基底顯示數值
• 在 MARIE 組合語言
中,我們以 DEC 代
表十進形式而 HEX
代表十六進
▪ 表4.5

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


76

4.11.1 組譯器做什麼?
 註解分界符號 (comment delimiter) 是用以告知組
譯器 (或編譯器) 應忽略該行中任何在其之後的
文字的特殊字元符號
• MARIE 中的註解分界符號是向前的斜撇 (「/」)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


77

4.11.2 為何使用組合語言?
瞭解如何以組合語言編程非常有助於瞭解架構
(反之亦然)
組合語言編程在許多其他情況亦會顯得有用
 偶爾程式師一定要繞過一些存在高階語言中的
限制而直接使用組合碼,以使程式在執行時間
(與空間) 上更有效率
• 程式大部分以高階語言撰寫,另有部分以組合語
言重寫,使程式師得以善用兩種編程方式分別具
有的優勢

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


78

4.11.2 為何使用組合語言?
 如果程式整體大小或反應時間很關鍵,整個程
式都應該以組合語言編程
• 組合語言對程式師在高階語言欠缺某些指令或能
力的情形下可能真有其必要
• 一個有關反應時間與有限空間設計的完美範例可
見於嵌入式系統 (embedded systems) 中
▪ 嵌入式系統使用的軟體非常關鍵,一定要在非常特
定的反應參數下工作並且只能耗用有限儲存空間

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


79

4.12 擴充我們的指令集
4 個位元,表示我們可以有 16 個
運作碼占了
不同指令,而目前只用到 9 個
 挑選出來的新指令整理於表4.6 中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


80

4.12 擴充我們的指令集
 JnS (跳躍並儲存,jump-and-store) 指令可讓我們
呼叫程序或副程式,並於程序/副程式結束之
後返回呼叫點
 Clear (清除) 指令將累加器中的位元全清為 0
 AddI、JumpI、LoadI 與 StoreI 這些指令帶出了
另一個定址模式 (addressing mode)
• 間接定址模式 (indirect addressing mode)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


81

4.12 擴充我們的指令集
 六道新指令的暫存器傳遞表示法:

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


82

4.12 擴充我們的指令集
表4.7 整理出MARIE 完整的指令集

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


83

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


84

範例4.2 這是一個以迴圈將五個數字相加的範例:

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


85

範例 4.3 本範例說明如何使用 if/else 構造來作選擇

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


86
範例4.4 下列程式說明如何以間接定址將串列逐項讀取並
輸出。串列以 (null) 作結束

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


範例4.5 本範例說明如何以副程式將儲存於 X 的值
87

倍增

注意:程式中的行編號僅用作參考,並
不會用於MarieSim 的環境中。
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
88

4.13 解碼的討論:硬連線相對於微程式控制

控制單元實際如何運作?這些控制線是如何設
定的?
以處理器時脈驅動的控制單元負責解碼指令暫
存器中二進形式的內容並產生所有必要的控制
訊號
 控制單元對程式中每一道指令都會以一連串
「控制」步驟導引CPU 執行
• 每一控制步驟會使控制單元再產生啟動適切微運
作 (稱為控制字組,control word) 的下一組訊號

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


89

4.13 解碼的討論:硬連線相對於微程式控制

有兩種方法可用來設定各控制線
1. 硬連線控制 (hardwired control)直接將真正的機
器指令 (經由邏輯電路來) 產生各種控制訊號
• 指令中分成許多欄位,各欄位中的位元則接到驅
動各種數位邏輯組件的各輸入線
2. 微程式控制 (microprogrammed control) 使用包含
許多能執行指令中微運作的微指令的軟體

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


90

4.13.1 機器控制
暫存器傳遞語言描述的各項微運作其實就定義
了控制單元的動作
為了方便之後舉例,我們定義兩組訊號:能允
許從記憶體或一個暫存器讀取的P2、P1、P0,
與能允許寫入一個暫存器或記憶體的P5、P4、
P3
詳細表示 MARIE MBR (其位址是3) 如
圖4.15
何連接至數據通道
 使用三態 (tri-state) 元件即可避免暫存器同時
「搶著用」匯流排
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
91

圖4.15 MARIE 的MBR 至數據通道的連接

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


92

4.13.1 機器控制
 若 P1 與P0 為 high,則AND 閘輸出 P2′ P1P0,當
要選取 MBR 來讀取時就會輸出一個 1 (表示
MBR 會將內容寫至匯流排上,或稱寫至 D15 -
D0)
• 此時任何其他暫存器都因它們的三態元件收到解
碼器 AND 閘的 0 形成斷路而不能聯上匯流排
• 寫入 MBR 的方式亦同

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


93

4.13.1 機器控制
ALU
只有三種動作:加、減與清除。顧慮到指
令不牽涉 ALU 的情形,因此需要定義 ALU 的
第四種情況「什麼都不做」
 可以僅用二控制訊號 A0 與 A1
 表4.8

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


94

4.13.1 機器控制
計算機中的時脈以在恰當時間送出恰當訊號的
方式引導一序列微運作工作
 MARIE 指令需要用到的時脈數不盡相同
• 方法是將時脈接到一個同步的計數器上去,然後
計數器的輸出接到解碼器中
• 若指令僅需較少的時脈週期數,可在週期數足夠
時以計數器重置訊號 Cr 來重置計數器

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


95

4.13.1 機器控制
可以用如同圖3.31 中的計數器來作為 PC;也
要能夠直接將值存入 PC (例如在執行Jump 指
令時)
AC不但能由匯流排讀取數值,也能由 ALU 獲
得數值。MBR 也有類似的另一個數據來源
 圖4.15 中可以加上多工器,並以LALT 控制線選
擇暫存器要載入的數據是哪一個

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


96

4.13.1 機器控制
在RTN
中加上訊號的樣式來表示各項動作需以
前述方式設定相關訊號:

 注意:我們是在時脈週期 T3 開始這些動作,因
為擷取已經使用了 T0、T1 與 T2 (來複製PC 值進
MAR、複製記憶體中指定位置的值入IR 以及遞
增 PC值)
 圖4.16 以圖示說明前述相關的訊號樣式順序:

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


97

4.13.1 機器控制
• 在時脈週期 C3 中,除了P0、
P1、P2、P3 與T3 外,其他控
制訊號均為低
▪ 設定 P0、P1、P2 使 IR 可被讀
取,設定 P3 則使MAR 可被寫

▪ 這些動作仍需配合已設定的 T3
才能發生

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


98

4.13.2 硬連線控制
硬連線控制將指令暫存器中的位元直接透過基
本邏輯閘轉換為控制訊號
硬連線控制單元需具備三個部分:指令解碼器、
週期計數器與控制矩陣
 根據系統的複雜性不同,可能還會增加各種特
殊暫存器與狀態旗標
 圖4.17 表示一個簡化的控制單元

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


99

圖4.17 硬連線形式的控制單元

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

4.13.2 硬連線控制
0

• 指令解碼器
(instruction
decoder) 將輸出
線中對應於指
令暫存器中運
作碼的那一組
特定的訊號線
拉高
▪ MARIE 指令集
所使用的部分
解碼器示於圖
4.18 中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


101

4.13.2 硬連線控制
• 週期計數器 (cycle counter) 隨著系統時脈的變換產
生許多各不相同的時間訊號 T0、T1、T2、⋯、Tn
▪ 指令集中所有指令需要用到的最大微運作數量決定
這些不同時間訊號的數量 (亦即 Tn 中的 n 值)
▪ 圖4.19 表示環式計數其中一種作法

圖4.19 使用D 正反器的環式計數器


計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
102

4.13.2 硬連線控制
• 來自計數器以及指令解碼器中的訊號會在控制矩
陣 (control matrix) 中共同產出一系列的訊號
▪ 造成牽涉 ALU、暫存器以及數據通道的微運作能夠
一路執行下去
Add 指令的硬連線邏輯示於圖 4.20中
 圖中可看到每一個時脈週期如何與指令中的位
元 AND 在一起來產生恰當的訊號
• 每當時脈變換,不同的一群組合邏輯電路就會動

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

圖4.20 作 MARIE Add 指令訊號控制的組合邏輯


3

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

4.13.2 硬連線控制
4

硬連線控制的優勢是速度,劣勢是指令集與控
制邏輯直接經由難以設計與更改的複雜電路結
合在一起
 想要擴充指令集 (如之前對MARlE 所做的),則
計算機中的一些硬體部件必需作更動
 這樣做成本太高,因為不但需產製新晶片,而
且需找到原有晶片的位置來更換

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

4.13.3 微程式控制
5

控制訊號產生的方式
就是據以分辨硬連線
控制與微程式控制的
因素
 在微程式控制中,
是用指令的微碼
(microcode) 產出必
需的控制訊號
 通則性的微程式控
制單元方塊圖示於
圖4.21 中
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
10

4.13.3 微程式控制
6

所有機器指令都是作為一個特殊的可將機器指
令轉換為一序列控制訊號的程式—微程式
(microprogram)—的輸入
 微程式本質上是一個以微碼寫成且存放在通常
稱為控制儲存區 (control store) 的韌體 (ROM、
PROM 或EPROM)中的解譯器
 每一時脈週期會有一道微碼中的微指令被讀取;
哪一道 (微)指令會被讀取則取決於當時的機器
狀態以及一個像程式計數器般能指出控制儲存
區中下一道 (微)指令的微循序器 (microsequencer)
的值
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
107

4.13.3 微程式控制
 如果 MARIE 是微程式控制的,則其微指令的格
式可能如圖4.22 中所示

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

4.13.3 微程式控制
8

• 每一個微運作對應於一組特定的控制線是否會致
動電路
• 完整的 (如表4.7 中所示的) RTN 以及在擷取- 解碼
- 執行週期中的 RTN 顯示一共只用到 22 個不同
的微運作就足以實作出 MARIE 的整套指令集
▪ 不過還需要另外兩個微運作。第一個是 NOP,表示
「沒有動作」。NOP 在系統必須等訊號穩定下來、
等數據從記憶體中讀取回來,或不需做事而只填補
空缺時可派上用場
▪ 第二個也是最重要的是,我們需要能比對指令暫存
器中前 4 個位元 (IR[15-12]) 與 MicroOp2 中前4 個位
元的微運作

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


10

4.13.3 微程式控制
9

 MARIE 的每一道微運作都被指定一個二元碼,
如表4.9 所示

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


110

4.13.3 微程式控制
MARIE
的整個微程式包含不到 128 個敘述句,
因此七個位元即足以區別它們
 MARIE 的控制儲存區記憶體內含有以連續位址
存放的完整微程式
 該程式中有一跳躍表以及對應 MARIE 每一運作
的一個區塊的碼
 圖4.23

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


111

圖4.23 挑選的 MARIE 微程式中一些敘述句

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


112

4.13.3 微程式控制
• 當MARIE 初始啟動時,硬體會將微循序器設為指
向微程式的位址 0000000,運作亦即從這個進入
點開始
• 從位址 0000100 開始的包含各個「if」的敘述句
是存放那些實現各機器指令的一組組敘述句位址
的跳躍表的地方
▪ 這些「if」敘述句以分支到能設定控制訊號來實現
機器指令的碼區塊的方式來「解碼」指令

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


113

4.13.3 微程式控制
微程式控制通常較硬連線控制緩慢的原因—所
有指令在執行時需經過又一層的解譯
 不過效能並非一切;微程式具有彈性,設計上
又簡單,因此很適用於強大 (按:應說是複雜)
的指令集
• 如果需要修改指令集,則僅需更動微程式來配合:
不必改動到硬體

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


114

4.14 計算機架構的實際範例
為了允許參數傳遞,MARIE
需要有一個僅能
由序列的其中一端存取內容且稱為堆疊 (stack)
的資料結構
 堆疊是一種後進先出 (last-in-firstout) 的結構
 可以利用主記憶體的一些位置來模擬出堆疊
• 推入 (pushing,加入) 至堆疊上以及爆出 (popping,
移出) 堆疊均僅能在開口端為之
• 堆疊指標 (stack pointer) 用於追蹤數據要被推入或
爆出的位置

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


115

4.14 計算機架構的實際範例
介紹兩個現代化的計算機架構:Intel 架構 (x86
與 Pentium 家族)、MIPS 架構
 Intel 架構的 x86 家族中每一成員都是習稱 CISC
(complex instruction set computer,複雜指令集計
算機) 的機器
 Pentium 家族與 MIPS 架構卻是歸屬於 RISC
(reduced instruction set computer,精簡指令集計
算機) 的機器
 CISC 機器有很多指令,指令的長度不固定,格
式也很複雜,其中會有不少指令相當複雜,一
道指令執行起來就會牽涉多項運作
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
116

4.14 計算機架構的實際範例
• 基本的缺憾在於少許複雜的 CISC 指令就可能足
以大大拖累系統的速度
 RISC 機器的主要目的是簡化指令使它們能執行
得更快速
• 每一道指令只執行一個運作,指令長度都一樣,
只使用少數的格式,以及所有算術運算都只能使
用暫存器中的數據 (記憶體中的數據則不可在此
作為運算元)
▪ 較不複雜的架構採用少量 (但已完整) 的指令集並以
硬連線的方式使之能極快速執行
▪ 編譯器有責任 (按:也更易於) 產生這種 ISA 的高效
率程式碼
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
117

4.14.1 Intel 架構
8086 於1979 年面世並受 IBM PC 採用
 處理16 位元的數據並具有 20 位元的位址
 8086 的近親,8 位元的 8088,也用於許多個人
電腦中來降低成本
8086CPU 分成兩個部分:包含一般暫存器與
ALU 的執行單元 (execution unit),以及包含指
令貯列、區段暫存器與指令指標的匯流排介面
單元 (bus interface unit)
 具有四個稱為 AX (為主要的累加器)、BX (用於
擴充定址能力的基底暫存器)、CX (計數暫存器)
與 DX (數據暫存器)的暫存器
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
118

4.14.1 Intel 架構
• 每一個暫存器又分為兩部分:最重要的部分稱為
「高位」部分 (標記為 AH、BH、CH 與 DH),而
最不重要的部分稱為「低位」部分 (標記為 AL、
BL、CL 與 DL)
 也具有三個指標暫存器:用於表示堆疊中位移
量的堆疊指標 (SP);用於存取推入堆疊中的參
數的基底指標 (BP);與存放下一道指令的位址
(類似MARIE 的PC) 的指令指標 (IP)
 還有兩個索引暫存器:作為串列運作中的來源
指標的 SI (source index,來源索引) 暫存器,與
作為串列運作中的目的地指標的 DI (destination
index,目的地索引) 暫存器
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
119

4.14.1 Intel 架構
 還有一個狀態旗標暫存器 (status flags register),
暫存器中各個位元表示各種如滿溢、同位、進
位觸發的插斷等等的狀態
8086 組合語言程式可劃分成不同的區段
(segments),各區段都是存放特定形態資訊的特
別區域
 碼區段 (存放程式用)
 數據區段 (存放程式的數據用)
 堆疊區段 (存放程式的堆疊用)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


120

4.14.1 Intel 架構
 要從任何一個這些區段中存取資訊都必須指定
該項目從相關區段的開頭算起的位移量,因此
也需要有這些區段指標:
• 碼區段 (CS) 暫存器、數據區段 (DS) 暫存器與堆
疊區段 (SS) 暫存器
• 還有第四個稱為額外區段(ES) 暫存器,某些串列
運作用以處理記憶體定址的區段暫存器
• 位址以使用區段/位移,以 xxx:yyy 形式呈現的
定址方式定義,其中 xxx 是區段暫存器中的值而
yyy 是位移值

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


121

4.14.1 Intel 架構
1980
年Intel 推出在 8086 機器指令集中加入浮
點指令以及一個 80 位元寬的堆疊的 8087
1982 年 (可定址 16 百萬個位元組) 的 80286
1985 年 (可定址 4 個十億位元組的記憶體) 的
80386
 80386 是 32 位元的晶片,也是一般稱為 IA-32
(代表 Intel Architecture,32 位元) 這個家族中的
第一個晶片
 能夠向後相容 (backward compatible)

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


122

4.14.1 Intel 架構
 從 16 位元變成 32 位元的 80386 對暫存器的命
名規則是在名稱前加上前置的「E」( 表示
「extended」)
 原來的 AX、BX、CX 與 DX 變成了 EAX、
EBX、ECX 與 EDX。同樣的規則也用於所有其
他暫存器上
• 圖4.24 以 AX 暫存器為例說明各種存取的方法

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


123

4.14.1 Intel 架構
80486 增加了一個可大大提升效能的高速快取
(cache) 記憶體
Pentium
系列始自於擁有 32 位元暫存器與 64
位元數據匯流排並採用超純量 (superscalar) 設
計的Pentium 處理器
 超純量表示CPU 具有多個ALUs 並能在一個時
脈週期中派發出多於一道指令
Pentium Pro 加上了分支預測
Pentium
II 再加上 MMX 技術 (大部分人應同意
它並非極為成功)來處理多媒體
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
124

4.14.1 Intel 架構
Pentium
III 加入更多 (採用浮點指令的)對 3D
圖像的支援
Intel 也已配合著潮流漸漸從 CISC 而向 RISC
靠攏
Intel
CPUs 家族的第七代稱為 Intel Pentium IV
(亦稱 Pentium 4)
 這個處理器與它的前身各代在幾個方面有所不
同:
• 超管道化 (hyperpipeliming),是更寬的指令管道以
求同時處理更多指令

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


125

4.14.1 Intel 架構
• 快速的執行引擎
• 執行軌跡快取,是儲存解碼過的指令以求下次再
用到時不必再對其解碼的快取
• 400MHz 的匯流排
 Pentium IV 處理器也推出超多緒處理
(hyperthreading, HT)
• 緒 (threads) 是一個程序的環境中可各自獨立執行
的工作
• 緒與其父程序共用碼與數據,然亦有其自有的資
源,包括一個堆疊與一個指令指標
• Intel 的 HT 能夠將單一處理器模擬成兩個邏輯上
(或虛擬) 的處理器
計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹
126

4.14.1 Intel 架構
名稱的意義?
 Intel 在推出它的 Pentium 處理器前,詢問了美
國專利商標局是否可將「586」這個名稱註冊為
商標?
• 在美國,數字不能作為商標
• Intel 的商標申請被拒絕,因此更改名稱為
Pentium

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


127

4.14.1 Intel 架構
在 2001 年 Itanium 的推出開始了Intel 的第一個
64 位元晶片(IA-64)
 Itanium 使用以暫存器為基礎的程式語言並有非
常豐富的指令集
 它也採用硬體模仿器來保持對 IA-32/x86 指令集
的向後相容性
 具有四個不同層次的快取記憶體

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


128

4.14.1 Intel 架構
Intel 也在 2006 年公布它廣受歡迎的「core」微
架構
要比較 MARIE 與 Intel 兩種架構,可以先回顧
範例4.2 中MARIE 以迴圈加總五個數字的程式
 將該程式以 x86 組合語言重寫之則如範例4.6 中
所示。注意新加入了 Data 區段的指令與 Code
區段的指令

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


範例4.6 一個撰寫來執行於 Pentium 上以迴
129

圈加總五個數字的程式

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


範例4.6 一個撰寫來執行於 Pentium 上以迴
13
0

圈加總五個數字的程式

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


131

4.14.2 MIPS 架構
MIPS
家族的CPU 已是它所屬類別中最成功與
具彈性者之一
MIPS R3000、R4000、R5000、R8000 與
R10000
 MIPS 的晶片除了計算機 (例如Silicon Graphics
機器) 與各種用到計算機的玩具 (Nintendo 與
Sony 在許多它們的產品中使用MIPS CPU) 外,
主要用於嵌入式系統中

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


132

4.14.2 MIPS 架構
MIPS ISA 是 MIPS I 以至 MIPS V
 目前的 ISAs 統稱 MIPS32 (意為32 位元架構) 與
MIPS64 (意為64 位元架構)
 MIPS 屬載入/儲存式架構 (load/store
architecture)
MIPS32架構中的 CPU 具有 32 個32 位元、編
號由 r0 至 r31 的通用暫存器
 其中兩個具有特殊功用:r0 接線成其值為0,而
r31 是某些指令預設會使用到的暫存器,表示指
令中不須特別指名它

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


133

4.14.2 MIPS 架構
 其中兩個具有特殊功用:r0 接線成其值為0,而
r31 是某些指令預設會使用到的暫存器,表示指
令中不須特別指名它
 暫存器標示為 $0、$1、...、$31
• 暫存器 1 被保留作特別用途
• 暫存器 26 與27 由作業系統的核心使用
• 暫存器28、29 與30 是指標暫存器
• 其餘的暫存器可使用其編號來指名,或參考表
4.10 中它們命名的方式

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


134

4.14.2 MIPS 架構
• 另有兩個特殊用
途暫存器 HI 與
LO 用來存放某
些整數運作的結
果。當然也會有
一個 PC 暫存器,
因此共有三個特
殊用途暫存器

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


135

4.14.2 MIPS 架構
以MIPS32 組合語言撰寫範例4.2 與4.6 的程式
來作比較

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


13

4.14.2 MIPS 架構
6

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


137

4.14.2 MIPS 架構
MIPS 組譯器與執行過程模擬器 (MIPS
Assembler and Runtime Simulator, MARS) 是
Kenneth Vollmar 與 Pete Sanderson 特別為學士
班教育設計、以Java 撰寫的 MIPS R2000 與
R3000 模擬器
SPIM 是另一個廣受學生以及專業人士採用的
MIPS 模擬器

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


13

4.14.2 MIPS 架構
8

檢視範例4.2、4.6 與4.7,可看出指令都相當類

 有些組合語言有較大的指令集,讓程式師在撰
寫各種演算法時有更多變化
 不過並非一定要有大的指令集才完成得了工作

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


13

本章總結
9

瞭解基本擷取- 解碼- 執行週期以及計算機實際


上如何運作
CPU 是任何計算機中的主要組件
 內含一數據通道 (概為以匯流排連接的暫存器與
ALU) 與一負責如何進行運算與數據傳遞、並產
生時序訊號的控制單元
I/O
子系統負責將數據送入計算機並輸出數據
給使用者

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


14

本章總結
0

插斷在擷取-解碼-執行週期的開頭處被處理,
並於插斷處理程序處理完成後回到正常的擷取-
解碼-執行狀態
介紹組合語言是想要讓你更清楚瞭解機器架構
與指令和架構如何互相關聯
 使你具有在高階的C++、Java 或Ada 程式背後到
底事情是如何發生的基本瞭解

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹


141

本章總結
基於兩個原因我們介紹了 Intel 與 MIPS 的組合
語言與架構
 第一,比較各種架構是有趣的
 第二,雖然 Intel 與 MIPS的組合語言看起來和
MARIE 的組合語言不同,它們其實非常類似

計算機組織與結構 【 第四章 】 MARIE:一個簡單計算機的介紹

You might also like