导图社区 组成原理
包含最新考研408组成原理全部知识点,包括存储系统、指令系统、中央处理器、总线、输入输出系统,图片均为手绘可通过平板修改。
编辑于2023-01-14 14:31:06 云南计算机组成原理
1. 计算机系统概述
1. /*计算机发展历程
2. 计算机层次结构
系统的组成
硬件系统
软件系统
硬件基本组成
早期的冯诺依曼机
冯诺依曼提出了“存储程序”的概念
特点
1. 由运算器,存储器,控制器,输入 设备和输出设备五大部件构成
2. 数据存在存储器,可按地址寻址
3. 数据用二进制位表示
4. 指令由操作码和地址码组成
5. 指令顺序存放
6. 以运算器为核心
现代计算机
以存储器为中心
功能部件
输入设备
鼠标键盘扫描仪等
输出设备
显示器打印机等
I/O设备
存储器
主存
CPU能直接访问
辅存
CPU无法直接访问,用来扩大空间
MAR
通常与PC长度相等
MDR
与存储字长相等
现代通常放在CPU中 除了这两还有cache
存储器由存储单元构成
存储元件(存放0/1)
存储字
=MDR
存储字长(通常为字节的偶数倍)
外设
运算器
核心:ALU(算术逻辑单元)
ACC(累加器)
MQ(乘商寄存器)
X(操作数寄存器)
必备
其他
IX(变址寄存器)BR(基址寄存器)等
通用寄存器
PSW(程序状态寄存器/标志寄存器),用来存放标志信息,如进位之类的
控制器
PC(程序计数器)用来存放指令地址,可以自动+1
IR(指令寄存器)内容来自MDR,操作码给CU,地址码给MDR
CU(控制单元)
主机
计算机软件的分类
系统软件
数据库管理系统(DBMS),操作系统(OS),语言处理程序,分布式软件系统,网络软件系统,标准库系统,服务性程序等。
应用软件
数据库系统(DBS),计算类程序等
语言分类
机器语言
汇编语言
高级语言
计算机的工作过程
源程序到可执行文件(exe)
预处理->编译->汇编->链接
指令执行过程
取指令
分析指令
执行指令
详见第五章
计算机层级结构
虚拟机器M4 高级语言机器
编译程序翻译成汇编语言
虚拟机器M3 汇编语言机器
汇编程序翻译成机器语言
虚拟机器M2 操作系统机器
机器语言解释操作系统
要靠软件/裸机
传统机器M1 机器语言机器
微程序解释机器指令
微程序机器M0 微指令系统
硬件直接执行微指令
主要靠硬件/虚拟机
下层是上层的基础 上层是下层的扩展
3. 计算机性能指标
字长解析
存储字长
一个存储单元存放的二进制代码的长度(字节长度的整数倍)
=
MDR
数据总线宽度
指令字长
一条指令包含的二进制代码的位数
=
IR
与最长的指令长度相等
地址长度
能够寻址的范围
=
PC
MAR
机器字长
字长越长,精度越高
能一次性直接处理的二进制的数据位数
=
内部寄存器长度
ALU
数据总线宽度
数据通路带宽
数据总线一次所能并行传输信息的位数
主存容量
运算速度
吞吐量
单位时间内处理请求的数量
响应时间
主频与时钟频率
CPI(执行一条指令的周期数)
Clock cycle Per Instruction
CPU执行时间
=CPU时钟周期数/主频=(指令条数*CPI)/主频
IPS(每秒执行多少条指令)
=主频/平均CPI
MIPS(每秒执行多少百万条指令)
=指令条数/(执行时间E6)=主频/(CPI E6)
MFLOPS(每秒执行百万条浮点运算)
标志科学计算机系统性能
M10^6、G10^9、T10^12、P10^15、E10^18、Z10^21
2. 数据的表示与运算 第二章即是考点也是难点
1. 数制和编码
记数法
基数r:用到的不同数码的个数,10进制基数为10
位权:第i位的位权是
数值可表示为:
十六进制:5.8=5×16^0+6×16^(-1)=5.5
进制转换
十进制转换其他:位权展开法
二进制
2^8=256 2^16=65536 2^15=32768
二进制对应十进制
1010 1011 1100 1101 1110 1111 A B C D E F
其他转换为十进制
基数取余法
基数取整法
真值和机器数
真值:实际值
机器数:符号数字化的数
字符与字符串
ASCII码
7位,可表示128种,1位作奇偶校验
0-31:通信控制字符;32:空格SP 32-126:可印刷字符;127:DEL。
PS:0(011 0000)-9(011 1001) 可看作去掉高位的8421码
汉字编码
输入编码
就是输入法输入的
汉字内码
国标码=(区位码)16+2020H
为了与控制码区分
汉字内码=(区位码)16+8080H
为了与ASCII码区分
汉字字形码
用来表示出汉字的图形
2. 定点数的表示和运算
定点数的表示
无符号数和有符号数
机器数定点
定点整数和定点小数
原反补移
原码
反码
符号位不变
补码
移码
真值+偏置值
注
补码
-128的补码为1000 0000是人为规定的
移码
-128的移码为0000 0000
[x]补←→[-x]补也是取反+1
这里是全部取反
定点数的运算
定点数的移位运算
算数移位
正数
全部添0
负数
原码添0;反码添1;补码左移添0,右移添1
逻辑移位
通通添0
循环移位
带进位标志
不带进位标志
原码加减运算
原码加法直接加
减法可以利用草稿纸上凑FFFH,让它够减
补码加减运算
[A+B]补=[A]补+[B]补
[A-B]补=[A]补+[-B]补
符号扩展
正数
添0
负数
小数后添0
整数前添1
溢出判断
一位符号位
可检测(用三个符号位判断)
有符号
加法
OF=A_sf B_sf S_sf+A_sf B_sf S_sf
减法
OF=A_sf B_sf S_sf+A_sf B_sf S_sf
双符号位
可检测可判断(符号位用两位表示)
00正数(无) S_sf1 S_sf2= 01正溢 10负溢 11负数(无)
一符号和进位
可检测(符号位的进位和最高数据位的进位)
手算判别
16进制计算,向前借一位为16
正数加正数变成负数,负数减正数变成正数
定点数乘法
原码一位乘法 MQ最低位=1,(ACC)+[ℓxℓ]原 MQ最低位=O,(ACC)+0
符号单独判断
算术移位实现
补码一位乘法 辅助位-MQ最低位=1,(ACC)+[x]补 辅助位-MQ最低位=0,(ACC)+0 辅助位-MQ最低位=-1,(ACC)+[-x]补
符号参与运算
根据高低位判断:进行算术移位 或+[x]补或[-x]补
补码的累加次 数多一次
溢出判断
n位乘n位,若用2n位保存,乘积则不会溢出
n位乘n位用2N位保存中间,结果最后截取 末尾n位作为最终的乘积,可能会溢出
手算溢出
代入十进制计算乘法结果,判断该结果是否超出 了n位所能表示的范围,若超出则溢出
机器溢出判断
两个有符号补码乘法:n位乘n位,2n位保存 中间结果。仅当前n+1位全为0或全为1时不溢出
定点数除法
原码除法(不恢复余数法)
补码除法(加减交替法)
原码若余数为负 最后要多加一次
补码加/减运算
整数/小数
例子
有符号
X=-8,Y=7 X_补=1000,Y_补=0111 X+Y=1000+(0111+0)=1111B=-1D(✓) X-Y=1000+(1000+1)=10001=1D(×) 溢出OF=1
无符号
X=3,Y=4 X=0011,Y=0100 X+Y=0011+0100=0111B=7D(✓) X-Y=0011+(1011+1)=1111=15D(×) 借位CF=1
标志位
OF
含义:有符号数的加减运算是否发生了溢出,OF=1时说明发生了溢出
硬件的计算方法:OF=最高位产生的进位⊕次高位产生的进位
SF
含义:有符号数加减运算结果的正负性,SF=0表示运算结果为正数,SF=1表示运算结果为负数
硬件的计算方法:SF=结果最高位
仅对有符号数加减法有意义
ZF
含义:表示运算结果是否为0,ZF=1表示运算结果为0,ZF=0表示运算结果非0
硬件的计算方法:两个数的运算结果为n bit,只要n biy全为0,ZF=1
CF
含义:进位/借位标志表示无符号数的加减法是否发生了进位或借位。当CF=1时,说明无符号数的加减运算发生了进位或借位,也即发生了溢出
硬件的计算方法: CF=最高位产生的进位⊕sub(sub=1表示减法,sub=0表示加法)
仅对无符号数加减法有意义
类型转换
有符号数->无符号数
不发生变化(改变解析方式,负数连同符号一起复制)
不同字长类型转换
长->短
高位截断,保留低位
短->长
按照符号扩展规则进行符号扩展
数据的存储方式
大端存储,小端存储
LSB(MSB)最低(高)有效字节
字节为单位
int i = -2;
指令中的操作数存放也会使用到大端和小端
按边界对齐存储
提高了存取速度但是浪费存储空间
原则:变量起始地址能够被自身的长度整除
不按边界对齐存储
与上面相反
3. 浮点数的表示和运算
浮点数的表示
E阶码
浮点数的表示范围及小数点的实际位置
M尾数
反映精度
规格化浮点数
左规
尾数左移一位,阶码减一
右归
尾数右移一位,阶码加一
双符号位判断
IEEE754标准
短浮点数float
S数符1
E阶码8(1~254)
M尾数23
偏置值127(2^8-1)
float f = 4.5;
0100 0000 1001 0000……
长浮点数double
S数符1
E阶码11
M尾数52
偏置值1023(2^11-1)
特征
1.尾数用采取隐藏策略的原码表示
2.阶码用移码表示,方便比较大小
真值的对应关系
E=0,M=0
值为0
E=0,M≠0
非规格化数
1≤E≤254
E=255,M≠0
真值"NAN"(非数值)
E=255,M=0
真值为正无穷或者负无穷
浮点数加减
1. 对阶
小阶向大阶看齐
右规
2. 尾数求和
按定点数加减(非IEEE754标准,尾数都是0.M存储) 尾数使用双符号位定点小数按照定点数加减法运算
3. 规格化
根据双符号位判断溢出,再进行尾数规格化 补码尾数应当满足1/r≤|M|≤1(r为基数)
右规
4. 舍入
"0"舍"1"入
舍去1时,又在末尾+1
恒置"1"
舍去1时,将末尾置1
5. 溢出判断
尾数出现01.xxx或者10.xx并不 代表溢出,可以右归来解决
阶码溢出才是真的溢出
浮点数类型转换
int->float可能损失精度
float/double->int可能溢出也可能影响精度
表示精度
浮点型
float 23+1 double 25+1 long double 64+1
整型
short 15 int 31 unsigned int 32 long 63
4. 算数逻辑单元(ALU)
基本功能包括加减乘除和逻辑运算,以及移位求补等
一位全加器
串行加法器
串行只有一个全加器,逐位送回寄存器
并行加法器
串行进位(波形进位)
进位信号逐级行成
并行进位(先行进位)
进位信号同时形成
分组并行
单级先行
组内并行,组件并行
多级先行
组内并行,组间并行
ALU的功能和结构
带标志加法器
生成相应的标志信息
一定使用多级先行
算术逻辑单元
一种功能性较强的组合逻辑电路
核心是带标志加法器
补码的加减运算部件
3. 存储系统
1. 存储器概述
存储器分类
按作用
1.主存储器(内存)
2.辅助存储器(外存)
3.高速缓冲存储器(cache)
按存储介质
1.磁表面(磁带瓷盘)
2.磁芯
3.半导体
4.光存储器(光盘)
按存储方式
1.RAM
2.ROM
3.串行访问(需要按物理位置先后顺序寻址) 顺序存储存储器(SAM):如磁带 直接存储存储器(DAM):如磁盘,光盘
按信息可保存
1.易失性存储器
2.非易失性存储器
性能指标
1.存储容量
2.单位成本
3.存储速度:数据传输率=数据宽度/存储周期; 存取时间(Ta),存取周期(Tm),主存带宽(Bm)
PS:Tm=Ta+恢复时间
2. 层次结构
核心:CPU
寄存器
cache
主存
磁盘
磁带,光盘
cache,主存与CPU直接连接,其余想交换信息则要通过这两
主存与cache通过硬件(透明)
3. 半导体存储器 均支持随机存储
RAM
SRAM(Static)
双稳态触发器记忆信息,不需要刷新
用作cache
特点:
集成度低、价格高、功耗大、速度快
非破怪性读出
DRAM(Dynamic)
栅极电容来存储信息 需要刷新,用作主存
刷新方法
集中
长死时间
|-----W/R-----|--刷--| …
分散
无死时间
|W/R|刷|W/R|刷|…
异步
短死时间
|--W/R--|刷|--W/R--|刷|…
按行刷新 透明
刷新周期
通常2ms
特点
集成度高、价位低、容量大、功耗低
破坏性读出
地址复用技术
地址线减半
片选线翻倍(行通选和列通选)
内部结构
1.存储体
2.地址译码器
3.I/O控制电路
4.片选控制信号
5.读写控制信号(一根或两根)
存储器的读写周期
RAM读周期
RAM写周期
ROM
特点
结构简单,位密度高,非易失性,可靠性高
类型
掩模式(Mask)MROM
生产写,后不能修改
一次性可编程(Programmable)PROM
允许专门设备写入,写后不能更改
可擦除可编程EPROM (ErasableProgrammble)
用户写入,多次修改
可改写,但次数有限且慢,不能作为RAM
闪速存储器 (FalshMemory)
不加电可长期保存信息,且快速擦写和重写
固态硬盘SSD
基于闪存,由控制单元和falsh组成
主存储器的基本组成
存储元---->存储单元---->存储体
4. 主存与CPU的连接
连接原理:数据总线,地址总线(决定最大内存空间),控制总线
扩展
位扩展(宽度)
地址线、片选线、读写线并联
数据端分别引出
同时工作有效
字扩展(长度)
地址线、数据线、读写线并联
片选信号译码
可以不同时工作
字位扩展
同时扩充字和位
片选
线选法
线路简单但是很浪费地址资源
n根地址线->n个选片信号
译码片选法
例:74L138-三个使能端,3个输入,8个输出
n根地址线->2^n个选片信号
存储器和CPU的连接
1.合理选择芯片
2.地址线连接
3.数据线连接
4.I/O线连接
5.片选线
包含:数据线、地址线、片选线(CS)、读写线(1~2)
地址线:存储芯片的地址线位数 片选线:一个存储芯片有一根
地址线复用:地址线/2(与片选性无关)
5. 双端口RAM和多模块存储器
双端口RAM
分别具有两组相互独立的地址线、数据线和读写控制线
允许两个独立的控制器同时访问
发生错误的情况:
1.同时写(写入错误)
2.写时读(读出错误)
解决方法:添加忙(BUSY非)信号,为0时暂时关闭一个访问
多模块存储器
单体多字存储器
一次并行读多个字(一个存储单元)
对于有些数据存放在不同存储单元(非对齐)需要多次读取 对连续存放的指令和数据很有效,但转移效率低
多体并行存储器
高位交叉编制
不能并行访问(没啥用)
低位交叉编制
流水线式存储,提高带宽,并行访问
模块数m≥T(存取周期)/r(传送周期)
考点
时间计算t=T+(m-1)r
根据地址判断哪个存储器 (根据地址后几位判断)
6. 高速缓冲存储器Cache
cache利用程序的局部性原理 来缓解主存和CPU速度差
空间局部性:顺序存放(例如数组)
时间局部性:循环结构多次访问
cache的基本工作原理
cache分块(行)=主存分块(页)
以字为单位和CPU交换数据 以块为单位和主存交换数据
cache命中
命中率H=Nc/(Nc+Nm)
Nc:cache命中次数,Nm:主存命中次数
平均访问时间
tc:cache访问时间,tm:未命中时的访问时间
cache与主存地址结构
主存地址
标记(Tag)
行号(直接映射) / 组号(组相联) / 全相联没有
块内地址
cache标记项(每行对应一个)
标记(Tag)/有效位(1bit)/替换信息(LRU)/脏位(回写)/块内数据
cache存储体地址
行号(可以推出组号)
块内地址
cache与主存的映射方式
全相联
任意位置
标志长,但是cache空间冲突率低
直接映射
固定位置,根据块数取余来得到
标志短,但是cache空间冲突率高
n路组相联
组内全相联,组间直接映射
结合两者有点,根据组数取余
n表示:每组(每行)内有n块
cache中的主存快替换算法
随机-RAND
简单,命中率低
先进先出-FIFO
比较容易实现,但是没有利用局部性原理
最近最少使用-LRU (Least Recently Used)
为每行设置一个计数器,计数器最大值为行数-1
①命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变; ②未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1; ③未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1
最不经常使用-LFU (Least Frequently Used)
每行也设计一个计数器,从0开始,每次访问都+1 和LRU相似但不相同
①每次新调入或替换的块计数据=0。 ②之后每次被访问计数器+1。 ③替换时选择计数器最小的替换。
cache写策略
写命中
全写法(又称写直通) (write-througe)
配合写缓冲队列
同时写入cache和写缓冲队列,写缓冲队列由独立的电路控制着写回内存。
同时写入cache和主存
回写法(write-back)
命中只写cache,cache被换出时根据脏位写回主存(设置脏位)
写不命中
写分配法
先调入cache,再写入更新cache
非写分配法
只写入主存,不调块(只有读未命中才调块)
现代cache通常分级(3级),用写分配法和写回法搭配使用
查找
全相连映射
全部逐个对比标记
直接映射
根据地址行号直接找到cache行,只需对比一次标记
组相联映射
根据地址组号直接找到cache组,然后逐个对比组内标记
替换算法
先进先出
近期最少使用
优点:最满足局部性原理。且计数器不会超过cache块数-1。
最不经常使用
缺点:计数器可能会变得很大。
7. 虚拟存储器
虚拟地址基本概念
将主存和辅存统一编制 用户可设计的叫虚地址或者逻辑地址 实际的主存地址叫实地址或物理地址
虚拟存储器只对应用程序员是透明的 有主存的速度和辅存的容量
页式虚拟存储器
有效位(也叫装入位,是否在主存)
脏位(也叫修改位,是否修改)
引用位(也叫使用位置,配合替换策略)
页表(慢表)
每个进程都有一个页表基准存储器,用来存放页表首地址
快表(TLB)
cache(SRAM)组成,装入的是页表的副本(类似cache装的主存的副本)
全相联和组相联方式存储
快表是一种相联存储器,可按照内容寻址
优点:页表简单,调入方便。 缺点:会有零头浪费,页不是逻辑独立的实体,不及段式方便
段式虚拟存储器
按程序的逻辑结构划分,各段长度因程序而相异
优点:段的分界与自然分界对应,具有逻辑独立性,易于编译、管理、修改和保护,也便于多道程序的共享。 缺点:容易在段间留下不好利用的碎片
段页式存储器
按逻辑结构分段,再把段分为固定的页
每个程序对应有一个页表
虚地址:段号,段内页号,业内地址
优点:两者的优点相结合 缺点:要先查段表,再查页表,开销较大
具有TLB和cache的多级存储系统
查TLB,成功就地址转换再找cache,缺少去主存查页表 查页表,成功就地址转换再找cache,缺页就插页或者换页 查cache,成功就访问,缺失就插页或者换页,并做好标记和有效位
4. 指令系统
1. 指令格式
指令位于软件和硬件的交界面上
指令的基本格式
操作码&地址码
操作码给出应该执行什么性质的操作和具有何种功能
地址码给出被操作的信息(指令或者数据)的地址
指令字长
取决于操作码的长度、操作数地址码长度和操作数地址的个数。和机器字长无直接关系
等于机器字长的指令叫单字长指令
操作数和地址码数量
零地址指令 (不需要操作数)
一地址指令[op | A1] op(A1)→A1 (ACC)op(A1)→A1,(可隐含操作数)
二地址指令[op | A1 | A2] (A1)op(A2)->A1
三地址指令[op | A1 | A2 | A3] (A1)op(A2)->A3
四地址指令[op | A1 | A2 | A3 | A4] (A1)op(A2)->A3 A4:下地址
定长和扩展操作码比较
定长操作码指令格式
优点:简化计算机硬件设计,提高指令识别速度 缺点:占用更多固定位,操作数地址受限
扩展操作码指令格式
优点:保持丰富指令 缺点:增加编码和分析难度
n地址指令为n+1地址指令预留扩展操作码
指令种类
与CPU交换数据
数据传递类
运算类
算术逻辑操作
移位操作
控制类
转移操作
转移,调用,陷阱,返回等
改变程序执行的顺序
与I/O交换数据
输入和输出操作
2. 指令寻址方式
指令寻址
顺序寻址
pc自动加“1”
定长指令字结构:PC每次递增指令长度
变长指令字结构:先读入一个字,根据操作码判断这个指令的长度,从而判断PC的增量
跳跃寻址
控制pc到指定位置
jmp、
下一条指令均由PC给出
数据寻址
格式
操作码+寻址特征+形式地址A1+寻址特征+形式地址A2...
不访问内存
隐含寻址
操作数的地址隐含在寄存器 PS:常见的是累加器(ACC)
优点:缩短字长 缺点:增加存储操作数或者隐含地址硬件
立即寻址
op+#+立即数(操作数)
优点:不访问主存,执行时间短 缺点:A的位数限制了立即数取值范围
访存/寄存器寻址
直接寻址EA=A
给出操作数的地址 优点:仅访问一次主存,不需专门计算操作数地址 缺点:A的位数限制了寻址范围,且操作数不易修改
间接寻址EA=(A)
给出操作数地址的地址 优点:扩大寻址范围,便于编程序 缺点:多次访存
寄存器寻址EA=Ri
类似直接寻址,对象由主存换成寄存器
优点:不访存,只访问寄存器,寄存器寻址指令短 缺点:寄存器贵,计算机寄存器数量有限
寄存器间接寻址EA=(Ri)
类似间接寻址,操作数最终在主存中,寄存器存放主存的地址
偏移寻址
相对寻址EA=(PC)+A
适用于转移指令,便于程序移动,其中A可正可负,补码表示 便于程序浮动,广泛用于转移指令
基址寻址EA=(BR)+A
基址寄存器面向操作系统,BR为基址寄存器(重定位寄存器) 适用于多道程序,可用于编制浮动程序
变址寻址EA=(IX)+A
变址寄存器面向用户内容可变,IX为专门或通用寄存器, A不变适用于循环,数组问题
特殊寻址
堆栈寻址
用特定寄存器(叫堆栈指针SP)给出栈顶地址 一般为无操作数指令(隐含SP),用硬件实现
硬堆栈
寄存器堆栈特殊的寄存器,造价昂贵
软堆栈
从主存划一块区域
3. 汇编语言
内存读写长度
dward ptr─双字,32bit ward ptr─单字,16bit byte ptr─字节,8bit
寄存器
通用寄存器:eax、ebx、ecx、edx
变质寄存器:esi、edi
堆栈寄存器:ebp、esp
指令
算术运算
add d,s
add
sub d,s
subtract
d=d-s
mul d,s
multiply
div s
divide
adx:eax/s
neg d
negtive
inc d
increase
dec d
decrease
d:destination s:source
逻辑运算
and d,s
or d,s
not d
xor d,s
exclusive or
shl d,s
shift left
shr d,s
shift right
转移
jmp NEXT
无条件跳转NEXT标号
cmp a,b
比较
jxxx
je a==b ZF==1 jne a!=b ZF!=0 jg a> b ZF==0 && SF==OF jge a>=b SF==OF jl a< b SF!=OF jle a<=b SF!=OF | | ZF==1
e:equal n:not g:greater than l:less than
ne:not equal ge:greater than or equal le:less than or equal
选择语句
if(a>b){ c=a; }else{ c=b; }
mov eax,7 #a=7→eax mov ebx,6 #b=6→ebx cmp eax,ebx #比较a,b jg NEXT #若a>b,转移到NEXT mov ecx,ebx #假设用ecx存储c,令c=b jmp END #无条件跳转到END NEXT: mov ecx,eax #假设用ecx存储c,令c=a END:
循环语句
int result=0; for(int i=1;i<=100;i++){ result +=i; }
mov eax,0 mov edx,q cmp edx,100 jg L2 L1: add eax,edx inc edx #i++ cmp edx,100 jle L1 #i<=100 L2: #跳出循环主体
4. CISC和RISC
CISC&RISC
CISC(Complex复杂指令系统计算机)
常用于计算机等设备
RISC(Reduced精简指令系统计算机)
常用于手机平板等设备
两者区别
指令数目
CISC大于200条,RISC小于100
指令字长
CISC不固定,RISC固定
可访问指令
CISC不加限制,RISC只有load和store
通用寄存器数量
CISC少,不需暂存状态,一条指令直接完成,RISC多
目标代码
CISC难以优化编译成高效目标程序代码,RISC可以(并行和重复使用)
控制方式
CISC采用微程序控制,RISC采用组合逻辑控制(硬布线)
指令流水线
CISC可以实现,RISC必须实现
5. 中央处理器
1. CPU功能和基本结构
cpu的具体功能
指令控制
取指令、分析指令和执行指令的操作
操作控制
将操作信号送往相应的部件
时间控制
对各种操作进行时间控制
数据加工
算术与逻辑运算
中断处理
异常情况和特殊请求进行处理
cpu构成
运算器(ALU)
算术逻辑单元ALU
算术/逻辑运算
暂存寄存器
暂存数据
累加寄存器ACC
通用寄存器,用来存放ALU运行结果
通用寄存器组
程序状态字寄存器PSW
溢出OF、符号SF、零ZF、进位CF等
移位器
对运算结果进行移位运算
计数器
控制乘除的操作步数
控制器(CU)
程序计数器PC
指出下条指令在主存中的地址
指令寄存器IR
长度与最长的指令长度相等
指令译码器
类比地址译码器,输入一个操作码,输出端某一个引脚会被选通。从而确定当前要执行的指令。
仅对操作码进行译码,并向控制器提供信号
存储器地址寄存器MAR
存储器数据寄存器MDR
时序系统
微操作信号发生器
根据IR,PSW,时序信号产生控制信号
透明?
可见
PSW
ACC
通用
PC
不可见
移位
暂存
IR
MAR
MDR
2. 指令执行过程
指令周期
取出并完成一条指令的时间(指令周期)
一个指令周期包括若干机器周期/CPU周期
一个机器周期包括若干时钟周期
指令的机器周期数可变,机器周期的长度可变
取指周期
用PC中地址主存指令寻址,并取指令到IR
包含指令译码阶段
硬件自动完成
间指周期
取操作数有效地址
执行周期
读操作数,通过ALU操作产生执行结果
中断周期
指令结束前中断查询信号,若有中断请求,则进入中断周期
机器周期和指令周期长度可以不同
周期控制
标志触发器(由时钟和微操作控制):FE(取址)、IND(间址)、EX(执行)、INT(中断)
指令执行方案
单指令周期
每个机器周期占用的时钟周期数相同,指令执行时间相同,串行执行,取最长指令执行时间(低效)
多指令周期
机器周期占用时钟周期数不同,指令执行时间不同,串行执行,按需分配(硬件设计复杂)
流水线方案
多指令并行执行,让多条指令同时运行,但各自处在不同的执行阶段
3. 数据通路的基本结构和功能
数据通路:数据在功能部件之间传送的路径以及路径上的部件(数据通路部件),并且由控制信号控制
数据通路的基本结构
cpu内部单总线方式
存在较多冲突
cpu内部三总线方式
控制总线
数据总线
地址总线
同时在多个总线传送不同数据,效率高
专用数据通路方式
每两个部件相连,避免使用共享总线,性能高,硬件量大
PS:内部总线,系统总线和通信总线区别;数据通路和数据总线区别
数据传输种类
寄存器之间数据传送
主存与cpu之间数据传送
执行算术或者逻辑运算
先将第一个取到的数放到寄存器中,然后将寄存器的数据和第二个取到的数放入ALU
4. 控制器的功能和工作原理
控制器的结构和功能
1.从主存中取指,并指出下一条指令 2.对指令译码或测试,产生相应的操作信号 3.指挥并控制各部件的数据流动方向
硬布线控制器又称 组合逻辑控制器
设计步骤
分析操作序列
写出微操作及节拍
确定微命令格式
编写微指令码点
指令操作码(IR)+目前时钟周期数(T^0…T^m)+节拍信号(FE、IND、EX、INT)+机器状态条件(PWS等)=微操作*n=微指令
时钟周期一个轮回代表一个机器周期结束
节拍信号决定当前处于什么周期 时钟周期决定当前发出哪些微操作
CPU的控制方式
同步控制方式
有统一时钟,微操作机器周期相同
异步控制方式
没有统一时钟(应答方式)控制电路复杂,按各部件固有速度工作
联合控制方式
大部分同步,小部分异步
微程序控制器
微程序控制器采用存储逻辑实现,将一段微程序放入专门的存储器(CM)
PS:取指微程序是公共的,默认存在
微程序控制的基本概念
微命令和微操作
一 一对应,微命令是控制信号,微操作是执行过程,微命令之间可能相容或互斥
微指令与微周期
微指令对应若干微操作命令,微周期指读取并完成一条微指令花费的时间
主存储器和CM
主存储器位于CPU外,用RAM实现,CM用于存放微程序,用ROM实现
程序与微程序
程序是指令的有序集合,微程序是微指令的有序集合(一条微程序对应一条机器指令)
MAR,PC和CMAR
CMAR(也叫uPC)用来存放控制存储器的读写地址
MDR,IR和CMDR
CMDR(也叫uIR)用来存放CM中读出的指令
微程序控制器的组成
控制存储器CM
微指令寄存器CMAR
微地址寄存器CMDR
微地址形成部件(给出初始微地址和后继微地址的硬件)
设计步骤
写出对应机器指令的微操作命令及节拍安排
确定微指令格式
编写微指令码点
微指令的格式
微操作码+微地址码(操作控制+顺序控制)
微地址码定位下一个微指令
微指令的地址形成方式
断定方式
直接由下地址给出
根据机器指令的操作码,经过微操作形成部件形成
增量记数法
(CMAR)+1->CMAR
其他
根据各种标志决定微指令分支转移的地址
测试网络形成
硬件产生入口
水平型微指令
微指令的编码方式
直接编码(直接控制)方式
将某个微指令对应位设置为1表示选用该微指令
优点:简单,直观,执行速度快,操作并行性好 缺点:微指令字长过长,n个指令就要求有n位
字段直接编码方式
微指令的微命令分成若干小字段,把互斥微命令放到同一字段, 相容性微命令分在不同段内,每个小段要留出一个状态(表示不发出命令)
相容微命令是指在数据通路中能同时进行的微命令;互斥微命令是指在数据通路中不能同时进行的微命令。 如:(PC)→MAR和(PC)+1→PC绝不可能同时进行,编码时可以放在同一字段
优点:指令短 缺点:因为要经过译码电路编译后再发出微命令,比直接编码方式慢
字段间接编码方式(隐式编码)
两层译码,进一步缩短微指令字长
优点:微程序短,执行速度快 缺点:微指令长,编写程序麻烦
垂直型微指令
一条垂直型微指令只能定义并执行一种基本操作(微操作、微命令)
优点:微指令短,简单,规整,便于编写程序 缺点:微程序长,执行速度慢,效率低
混合型微指令
在垂直型上添加并行操作
动态微程序设计
静态
微程序无需改变,微指令寄存器采用ROM
动态
通过改变微指令和微程序改变机器指令,有利于仿真,采用EPROM(可擦除)
毫微程序设计
机器指令由微指令来解释,微指令由毫微指令来解释(套娃警报)
硬布线控制方式
硬布线控制方式,只需要得到微操作序列,对应产生控制信号用电路实现即可
每个时钟周期时序系统发出一个节拍信号确定微操作时序(循环发出) 一轮时钟周期结束节拍信号加1,进入下一个周期
标志位也是通过时钟脉冲信号确定
每个时钟周期结束时,这个时钟周期的信号都会被撤销
单个时钟周期内总线上的信号不会改变
微指令的时钟周期划分标准
先后顺序
总线上的信号冲突
是否可并行
微操作执行时间
ADD (R0),R1 [((R0))+(R1)→(R0)]
取指周期(公共操作)
T0:(PC)→MAR
PCout,MARin
T1:M(MAR)→MDR (PC)+1→PC
MemR,MARout,MDRinE
PC自增一般通过MUX结合ALU实现
T2:(MDR)→IR OP(IR)→ID
MDRout,IEin
间址周期
T0:(R0)→MAR
R0out,MARin
T1:M(MAR)→MDR
MemR,MARout,MDRin
T2:(MDR)→Y
MDRout,Yin
执行周期
T0:(R1)+(Y)→Z
R1out,ALUin,CU向ALU发ADD控制信号
T1:(Z)→MDR
Zout,MDRin
T2:(MDR)→M(MAR)
MemW,MDRoutE,MARout
注
Ad(IR)取出IR中的地址码部分 Op(IR)取出IR中的操作码部分
T0、T1、T2由时钟周期决定 取指/间址/执行节拍信号决定
微程序控制方式
每条微指令执行结束都要执行Ad(CMDR)→CMAR,为了取下一条微指令; 取指周期结束后要执行OP(IR)→微地址形成部件→CMAR,根据汇编指令决定下一条微指令地址
每一个微指令结束后都需要多一个时钟周期来找下一条指令地址,导致执行效率不如硬布线
微程序和硬布线方式比较
工作原理
微程序控制器:微操作控制信号以微程序的形式存放在存储器中,执行指令时读出即可 硬布线控制器:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序及时产生
执行速度
微程序控制器:慢 硬布线控制器:快
规整性
微程序控制器:较规整 硬布线控制器:繁琐、不规整
应用场合
微程序控制器:CISC CPU 硬布线控制器:RISC CPU
易扩充性
微程序控制器:易扩充、修改 硬布线控制器:困难
5. 指令流水线
流水线执行方式
顺序执行方式(串行执行方式)
计算:T=3nt
一次重叠执行方式
第k条指令的执行阶段和第k+1条指令的取指阶段重合
计算:T=t+2nt
二次重叠执行方式
第k条指令的分析阶段和第k+1条指令的取指阶段重合
计算:T=2t+nt
流水线的表示方法
指令流程图(纵坐标是第i条指令)
时空图(纵坐标是取址,译码,执行等步骤)
流水线有一个缓冲寄存器(锁存器),用来保存结果给下一流水段使用
流水线的分类
根据流水线使用级别不同分类
部件功能级(如乘法多级运算) 处理机级(不同指令过程) 处理机间级流水线(不同机器)
根据可以完成的功能分类
单功能流水线和多功能流水线
根据同一时间内各段之间的联系方式
静态流水线:只能按一种功能的连接方式工作 动态流水线:动态能在同一时间段进行不同运算
根据流水线各个功能段之间是否有反馈信号
线性流水线:功能只经过一次,不反馈 非线性流水线:常用于递归,每次都有反馈
指令流水线阻塞 影响因素
结构冒险(资源冲突)
多条指令在同一时刻争抢同一资源
解决:1.暂停相关指令,2.资源重复配置(单独设置数据和指令的存储器)
数据相关(数据冲突)
1.写后读(RAW)
表示当前指令将数据写入寄存器后,下一条指令才能从该寄存器读取数据。否则,先读后写,读到的是错误(旧)数据。
2.读后写(WAR)
表示当前指令读出数据后,下一条指令才能写该寄存器。否则,先写后读,读到的是错误(新)数据。
乱序发射
3.写后写(WAW)
表示当前指令写入寄存器后,下一条指令才能写该寄存器。否则,下一条指令在当前指令之前写,将使寄存器的值不是最新值。
多个功能部件
解决方案
将后续指令暂停一至几个周期
硬件阻塞
软件插入空指令
数据旁路技术
数据不等存入存储器,直接将数据送到下一个请求该数据的位置
编译优化,调整指令顺序
控制冒险(控制冲突) 遇到转移指令,之后的流水线就废了
分支预测
静态预测
永远猜true或false
动态预测
根据历史情况动态调整
预取两个方向的指令(浪费资源)
加快和提前形成条件码
类似加法器的预测
提高转移方向的猜准率
对分支预测的优化
性能指标
吞吐率
单位时间完成的任务数量
加速比
用流水线与不用流水线的耗时比
T_0表示不使用流水线时的执行时间,T_k表示使用流水线时的执行时间
K表示一条指令分为K个阶段
n表示n个任务
多发技术
超标量流水线技术
配置多个相同部件
超流水线技术
一个机器周期再分,每个机器周期功能部件使用多次
超长指令字
将多条并行操作的操作码组合成具有多个操作的超长字指令,一个取指分析对应多个执行 需要多个ALU(区别于超标量流水线技术:所有部件都需要多个)
5段式指令流水线
MIPS架构
每个机器周期耗时一样,取最长
每个阶段后都有锁存器,下一阶段开始时打开锁存器
五段
1. 取指
2. 指令译码&取数
3. 执行
4. 访存
访问内存
5. 写回
写回寄存器
举例
运算类指令
汇编
功能
IF取周期
ID指令译码&取数
EX执行
M访存
WB写回寄存器
ADD Rs,Rd
(Rs)+(Rd)→Rd
Cache(PC)→Inst
Registers→A/B/Imm
ALU(A/B/Imm)→C
C→D空
D→Registers
ADD #996,Rd
996+(Rd)→Rd
Cache(PC)→Inst
Registers→A/B/Imm
ALU(A/B/Imm)→C
C→ D空
D→Registers
SHL Rd
(Rd)<<<2→Rd
Cache(PC)→Inst
Registers→A/B/Imm
ALU(A/B/Imm)→C
C→ D空
D→Registers
LOAD指令
LOAD Rd,996(Rs) LOAD Rd,mem
(996+(Rs))→Rd (mem)→Rd
Cache(PC)→Inst
(Rs)→A #996→Imm
ALU(A,Imm)→C
Cache(C)→E
E→Registers
STORE指令
STORE Rs,996(Rd) STORE Rs,mem
Rs→(996+(Rd)) Rs→(mem)
Cache(PC)→Inst
(Rd)→A (Rs)→B #996→Imm
ALU(A,Imm)→C B→Store
Store→Cache(C)
空
条件转移指令
beq Rs,Rt,#偏移量
(Rs)==(Rt)
(PC)+指令字长+(偏移量×指令字长)→PC;否则(PC)+指令字长→PC
Cache(PC)→Inst
(Rs)→A (Rt)→B #偏移量→Imm
ALU(A,B)→C
(PC)+4+4×偏移量→PC (PC)+4→PC
空
bne Rs,Rt,#偏移量
(Rs) !=(Rt)
(PC)+指令字长+(偏移量×指令字长)→PC;否则(PC)+指令字长→PC
Cache(PC)→Inst
(Rs)→A (Rt)→B #偏移量→Imm
ALU(A,B)→C
(PC)+4+4×偏移量→PC (PC)+4→PC
空
无条件转移指令
jmp #偏移量
(PC)+指令字长+ (偏移量×指令字长)→PC
Cache(PC)→Inst
#偏移量→Imm
(PC)+4+4×偏移量→PC
空
空
6. 多处理器系统
SISD单指令流单数据
特性
各指令序列只能并发、不能并行,每条指令处理一两个数据
不是 数据级并行技术
硬件组成
一个处理器+一个主存储器
若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器
SIMD单指令流多数据流
特性
各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的数据
是一种 数据级并发技术
硬件组成
一个指令控制部件(CU)+多个处理单元/执行单元(如ALU)+多个局部存储器+一个主存储器
每个执行单元各有各自的寄存器组、局部存储器、地址寄存器
不同执行单元执行同一条指令,处理不同的数据
MISD多指令流单数据流
多指令并行执行,处理同一个数据。现实中不存在这种计算机
MIMD多指令流多数据流
特性
各指令序列并行执行,分别处理多个不同的数据
是一种线程级并行、甚至是线程级以上并行技术
进一步分类
多处理器系统
特性
各处理器之间可以通过LOAD/STORE指令,访问同一个主存储器,可以通过储存相互传送数据
硬件组成
一台计算机内,包含多个处理器+一个主存储器
多处理器共享单一的物理地址空间
多计算机系统
特性
各计算机之间不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递”相互传送数据
硬件组成
由多台计算机组成,因此拥有多个处理器+多个主存储器
每台计算机拥有各自的私有存储器,物理地址空间相互独立
向量处理机(SIMD思想的进阶应用)
特性
一条指令的处理对象是向量”
擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中处理科学研究中巨大运算量
硬件组成
多个处理单元,多组“向量寄存器”
主存储器采用“多个端口”同时读取的交叉多模块存储器
主存储器大小限定了机械的解题规模,因此要有大规模的集中式的主存储器
多核处理器的基本概念
共享内存多处理器的基本概念
一个CPU芯片中包含多个处理器,即多个核,因此通常也称为片剂多处理器。意思是:一块芯片上集成了多个处理器
所有核共享一个LLC(Last-Level Cache)并共享主存储器
硬件多线程
细粒度多线程
粗粒度多线程
同时多线程(SMT)
6. 总线
1. 总线概述
总线概念
分时与共享
只允许一个部件向总线发送信息(分时),允许多个部件从总线接收信息(共享)
总线设备
主设备(有总线控制权)
从设备(被主设备访问,只能响应)
总线特性(看一下就行)
机械特性(尺寸形状)
电气特性(传输方向和范围)
功能特性
时间特性(信号和时序的关系)
猝发传送
送首地址,连续读写
总线的分类
片内总线
cpu内部总线,cpu寄存器与寄存器 寄存器与ALU之间的总线
系统总线
细分三类
数据总线(双向传输)
地址总线(单向传输)
控制总线
通信总线
也称外部总线
计算机系统之间
数据通路是数据流经的路线(逻辑实现),数据总线是承载的媒介(物理实现)
系统总线的结构
系统内部连接cpu主存和I/O接口的总线
总线的结构
单总线结构
系统总线
简单成本低;不支持并发传送,带宽低,负载重
双总线结构
主存总线、I/O总线
将慢速的I/O设备分离,需要硬件
三总线结构
主存总线、I/O总线、DMA总线
缺点:系统工作效率低 优点: 提高了I/O性能,和吞吐量,更快响应命令。
PS:多总线结构并没有物理通路,只有逻辑上的
总线的性能指标
总线的传输周期(总线周期)
完成一个总线操作(申请,寻址,传输,结束),通常包含若干个总线时钟周期
总线周期可能发生在指令的取指、间址、执行、中断等期间的某个时钟周期
总线时钟周期
可能和机器时钟周期一样,也可能不一样
总线工作频率
总线周期的倒数
总线时钟频率
时钟周期的倒数
总线宽度(总线位宽)
同时传输的位数,32位总线有32根信号线,宽度为32位
总线带宽
总线的最大数据传输率
总线复用
如地址总线和数据总线合二为一
信号线数
3种总线的信号线总和(有效数据)
2. *总线仲裁* *大纲已移除*
集中仲裁方式 (总线控制部件解决)
链式查询方式
离总线控制部件最近的先响应
计数器定时查询方式
地址上的计数值(从0开始)与设备地址一致,获得控制权
独立请求方式
每个设备都有请求总线和总线允许线,总线按照优先次序批准某个部件的请求
分部仲裁方式
不需要中央仲裁器,每个潜在主模块都有自己的仲裁号和仲裁器
由总线控制部件控制,不需要CPU参与,所以总线周期可以在任意机器周期结束
3. 总线操作和定时(两个设备之间传输信息的技术) 如:内存与I/O控制器之间传输数据
四个阶段
申请分配阶段
传输请求
总线仲裁
寻址阶段
发出地址和有关命令
传输阶段
数据交换
结束阶段
有关信息从总线撤除
同步定时方式 (同步通信)
有统一时钟信号
同步适用于总线长度较短,存取时间比较接近
使时钟和4个阶段同步
优点:传送速度快,有较高的传输速率,总线控制逻辑简单 缺点:主设备属于强制性同步,不能及时校验
异步定时方式
不互锁方式
请求与回答均自动撤销
半互锁方式
请求需要等回答信号再撤销,回答自动撤销
全互锁方式
请求需要等回答信号再撤销,回答需要等请求撤销再撤销
优点:可靠
缺点:慢
4. 总线标准
系统总线
ISA
工业I标准S体系结构A
最早的
EISA
兼容ISA
局部总线 不与CPU相连 连接高速北桥芯片
VESA
视频V电子E标准S协会A
PCI
外部P设备C互联I
显卡声卡网卡
PCI-Express
升级版,将取代PCI和AGP
AGP
Accelerated Graphics Port(加速图形接口)
设备总线(通信总线)
RS-232C
通信总线,慢又老
USB
即插即用,热插拔
PCMCIA
PC卡槽,即插即用
有串有并
SCSI
小型S计算机C系统)接口I
IDE(ATA)
连接硬盘和光驱
SATA
连接硬盘
串行
串行工作频率高(好) 并行容易出错(no!) 串行的新(00后)
其余都是并行
7. 第七章 输入输出系统
1. I/O基本概念
I/O系统
外部设备
I/O设备和通过I/O接口才能访问的设备
I/O接口也叫I/O控制器
外设和主机传输数据时的逻辑部件
输入设备
输出设备
外存设备
I/O系统组成
I/O软件
驱动程序、管理程序等,采用I/O指令和通道实现信息交换
I/O硬件
外部设备,设备控制器,接口等
I/O控制方式
程序查询方式
不断查询
程序中断方式
发出中断才响应
每准备好一个字就给CPU发送一次中断请求
DMA方式
主存与IO交换信息时由DMA控制器控制,传输完一整块数据才需要中断 传输每一个字会占一个存取周期(CPU不访,存则不受影响)
用于控制高速外设,键盘鼠标等低速外设还是CPU中断方式
通道方式
执行I/O命令只要启动相关通道,通道执行通道程序来完成I/O操作
不同处:I/O指令:CPU指令的一部分,通常由操作码,命令码,设备码组成 通道指令:通道程序提前编译好并放在主存,只有通道能识别
2. 外部设备
输入设备
1.键盘
2.鼠标
输出设备
显示器
性能指标:显示存储器VRAM(也称刷新存储器)
容量=分辨率×灰度级位数
带宽=分辨率×灰度级位数×帧数
字符显示器
字符的ASCII码放在VRAM中,点阵存在字符发生器
打印机
工作原理分类
击打式和非击打式
工作方式分类
点阵,针式(防伪好),喷墨,激光等
外存储器
磁盘存储器
组成
磁头数
有多少个磁头(多少面盘面)
柱面数
每面盘片有多少条磁道
扇区数
每条磁道有多少个扇区
磁盘性能指标
磁盘的容量
非格式化容量>格式化
记录密度
道密度,位密度,面密度
平均存取时间
寻道时间+旋转延迟时间+传输时间 转速rpm:转/分
数据传输率
单位时间内向主机传输的字节数
地址信息
驱动器号+柱面号+旁面号+扇区号
工作过程
串行进行,不可能同时读写
磁盘阵列RAID
RAID0
类似于低位交叉存储无法校验
RAID1
存两遍,能校验,容量减少一半
RAID2
采用纠错的海明码校验码方式
RAID3
RAID4
RAID5
都是更高级的方式
*光盘存储器*大纲已删除
CD-ROM
CD-R
CD-RW
DVD-ROM
固态硬盘
E2ROM发展起来的,比U盘闪存芯片多,不容易出问题
3. 控制器 I/O接口 适配器
主要功能
主机和外设通信联络控制
地址译码和设备选择
数据缓冲
信号格式转换
传送控制命令和状态信息
基本结构
数据缓冲寄存器
状态/控制寄存器
两个寄存器合二为1,因为他们数据传送方向相反
地址译码和I/O控制逻辑
控制线传来读写信号,地址线的信息来选择相应寄存器(端口)
外设界面控制逻辑
每个I/O接口可有多套,控制多个I/O设备
类型
数据传输类型
并行接口和串行接口
控制方式
程序查询,中断等
灵活性
可编程,不可编程
I/O端口及其编址
统一编址(存储器映射方式)
与存储器公用地址,用访问指令访问I/O设备
优点:使cpu访问I/O更灵活,还可以使端口有较大的编址空间 缺点:使内存容量变小,执行速度慢
独立编址
单独使用一套地址,有专门的I/O指令
优点:快,指令便于理解 缺点:输入输出指令少,只能对端口进行传送操作,增加了控制的复杂性
注意:I/O端口指可以进行读写的寄存器,若干端口加上控制逻辑可组成接口
数据线:读写数据、状态字、控制字、中断类型号 地址线:指明I/O端口 控制线:读/写IO端口的信号、中断请求信号
1| 发命令:发送命令字到I/O控制寄存器,向设备发送命令(需要驱动程序的协助)
2| 读状态:从状态寄存器读取状态字,获得设备或I/O控制器的状态信息
3| 读/写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
4. I/O方式
程序查询方式
不断对外设状态寄存器进行查询,直到准备就绪,在此期间程序不往下执行
查询方式
独占查询:CPU100%的时间都在查询I/O状态
定时查询:在保证数据不丢失的情况下,每隔一段时时间CPU就查询一次I/O状态
程序中断方式
异常和中断
有的书本统称中断,异常检测由CPU自己完成,中断得找中断源,详见操作系统
内中断和外中断
来自CPU外部,与CPU执行指令无关的叫外中断 PS:主存故障缺页等属于内中断
过程
中断请求
开中断能响应中断,关中断不能响应(除了不可屏蔽中断NMI)
中断判优
硬件最高级,其次软件中断
不可屏高于可屏蔽中断
DMA请求高于I/O中断请求
DMA请求(总线请求)在机器周期结束响应,靠硬件实现。 中断请求在指令执行结束响应。
高速设备优于低速设备
输入设备优于输出设备
实时设备优于普通设备
cpu响应中断的条件
一条指令结束完
中断请求标志
中断请求标志寄存器每1bit位代表一个中断
中断向量
中断向量(*p) :中断服务程序的入口地址 中断向量地址(**p):中断服务程序入口地址的地址
中断处理过程 (内核态)
1. 关中断
2. 保存断点
PC PSW
3. 引出中断服务程序
中断响应 硬件完成 (中断隐指令)
4. 保存现场和屏蔽字
其他寄存器
5. 开中断
6. 执行中断服务程序
7. 关中断
8. 恢复现场和屏蔽字
9. 开中断
10. 中断返回
中断服务程序
多重中断和中断屏蔽技术
多重中断只能在第6步执行过程中触发
中断屏蔽判的是中断处理的优先级
每一个中断源对应一个中断屏蔽字 D>A>C>B
准备工作
外设将数据传入到I/O控制器的时间
传输方式有同步定时方式和异步定时方式
DMA方式 也是一种I/O接口
DMA控制器的组成
主存地址计数器AR
放要交换主存的地址信息
传送长度计数器WC
长度溢出时,自动发中断信号
数据缓冲寄存器DR
暂存每次的数据
DMA请求触发器
缓冲区准备好数据,发送一个DMA请求(总线请求) 每准备好一个缓冲寄存器就要占用一个存储周期
“控制/状态”逻辑
这位是大哥
中断机构
接到中断信号后向CPU提出中断请求
DMA传送方式
停止CPU访问主存
DMA与CPU交替访存
周期挪用
三种可能
CPU不访存
CPU正在访存
等存取周期结束
CPU和DMA同时请求访存
I/O优先级高于CPU
传输完DR里的数据立马释放,是一种单字传送方式
每传送完一个数据字,马上释放总线。
DMA传送过程
预处理
需要CPU协调
主存起始地址→AR I/O设备地址→DAR 传送数据个数→WC 启动I/O设备
数据传送
无需CPU
1、设备数据→数据缓冲寄存器(准备好一个寄存器大小的数据) 2、DMA请求→控制/状态寄存器→HRQ(申请总线) 3、HLDA(获得总线)→控制/状态寄存器 4、控制/数据/地址线→系统总线 5、储存地址计数器/传送长度计数器++ 6、if(传送长度计数器越界){溢出信号→中断机构→进程进入阻塞队列} else{返回1继续执行}
后处理
需要CPU协调
响应中断,中断服务程序做DMA结束处理
中断和DMA的区别
中断
DMA
需要保护和恢复现场
DMA除了预处理和后处理,其他不用占cpu资源
只能在指令执行完毕
任何机器周期,总线周期结束都行
中断传送需要cpu干预
DMA不需要CPU干预,故传输速率很高,以块或块组(连续)传输
中断具有异常处理能力
DMA只能传输
优先级较低
优先级相对高
中断靠程序传送
DMA靠硬件传送
中断请求目的 传输数据
中断请求目的: 后处理