导图社区 计算机组成原理
北京理工大学813计算机组成原理,课本的所有知识罗列,具体细节参考王道或者课本进行补充,非常实用,值得收藏。
编辑于2022-04-07 15:15:09计算机组成原理
第1章 计算机系统概述
1.1 计算机发展历程
什么是计算机系统
硬件 + 软件
硬件:计算机主体、外设
软件:由具有各类特殊功能的程序组成
系统软件:用来管理整个计算机系统
应用软件:按任务需要编制成的各种程序
硬件的发展
第一代:电子管时代
第二代:晶体管时代
第三代:中小规模集成电路时代
第四代:大规模、超大规模集成电路时代
软件的·发展
目前的发展趋势
更微型、多用途
更巨型、超高速
1.2 计算机层次结构
计算机硬件的基本组成
五大部分
输入设备:将信息转换成机器能识别的形式
输出设备:将结果转换成人们熟悉的形式
主存储器:存放数据和程序
运算器:算术运算、逻辑运算
控制器:指挥各部件、使程序运行
早期冯诺依曼机的结构
冯诺依曼计算机的特点:
1.计算机由五大部件组成
2.指令和数据以同等地位存于存储器,可按地址寻访
3.指令和数据用二进制表示
4.指令由操作码和地址码组成
5.存储程序:
“存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,然后就按该程序的规定顺序执行其他指令,直至程序执行结束
6.以运算器为中心:输入/输出设备与存储器之间的数据传送通过运算器完成
以运算器为中心
首次提出”存储程序“的概念
现代计算机的结构
以存储器为中心
CPU = 运算器 + 控制器
各个硬件的工作原理
主存储器
存储体
概念
存储元:即存储二进制的电子元件,每个存储元可存1bit
存储单元:每个存储单元存放一串二进制代码
存储字:存储单元中二进制代码的组合
存储字长:存储单元种二进制代码的位数
地址
MAR:地址寄存器,用于指明要读/写哪个存储单元。其位数反映存储单元数量
MDR:数据寄存器。用于暂存要读/写的数据,其位数=存储字长
运算器
ACC:累加计数器:存放操作数、运算结果
MQ:乘商寄存器,进行乘、除法时用得到
X:通用寄存器,存放操作数
ALU:算数逻辑单元,用电路实现各种算术运算,逻辑运算
控制器
PC:程序计数器,存放下一条指令的地址
IR:指令寄存器,存放当前执行的指令
CU:控制单元,分析指令,给出控制信号
工作过程
初始:指令、数据存入主存,PC指向第一条指令
从主存中取出指令放入IR、PC自动加一,CU分析指令、CU指挥其他部件执行指令
计算机系统的多级层次结构
五层
M4:高级语言机器(执行高级语言)
M3:汇编语言机器(执行器汇编语言)
M2:操作系统机器(向上提供广义指令)
M1:传统机器(执行机器语言指令)
M0:微程序机器(执行微指令)
三个级别的语言
高级语言、汇编语言、机器语言
编译程序:将高级语言一次全部翻译为汇编语言,或直接翻译为机器语言
汇编程序:将汇编语言翻译成机器语言
解释程序:高级语言翻译成机器语言(翻译一句执行一句)
1.3 计算机性能指标
存储器的容量
MAR的位数反映存储单元数量
MDR反映每个存储单元大小
总容量 = 存储单元个数 * 存储字长 (bit) = 存储单元个数 * 存储字长 / 8 (Byte)
CPU
时钟周期:CPU中最小的时间单位,每个动作至少要一个时钟周期
主频(时钟频率):= 1/时钟周期 ,单位:Hz
CPI:执行一条指令所需的时钟周期数
CPU执行时间:运行一个程序所花费的时间,= (指令条数 * CPI)/ 主频
IPS:每秒执行多少条指令,= 主频/平均CPI
FLOPS:每秒执行多少次浮点运算
其他
数据通路宽度、吞吐量、响应时间、基准程序
常用数量单位
描述存储容量、文件大小时:K=2^10,M=2^20,G=2^30,T=2^40
描述频率、速率时:K=10^3、M=10^6、G=10^9,T=10^12
第2章 数据的表示与运算
进位计数值
r进制数
基数 = r,每个数码位可能出现 r 种字符。逢 r 进一
r 进制 --> 十进制
r 进制数的数值 = 各数码位与位权的乘积之和
二进制 <--> 八进制
每3个二进制位对应一个八进制位
二进制 <--> 十六进制
每4个二进制位对应一个十六进制位
注意“补位”
十进制 --> r 进制
整数部分:除基取余法,取得的“余”是整数的低位
小数部分:乘积取整法,先取得的“整”是小数的高位
注意:有的十进制小数无法用二进制精确表示,如0.3
真值和机器数
真值:实际的带正负号的数值(人类习惯的样子)
机器数:把正负号数字化的数(存到机器里的样子)
BCD码(用二进制编码的十进制)
8421码
每4个二进制对应一个十进制(有6个冗余状态)
8、4、2、1分别对应每一位的权值
0000~1001 分别对应 0~9,进行加法后若超出该范围,则需 +0110 进行修正(强制向高位进1)
余 3 码
8421码 + (0011)
2421码
2、4、2、1分别对应每一位的权值
表示 0~4 时最高位为0,表示5~9时最高位为1(避免歧义)
字符与字符串
ASCII码
通常用8bit表示一个字符,最高位都为0
共128个字符,0~31、127为控制/通信字符;32~126为可印刷字符
所有大写字母、所有小写字母、所有数字的编码都连续
汉字
区位码、国标码、汉字内码、输入编码、字形码
国标码 = 区位码 + 2020H
机内码 = 国标码 + 8080H
字符串
从低地址到高地址逐个字符存储,常用‘\0’作为结尾标志
对于多字节的数据(如汉字),可采用取大/小端存储模式
大端模式:将数据的最高有效字节存放在低地址单元中
小端模式:将数据的最高有效字节存放在高地址单元中
奇偶校验码
校验原理
码字间的距离:两个码字之间有几位不同
码距:一个编码方案中,合法码字间的最小距离
若码距 = 2,有检错能力;若码距 >=3,可能还会纠错能力
奇偶校验
在信息位的首部或尾部添加一个奇偶校验位
奇校验:整个校验码(信息位和校验位)中”1“的个数为奇数
偶校验:整个校验码(信息位和校验位)中”1“的个数为偶数
异或运算(模二加)
两个比特进行异或运算,仅当二者不同时,计算结果为1
海明校验码
基本思想
分组偶校验,多个校验位可反映出错位置
求解步骤
确定校验位个数(k个校验位,n个信息位)
2^k >= n+k+1
确定校验位分布
P1、P2、P3...分别在1、2、4、8、16...(2^i-1)
空出来的其他位置依次填入信息位
求校验位
将信息位的位置序号用k位二进制数表示出来
校验位Pi 与位置序号第i位的1的信息位归为一组,进行偶校验
纠错
对P1、P2、P3...所属各分组进行异或(相当于分组偶校验),求得S1、S2、S3...
S1 S2 S3 = 000,说明无错误
S1 S2 S3 不等于 000,则其值反映出错位置
补充
海明码有1位纠错,两位检错能力
为了区分 1 位错和 2位错,需要添加”全校验位“对整体进行偶校验
注意:有的题目位置编号可能是从小到大,但处理方法雷同
循环冗余校验码(CRC码)
构造
由生成多项式决定“除数”,若生成多项式中x的最高次为R,则“除数”有R+1位
K个信息位+R个0,作为“被除数”
被除数、除数进行“模二除”,的R位余数
K个信息位 + R位余数 = CRC码
校验
收到K+R位数据,与生成多项式模二除,计算R位余数
余数为0,说明无错误
余数非0,说明出错
检错、纠错能力
1.可检测出所有奇数个错误
2.可以检测出所有双比特的错误
3.可检测出所有小于等于校验位长度的连续错误
4.若选择合适的生成多项式,且2^R>=K+R+1,则可纠正单比特错误
定点数的表示和运算
表示
无符号数
有符号数
原码
补码
正数的补码 = 原码
负数的补码 = 反码末位加一(要考虑进位)
反码
“反码”只是“原码”转变为“补码”的一个中间状态,实际没什么用
若符号位为0,则反码与原码相同
若符号位为1,则数值位全部取反
移码
补码的基础上将符号位取反。注意移码只能用于表示整数
运算
移位运算
算数移位
左移1位相当于 乘以基数,右移1位相当于 除以基数
原码
符号位不参与移位,左移、右移都补0
反码
符号位不参与移位,左移、右移都补0
正数,左移、右移都补0
负数,左移、右移都补1
补码
正数补码的移位运算与原码相同,左移、右移都补0
负数补码最右边的1及其右边与原码相同,最右边的1的左边与反码相同。符号位不参与移位,左移补0,右移补1
逻辑移位
左移、右移都补0,移出的位舍弃
循环移位
不带进位位
用移出的位补上空缺
带进位位
移出的位放在进位位,原进位位补上空缺
加减运算
原码
加法
同号相加
数值部分 = 被加数、加数的绝对值进行相加
符号位不变
异号相加
数值部分 = 被加数、加数中绝对值更大的减去绝对值更小的
符号位与绝对值更大的数相同
减法
将减数取负,转变为加法
补码
总是要转变为加法,符号位参加运算
溢出判断(补码)
key:正 + 正 = 负(上溢);负 + 负 = 正(下溢)
方法一:采用一位符号位,设A的符号为As,B的符号为Bs,运算结果的符号为Ss,则溢出逻辑表达式为 ……
方法二:……
方法三:采用双符号位,正数符号为00,负数符号为11。加法运算后若双符号位 = 01则发生上溢;双符号位 = 10则发生下溢;若两个符号位相同则未发生溢出。
符号扩展
定点整数的符号扩展:在原符号位和数值位中间添加新位,正数都添0;负数原码添0,负数反码、补码添1;
定点小数的符号扩展:在原符号位和数值位后面添加新位,正数都添0;负数原码、补码添0,负数反码添1;
乘法运算
乘法运算的实现思想
考虑用机器实现需要考虑的问题:
1.实际数字有正负,符号如何处理
符号位单独处理,异或运算;数值位取绝对值进行乘法运算
2.乘积的位数扩大一倍,如何处理
3.4个位积都要保存下来最后统一相加?
原码的一位乘法
符号位异或运算,数值位由被乘数和乘数的绝对值进行n轮加法、移位
每次加法可能 +0,+[|x|]原
MQ中的最低位 = 1时,(ACC) + [|x|]原
MQ中的最低位 = 0时,(ACC) + 0
每次加法都是“逻辑右移”
乘数符号位不参与运算
补码的一位乘法
符号位、数值位都是由被乘数和乘数进行n轮加法、位移,最后多来一次加法
每次加法可能 +0,+[x]补,+[-x]补
辅助位 - MQ最低位 = 1时,(ACC) + [x]补
辅助位 - MQ最低位 = 0时,(ACC) + 0
辅助位 - MQ最低位 = -1时,(ACC) + [-x]补
每次位移都是“补码的算数右移”
乘数的符号位参加运算
除法运算
除法运算的实现思想
原码除法:恢复余数法
原码除法:加减交替法(不恢复余数法)
补码除法:加减交替法
C语言中的强制类型转换
C语言中定点整数是用“补码”存储的
无符号数转有符号数:不改变数据内容,改变解释方式
长整型变短整型:高位截断,保留低位
短整型变长整型:符号扩展
数据的存储和排列
大小端模式
边界对齐
空间换时间
浮点数的表示与运算
浮点数的表示
表示
阶码 + 尾数
尾数给出具体数值,阶码指明小数点前移、后移多少位
阶码通常是补码、移码表示的定点整数
尾数通常是补码、原码表示的定点小数
真值
N = r^E * M
规格化
尾数的最高位数值必须是一个有效值(类比十进制科学计数法,通常我们会让数值部分最高位为非0)
左规:数值位最高位无效时,通过尾数算数左移、阶码减1的方法处理,知道尾数最高位数值有效时停止
右规:若采用双符号位表示尾数,则当运算尾数“假溢出”时,可以通过尾数右移、阶码加1的方法处理
原码表示的尾数规格化:尾数的最高位数值必须是1
补码表示的尾数规格化:尾数最高位数值必须和尾数符号位相反
表示范围
IEEE 754标准
浮点数的运算
加减运算
真值到机器数的转换
注意阶码、尾数采用什么码表示;注意符号扩展满足规定位数
对阶
小阶向大阶看齐,尾数算数右移一位,阶码加1,直到阶码相同
注:对阶可能导致丢失末位精度
尾数加减
通常采用双符号位表示尾数,这样可以挽救尾数溢出
规格化
左规
尾数最高数值位为无效位时,尾数左移,阶码减1
右规
尾数双符号位不同时,尾数右移,阶码加1
舍入
尾数的位数有限导致的问题,常用方法:0舍1入、恒置1
溢出判断
阶码上溢
抛出异常(中断)
阶码下溢
按机器0处理
C强制类型转换
无损
char -> int -> long -> double
float -> double
有损
int -> float
可能会损失精度(float尾数的数值位有1+23位)
float -> int
可能会溢出,也可能会损失精度(如小数转整数)
算术逻辑单元(ALU)
ALU
实现算数运算、逻辑运算、辅助功能(移位、求补等)
基本结构:输入、输出、控制
电路基础知识
逻辑运算
与、或、非
与非、或非、异或、同或
门电路
最基础的逻辑元件,用于实现逻辑运算
逻辑表达式就是电路的数学化表示,根据逻辑运算的规则对逻辑表达式进行优化,也就是在优化电路
加法器的实现
一位全加器的设计
本为和
本位向高位的进位
子主题
串行加法器
一位全加器 + 进位触发器。只能一位一位地加
串行进位的并行加法器
多个全加器简单串联,可多位同时加
计算速度取决于进位产生和传递的速度
回忆:各种门电路的图形,全加器的图形和输入输出信号
加法器、ALU的改进
串行加法器 -> 串行进位的并行加法器 -> 组内并行、组间串行进位的加法器 -> 组内并行、组间并行进位的加法器
第3章 存储系统
存储系统的基本概念
层次结构
高速缓存(Cache)
主存储器(主存、内存)
可直接被CPU读写
辅助存储器(辅存、内存)
主存——辅存:实现虚拟存储系统,解决了主存容量不够的问题 Cache——主存:解决了主存与CPU速度不匹配的问题
分类
按层次结构
同上
按存储介质
半导体存储器、磁表面存储器、光存储器
按存取方式
随机存取存储器(RAM),如内存
顺序存取存储器(SAM),如磁带
直接存取存储器(DAM),如磁盘
SAM和DAM都属于“串行访问存储器”,读写某个存储单元所需的时间与存储单元的物理位置有关
相联存储器(可按内容访问的存储器,CAM),如快表
按信息可更改性
读/写存储器、只读存储器(ROM)
断电后信息是否消失
易失性存储器,如内存、Cache
非易失性存储器,如磁盘、光盘
信息读出后,原信息是否被破坏
破坏性读出,如DRAM芯片;非破坏性读出,如SRAM芯片、磁盘
存储器性能指标
存储容量 = 存储字数 * 字长
MDR位数反映存储字长
单位成本(每位价格) = 总成本 / 总容量
数据传输率(主存带宽) = 数据的宽度 / 存储周期
数据的宽度即存储字长
存储周期 = 存取时间 + 恢复时间
主存储器的基本组成
组成
地址寄存器(MAR)
存储体
数据寄存器(MDR)
时序控制逻辑
存储器的简单模型
基本元件
MOS管,作为通电“开关”
电容,存储电荷(即存储二进制0/1)
存储芯片的结构
译码驱动电路
译码器将地址信号转化为字选通线的高低电频
存储矩阵(存储体)
由多个存储单元构成,每个存储单元又由多个存储元构成
读写电路
每次读/写一个存储字
地址线、数据线、片选线、读写控制线(可能分开读线、写线;也可能只有一根)
寻址
现代计算机通常按字节编址(每个字节),即每个字节对应一个地址
按字节、字、半字、双字寻址
多字节存放:大端模式与小端模式
SRAM 与 DRAM
SRAM(静态RAM)
常用作Cache
存储信息
触发器
破坏性读出
非
读出后需要重写?(再生)
不需要
运行速度
快
集成度
低
发热量
大
存储成本
高
易失/非易失性存储器
易失
需要“刷新”?
不需要
送行列地址
同时送
DRAM(动态RAM)
常用作主存
存储信息
电容
破坏性读出
是
电容放电信息被破坏,是破坏性读出,读出后应有重写操作,也称为“重生”
读出后需要重写?(再生)
需要
运行速度
慢
集成度
高
发热量
小
存储成本
低
易失/非易失性存储器
易失
需要“刷新”?
需要(分散、集中、异步)
刷新由存储器·独立完成,不需要CPU控制
送行列地址
分两次送(地址线复用技术)
导致地址线、地址线引脚减半
只读存储器ROM
掩膜式只读存储器(MROM)
存储内容由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入,无法修改
一次可编程只读存储器(PROM)
存储内容由用户用专门的设备(编程器)一次性写入,之后无法修改
可擦除可编程只读存储器(EPROM)
紫外线擦除(UVEPROM)
电擦除(EEPROM)
修改次数有限,写入时间很长
闪速存储器(Flash Memory)
闪存的写速度一般比读速度更慢,因为写入前要先擦除
如U盘,写入速度较快
固态硬盘(Solid State Drives)
控制单元 + Flash芯片
主存储器与CPU的连接
存储器芯片的基本结构
位扩展
字扩展
线选法
译码片选法
译码器的使用
分析地址空间
字位同时扩展
选择存储器芯片
与CPU进行连接
提升主存速度
存取周期T = 存取时间r + 恢复时间
双端口RAM
支持两个CPU同时访问RAM
可同时读/写不同的存储单元;可同时读同一个存储单元;不能同时写(或一读一写)同一个单元
若发生“冲突”,则发出“BUSY”信号,其中一个CPU的访问端口暂时关闭
多模块存储器
单体多字存储器
每次并行读出m个连续的字
总线宽度也要扩展为m个字
多体并行存储器
高位交叉编址
理论上多个存储体可以被并行访问,但由于通常会连续访问,因此实际效果相当于单纯的扩容
低位交叉编址
当存储模块数 m>=T/r 时,可使流水线不间断
每个存取周期内可读写地址连续的m个字
微观上,m个模块被串行访问;宏观上,每个存取周期内所有模块被并行访问
高速缓冲存储器Cache
原理及概念
每次被访问的主存块,一定会被立即调入Cache
工作原理
将某些主存块复制到Cache中,缓和CPU与内存之间的速度矛盾
局部性原理
时间局部性
现在访问的地址,不久之后也很可能被再次访问
循环结构指令代码
空间局部性
现在访问的地址,其附近的地址也很可能即将被访问
数组元素、顺序执行的指令代码
性能分析
理解Cache命中率、缺失率
两种方式
先访问Cache,发现未命中再访问主存
平均访问时间:t = Htc + (1-H)(tc + tm)
同时访问Cache和主存,若Cache命中则停止访问主存
平均访问时间:t = Htc + (1-H)tm
其他概念
主存与Cache之间以“块”为单位进行数据交换
主存的“块”又叫“页/页框/页面”;Cache的“块”又叫“行”
主存地址可拆分为(主存块号、块内地址)的形式
映射方式
Cache中存储的信息
有效位(0/1)+ 标记 + 整块数据
其他“标记”用于指明对应的内存块,不同映射方式,“标记”的位数不同
全相联映射
主存块可以放到Cache的任意位置
主存地址结构
标记(整个主存块号)+ 块内地址
优点:Cache存储空间利用充分,命中率高;缺点:查找“标记”最慢,可能需要对比所有行的标记
直接映射
主存块只能放到特定的某个Cache行,行号 = 主存块号 % 总行数
主存地址结构
标记(主存块号前几位)+ 行号(主存块号末几位)块内地址
优点:对于任意一个地址,只需对比一个“标记”,速度最快;缺点:Cache存储空间利用不充分,命中率低
组相联映射
主存块可以放到特定的分组中的任意位置,所属组号 = 主存块号 % 总组数
主存地址结构
标记(主存块号前几位)+ 组号(主存块号末几位)块内地址
优点:另外两种方式的折中,综合效果较好
术语:n路组相联映射——每n个Cache行为一组
替换算法
随机替换(RAND)
随机选一个主存块替换
过于Freestyle,效果很差
先进先出算法(FIFO)
优先替换最先被调入Cache的主存块
不遵循局部性原理,效果差
近期最少使用(LRU)
将最久没有访问过的主存块替换,每个Cache行设置一个“计数器”,用于记录多久没被访问
Cache块的总数 = 2^n,则计数器只需n位
基于“局部性原理”,近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,Cache命中率高
最不经常使用(LFU)
将被访问次数最少的主存块替换。每个Cache行设置一个“计数器”,用于记录被访问过多少次
曾经被经常访问的主存块在未来不一定会用到,LFU实际运行效果不好
写策略
写命中
全写法(写直通法,write-through)
当CPU对Cache写命中时,必须把数据同时写入Cache和内存,一般使用写缓冲(write buffer)
写回法
当CPU对Cache写命中,只修改Cache的内容,而不立即写回主存,只有当此块被换出时才写回主存
写不命中
写分配法
当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用
非写分配法
当CPU对Cache写不命中时只写入主存,不调入Cache。通常搭配全写法使用
多级Cache
现代计算机通常采用多级Cache结构,各级Cache间常采用“全写法 + 非写分配法”,Cache和主存间常采用“写回法 + 写分配法”
页式存储器
页式存储系统:一个程序(进程)在逻辑上被分为若干个大小相等的“页面”,“页面”大小与“块”的大小相同。每个页面可以离散地放入不同的主存块中
虚地址(逻辑地址)VS 实地址(物理地址)
地址变换过程
注意区别:快表中存储的是页表项的副本,Cache中存储的是主存块的副本
虚拟存储系统
存储系统存在的问题
Cache的工作原理
性能分析
虚拟存储器
页式虚拟存储器
层次结构
段式虚拟存储器
第4章 指令系统
指令格式
一条指令由操作码、地址码组成,其中地址码可能有0~4个
按地址码数目分类
零/一/二/三/四地址指令
按指令长度分类
指令字长的概念(对比机器字长、存储字长)
指令字长
一条指令的总长度(可能会变)
机器字长
CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
存储字长
一个存储单元中的二进制代码位数(通常和MDR位数相同)
定长指令字结构
所有指令长度相同
变长指令字结构
各指令长度不同
按操作码长度分类
定长操作码
可变长操作码
按操作类型分类
数据传送类
CPU、主存之间的数据传送
运算类
算数逻辑操作、移位操作
程序控制类
改变程序执行流
输入输出类
CPU、I/O设备之间的数据传送
指令(机器指令)的定义
是计算机执行某种操作的命令,是计算机运行的最小功能单位
一台计算机所有指令的集合构成该机的指令系统,也称指令集
扩展操作码
不同地址数的指令使用不同长度的操作码
指令寻址
什么是指令寻址
确定下一条要执行的指令的存放地址
由程序计数器PC指明
顺序寻址
(PC) + "1" --> PC
此处的“1”要理解为1个指令字长
每次取指令结束后,一定会PC + "1"
跳跃寻址
执行转移类指令导致的PC值改变
数据寻址
指令寻址 VS 数据寻址
指令寻址
下一条欲执行指令的指令地址,始终由程序计数器PC给出
数据寻址
确定本条指令的地址码指明的真实地址
直接寻址
指令字中的形式地址A就是操作数的真实地址EA。即EA = A
间接寻址
指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA = (A)
优点:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数);便于编制程序(用间接寻址可以方便地完成子程序返回)
缺点:指令在执行阶段要多次访存(一次间接寻址需两次访存)
寄存器寻址
在指令字中直接给出操作数所在的寄存器编号,即EA = Ri,其操作数在由Ri所指的寄存器内
优点:指令执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算
缺点:寄存器价格昂贵,计算机中寄存器个数有限
寄存器间接寻址
寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA = (Ri)
特点:与一般的间接寻址相比速度更快,但指令执行阶段需要访问主存(因为操作数在主存中)
隐含寻址
不明显地给出操作数的地址,而是在指令中隐含着操作数的地址
优点:有利于缩短指令字长
缺点:需要增加存储操作数或隐含地址的硬件
立即寻址
形式地址A就是操作数本身,又称为立即数,一般采用补码形式。#表示立即寻址特征
优点:指令执行阶段不访问主存,指令执行时间最短
缺点:A的位数限制了立即数的范围
偏移寻址
相对寻址
以程序计数器PC所指地址作为“起点”
把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA = (PC)+A
优点:代码在程序内浮动时不用更改跳转指令的地址吗(便于程序浮动),广泛应用于转移指令
基址寻址
以程序的起始存放地址作为“起点”
将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA = (BR)+A
优点:便于程序“浮动”,方便实现多道程序并发运行
变址寻址
程序员自己决定从哪里作为“起点”
有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA = (IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器
变址寄存器的内容可由用户改变,特别适合编制循环程序
堆栈寻址
操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址
入栈/出栈时EA的确定方式不同
CISC和RISC
CISCS
设计思路:一条指令完成一个复杂的基本功能
代表:x86架构,主要用于笔记本、台式机等
RISC
设计思路:一条指令完成一个基本“动作”,多条指令组合完成一个复杂的基本功能
代表:ARM架构,主要由于手机、平板
第5章 中央处理器
CPU的功能和结构
CPU的功能
指令控制、操作控制、时间控制、数据加工、中断控制
运算器的功能
对数据进行加工
控制器的功能
取指令、分析指令、执行指令
运算器的基本结构
算术逻辑单元ALU
主要功能是进行算术/逻辑运算
暂存寄存器
用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容
通用寄存器组
如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址
累加寄存器ACC
它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算
程序状态字寄存器PSW
保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成
移位器、计数器
移位器:对运算结果进行移位运算;计数器:控制乘除运算的操作步数
数据通路的基本结构
管理多条通路:多路选择器MUX与三态门
专用通路
内部总线
控制器的基本结构
程序计数器PC
指令寄存器IR
指令译码器、时序系统、微操作信号发生器
存储器地址寄存器MAR
存储器数据寄存器MDR
用户可见的寄存器:通用寄存器组、程序状态字寄存器PSW、程序计数器PC 用户不可见的寄存器:MAR、MDR、IR、暂存寄存器
指令执行过程
指令周期
CPU从主存中每取出并执行一条指令所需的全部时间
机器周期/CPU周期——CPU时钟周期/节拍
指令周期常常用若干机器周期来表示,机器周期又叫CPU周期。一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)
取指周期、间址周期、执行周期、中断周期
标志触发器FE、IND、EX、INT
数据流
取值周期:根据PC中的内容取出指令代码并存放在IR中
间址周期:根据IR中指令地址码取操作数有效地址
执行周期:根据指令字的操作码和操作数进行相应的操作
中断周期:保存断点、送中断向量、处理中断请求
执行方案
单指令周期:所有指令选用相同的执行时间。指令间串行
多指令周期:不同类型指令选用不同的执行步骤,指令之间串行
流水线方案:隔一段时间启动一条指令,多条指令处于不同阶段,同时运行
数据通路的功能和基本结构
数据通路:数据在功能部件之间传送的路径
CPU内部总线
单总线
多总线
专用通路结构
控制器的功能和工作原理
控制器的设计
硬布线
设计步骤
1. 分析每个阶段的微操作序列(取值、间址、执行、中断 四个阶段)
2. 选择CPU的控制方式
3. 安排微操作时序
4. 电路设计
1)列出操作时间表
2)写出微操作命令的最简表达式
3)画出逻辑图
安排微操作时序的原则
原则一 微操作的 先后顺序不得 随意 更改
原则二 被控对象不同的微操作尽量安排在 一个节拍内完成
原则三 占用 时间较短 的微操作尽量安排在 一个节拍内完成并允许有先后顺序
硬布线控制器的特点
指令越多,设计和实现就越复杂,因此一般用于 RISC(精简指令集系统)
如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生
微程序
CU的结构
微地址形成部件
微地址即微命令在CM中的存放地址
通过指令操作码形成对应微程序的第一条微指令的存放地址
顺序逻辑
根据某些机器标志和时序信息确定下一条微指令的存放地址
CMAR(uPC)
指明接下来要执行的微命令的存放地址
地址译码器
将CMAR内的地址信息译码为电信号,控制CM读出微指令
控制存储器CM
存放所有机器指令对应的微程序(微指令序列)
用ROM实现,按地址寻访。通常在CPU出厂时就把所有微程序写入
CMDR(uIR)
微指令寄存器,用于存放当前要执行的微指令。CM(uPC) -> uIR
工作原理
指令周期 = 取址周期 -> 间址周期 -> 执行周期 -> 中断周期。其中间址、中断周期可有可无
处理取指周期、间址周期、中断周期的微指令序列通常是公用的。执行周期的微指令序列各不相同
取指周期的微指令序列固定从 #0 开始存放。执行周期的微指令序列的存放根据指令操作码确定
概念对比
程序 VS 微程序;指令VS微指令;主存储器VS控制器存储器(CM);MAR vs CMAR;MDR vs CMDR;PC vs uPC;IR vs uIR
程序:由指令序列组成;微程序:由微指令序列组成,每一种指令对应一个微程序
微命令、微操作、微指令、微程序之间的关系
微命令与微操作一一对应,微指令中可能包含多个微命令
微程序由微指令序列组成,每一种指令对应一个微程序
指令周期:从主存取出并执行一条机器指令所需的时间
微周期(微指令周期):从控制存储器取出一条微指令并执行相应微操作所需的时间
微指令的设计
微指令的格式
水平型微指令
每条微指令能定义多个并行的微命令
优点:微程序短,执行速度快
缺点:微指令长,编写微程序较麻烦
垂直型微指令
每条微指令只能定义一个微命令,由微操作码指明
优点:微指令短、简单,便于编写微程序
缺点:微程序长,执行速度慢,工作效率低
混合型微指令
在垂直型微指令的基础上加上一些简单的并行操作
水平型微指令的编码方式
直接编码(直接控制)
控制码的每一个bit对应一个微命令,微指令执行速度最快
字段直接编码
将互斥性的微命令分在同一个段内,相同的分在不同的段内
每个段留出一个状态表示“不操作”
微指令操作码需要经过译码电路处理,因此执行速度更慢
优点:可以缩短微指令字长 缺点:要通过译码电路后再发出微命令,因此比直接编码慢
字段间接编码
一个字段的微命令需要另一个字段的微命令解释
可能需要多级译码电路处理,执行速度最慢
优点:进一步缩短微指令字长 缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段
下一条微指令地址的形成方式
断定法(下地址法):根据当前执行的微指令下地址找到下一条微指令
计数器法:uPC+1 顺序找到下一条微指令
根据指令操作码确定执行周期微程序首地址
由专门的硬件指明取指/中断周期的微程序首地址
微程序控制单元的设计
设计步骤
1. 分析每个阶段的微操作序列
2. 写出对应机器指令的微操作命令及节拍安排
(1) 写出每个周期所需要的微操作(参照硬布线)
(2)补充微程序控制器特有的微操作
a. 取指周期:Ad ( CMDR ) -> CMAR;OP ( IR ) -> CMAR
b. 执行周期:Ad(CMDR) -> CMAR
3. 确定微指令格式
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。 根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。 最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
4. 编写微指令码点
根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点
指令流水线
基本概念
指令执行过程划分为不同阶段,占用不同的资源,就能使多条指令同时执行
取指:根据PC内容访问主存储器,取出一条指令送到IR中
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数
执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中
传统冯·诺依曼机采用顺序执行方式,又称串行执行方式
优点:控制简单,硬件代价小
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低
指令流水线优缺点
优点:程序的执行时间缩短,各功能部件的利用率明显提高
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了
表示方法
指令流程图:主要用于分析影响流水线的因素
时空图:主要用于分析流水线的性能
性能指标
吞吐率TP
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。设任务数为n;处理完成n个任务所用的时间为Tk,则计算流水线吞吐率(TP)的最基本的公式为 TP =n / Tk
加速比S
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。设T0表示不使用流水线时的执行时间,即顺序执行所用的时间;Tk表示使用流水线时的执行时间,则计算流水线加速比(S)的基本公式为 S = T0 / Tk
效率E
流水线的设备利用率称为流水线的效率。在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。则流水线效率(E)的一般公式为 E = T0 / k*Tk
影响因素
结构相关(资源冲突):多条指令争用同一资源
暂停相关指令一周期
资源重新配置:数据存储器 + 指令存储器
数据相关(数据冲突):后续指令需要用到之前指令的执行结果
暂停相关指令
硬件阻塞(stall)
根据指令流程图分析耗时
软件插入NOP
数据旁路技术
编译优化,调整指令顺序
控制相关(控制冲突):遇到转移指令和其他改变PC值的指令时发生
分支预测:尽早判断转移是否发生,尽早生成转移目标地址
预取转移成功和不成功两个控制流方向上的目标指令
加快和提前形成条件码
提高转移方向的猜准率
分类及常见技术
分类
1.部件功能级、处理机级和处理机间级流水线
根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。
部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。
处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程
处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中
2.单功能流水线和多功能流水线
按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线
单功能流水线指只能实现一种固定的专门功能的流水线
多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线
3.动态流水线和静态流水线
按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线
静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作
动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂
4.线性流水线和非线性流水线
按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线
线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路
非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算
常见技术
多发技术
1.超标量技术
2.超流水技术
3.超长指令字
五段式指令流水线
①IF取指 -> ②ID译码&取数 -> ③EX 执行 -> ④M访存 -> ⑤WB写回寄存器
考试中常见的五类指令
运算类指令
IF:根据PC从指令Cache取指令至IF段的锁存器 ID:取出操作数至ID段锁存器 EX:运算,将结果存入EX段锁存器 M:空段 WB:将运算结果写回指定寄存器
LOAD指令
IF:根据PC从指令Cache取指令至IF段的锁存器 ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm EX:运算,得到有效地址 M:从数据Cache中取数并放入锁存器 WB:将取出的数写回寄存器
STORE指令
IF:根据PC从指令Cache取指令至IF段的锁存器 ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm。将要存的数放到B EX:运算,得到有效地址。并将锁存器B 的内容放到锁存器 Store。 M:写入数据Cache WB:空段
通常,RISC处理器只有“取数LOAD”和“存数STORE”指令才能访问主存
条件转移指令
IF:根据PC从指令Cache取指令至IF段的锁存器 ID:进行比较的两个数放入锁存器A、B;偏移量放入 Imm EX:运算,比较两个数 M:将目标PC值写回PC(左图没画全) WB:空段
无条件转移指令
IF:根据PC从指令Cache取指令至IF段的锁存器 ID:偏移量放入 Imm EX:将目标PC值写回PC M:空段 WB:空段
第6章 总线
概述
基本概念
定义
一组能为多个部件分时共享的公共信息传送线路
特性
机械特性:尺寸、形状、管脚数、排列顺序
电气特性:传输方向和有效的电平范围
功能特性:每根传输线的功能(地址、数据、控制)
时间特性:信号的时序关系
总线的分类及经典结构
分类
按数据传输格式分
串行总线
优点:只需要一条传输线,成本低廉,广泛应用于长距离传输;应用于计算机内部时,可以节省布线空间
缺点:在数据发送和接收的时候要进行拆卸和装配,要考虑串行并行转的问题
并行总线
优点:总线的逻辑时序比较简单,电路实现起来比较容易
缺点:信号线数量多,占用更多的布线空间;远距离传输成本高昂
按功能分
片内总线
片内总线是芯片内部的总线。它是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线
系统总线
系统总线是计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线。按系统总线传输信息内容的不同,又可分为3类:数据总线、地址总线和控制总线。
数据总线
传输各功能部件之间的数据信息,包括指令和操作数;位数(根数)与机器字长、存储字长有关;双向
地址总线
传输地址信息,包括主存单元或I/O端口的地址;位数(根数)与主存地址空间大小及设备数量有关;单向
控制总线
传输控制信息;一根控制线传输一个信号;有出:CPU送出的控制命令;有入:主存(或外设)返回CPU的反馈信号
通信总线
通信总线是用于计算机系统之间或计算机系统与其他系统(如远程通信设备、测试设备)之间信息传送的总线,通信总线也称为外部总线
按时序控制方式分
同步总线
异步总线
(系统)总线结构
单总线
结构:CPU、主存、I/O设备(通过I/O接口)都连接在一组总线上,允许I/O设备之间、I/O设备和CPU之间或I/O设备与主存之间直接交换信息。
优点:结构简单,成本低,易于接入新的设备。
缺点:带宽低、负载重,多个部件只能争用唯一的总线,且不支持并发传送操作
双总线
结构:双总线结构有两条总线,一条是主存总线,用于CPU、主存和通道之间进行数据传送;另一条是I/O总线,用于多个外部设备与通道之间进行数据传送
优点:将较低速的I/O设备从单总线上分离出来,实现存储器总线和I/O总线分离。
缺点:需要增加通道等硬件设备
三总线
结构:三总线结构是在计算机系统各部件之间采用3条各自独立的总线来构成信息通路,这3条总线分别为主存总线、I/O总线和直接内存访问DMA总线。
优点:提高了I/O设备的性能,使其更快地响应命令,提高系统吞吐量。
缺点:系统工作效率较低。
补充
桥接器:用于连接不同的总线,具有数据缓冲、转换和控制功能
靠近CPU的总线速度较快
性能指标
1. 总线的传输周期(总线周期)
一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),通常由若干个总线时钟周期构成
2. 总线时钟周期
即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制
3. 总线的工作频率
总线上各种操作的频率,为总线周期的倒数,实际上指一秒内传送几次数据
4. 总线的时钟频率
即机器的时钟频率,为时钟周期的倒数,实际上是指一秒内有多少个时钟周期
5. 总线宽度
又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线
6. 总线带宽
可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)表示
总线带宽 = 总线工作频率 * 总线宽度(bit/s) = 总线工作频率 * (总线宽度 / 8)(B/s)
注:总线带宽是指总线本身所能达到的最高传输速率,在计算实际的有效数据传输速率时,要用实际传输的数据量除以耗时
7. 总线复用
总线复用是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息,从而节省了空间和成本
8. 信号线数
地址总线、数据总线和控制总线3种总线数的总和称为信号线数
总线仲裁
基本概念
定义:多个主设备同时竞争主线控制权时,以某种方式选择一个主设备优先获得总线控制权称为总线仲裁
集中仲裁方式
链式查询方式
优点:链式查询方式优先级固定。只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易
缺点:对硬件电路的故障敏感,并且优先级不能改变。当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线
计数器定时查询方式
结构特点:用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线BG;它仍共用一根总线请求线
优点:1. 计数初始值可以改变优先次序 - 计数每次从“0”开始,设备的优先级就按顺序排列,固定不变; - 计数从上一次的终点开始,此时设备使用总线的优先级相等; - 计数器的初值还可以由程序设置 2. 对电路的故障没有链式敏感
缺点:1. 增加了控制线数 - 若设备有n个,则需élog2nù +2条控制线 2. 控制相对比链式查询相对复杂
独立请求方式
结构特点:每一个设备均有一对总线请求线BRi和总线允许线BGi
优点:1. 响应速度快,总线允许信号BG直接从控制器发送到有关设备,不必在设备间传递或者查询。 2. 对优先次序的控制相当灵活。
缺点:1. 控制线数量多 -若设备有n个,则需要2n+1条控制线。其中+1为BS线,用于设备向总线控制部件反馈已经是否正在使用总线。 2. 总线的控制逻辑更加复杂
分布仲裁方式
不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线
操作与定时
总线传输的四个阶段
申请分配阶段
传输请求
总线仲裁
寻址阶段
获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
传输阶段
主模块和从模块进行数据交换,可单向或双向进行数据传送
结束阶段
主模块的有关信息均从系统总线上撤除,让出总线使用权
定时
总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则
同步定时方式(同步通信)
总线控制器采用一个统一的时钟信号来协调发送和接收双方的传送定时关系
优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统
异步定时方式(异步通信)
根据“请求”和“回答”信号的撤销是否互锁,分为以下3种类型
不互锁
速度最快、可靠性最差
半互锁
全互锁
最可靠、速度最慢
优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢
半同步通信
统一时钟的基础上,增加一个“等待”响应信号WAIT
分离式通信
分离式通信的一个总线传输周期
子周期1:主模块申请占用总线,使用完后放弃总线的使用权
子周期2:从模块申请占用总线,将各种信息送至总线上
特点
1. 各模块均有权申请占用总线
2. 采用同步方式通信,不等对方回答
3. 各模块准备数据时,不占用总线
4. 总线利用率提高
标准
系统总线
ISA(并行总线,1984提出)
EISA(并行总线,1988提出,在ISA基础上增加位宽)
FBS、QPI(串行总线,Intel提出的两种系统总线,用于连接CPU与北桥芯片,QPI又称为multi-FSB)
局部总线
VESA(并行总线,1991提出,用于传输图像)
PCI(并行总线,1992提出,速度和VESA差不多,但是总线工作频率可以独立于CPU主频,用于连接显卡、声卡、网卡等,支持即插即用)
APG(并行总线,1996提出,从PCI2.1基础扩展而来,用于连接显存与主存)
PCI-E(串行总线,2001提出,工作频率很高,支持全双工通信)
设备总线(通信总线)
连接各种外设
RS-232C(串行总线,1970提出,用于极慢速的电传打印机)
SCSI(并行总线,1986提出,用于连接硬盘、打印机、扫描仪等)
PCMCIA(并行总线,1991提出,用于连接外部存储卡,目的是增强个人电脑的信息互换)
USB(串行总线,1996提出,采用差模信号,每次传递1bit,工作频率可以很高)
连接硬盘
IDE(并行总线,1986提出,又称ATA总线,Parallel ATA,主要用于连接硬盘、光驱等)
SATA(串行总线,2001提出,Serial ATA,主要用于连接硬盘、光驱等)
第7章 输入/输出系统
I/O系统基本概念
基本概念
IO硬件
输入设备、输出设备、外存设备、I/O接口(I/O控制器)
IO软件
IO指令
CPU执行的指令,用于控制IO接口或控制通道
通道指令
通道执行的指令,与CPU机器指令不是一套东西
I/O控制方式
程序查询方式:CPU“忙等”慢速设备完成工作,二者串行工作
程序中断方式:设备准备数据时,CPU继续工作,设备准备好之后向CPU发出中断请求,CPU在指令周期的末位检查中断并做出中断响应(执行中断处理程序)
DMA方式:主存与IO交换信息时由DMA控制器控制,传输完一整块数据才需要中断
通道方式:通过IO指令启动通道,通道执行通道指令序列,通道程序存放在主存中
外部设备
输入设备
输出设备
外存设备
I/O接口
又称I/O控制器
结构和作用
数据缓冲寄存器(DBR)
暂存即将输入输出的数据
使主机与外设的速度匹配
状态/控制器寄存器
命令字:CPU对设备发出具体的命令
状态字:设备的状态信息,供CPU检查
串-并转换机构
数据格式的转换
I/O控制逻辑
根据命令字向设备发出控制信号
地址译码逻辑
将地址信号映射到指定的I/O端口
I/O端口
指IO控制器中可以被CPU访问的寄存器
统一编址:IO端口和主存地址空间统一,用访存指令访问IO端口
优点:不需要专门的输入/输出指令,所有访存指令可直接访问端口,程序设计灵活度高;端口有较大的编址空间;读写控制逻辑电路简单
缺点:端口占用了主存地址空间,使主存地址空间变小,外设寻址时间长(地址位数多,地址译码速度慢)
独立编址:IO端口地址与主存地址相互独立,用IO指令访问IO端口
优点:使用专用的I/O指令,程序编制清晰;I/O端口地址位数少,地址译码速度快;I/O端口的地址不占用主存地址空间
缺点:I/O指令类型少,一般只能对端口进行传送操作,程序灵活性差;需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性
分类
按数据传送方式分
并行接口
串行接口
按主机访问I/O设备的控制方式分
程序查询接口
中断接口
DMA接口
按功能选择的灵活性分
可编程接口
不可编程接口
I/O方式
程序查询方式
主要特点:CPU有“踏步”等待现象,CPU与I/O设备串行工作
优点:接口设计简单,设备量少
缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低
独占查询;定时查询
程序中断方式
中断系统
中断的基本概念
工作流程
中断请求
中断源向CPU发送中断请求信号
中断请求分类
内中断
外中断(中断)
非屏蔽中断
可屏蔽中断
中断请求标记
中断响应
响应中断的条件
中断判优:多个中断源同时提出请求
硬件排队器
查询程序
优先级设置
1.硬件故障中断属于最高级,其次是软件中断
2.非屏蔽中断优于可屏蔽中断
3.DMA请求由于I/O设备传送的中断请求
4.高速设备优于低速设备
5.输入设备优于输出设备
6.实时设备优于普通设备
中断处理
中断隐指令
保存原程序的PC值,并让PC指向中断服务程序的第一条指令
并不是一条具体的指令,而是CPU在检测到中断请求时自动完成的一系列动作
主要任务
关中断
保证原子性
保存断点
存入堆栈
引出中断服务程序
软件查询法
硬件向量法
由硬件(中断向量地址形成部件)产生向量地址,再由向量地址找到入口地址(中断向量)
中断服务程序
主要任务
保护现场
中断服务(设备服务)
恢复现场
中断返回
单重中断与多重中断
单重中断:执行中断服务程序时不响应新的中断请求
多重中断(中断嵌套)
中断屏蔽技术
屏蔽字
程序执行轨迹
程序中断方式
工作流程
CPU占用情况
中断响应(隐指令)
中断服务程序
DMA方式
DMA控制器
主要功能
传送前:接受外设的DMA请求,向CPU发出总线请求,接管总线控制权
传送时:管理总线,控制数据传送;确定主存单元地址及长度,能自动修改对应参数
传送后:向CPU报告DMA操作的结束
组成
主存地址计数器:存放要交换数据的主存地址
传送长度计数器:记录传送数据的长度
数据缓冲寄存器:暂存每次传送的数据
DMA请求触发器:设备准备好数据后将其置位
控制/状态逻辑:由控制和时序电路及状态标志组成
中断机构:数据传送完毕后触发中断机构,提出中断请求
传送过程
预处理:CPU完成寄存器初值设置等准备工作
数据传送:CPU继续执行主程序,DMA控制器完成数据传送
后处理:CPU执行中断服务程序做DMA结束处理
传送方式
停止CPU访存:需要数据传送时,停止CPU访存,总线控制权交给DMA控制器
交替访存:将CPU周期分为DMA访存和CPU访存两部分
周期挪用(周期窃取):I/O设备需要访存时,挪用一个或几个存取周期
特点
与中断方式的区别
CPU占用情况