Escolar Documentos
Profissional Documentos
Cultura Documentos
第 2 章、電腦的硬體結構
作者:陳鍾誠
旗標出版社
第 2 章、電腦的硬體結構
2.1 CPU0 的架構
2.4 實務案例
2.4.1 ARM 處理器的架構
2.4.2 IA32 處理器的架構
2.1 CPU0 的架構
架構: 32 位元
ALU + 控制單元 + 暫存器單元 + 輸出入單元
暫存器: R0-R15
R15 (PC) 、 R14 (LR) 、 R13 (SP) 、 R12 (SW)
指令集:
載入儲存
運算指令
跳躍指令
堆疊指令
圖 A.1 CPU0 的架構圖
暫存器單元
R0=0
R1
…
R12=SW
R13=SP
R14 = LR
ALU R15 = PC
算術邏輯單元
IR
位址線 資料線
CPU0 的指令集
載入儲存:存取記憶體
運算指令:加減乘除、移位、邏輯等運算
跳躍指令:模擬迴圈或條件判斷等控制結構
堆疊指令:堆疊的推入與取出動作
載入儲存指令
類 格式 指令 OP 意義 語法 意義
型
L 型
OP Ra Rb Cx (16 bits)
J 型
OP Cx (24 bits)
31-24 23-0
2.2 CPU0 的暫存器
暫存器:
IR : 指令暫存器
通用暫存器: R0-R15
R15 (PC) :程式計數器
R14 (LR) :連結暫存器
R13 (SP) :狀態暫存器
R12 (SW) :狀態暫存器
R0=0 : 常數 0 暫存器
R1-R11 可任意使用
輸出入暫存器
MAR : Memory Address Register ( 記憶體位址暫存器 )
MDR : Memory Data Register ( 記憶體資料暫存器 )
狀態暫存器
條件旗標 保留 中斷 保留 模式
狀態暫存器 N Z C V I T M
Status Word (SW)
31 30 29 28 27 - 8 7 6 5-1 0
M=0
使用者模式 (user mode)
在使用者模式當中,任何設定狀態暫存器 (R12) 的
動作都會被視為是非法的,這就是為了進行保護功能
的緣故。
一般程式只能處於使用者模式。
位元組順序 (Byte Ordering)
大者優先 (Big Endian)
代表值越大的位元組會在記憶體的前面 ( 低位址處 )
高位元 低位元
絕對定址
CPU0 沒有絕對定址的模式,但可以模擬。
R0 的相對定址方式 : LD R1, [R0+100]
R0 的索引定址方式: LDR R1, [R0+R2]
2.4 實務案例
2.4.1 ARM 處理器的架構
2.4.2 IA32 處理器的架構
2.4.1 ARM 處理器的架構
ARM 處理器
手機上常用的處理器,特色為相當省電
精簡指令集 (RISC) ,使用管線增進速度
只允許載入儲存指令存取記憶體
禁止運算指令直接存取記憶體
圖 2.2 ARM 處理器的架構圖
暫存器單元
R0
R1
…
R13 (SP)
R14 (LR)
Barrel Shifter
R15 (PC)
IR
ALU CPSR
SPSR
內部匯流排 Bus
控製單元 輸出入單元
位址線 資料線
ARM 的暫存器
IR :指令暫存器
R0-R15
R13 : SP (Stack Pointer)
R14 : LR (Link Register)
R15 : PC (Program Counter)
狀態暫存器
CPSR (Current Processor Status Register)
SPSR (Saved Processor Status Register)
SPSR 乃是在中斷時用來自動儲存 CPSR 的
ARM 處理器的模式
1. 使用者模式 (User)
2. 系統模式 (System)
3. 快速中斷模式 (FIQ)
4. 特權呼叫模式 (SVC)
5. 中止模式 (ABT)
6. 中斷請求模式 (IRQ)
7. 未定義模式 (Undef)
圖 2.3 ARM 各個模式下的暫存
器
使用者 / 系統模式 快速中斷 管理者模式 中止 中斷請求 未定義
User / System (FIQ) (SVC) (ABT) (IRQ) (Undef)
r0
r1
r2
可存取暫存器
r3
r4
r5
r6
r7
r8 r8_fiq
r9 r9_fiq
r10 r10_fiq
r11 r11_fiq
r12 r12_fiq
r13 (sp) r13_fiq r13_svc r13_abt r13_irq r13_undef
r14 (lr) r14_fiq r14_svc r14_abt r14_irq r14_undef
r15 (pc)
cpsr 狀態暫存器
----- sprsr_fiq spsr_svc spsr_abt spsr_irq spsr_undef
圖 2.4 ARM 快速中斷的引發過程
暫存器
使用者模式 快速中斷模式
(User) (FIQ)
r0
r1
r2
r3
r4
r5 FIQ 暫存器
r6
r7 發生例外
r8 r8_fiq
r9 r9_fiq
r15 (pc) r14_fiq (lr)
r10 r10_fiq
r11 r11_fiq cpsr spsr_fiq
r12 r12_fiq
r13 (sp) r13_fiq
r14 (lr) r14_fiq
cpsr
spsr_fiq
圖 2.5 ARM 處理器的狀態暫存
器
狀態暫存器 CPSR 、 SPSR 的結構
31 28 8 4 0
N Z CV I F T Mode
* 條件旗標 * 中斷控制位元
N = 負旗標 I = 1, 禁止中斷請求 IRQ.
Z = 零旗標 F = 1, 禁止快速中斷 FIQ.
C = 進位旗標
V = 溢位旗標 * T 位元
T = 0, 處理器處於 ARM 狀態
* 模式 (Mode) T = 1, 處理器處於 Thumb 狀態
M[4:0] 處理器的模式
圖 2.6 ARM 指令的一般格式
所有指令均為條件式執行
Cond OP Rn Rd 其他資訊 Rc
31-28 27-20 19-1615-12 11-4 3-0
ARM 的指令集
運算指令
記憶體相關指令
分支指令
其他指令
協同處理器指令
運算指令 (1)
指令 說明 意義
運算指令
MOV {cond}{S} 資料傳送 Rdoperand2
Rd,operand2
MVN{cond}{S} 負資料傳送 Rd(~operand2)
Rd,operand2
ADD{cond}{S} 加法運算 RdRn+operand2
Rd,Rn,operand2
SUB{cond}{S} 減法運算 RdRn-operand2
Rd,Rn,operand2
RSB{cond}{S} 逆向減法 Rdoperand2-Rn
Rd,Rn,operand2
ADC{cond}{S} 帶進位加法 RdRn+operand2+Carry
Rd,Rn,operand2
SBC{cond}{S} 帶進位減法 RdRn-operand2-
Rd,Rn,operand2
RSC{cond}{S} 帶進位逆向減法 (NOT)Carry
Rdoperand2-Rn-
Rc,Rn,operand2 (NOT)Carry
運算指令 (2)
記憶體相關指令
LDR{cond} Rd,addressing 載入 Word Rd[addressing]
LDR{cond}B 載入 Byte Rd[addressing]
Rd,addressing
LDR{cond}T 載入 Word Rd[addressing]
Rd,addressing ( 以使用者模式 )
LDR{cond}BT 載入 Byte Rd[addressing]
Rd,addressing ( 以使用者模式 )
LDR{cond}H 載入半字組 Rd[addressing]
Rd,addressing
LDR{cond}SB 載入 byte Rd[addressing]
Rd,addressing ( 有正負號 )
LDR{cond}SH 載入半字組 Rd[addressing]
Rd,addressing ( 有正負號 )
記憶體相關指令 (2)
STR{cond} Rd,addressing 儲存 Word [addressing] Rd
STRB{cond} Rd,addressing 儲存 Byte [addressing] Rd
STR{cond}T Rd,addressing 儲存 Word [addressing] Rd
( 以使用者模式 )
STR{cond}BT Rd,addressing 儲存 byte [addressing] Rd
( 以使用者模式 )
STR{cond}H Rd,addressing 儲存半字組 [addressing] Rd
LDM{cond}{mode} 多暫存器載入 reglist [Rn…],Rn 寫回
Rn{!},reglist
STM{cond}{mode} 多暫存器儲存 [Rn…] reglist, Rn 寫回
Rn{!},reglistRd,Rm,Rn
SWP{cond} 暫存器和記憶體字 Rd [Rn],[Rn] Rm
資料交換指令 (Rn≠Rd 或 Rm)
SWP{cond}B Rd,Rm,Rn 暫存器和記憶體位 Rd [Rn],[Rn] Rm
元組資料交換指令 (Rn≠Rd 或 Rm)
分支指令
分支指令
B{cond} label 分支指令 PClabel
BL{cond} label 帶連接的分支 LRPC-4,PC label
BX{cond} label 帶狀態的分支 PClabel, 切換處理器狀態
其他指令
其他指令
SWI{cond} immed_24 軟中斷指令 產生軟中斷,處理器進入管理模式
由 Intel 公司設計
圖 2.8 個人電腦的主機板實例
圖 2.9 個人電腦的結構圖
匯
顯示器 中央處理器 磁碟
流
快取 排
圖形顯示 橋接 / 記憶體 磁碟
控制器 控制器 記憶體 SCSI 磁碟
控制器
PCI 匯流排
IDE 磁碟
控制器 延伸匯流排介面 鍵盤
磁碟 磁碟 延伸匯流排
平行埠 串列埠
圖 2.10 IA32 的常用暫存器
通用暫存器: EAX 基底暫存器: EBP
通用暫存器: EBX 堆疊暫存器: ESP
通用暫存器: ECX 來源指標: ESI
通用暫存器: EDX 目的指標: EDI
AH AL 8+8 bits
AX 16 bits
EAX 32 bits
2.4 實務案例
2.4.1 ARM 處理器的架構
2.4.2 IA32 處理器的架構