Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 2 章、電腦的硬體結構 作者:陳鍾誠.

Similar presentations


Presentation on theme: "第 2 章、電腦的硬體結構 作者:陳鍾誠."— Presentation transcript:

1 第 2 章、電腦的硬體結構 作者:陳鍾誠

2 第 2 章、電腦的硬體結構 2.1 CPU0 處理器 2.2 CPU0 的指令集 2.3 CPU0 的運作原理 2.4 CPU0 的程式執行
2.5 實務案例:IA32 處理器

3 2.1 CPU0 處理器 CPU0 是筆者所設計的一個簡易的 32 位元處理器, 主要用來說明系統程式的運作原理。
商業上的處理器通常很複雜, 除了考慮成本與速度 之外, 有時還會考慮相容性的問題, 因此並不容易理 解。

4 圖 2.1 CPU0 的架構圖 位址線 資料線 暫存器單元 R0=0 R12=SW IR ALU 算術邏輯單元 控制單元 內部匯流排 Bus
R14 = LR 輸出入單元 MDR MAR R15 = PC R13=SP R1

5 CPU0 的結構 CPU0 = ALU + 暫存器 + 控制單元 ALU 控制單元 (Control Unit)
採用二補數的方式進行整數運算。 具有加、減、乘、除、邏輯運算與旋轉移位等功能。 ALU 可被想像成是 CPU 當中的小型處理器。 控制單元 (Control Unit) 根據IR當中的運算碼決定 ALU 的運算類型。 控制資料的傳遞方向。 根據狀態暫存器 SW 的內容,決定是否要跳躍。

6 CPU0 的暫存器 R0 R1-R15 唯讀暫存器。R0的值永遠都是常數零。 15 個可存取暫存器
R12:狀態暫存器 (Status Word, SW) R13:堆疊暫存器 (Stack Pointer Register, SP) R14:連結暫存器 (Link Register, LR) R15:程式計數器 (Program Counter, PC)

7 電腦的基本結構 電腦的五大組成元件 Computer = CPU + BUS + Memory + Input + Output

8 圖 2.2馮紐曼電腦的結構 處理器 (CPU) 暫存器 ALU 算術邏輯單元 記憶體 Control Unit 控制單元 內部匯流排 Bus
輸入裝置 輸出裝置 控制匯流排 資料匯流排 位址匯流排 輸出入 控制器 ALU 算術邏輯單元 Control Unit 控制單元 暫存器 R0 PC SW IR 內部匯流排 Bus RK 輸出入單元 處理器 (CPU)

9 2.2 CPU0 的指令集 包含四大類的指令 載入儲存 : LD, ST, …
運算指令 : ADD, SUB, XOR, SHL, ROL, … 跳躍指令 : JMP, JGT, JGE, … 堆疊指令 : PUSH, POP, …

10 CPU0 的指令編碼表 – 載入儲存指令

11 CPU0 的指令編碼表 – 運算指令

12 CPU0 的指令編碼表 – 跳躍指令

13 CPU0 的指令編碼表 – 堆疊指令

14 圖 2.3 CPU0的指令格式 A 型 L 型 J 型 OP Cx (24 bits) Ra Rb Rc Cx (16 bits)
31-24 23-20 19-16 23-0 11-0 15-12 15-0 Cx (12 bits)

15 2.3 CPU0 的運作原理 比較指令: CMP R1, R2 跳躍指令: JMP [0x30] 條件跳躍: JLE [0x30]
移動指令 : MOV R1, R2 加法指令 : ADD R1, R2, R3 減法指令 : SUB R1, R2, R3 邏輯運算 : XOR R1, R2, R3 移位指令:SHL R1, R2, 4 比較指令: CMP R1, R2 跳躍指令: JMP [0x30] 條件跳躍: JLE [0x30] 載入指令: LD R1, [0x28] 儲存指令: ST R1, [0x32]

16 圖 2.4 移動指令MOV R1, R2 的執行過程 暫存器 ALU (無運算) Control Unit (控制單元)
IR= (MOV R1, R2) 暫存器

17 圖 2.5加法指令ADD R1, R2, R3的執行過程 暫存器 ALU (加法運算) Control Unit (控制單元)
IR= (ADD R1, R2, R3) R3= 暫存器

18 圖 2.6減法指令SUB R1, R2, R3 的執行過程 暫存器 ALU (減法運算) Control Unit (控制單元)
IR= (SUB R1, R2, R3) R3=

19 圖 2.7 邏輯運算 XOR R1, R2, R3 的執行過程 暫存器 ALU (XOR 運算) Control Unit (控制單元)
R2=000000F4 IR=1A123000 (XOR R1, R2, R3) R3=000000B5 R2 (二進位) = * R1 (二進位) = * R3 (二進位) = *

20 圖 2.8 移位運算 SHL R1, R2, 4 的執行過程 暫存器 ALU (SHL 運算) Control Unit (控制單元)
IR=1E120004 (SHL R1, R2, 4) R2= 暫存器

21 圖 2.9 CPU0 當中的狀態暫存器 SW (R12) N : 負旗標 (Negative) Z : 零旗標 (Zero)
條件旗標 保留 中斷 保留 模式 狀態暫存器 Status Word (SW) N Z C V I T M 27 - 8 7 6 5-1 N : 負旗標 (Negative) Z : 零旗標 (Zero) C : 進位旗標 (Carry) V : 溢位旗標 (Overflow) I : 中斷位元 (Interrupt) T : 軟體中斷位元 (Trap) M : 處理器模式 (Mode) M=0 : 使用者模式 M=1 : 特權模式

22 比較指令 條件旗標的 N、Z 旗標值, 可以用來代表比較結果, 當執 行 CMP Ra, Rb 動作後, 可能會有下列三種情形。
1. 若 Ra > Rb, 則 N=0, Z=0。 2. 若 Ra < Rb, 則 N=1, Z=0。 3. 若 Ra = Rb, 則 N=0, Z=1。 如此, 用來進行條件跳躍的 JGT、JGE、JLT、JLE、 JEQ、JNE 等指令, 就可以根據 N、Z 旗標決定是否進 行跳躍。

23 圖 2.10 比較指令CMP R1, R2 的執行過程 ALU 暫存器 (減法運算) Control Unit (控制單元)
SW= IR = (CMP R1, R2)

24 使用 LD 指令進行跳躍的動作

25 圖 2.11 跳躍指令JMP [0x30] 的執行過程 + 記憶體 PC=0028 26 00 00 30 PC=005C ALU
(加法運算) 暫存器 IR = (JMP [0x30]) + PC = C C 新的 PC 值 PC=002C

26 圖 2.12 條件式跳躍指令JLE [0x30] 的執行過程 + 記憶體 24 00 00 30 ALU (加法運算) 暫存器
IR = (JLE [0x30]) + PC = C C 新的 PC 值 SW = PC=0028 PC=005C PC=002C

27 圖 2.13載入指令LD R1, [0x28] 的執行過程 ALU Control Unit (控制單元) 暫存器 記憶體 0028
R1=0F 0A C0 25 記憶體 0028 0F 0A C0 25 LD R1, [0x28] IR= (LD R1, [0x28])

28 圖 2.14 儲存指令ST R1, [0x32] 的執行過程 ALU Control Unit (控制單元) 記憶體 0032
R1=0F 0A C0 25 記憶體 0032 0F 0A C0 25 ST R1, [0x32] IR= (ST R1, [0x32]) 暫存器

29 定址模式 CPU0 的定址模式可分為三種 立即定址: LDI 相對定址: LD、ST、LDB、STB
索引定址: LDR、STR、LBR、SBR

30 立即定址 格式:LDI Ra, Rb+Cx 範例1: 範例2: LDI R1, R2+100 說明: LDI R1, R0+100
將 R 的放入 R1,相當於 R1=R2+100 範例2: LDI R1, R0+100 R1=R0+100=100,可以簡寫為LDI R1, 100

31 相對定址 指令:LD, ST, LDB, STB 範例1: 範例2: LD R1, [R2+100] 說明: ST R1, [R2+100]
R1 = [R2+100], 取出記憶體位址 R2+100 的內容,放入 R1 當中。 範例2: ST R1, [R2+100] 將 R1 的內容存入 R2+100 的記憶體位址中。

32 索引定址 指令:LDR, STR, LBR, SBR 範例 1 LDR R1, [R2+R3]

33 絕對定址 說明: CPU0 中欲使用絕對定址法,可用 R0 作為基底 直接存取記憶體絕對位址內容的方法 範例:LD R1, [100]
範例: LD R1, [R0+100] 因為 R0 暫存器永遠為 0,因此上述指令相當於 LD R1, [100]。

34 2.4 CPU0 的程式執行 在整個程式的執行過程中, 指令會一個接著一個被 取出後執行, 直到出現跳躍指令為止。
一個指令的執行可分為三個階段 1. 提取 2. 解碼 3. 執行

35 三大階段:提取、解碼、執行

36 圖 2.15 程式在CPU0中的執行過程 位址 記憶體 程式 001F0028 002F0020 0830000A 08400001
C 26FFFFEC 2C000000 LD R1, SUM LD R2, I LDI R3, 10 LDI R4, 1 CMP R2, R3 JGT EXIT ADD R1, R2, R1 ADD R2, R4, R2 JMP FOR RET RESW 1 WORD 0 0000 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028 002C ALU (加法運算) 暫存器 FOR: IR= C (JGT EXIT) PC= EXIT: 位址匯流排 資料匯流排 控制匯流排

37 圖 2.17指令提取的細部動作 001F0028 002F0020 A C 26FFFFEC 2C000000 記憶體 ALU (加法運算) 暫存器 IR= C (JGT EXIT) PC= 0000 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028 002C 位址 LD R1, SUM LD R2, I LDI R3, 10 LDI R4, 1 CMP R2, R3 JGT EXIT ADD R1, R2, R1 ADD R2, R4, R2 JMP FOR RET RESW 1 WORD 0 程式 FOR: EXIT: 位址匯流排 資料匯流排 控制匯流排 (1) (2) CPU 將 PC 傳到位址匯流排。 設定控制線,請求讀取位於 PC 的記憶體。 記憶體將指令傳到資料匯流排。 CPU 取得指令碼,放入 IR 暫存器中。 指令提取階段 (3) (4)

38 圖 2.18 加法指令 ADD R1, R2, R1 的執行階段動作 001F0028 002F0020 0830000A 08400001
C 26FFFFEC 2C000000 記憶體 ALU 暫存器 IR= (ADD R1,R2,R1) PC= 0000 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028 002C 位址 LD R1, SUM LD R2, I LDI R3, 10 LDI R4, 1 CMP R2, R3 JGT EXIT ADD R1, R2, R1 ADD R2, R4, R2 JMP FOR RET RESW 1 WORD 0 程式 FOR: EXIT: 位址匯流排 資料匯流排 控制匯流排 (1) (2) 指令執行階段 (3) (4) R2= R1=

39 2.5 實務案例:IA32 處理器 IBM PC個人電腦所用的處理器 Intel 公司所設計的處理器 x86 系列處理器的成員

40 圖 2.19 個人電腦的結構圖 圖形顯示 控制器 顯示器 橋接/記憶體 控制器 中央處理器 快取 IDE磁碟 控制器 記憶體
SCSI磁碟 控制器 匯流排 延伸匯流排介面 鍵盤 平行埠 串列埠 磁碟 PCI匯流排 延伸匯流排

41 圖 2.20 IA32 的常用暫存器 通用暫存器:EAX 通用暫存器: EBX 通用暫存器: ECX 通用暫存器: EDX
基底暫存器:EBP 堆疊暫存器:ESP 來源指標:ESI 目的指標:EDI 狀態暫存器: EFLAGS 程式計數器:EIP 程式段:CS 堆疊段: SS 資料段: DS 延伸段: FS 延伸段: ES 延伸段: GS

42 圖 2.21 IA32 的 EAX 暫存器 EAX 32 bits AX AH AL 16 bits 8+8 bits

43 IA32 的指令格式 指令的參數通常可以是暫存器或記憶體,具有多種 組合形式

44 表格 2.4:IA32 的指令分類表

45 習題 請畫出馮紐曼電腦的基本架構圖。 請說明暫存器在電腦中的用途? 請說明控制單元在電腦中的用途? 請說明ALU在電腦中的用途?
請問CPU0有哪些暫存器?並說明 請問CPU0 的指令可分為哪幾類?並且以範例說明每一類指令的功 能? 請問CPU0 當中有哪些定址方式,並以範例加以說明? 請說明 CPU0 程式的執行原理,並說明指令暫存器與程式計數器在程 式執行時的作用? 請畫出 ADD R5, R6, R1 指令的資料流向圖,並說明該指令的運作方 法。 請畫出 LD R5, [480] 指令的資料流向圖,並說明該指令的運作方法。 請簡要說明 IA32 處理器的特性?


Download ppt "第 2 章、電腦的硬體結構 作者:陳鍾誠."

Similar presentations


Ads by Google