教科書:系統程式 - 第 2 章、電腦的硬體結構

Similar documents
金門大學資訊工程系 102 學年度下學期 系統程式期中考 出題者 : 陳鍾誠 考生姓名 : 學號 : 得分 : 以下題目均按學號規則推算出指定的題數來做, 學號為奇數者做奇數題, 偶數者做偶數題, 做錯題目則該題不計分, 共 99 分,1 分奉送! 名詞解釋 : 每題 3 分, 做指定的 6 題,

1 CPU

Microsoft PowerPoint - chap2.ppt

LCD模組之應用

1 CPU interrupt INT trap CPU exception

ROP_bamboofox.key

CC213

Microsoft PowerPoint - chap12.ppt

学习MSP430单片机推荐参考书

untitled

Microsoft PowerPoint - 3C¬ì§Þ»P¥Í¬¡-chapter2

untitled

Microsoft PowerPoint - chap5.ppt

Ps22Pdf

Linux kernel exploit研究和探索

Microsoft PowerPoint - chap4.ppt

投影片 1

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

微處理機

第一組個人電腦主機

程式人雜誌

IA-32 Processor Architecture

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

2006年国家公务员招录考试行测真题(A)


開放電腦計畫 -- 計算機硬體結構

漏 洞 攻 防 EXPLOIT ATTACK & DEFENCE 栏 目 编 辑 脚 本 小 子 scriptsboy@hacker.com.cn HEAD 部 分 大 小 当 然 也 就 是 固 定 的 18200H 如 果 要 提 取 出 HEAD, 我 们 可 以 选 中 前 18200H 字

類型載入儲存運算指令跳躍指令 格式 指令 OP 說明 語法 語意 L LD 1 00 載入 word LD Ra, [Rb+Cx] Ra [Rb+ Cx] L ST 01 儲存 word ST Ra, [Rb+ Cx] Ra [ Rb+ Cx] L LDB 02 載入 byte LDB Ra, [R

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

幻灯片 1

DPJJX1.DOC

Microsoft PowerPoint - chap1 [相容模式]

Microsoft Word - Delta Controller ASCII_RTU_TC

PowerPoint 簡報

AVR单片机指令系统.PDF

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

PowerPoint Presentation

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

Microsoft PowerPoint - chapter2.ppt

Microsoft Word 定址法實驗.doc

Microsoft PowerPoint - MicroProcessor05_MSC51 HW

378高雄市都市計畫說明書

Microsoft PowerPoint - C15_LECTURE_NOTE_06

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E =====================

Microsoft PowerPoint - C15_LECTURE_NOTE_06

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

Microsoft PowerPoint - Ch2-1.ppt








1

05313BR_CH05.indd

ebook105-12

寻医问药指南(十七)

PTS7_Manual.PDF

典型自编教材

需 求 拉 动 显 著 利 润 分 配 或 向 上 游 倾 斜 二 季 度 伊 始, 从 小 盘 题 材 向 大 盘 蓝 筹 的 风 格 转 换, 似 乎 刚 刚 开 始 就 又 戛 然 而 止 我 们 认 为, 虽 然 没 有 充 分 证 据 表 明 整 体 经 济 持 续 过 热, 但 局 部

05321BR05.indd

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt


PowerPoint Presentation

《佛子行三十七颂》讲记1

(给多有拉姆)佛子行三十七颂1——7

至 尊 法 王 蒋 阳 龙 朵 加 参 尊 者 上 师 瑜 伽 皈 依 境

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

D/A DAC ( 1us) (10~20 ) DAC0832 1

目 录

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

untitled

計算機概論

<4D F736F F D20D1A7C9FACAD6B2E1B8C4D7EED6D5A3A8B4F8B1EDB8F1BCD3D2B3C2EBB0E6A3A9372E3239>

桂林市劳动和社会保障局关于

第三章 維修及管理

Microsoft Word 年度选拔硕博连读研究生的通知.doc

05321AR05.indd

一 学 校 基 本 情 况 目 录 二 部 门 预 算 报 表 ( 一 ) 收 支 总 表 ( 二 ) 收 入 总 表 ( 三 ) 支 出 总 表 ( 四 ) 财 政 拨 款 支 出 表 三 部 门 预 算 报 表 说 明 ( 一 ) 收 支 总 表 说 明 ( 二 ) 收 入 总 表 说 明 (

目 录 一 学 校 基 本 情 况 二 2016 年 预 算 报 表 ( 一 ) 中 南 大 学 收 支 预 算 总 表 ( 二 ) 中 南 大 学 收 入 预 算 表 ( 三 ) 中 南 大 学 支 出 预 算 表 ( 四 ) 中 南 大 学 财 政 拨 款 支 出 预 算 表 三 2016 年

信息参考

Microsoft Word - 15dbtb007

( CIP ) /. - :, ( ) ISBN C CIP ( 2005 ) ( 1 : ) : / : ISB

Microsoft PowerPoint - chap3.ppt

公 司 概 况 业 务 挑 战 达 美 乐 比 萨 达 美 乐 比 萨 是 全 球 最 大 的 比 萨 外 卖 品 牌, 成 立 于 1960 年, 目 前 在 全 球 67 个 国 家 拥 有 超 过 9000 家 门 店, 年 销 售 比 萨 4 亿 张 以 上 1990 年, 韩 国 第 一

第一章

HighPoint产品的FAQ手册


1

Microsoft Word 箕æ−¥ï¼‹å®ı稿;

98年度即測即評學科測試與即測即評即發證技術士技能檢定簡章

PowerPoint 簡報

電腦簡介


第五章 重叠、流水和现代处理器技术

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

浙江大学本科论文模板

Transcription:

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

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

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

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

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

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

電腦的基本結構 電腦的五大組成元件 Computer = CPU + BUS + Memory + Input + Output CPU ( 處理器 ) Memory ( 記憶體 ) Bus ( 匯流排 ) Input ( 輸入 ) Output ( 輸出 )

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

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

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

CPU0 的指令編碼表 運算指令

CPU0 的指令編碼表 跳躍指令

CPU0 的指令編碼表 堆疊指令

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

2.3 CPU0 的運作原理 移動指令 : 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]

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

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

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

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

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

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

比較指令 條件旗標的 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 旗標決定是否進行跳躍

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

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

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

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

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

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

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

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

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

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

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

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

三大階段 : 提取 解碼 執行

圖 2.15 程式在 CPU0 中的執行過程 位址 記憶體 程式 ALU ( 加法運算 ) IR=2300000C (JGT EXIT) 暫存器 PC=00000018 0000 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028 002C 001F0028 002F0020 0830000A 08400001 10230000 2300000C 13121000 13242000 26FFFFEC 2C000000 00000000 00000000 FOR: EXIT: I: SUM: 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 WORD 0 WORD 0 位址匯流排資料匯流排控制匯流排

圖 2.17 指令提取的細部動作 指令提取階段 位址 記憶體 程式 (1) CPU 將 PC 傳到位址匯流排 (2) 設定控制線, 請求讀取位於 PC 的記憶體 (3) 記憶體將指令傳到資料匯流排 (4) CPU 取得指令碼, 放入 IR 暫存器中 ALU ( 加法運算 ) IR=2300000C (JGT EXIT) 暫存器 PC=00000018 (1) 0000 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028 002C 001F0028 002F0020 0830000A 08400001 10230000 2300000C 13121000 13242000 26FFFFEC 2C000000 00000000 00000000 (3) FOR: EXIT: I: SUM: 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 WORD 0 WORD 0 (4) (2) 位址匯流排資料匯流排控制匯流排

圖 2.18 加法指令 ADD R1, R2, R1 的執行階段動作 指令執行階段 位址 記憶體 程式 ALU IR=13121000 (ADD R1,R2,R1) 暫存器 R1=00000001 R2=00000002 PC=00000018 0000 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028 002C 001F0028 002F0020 0830000A 08400001 10230000 2300000C 13121000 13242000 26FFFFEC 2C000000 00000000 00000000 FOR: EXIT: I: SUM: 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 WORD 0 WORD 0 位址匯流排資料匯流排控制匯流排

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

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

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

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

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

表格 2.4:IA32 的指令分類表

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