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

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

建構 Beta電腦 – Fall /29/0.
第2章 微处理器 2.1 概述 /8086微处理器 微处理器 X86/Pentium微处理器
第五章 中央处理单元.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
Hardware Chen Ching-Jung
主題五 CPU Learning Lab.
組合語言與系統分析 SIC程式教學.
汇编语言与接口技术 教师:范新民.
新世代計算機概論.
第2章 Intel IA-32/Intel 64处理器 结构与原理
國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 霹靂燈 2018年11月7日 8051 單晶片實習---E0902霹靂燈.
第8章 现代微型计算机 x86系列微处理器 8.2 微型计算机体系结构 8.3 存储管理技术 8.4 多任务管理与I/O管理
電腦操作 會考電腦 浸信會永隆中學.
微处理器设计1 刘鹏 College of ISEE Zhejiang University
第三章 ARM的介紹.
第 9 章、虛擬機器 作者:陳鍾誠 旗標出版社.
汇编语言程序设计 Assembly Language Programming
第六章 Processor Unit.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
2-3 基本數位邏輯處理※.
第 2 章 算術邏輯與控制單元 (中央處理單元?).
國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 閃爍燈 2018年11月23日 8051 單晶片實習---E0901閃爍燈.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第四章 MARIE: 簡易型電腦.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
第2章 计算机指令集结构 曲冠南
第3章 IA-32指令系统 3.1 基本数据类型 3.2 IA-32的指令格式 3.3 IA-32指令的操作数寻址方式
2-1 接腳說明 2018/11/30 第2章 系統分析.
學習目標 列出Von Neumann machine的元件以及它們的功能。
計算機結構 – 概論 陳鍾誠 於金門大學.
基本的”防”黑客技术 Basic” ” Hacker Technique
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第1章 單晶片微電腦概論.
1.3 微型计算机的结构和工作原理.
用開關選擇動作狀態 單晶片微電腦控制實習 輸入埠基礎實習 國立大甲高工 電機科 2019年1月16日
理查一號 CPU - Richard CPU1 日期 : 2019/1/17.
寄存器分配 影响程序速度的因素 cpu, register, cache, memory, disk
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
第一單元 建立java 程式.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
第九章 微处理器外部结构和总线操作时序.
網路安全管理報告 緩衝區溢位攻擊 學生:吳忠祐 指導教授:梁明章.
第十章 指標.
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
第二章 電腦硬體知識 Chapter 2-電腦硬體知識.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
緩衝區溢位攻擊 學生:A 羅以豪 教授:梁明章
2019/4/29 计算机组成原理 辅导教师:陆明强.
開放電腦計劃 報告人:陳鍾誠 2011 年 8 月 20 日 台灣開源人年會 COSCUP 2011 – 中研院
數位邏輯設計與實習 Ch08實驗室實習.
虚拟机加密,是把源程序的X86指令变成自定义的伪指令,执行时内置在保护程序中的VM就会启动,读取伪指令,然后解析执行
陣列與結構.
4-1.3 CPU指令運作週期 P60 資訊科技概論--電腦硬體.
第3章 電腦的組成與架構 3-1 電腦的基本架構 3-2 個人電腦的主機.
一、簡介 電腦硬體設計:純硬體電路(hardware)及韌體電 路(firmware)兩種方式。
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
大数据搜索挖掘实验室 第五章 子程序设计 张华平 副教授 博士 Website: 大数据搜索挖掘实验室
第 4 章、組譯器 作者:陳鍾誠 旗標出版社.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
第3章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
Chapter 4 Multi-Threads (多執行緒).
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

圖 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)

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]

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

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

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

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

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

圖 2.9 CPU0 當中的狀態暫存器 SW (R12) N : 負旗標 (Negative) Z : 零旗標 (Zero) 條件旗標 保留 中斷 保留 模式 狀態暫存器 Status Word (SW) N Z C V I T M 31 -28 27 - 8 7 6 5-1 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 (控制單元) SW= 80 00 00 00 IR = 10 12 00 00 (CMP R1, R2)

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

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

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

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

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

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

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

相對定址 指令: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 的記憶體位址中。

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

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

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

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

圖 2.15 程式在CPU0中的執行過程 位址 記憶體 程式 001F0028 002F0020 0830000A 08400001 10230000 2300000C 13121000 13242000 26FFFFEC 2C000000 00000000 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=2300000C (JGT EXIT) PC=00000018 EXIT: 位址匯流排 資料匯流排 控制匯流排

圖 2.17指令提取的細部動作 001F0028 002F0020 0830000A 08400001 10230000 2300000C 13121000 13242000 26FFFFEC 2C000000 00000000 記憶體 ALU (加法運算) 暫存器 IR=2300000C (JGT EXIT) PC=00000018 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)

圖 2.18 加法指令 ADD R1, R2, R1 的執行階段動作 001F0028 002F0020 0830000A 08400001 10230000 2300000C 13121000 13242000 26FFFFEC 2C000000 00000000 記憶體 ALU 暫存器 IR=13121000 (ADD R1,R2,R1) PC=00000018 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=00000002 R1=00000001

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

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

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

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

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

表格 2.4:IA32 的指令分類表

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