导图社区 计算机组成原理思维导图
这是一个关于02计算机组成原理的思维导图,包含概述、数据运算、存储系统、中央处理器等。
编辑于2023-12-08 15:47:38计算机组成原理
第一章 概述
计算机系统层次结构
硬件
冯诺依曼计算机
存储程序
控制流驱动
事先编好的程序与数据送入主存 计算机逐条执行
单处理机
指令与数据地位相同
指令数据都为二进制代码
以运算器为中心
现代计算机
以存储器为中心
结构
输入设备
输出设备
存储器
主存(内存储)
存储体
辅存(外存)
CPU
MAR(地址存储器)
MDR(数据存储器)
运算器
控制器
软件
组成
系统软件
应用软件
语言
机器语言
计算机可直接执行
二进制代码
汇编语言
英文单词及缩写字母构成
转换为机器语言才可执行
高级语言
Java,c,c+等
源程序到可执行文件
多级层次结构
解释程序 边翻译边执行
性能指标
字长
为字节(1B或者8bit)的整数倍
机器字长
CPU内用于整数运算的数据通路宽度
ALU长位数
通用寄存器位数
指令字长
一个指令字的二进制代码位数
存储字长
一个存储单元的二进制代码长度
数据通路带宽
数据总线一次并行传输的位数
主存容量
运算速度
吞吐量
单位时间内处理请求的数量
主频
CPU时钟频率
一般为多少HZ
1hz代表每秒一次
1GHZ = 10⁹
一秒多少个时钟周期
CPU时钟周期
主频倒数
1/主频
一个时钟周期多少秒
CPI
执行一条指令所用的时钟周期的数目
执行一条指令要几个时钟周期
与三个因素有关
指令集
程序编写(系统结构)
计算机组织(架构)
CPU执行时间
( 指令条数 × CPI )/ 主频
MIPS
每秒执行多少百万(M)条指令
主频 / (CPI×10⁶)
FLOPS
mflops
每秒执行多少百万次浮点数运算
浮点操作次数 / (执行时间×10⁶)
gflops
十亿
10⁹
tflops
万亿
10¹²
pflops
千万亿
10¹⁵
zflops
透明性
不可见的内容
对于高级语言程序员, 指令格式,数据运算过程等属于不可见内容
对于机器语言或汇编语言程序员, 指令格式,机器结构,数据格式属于可见内容
在CPU中程序员无法查看MAR,MDR,IR的内容
第二章 数据运算
进制法
二进制
基数为2
八进制
逢八进一
诀窍:三位的二进制数
十进制
十六进制
123456789ABCDEF
诀窍①:四位的二进制数
诀窍②:A代表10
BCD码
8421码
四个二进制数表示一个十进制数
修正法:
①两码运算结果小于或等于十进制的数字9,则不修正
②两码运算结果大于或等于十进制的数字10,则加上十进制数字6(0110)
余三码
在8421码的基础上加3即(0011) 这样每个数都余三
2421码
从高位往低位依次为 2421 如:5=(0101)
编码表示
原码
0的表示不唯一
字长为n+1,带符号原码的范围 -(2ⁿ-1)≤ x ≤ 2ⁿ-1
反码
正数 原码=反码
负数 符号位不变,数值取反
补码
0的表示唯一
正数 原码=反码=补码
负数 原码反码转换:原码从右到左,找到第一个1,这个1的左边所有数值位取反,即得到补码
字长为n+1,带符号补码的范围 -2ⁿ ≤ x ≤ 2ⁿ-1
在C语言中以补码形式存储
移码
0的表示唯一
表示浮点数的阶码
偏置量
补码符号位取反→移码
定点数的移位
算术移位
针对符号数
移位时符号位不变
正数算术移位 原反补都填0
负数算术移位 原码填0 补码左移填0,右移填1 反码填1
逻辑移位
针对无符号数
逻辑左移,高位丢,低位补零
逻辑右移,低位丢,高位补零
定点数的加减
补码加减
加法直接运算
减法 A补 + (-B)补
标志符
无符号数
CF 进位借位
判断无符号数溢出
加法进位
判断减法借位
小 - 大 有借位
ZF 零标志
结果为0,则ZF=1
有符号数
ZF 零标志
SF 符号标志
表示结果的符号
OF 溢出标志
判断有符号数的溢出
溢出判断
一位符号位
两位符号位 (模四补码)
存储时只存一位
两位相同表示无溢出
两位不同
01
正溢出
10
负溢出
定点数的乘法
原码一位乘法
手算
类似十进制,直接算
机算
计算A×B
图解
X通用寄存器中存放被乘数A
MQ中存放乘数B
ACC中存放每一轮的运算结果
过程
被乘数和乘数取绝对值参加运算 符号位单独处理(异或运算)
① ACC中的数何时与通用寄存器X中的数相加? 看MQ的最低位是否为1,为1则ACC与X相加,其结果放入ACC中
(ACC)+(X)→ ACC
② ACC中存放了新结果后,进行逻辑右移 MQ逻辑右移,ACC逻辑右移 ACC的高位补0,ACC的低位右移出来的数移到MQ的高位, 而MQ的低位则移丢
补码一位乘法
手算
机算
辅助位 - MQ最低位 = 1,(ACC)+(x)补
辅助位 - MQ最低位 = 0,(ACC)+ 0
辅助位 - MQ最低位 = -1,(ACC)+(-x)补
过程
补码一位乘法,采用双符号位
进行n轮加法,移位,最后再来一次加法
每次移位是算术右移
符号位参与运算
辅助位在MQ最低位之后,初始为0 MQ右移多出来的数代替原本的辅助位的初始0或者其他数
加法,移位过程与原码一位乘法相同
定点数的除法
原码除法(恢复余数法)
a÷b
ACC存储 被除数a,余数
MQ存储 商(初始全为0)
X存储 除数b
过程
首先默认商1,出错则改为0,并且恢复余数
商0,进行ACC+(b)补,结果放到ACC中
商1,进行ACC+(-b)补
若计算后的结果,符号位为1,则说明商错了,则恢复
加法运算并且得到新结果后,ACC和MQ逻辑左移,MQ低位补0
重复以上操作
原码除法(加减交替法)
刚开始, a+(-b)补 得到新余数
若余数为负,则商0,余数逻辑左移再+(b)补
余数为正,则商1,余数逻辑左移再+(-b)补
最后一步 如果余数为负,则商0,+(b)补 得到正确余数
补码除法(加减交替法)
符号位参与运算,双符号位
刚开始 判断被除数与除数是否同号, 同号则 被除数 - 除数 异号则 被除数 + 除数
后续 余数和除数同号 商1,余数和商(ACC MQ)左移,减去除数 余数和除数异号 商0,余数和商左移,加上除数
数据的存储排列
大端存储
和人的阅读习惯相同
小端存储
相反
边界对齐
整数类型
int型
4B 32bit
long型
4B 32bit
short型
2B 16bit
char型
1B 8bit
浮点数
表示格式
数符
阶码
用移码表示
尾数
用原码小数表示
规格化
左规
尾数左移一位,阶码减一
右规
尾数右移一位,阶码加一
IEEE754
32位单精度
构成
数符1位
阶码(移码)8位
阶码真值 = 移码 - 偏置值127
阶码范围1~254
尾数23位
偏置值127
转换过程
① 数符
② 尾数
③ 阶码真值
④ 移码(阶码) = 阶码真值 - 偏置值
⑤ 尾数根据阶码真值移动
例题
阶码不能全0或全1
64位双精度
数符1位
阶码11位
尾数52位
偏置值1023
浮点数加减
① 对阶
小阶向大阶看齐
阶码小的尾数右移一位,阶 + 1
② 尾数求和
③ 规格化
右规
1×.××时,右规
尾数右移,阶码加一
左规
0.0时,左规
尾数左移,阶码减1
规格化数
原码尾数高位不为0,补码尾数高位与数符不同
补码
单符号规格化
0.1xxx 1.0xxx
双符号规格化
00.1xxx 11.0xxx
④ 舍入
对阶或右规时,发生舍入
0舍1入法
类似四舍五入
恒置1法
不论最高位为1还是0,都把右移之后的尾数末尾置1
⑤ 溢出判断
对于正下溢,负下溢,计算机将其看作为0
强制类型转换
char→int→long→double
float→double
第三章 存储系统
存储器分类
按层次分类
cache
主存
辅存
按介质分类
磁表面
磁带
磁盘
磁芯
半导体
光盘
按存取方式分类
RAM-随机存储器
ROM-只读存储器
现代存储器可以通过电擦除
串行访问存储器
按信息可保存性分类
断电易失
RAM
非易失
ROM
磁表面
光盘
存储器性能指标
存储容量
存储字数×字长
存储速度
存取时间
启动存取到存取完成的一段时间
存储周期
存取时间+恢复周期
主存带宽
数据传输率
主存每秒进出信息的最大数量
多级存储系统
CPU-cache-主存-辅存
CPU和cache之前数据调动由硬件完成(不可见)
主存和辅存之间由硬件和操作系统完成(应用程序员不可见)
主存储器
随机存储器
RAM
cache由SRAM实现
SRAM
静态随机存储器
双稳态触发器
非破坏性读出
成本高,速度快,集成度低
主存储器由DRAM实现
DRAM
动态随机存储器
栅极电容
每隔一段时间就得刷新
集中刷新
利用固定的时间去刷新电容
死时间
分散刷新
把每行的刷新分散到各个周期里
没有死区
异步刷新
刷新周期除以行数 每隔一段时间就刷新
最大间隔时间2ms
有死时间
成本低,速度慢,集成度高
地址引脚复用
只读存储器
ROM
特点
结构简单
非易失性
分类
MROM掩模式只读存储器
不可改变内容
PROM一次可编程只读存储器
一旦写入就不可改变
EPROM可擦可编程只读存储器
可改写,编程次数有限,写入时间长
flash存储器(闪存)
长期保存信息
在线进行快速擦除重写
CDROM
只读光盘
SSD固态硬盘
长期保存信息
快速擦除,重写
并行存储器
双端口存储器
空间并行
多体并行存储器
时间并行
高位交叉(顺序方式)
串行存取
顺序存储器
低位交叉(交叉编址方式)
高位的体内地址送到低位模块译码
流水线方式
存取一个字的存取周期位T 总线传送周期为r
交叉模块数 ≥ T/r
连续存取m个字所需时间为T+(m-1)/r
主存与CPU的连接
数据线是是双向的 地址线是单向的
容量扩展
字扩展
2/4译码器作用: 片选
位扩展
片选信号cs要链接到所有片上
存储器与CPU的连接
高位片选线,低位地址线
① 地址线
② 数据线
③ IO线
④ 片选线
外存
磁盘
最小读取单位,一个扇区
特点
①成本低,容量大
②长期保存
③非破坏性读出
分类
磁盘存储器
存储区域
磁头(记录面数)
一个记录面对应一个磁头
柱面
每个盘片上有多少个磁道
扇区
每条磁道上有多少个扇区
位于同一个扇区上 → 一次访存即可读出全部数据
性能指标
平均存取时间
寻道时间
磁头移动到目的磁道的时间
延迟时间
磁头定位到读写扇区的时间
传输时间
传输数据的时间
查询扇区时间
寻道时间/2
数据传输率
每秒转数 × 每条磁道容量n bit
读写操作是串行
磁盘阵列
RAID0
无冗余无校验
RAID1
镜像磁盘阵列
相互备份
RAID2
纠错海明码磁盘阵列
RAID3
位交叉奇偶校验
RAID4
块交叉奇偶校验
RAID5
无独立校验的奇偶校验
SSD闪存
和U盘没有区别
随机写很慢
会有磨损
高速缓存cache
工作原理
CPU发出访存请求, 若主存物理地址在cache则命中,直接对cache进行读操作 若cache不命中,则仍需访问主存,从主存调入cache
cache块长,又称行长
所有程序员不可见
cache与主存的映射方式
直接映射
命中率最低,所需时间最短
组相联映射
标记和组号构成主存块号
假设每组 r 个cache行,则称为 r 路组相联 r 行为一组
cache中比较器个数也为 r 个
cache容量(bit) = 行数 × (每行数据 + 有效位 + 脏位 + 替换控制位 + 标记位)
每行数据的单位为bit
脏位(一致维护)
写回法
替换控制位
采用替换算法时,有此位 采用随机替换策略时,无此位
替换算法
① 随机算法
② 先进先出算法
优先替换最早调入的行
③ 最近最少使用算法 (局部性原理) LRU
替换最近未访问的行
④ 最不常使用 LFU
全相联映射
命中率最高,所需时间最长
cache写策略
①
全写法 (直写法)
安全性高
CPU对cache写命中
必须把数据同时写入主存和cache 某一块需要替换时,用新块直接覆盖
写缓冲
为减少直接写入主存的时间损耗
CPU同时写入数据到cache和写缓冲里, 写缓冲再将内容写入主存
非写分配法
CPU对cache写不命中
写入主存不进行调块
②
回写法(写回法)
用于密集型
CPU对cache写命中
只把数据写入cache,不立即写入主存 只有在此块被换出时才写入主存
写分配法
CPU对cache写不命中
加载主存的块到cache中,然后更新这个cache块
缺点,每次不命中都要从主存读取一块
虚拟存储器
用户编程用逻辑地址(虚地址) 主存单元为物理地址(实地址)
虚地址 = 虚存页号 + 页内
实地址 = 主存页号 + 页内
CPU使用虚存地址则通过辅助硬件找出虚实地址映射关系, 若在主存,则通过地址变换 若不在主存,则按页调入主存,由CPU访问 若主存已满,则通过替换算法
不命中时对系统性能影响大
采用全相联映射提高命中率
采用写回法
应用程序员不可见,系统程序员可见
分类
页式存储器
以 页 为单位
页表
根据虚拟地址高位的虚拟页号找到对应的页表项
快表TLB
由相联存储器构成
按内容寻址
采用组相联或全相联
TLB标记(tag)
全相联虚页号
组相联虚页号高位
多级存储系统
TLB,page,cache的关系
TLB存放的是page的一部分副本
cache存放的是主存的一部分副本
TLB命中则page必命中,TLB缺失page仍可能命中 page缺失则TLB和cache都必定缺失
cache缺失由硬件完成 page缺失由软件(操作系统缺页异常处理程序)完成 TLB缺失既可以用硬件也可以用软件完成
段式存储器
段号 + 段内地址 组成
段表记录:①段首址②装入位③段长
段页式存储器
以 页 为基本传送单位
①段号②段内页号③页内地址
第四章 指令
指令集体系结构ISA
主要内容:指令格式,数据类型及格式,操作数存放方式,程序可访问的寄存器个数位数及编号 存储空间大小及编址方式,寻址方式,指令执行控制方式等
指令格式
操作码OP + 地址码A
指令字长为字节的整数倍
分类
零地址指令
只有操作码op
操作类指令:空操作,停机,关中断 运算类指令用于堆栈计算机(操作数来源于栈顶,次栈顶)
一地址指令
只有目的操作数的单操作数指令
结果存回原地址
隐含约定目的操作数的双操作数指令
通过隐含寻址约定另一个操作数由ACC来提供, 运算结果存入ACC
二地址指令
给出目的操作数和源操作数
结果保存到目的操作数地址中
三地址指令
给出目的操作数,源操作数和结果
访问4次存储器:取指1次,取操作数2次,存放结果1次
四地址指令
op,目的操作数,源操作数,结果,下址
操作码8位,4个地址码各6位
扩展操作码指令格式
① 短操作码不能和长操作码的前面部分相同
② 各指令操作码不重复
扩展方式
全1留作下一个地址指令扩展用
操作类型
① 数据传送
② 算术逻辑运算
③ 移位操作
④ 转移操作
无条件转移
在任何情况下执行
条件转移
特定条件下执行
转移指令和调用指令区别
调用指令会保存下一条指令地址(返回地址) 转移指令不返回执行
⑤ 输入输出操作
程序控制类指令
无条件转移
条件转移
子程序调用
返回指令
循环指令
特权指令
用于操作系统及系统软件
不提供给用户使用
指令寻址方式
指令寻址
顺序寻址
PC程序计数器 + 1,形成下一条指令
跳跃寻址
通过转移类指令来实现
当前指令修改PC值,下一条指令仍然通过PC给出
数据寻址
分类
隐含寻址
单地址指令的另一操作数可通过隐含寻址得到,来源于ACC
程序指定
立即数寻址
地址字段直接给出操作数本身,采用补码表示
便捷
直接寻址
EA = A
A的位数决定了操作数的寻址范围
缩短了指令长度
1次访存
间接寻址
EA = (A)
一次间址需要2次访存
便于扩大寻址范围
寄存器寻址
EA = Ri
直接给出寄存器编号
执行阶段不访问主存,只访问寄存器
地址码长度小(缩短)
寄存器间接寻址
EA = (Ri)
Ri中不是一个操作数,而是操作所在主存单元的地址
需要访存
操作数在主存里
相对寻址
EA = (PC) + A
A是相对于当前PC值的位移量,用补码表示
用于转移指令
1次访存
基址寻址
EA = (BR) + A
用于多道序设计,BR为基址寄存器(可见)
1次访存
变址寻址
有效地址 = 形式地址A + 变址寄存器IX EA = (IX) + A
面向用户
处理数组问题
1次访存
堆栈寻址
后进先出
机器级代码表示
汇编格式
AT&T格式
第一个为源操作数,第二个为目的操作数, 方向从左至右,合乎自然
寄存器加前缀% ,立即数加前缀$
内存寻址用()
intel格式
第一个为目的操作数,第二个为源操作数, 方向从右至左
寄存器和立即数不需要加前缀
内存寻址用 [ ]
对比
常用指令
Intel格式
从右往左看
数据传送类
mov指令
将某个值复制到另一个
eg:mov eax,ebx 将ebx值复制到eax
push指令
入栈
pop指令
出栈
算术逻辑运算类
add/sub指令
加减运算
结果保存到第一个数中
eg:sub eax,10 eax - 10 → eax
inc/dec指令 (increment/decrement)
自增自减
imul指令 (multiplication)
符号数的乘法
结果保存在第一个操作数中,第一个操作数必须为寄存器
eg:imul eax,[var] eax × [var] → eax
eg:imul esi,edx,25 25 × edx → esi
idiv指令 (division)
符号数的除法
只有一个操作数即除数
eg:idiv ebx
and/or/xor指令
与,或,异或
结果放在第一个操作数中
eg:and eax,0 fH eax前28位置0,后4位不变
not指令
位翻转
0→1,1→0
neg指令 (negative)
取负
eg:neg eax -eax→eax
shl/shr指令 (shift)
逻辑左移,逻辑右移
第一个操作数表示执行对象 第二个数表示移位位数
eg:shl eax,1 eax逻辑左移1位 shr ebx,cl ebx逻辑右移n位(n为cl中的值)
控制流类
jmp指令
转移指令
jcondition指令
条件转移指令
cmp/test指令
cmp比较值大小 test对操作数逐位与运算
call/ret指令
子程序调用及返回
CISC和RISC
CISC
复杂指令系统
RISC
精简指令系统
对比
第五章 中央处理器
CPU结构
运算器
算术逻辑运算单元 ALU
算术逻辑运算
暂存寄存器
暂存从主存读来的数据
累加寄存器 ACC
暂时存放ALU的结果信息
通用寄存器 X
供用户自由编程,可存放数据和地址
与机器字长相同
可见
程序状态字寄存器 PSW
保留结果的各种状态信息
可见
移位器
对操作数或运算结果进行移位运算
计数器 CT
控制乘除运算的操作步数
控制器
程序计数器 PC
指出准备执行的指令在主存中的存放地址
位数与存储器地址位数相同 存储器地址取决于存储容量
可见
指令寄存器 IR
保存当前正在执行的指令
与指令字长相同
不能由通用寄存器代替
指令译码器
对操作码进行译码
不可见
存储器地址寄存器 MAR
存放主存单元的地址
不可见
存储器数据寄存器 MDR
存放向主存写入或读出的信息
不可见
时序系统
用于产生各种时序信号
信号发生器
CPU功能
控制器负责协调并控制计算机各部件执行程序的指令序列(取指,分析,执行) 运算器对数据进行加工
① 指令控制,完成取指,分析,执行指令的操作
② 操作控制
③ 时间控制
④ 数据加工
⑤ 中断处理
指令执行过程
指令周期
取出并执行一条指令的时间
用若干个机器周期来表示
机器周期
定长
不定长
取指,间址,执行,中断
取指周期
根据PC内容从主存取出指令代码,放入IR
PC存放的是指令的地址,根据此地址从对应的内存单元取出指令,放入IR
取指的同时PC+1
取指令由机器自动进行
间址周期
取操作数的有效地址
将指令的地址码送入MAR并送入地址总线,cu发出读命令,获取有效地址,最后存入MDR
两次访存
执行周期
取操作数,并且根据IR的指令字的操作码通过ALU操作产生结果
中断周期
处理中断请求
执行方案
单指令周期
多指令周期
流水线方案
数据通路
功能
数据在各功能部件的传送路径
描述了信息从什么地方开始,中间经过哪个寄存器或者多路开关,最后传送到哪个寄存器
由控制部件控制
基本结构
CPU内部单总线方式
CPU内部多总线方式
所有寄存器的输入输出口接到多条公共通路上
专用数据通路方式
读指
(PC)→MAR 1→R MEM (MAR)→MDR (MDR)→IR
(MDR)→MAR 1→R MEM (MAR)→MDR (MDR)→Y (ACC) +(Y)→Z (Z)→ACC
控制器
硬布线控制器
控制单元
IR
指令的操作码字段是控制单元的输入信号
FR (标志寄存器)
执行单元的反馈信息
时序
节拍发生器
产生机器周期信号和节拍信号
控制单元还接受来自系统总线的控制信号,如:中断,DMA
微操作
一个机器周期里可以完成多个微操作
取指
(PC)→MAR 1→R M(MAR)→MDR (MDR)→IR (PC)+1→PC
间址
Ad(IR)→MAR 1→R M(MAR)→MDR
执行
非访存
CLA
清空ACC
CoM
取反
SHR
算术右移
CSL
循环左移
STP
停机
访存
加法 Ad(IR)→MAR M(MAR)→MDR (MDR)+(ACC)→ACC STA X 存数指令 Ad(IR)→MAR,1→write 存储器写 (ACC)→MDR (MDR)→M(MAR) LDA X 取数指令 Ad(IR)→MAR,1→R M(MAR)→MDR (MDR)→ACC
转移
JMP X(无条件转移) Ad(IR)→PC BAN X(条件转移)
控制方式
同步控制方式
统一时钟
异步控制方式
各部件按自身固有速度工作
联合控制方式
大部分采用同步,少部分采用异步
微程序控制器
采用存储逻辑,将微操作信号代码化
一条机器指令编写成一个微程序,每个微程序包含多个微指令 一条机器指令可以分解为一个微操作序列(最基本,不可再分)
通常情况下,一个微程序周期对应一个指令周期
是为了保证整个机器控制信号的同步
微指令存放到控制存储单元里
微命令是微操作的控制信号,微操作是微命令的执行过程
主存储器用于存放数据和程序,在CPU外部,用RAM实现 控制存储器CM用于存放微程序,在CPU内部,用ROM(EPROM)实现,按照微指令的地址访问
结构
工作过程
取微指令
由机器指令的操作码字段,通过微地址形成部件产生机器指令对应的微程序入口地址,送入CMAR
从CM里逐条取出对应的微指令并执行
回到微程序入口地址,重复操作
编码方式
直接控制方式
字段直接编码方式
微命令字段分为若干个, 互斥性微命令放在相同字段,相容性命令放在不同字段
全0表示不操作
字段间接编码方式
一个字段的微命令由另一个字段微命令来解释, 缩短微指令字长
微指令地址形成方式
断定方式
由微指令下地址给出
根据机器指令的操作码形成
增量计数
标志法
网络法
硬件法
微指令格式
水平型微指令
并行操作能力强
执行时间短
垂直型微指令
只能并行执行一种基本操作
执行时间长
混合型微指令
对比
异常与中断
异常
CPU内部产生的意外事件称为异常(内中断)
如:硬件故障中断(存储器校验错,总线错误) 程序性异常(整除0,溢出,断点,单步跟踪,非法指令,栈溢出,地址越界,缺页)
内中断是不可屏蔽中断
异常的检测由CPU自身完成
分类
程序性中断(软件中断)
故障
缺段
缺页
将所需的段或页从磁盘调入主存,回到发生故障的指令继续执行
非法操作码
除数为0
无法通过异常处理程序恢复故障(仍然要调出处理程序),不能回到断点执行,直接终止进程
自陷
用于程序调试的断点设置,执行到这些指令时, 无条件或有条件地自动调出操作系统内核程序进行执行
终止(硬件中断)
控制器出错,存储器校验错等等
调出中断服务程序重启系统
外中断(硬件中断)
CPU外部的设备向CPU发出中断请求被称为中断(外中断)
如:IO 设备发出的IO 中断(键盘输入,打印机缺纸) 特殊事件(用户按esc按键,定时计数器到时间)
CPU必须通过中断请求线获取中断源信息
分类
可屏蔽中断(低优先级)
通过可屏蔽中断请求线INTR 向CPU发出的中断请求, CPU可通过在中断控制器设置相应的屏蔽字来屏蔽或者不屏蔽, 被屏蔽的中断请求不被送到CPU
不可屏蔽中断(高优先级)
例如:电源掉电
通过专门的不可屏蔽中断请求线NMI 向CPU发出的中断请求
响应过程
整个响应过程不可被打断
关中断
禁止相应新的中断,通过设置中断允许位IF触发器 实现
保存断点和程序状态
为了能够在异常和中断处理结束后回到被中断的地方继续执行
识别异常和中断,并转到相应程序
识别方式
软件识别
CPU设置一个异常状态寄存器,用于记录异常原因 按优先级顺序查询异常状态寄存器,然后转到内核相应的处理程序
硬件识别
向量中断
异常或中断的首地址称为中断向量,所有中断向量放在中断向量表中,每个中断或异常各对应一个中断类型号
指令流水线
定义
一条指令分为多个阶段,每个阶段由相应的功能部件完成
要求
指令长度应该一致 指令格式规整 采用load/store指令,其他寄存器都不能访问存储器 数据和指令在存储器中对齐存放
流水线的冒险
① 结构冒险
多条指令在同一时刻争用同一资源
解决方法 1)暂停后续指令 2)单独设置数据存储器和指令存储器
② 数据冒险
下一条指令会用到当前指令的计算结果,两条指令产生数据冲突
写后读
读后写
写后写
解决方法 1)把遇到数据相关冲突的指令及后续指令暂停一个或几个周期 2)设置相关数据通路(数据旁路技术),在运算结果一得到时,就将其快速地送入寄存器 3)调整指令顺序
③ 控制冒险
转移指令,调用,返回等,会改变PC值,产生断流
解决方法 1)对转移指令进行分支预测,尽早生成转移目标地址 2)预取转移成功和不成功两个控制流方向上的目标指令
流水线性能指标
流水线吞吐率
流水线加速比
高级流水线技术
超标量流水线
动态多发射技术
结合动态流水线调度技术,通过动态分支预测等手段 在每个时钟周期内可并发执行多条独立指令
超长指令字技术
静态多发射技术
将多条能并行操作的指令合成一条具有多操作码的超长指令字
超流水线技术
功能段划分更多
多处理器
单指令流单数据流SISD
串行
一个处理机一个存储器
顺序串行执行
单指令流多数据流SIMD
数据并行技术
向量处理器
多指令单数据流MISD
不存在
多指令多数据流MIMD
并行计算
硬件多线程
细粒度多线程
多线程轮流交叉执行
类似时间片轮转
粗粒度多线程
仅当一个线程出现较大开销,才切换线程
同时多线程
在同一个时钟周期中,发射多个不同线程中的多条指令执行
共享内存多处理机 (SMP )
共享一个物理地址空间,可以在自己的虚拟地址空间里单独运行程序
统一存储访问UMA
处理机与共享存储器之间的连接方式
非统一存储访问NUMA
组合逻辑电路和时序逻辑电路
组合逻辑电路没有统一时钟控制 时序逻辑电路必须在时钟节拍下工作
组合逻辑电路不包含存储信号的记忆单元 时序逻辑电路包含存储信号的记忆单元
第六章 总线
能为多个部件分时共享的公共信息传送线路
分时发,同时收
总线分类
片内总线
芯片内部的总线
系统总线
地址总线
用于CPU选择主存单元地址与IO端口地址的单向总线,不能回传
数据总线
传输数据信息,双向线
控制总线
I/O总线
连接中低速的IO设备
数据线
传送数据缓冲寄存器,命令/状态寄存器的内容
地址线
传送与CPU交换数据的端口地址
控制线
发送读写信号
通信总线
外部总线
计算机系统之间,或者计算机系统与其他系统之间传送信息的总线
系统总线的结构
单总线结构
双总线结构
主存总线用于CPU,主存和通道之间传送数据 IO 总线用于外部设备与通道之间传送数据
三总线结构
主存总线 IO 总线 DMA 总线
总线标准
ISA
工业标准体系结构
EISA
扩展的isa 用于32位CPU
VESA
视频电子标准协会 32位局部总线
PCI
外部设备互联
高性能32或64位总线
即插即用
属于局部总线
AGP
加速图形端口
属于局部总线
PCI-E
最新的总线接口标准
串行
取代PCI, AGP
RS -232C
串行通信总线
USB
通用串行总线
PCMCIA
笔记本电脑接口
IDE
集成设备电路
SCSI
小型计算机系统接口
SATA
串行高级技术
性能指标
总线传输周期
由若干个总线时钟周期组成
总线时钟周期
总线工作频率
= 时钟频率/N
总线时钟频率
总线时钟周期的倒数
总线带宽
= 总线工作频率 ×(总线宽度/8)
总线事务
请求
仲裁
寻址
传输
释放
猝发传送 (突发传送)
先传送地址再传送数据 只需要传一次地址即可,后续数据是连续发送
定时方式
同步定时方式
系统采用统一时钟信号
传输效率较高
可靠性较差
异步定时方式
由握手信号来定时
不互锁方式
半互锁方式
全互锁方式
总线判优控制 (总线仲裁)
集中式
链式
电路设计
离总线最近的设备,优先权最高
容易扩充设备
对电路故障敏感
仅用两根线确定设备使用哪根总线
计数器定时
电路设计
计数从0开始
优先次序固定
计数从终止点开始
优先级相等
计数器值由程序设置
优先级可变
控制复杂
采用 log₂n 条线
独立请求式
电路设计
响应速度快
优先次序控制灵活
总线控制复杂
采用2n条线
分布式
控制逻辑分散在与总线连接的各个设备上
第七章 输入输出
IO系统
IO硬件
IO设备通过设备控制器与主板系统总线相连接
外部设备
输入设备
键盘 鼠标
输出设备
显示器
屏幕大小
分辨率
灰度级
颜色的不同,灰度级越多,图像越逼真
8位(256级)→256种色
刷新
刷新率
显示存储器
VRAM容量 = 分辨率 × 灰度级位数 VRAM带宽 = 分辨率 × 灰度级位数 × 帧频
打印机
按工作方式分类
点阵打印机
针式打印机
喷墨打印机
激光打印机
计算机中一个汉字内码在主存中占2B
接口
外设与主机之间传送数据时进行协调工作的逻辑设备
输入设备
输出设备
外存
IO软件
驱动程序
用户程序
管理程序
IO控制方式
程序查询方式
CPU通过程序不断查询IO设备是否做好准备
CPU一旦启动IO就必须停止现行程序的运行
特点
CPU有踏步等待现象
不断重复同一操作,直到完成
CPU与IO串行工作
程序中断方式
在IO设备准备就绪时,向CPU发出中断请求
功能
CPU与IO并行
处理硬件故障,软件错误
人机交互
多道程序,分时操作
工作流程
中断响应发生在一条指令执行结束
中断请求
中断响应判优
不可屏蔽中断 > 内部异常 > 可屏蔽中断
中断响应条件
中断源有中断请求
CPU开中断
一条指令执行完毕
中断向量
中断程序的入口地址
确定中断类型
CPU响应中断后,通过识别中断源获得中断类型号,计算出对应中断向量的地址 再根据此地址先从中断向量表取出中断服务程序的入口地址,再送入PC,再执行中断服务程序
响应优先级
通过硬件排队器完成
处理优先级
利用中断屏蔽技术动态调整
中断屏蔽字
中断处理过程
多重中断
DMA 方式 direct memory access
直接数据通路,主存和IO设备之间
主存与DMA 接口之间有一条直接数据通路
逻辑上的通路
完全由硬件进行信息传送的控制方式
在数据传送时,主存地址的确定,等由硬件电路直接完成
主存要开辟专用的缓冲区,及时供给与接收外设数据
DMA 在传输前要通过程序预处理,在传输结束后通过中断方式进行后处理
DMA 的响应发生在一个总线事务后,DMA 的控制权大于CPU
DMA 的传送方式
1)停止CPU访存
2)周期挪用
3)DMA 与CPU交替访存
DMA 的传送过程
1)预处理 占用CPU 由CPU完成必要准备工作
其中DMA 不能直接和用户程序接触,通过设备驱动程序作为中介
2)数据传送 不占CPU 完全由DMA 硬件控制
3)后处理 占用CPU DMA 控制器向CPU发送中断请求
通道方式
主机执行IO命令时,启动相关通道,执行通道程序,完成IO操作
通道处理器,专门用于IO管理的协处理器,具备中断,DMA ,程序控制功能
通道程序在主存中,由通道执行,且只能在具有通道的IO系统中执行
效率最高
IO接口 (IO控制器)
功能
地址译码,设备选择
主机和外设的通信联络
数据缓冲
信号格式转换
传送控制命令和状态信息
基本结构
IO接口在主机侧通过IO总线与内存,CPU相连
端口是接口电路里进行读写的寄存器 多个端口与控制逻辑共同组成接口
IO指令是一种特权指令,通过操作系统内核底层IO软件使用
类型
按数据传送方式划分
串行
并行
按控制方式划分
程序程序接口
中断接口
DMA 接口
按功能划分
可编程
不可编程
IO端口
接口电路中被CPU直接访问的存储器
编址方式
统一编址
存储器映射方式
从地址码区分
将IO端口当做存储单元进行地址分配
利用统一的访存指令访问IO端口
独立编址
IO映射方式
设置专门的IO指令来访问
执行指令时,CPU使用地址线选择IO端口 使用数据线在CPU寄存器和IO端口之间传送数据
计算机组成原理
第一章 概述
计算机系统层次结构
硬件
冯诺依曼计算机
存储程序
控制流驱动
事先编好的程序与数据送入主存 计算机逐条执行
单处理机
指令与数据地位相同
指令数据都为二进制代码
以运算器为中心
现代计算机
以存储器为中心
结构
输入设备
输出设备
存储器
主存(内存储)
存储体
辅存(外存)
CPU
MAR(地址存储器)
MDR(数据存储器)
运算器
控制器
软件
组成
系统软件
应用软件
语言
机器语言
计算机可直接执行
二进制代码
汇编语言
英文单词及缩写字母构成
转换为机器语言才可执行
高级语言
Java,c,c+等
源程序到可执行文件
多级层次结构
解释程序 边翻译边执行
性能指标
字长
为字节(1B或者8bit)的整数倍
机器字长
CPU内用于整数运算的数据通路宽度
ALU长位数
通用寄存器位数
指令字长
一个指令字的二进制代码位数
存储字长
一个存储单元的二进制代码长度
数据通路带宽
数据总线一次并行传输的位数
主存容量
运算速度
吞吐量
单位时间内处理请求的数量
主频
CPU时钟频率
一般为多少HZ
1hz代表每秒一次
1GHZ = 10⁹
一秒多少个时钟周期
CPU时钟周期
主频倒数
1/主频
一个时钟周期多少秒
CPI
执行一条指令所用的时钟周期的数目
执行一条指令要几个时钟周期
与三个因素有关
指令集
程序编写(系统结构)
计算机组织(架构)
CPU执行时间
( 指令条数 × CPI )/ 主频
MIPS
每秒执行多少百万(M)条指令
主频 / (CPI×10⁶)
FLOPS
mflops
每秒执行多少百万次浮点数运算
浮点操作次数 / (执行时间×10⁶)
gflops
十亿
10⁹
tflops
万亿
10¹²
pflops
千万亿
10¹⁵
zflops
透明性
不可见的内容
对于高级语言程序员, 指令格式,数据运算过程等属于不可见内容
对于机器语言或汇编语言程序员, 指令格式,机器结构,数据格式属于可见内容
在CPU中程序员无法查看MAR,MDR,IR的内容
第二章 数据运算
进制法
二进制
基数为2
八进制
逢八进一
诀窍:三位的二进制数
十进制
十六进制
123456789ABCDEF
诀窍①:四位的二进制数
诀窍②:A代表10
BCD码
8421码
四个二进制数表示一个十进制数
修正法:
①两码运算结果小于或等于十进制的数字9,则不修正
②两码运算结果大于或等于十进制的数字10,则加上十进制数字6(0110)
余三码
在8421码的基础上加3即(0011) 这样每个数都余三
2421码
从高位往低位依次为 2421 如:5=(0101)
编码表示
原码
0的表示不唯一
字长为n+1,带符号原码的范围 -(2ⁿ-1)≤ x ≤ 2ⁿ-1
反码
正数 原码=反码
负数 符号位不变,数值取反
补码
0的表示唯一
正数 原码=反码=补码
负数 原码反码转换:原码从右到左,找到第一个1,这个1的左边所有数值位取反,即得到补码
字长为n+1,带符号补码的范围 -2ⁿ ≤ x ≤ 2ⁿ-1
在C语言中以补码形式存储
移码
0的表示唯一
表示浮点数的阶码
偏置量
补码符号位取反→移码
定点数的移位
算术移位
针对符号数
移位时符号位不变
正数算术移位 原反补都填0
负数算术移位 原码填0 补码左移填0,右移填1 反码填1
逻辑移位
针对无符号数
逻辑左移,高位丢,低位补零
逻辑右移,低位丢,高位补零
定点数的加减
补码加减
加法直接运算
减法 A补 + (-B)补
标志符
无符号数
CF 进位借位
判断无符号数溢出
加法进位
判断减法借位
小 - 大 有借位
ZF 零标志
结果为0,则ZF=1
有符号数
ZF 零标志
SF 符号标志
表示结果的符号
OF 溢出标志
判断有符号数的溢出
溢出判断
一位符号位
两位符号位 (模四补码)
存储时只存一位
两位相同表示无溢出
两位不同
01
正溢出
10
负溢出
定点数的乘法
原码一位乘法
手算
类似十进制,直接算
机算
计算A×B
图解
X通用寄存器中存放被乘数A
MQ中存放乘数B
ACC中存放每一轮的运算结果
过程
被乘数和乘数取绝对值参加运算 符号位单独处理(异或运算)
① ACC中的数何时与通用寄存器X中的数相加? 看MQ的最低位是否为1,为1则ACC与X相加,其结果放入ACC中
(ACC)+(X)→ ACC
② ACC中存放了新结果后,进行逻辑右移 MQ逻辑右移,ACC逻辑右移 ACC的高位补0,ACC的低位右移出来的数移到MQ的高位, 而MQ的低位则移丢
补码一位乘法
手算
机算
辅助位 - MQ最低位 = 1,(ACC)+(x)补
辅助位 - MQ最低位 = 0,(ACC)+ 0
辅助位 - MQ最低位 = -1,(ACC)+(-x)补
过程
补码一位乘法,采用双符号位
进行n轮加法,移位,最后再来一次加法
每次移位是算术右移
符号位参与运算
辅助位在MQ最低位之后,初始为0 MQ右移多出来的数代替原本的辅助位的初始0或者其他数
加法,移位过程与原码一位乘法相同
定点数的除法
原码除法(恢复余数法)
a÷b
ACC存储 被除数a,余数
MQ存储 商(初始全为0)
X存储 除数b
过程
首先默认商1,出错则改为0,并且恢复余数
商0,进行ACC+(b)补,结果放到ACC中
商1,进行ACC+(-b)补
若计算后的结果,符号位为1,则说明商错了,则恢复
加法运算并且得到新结果后,ACC和MQ逻辑左移,MQ低位补0
重复以上操作
原码除法(加减交替法)
刚开始, a+(-b)补 得到新余数
若余数为负,则商0,余数逻辑左移再+(b)补
余数为正,则商1,余数逻辑左移再+(-b)补
最后一步 如果余数为负,则商0,+(b)补 得到正确余数
补码除法(加减交替法)
符号位参与运算,双符号位
刚开始 判断被除数与除数是否同号, 同号则 被除数 - 除数 异号则 被除数 + 除数
后续 余数和除数同号 商1,余数和商(ACC MQ)左移,减去除数 余数和除数异号 商0,余数和商左移,加上除数
数据的存储排列
大端存储
和人的阅读习惯相同
小端存储
相反
边界对齐
整数类型
int型
4B 32bit
long型
4B 32bit
short型
2B 16bit
char型
1B 8bit
浮点数
表示格式
数符
阶码
用移码表示
尾数
用原码小数表示
规格化
左规
尾数左移一位,阶码减一
右规
尾数右移一位,阶码加一
IEEE754
32位单精度
构成
数符1位
阶码(移码)8位
阶码真值 = 移码 - 偏置值127
阶码范围1~254
尾数23位
偏置值127
转换过程
① 数符
② 尾数
③ 阶码真值
④ 移码(阶码) = 阶码真值 - 偏置值
⑤ 尾数根据阶码真值移动
例题
阶码不能全0或全1
64位双精度
数符1位
阶码11位
尾数52位
偏置值1023
浮点数加减
① 对阶
小阶向大阶看齐
阶码小的尾数右移一位,阶 + 1
② 尾数求和
③ 规格化
右规
1×.××时,右规
尾数右移,阶码加一
左规
0.0时,左规
尾数左移,阶码减1
规格化数
原码尾数高位不为0,补码尾数高位与数符不同
补码
单符号规格化
0.1xxx 1.0xxx
双符号规格化
00.1xxx 11.0xxx
④ 舍入
对阶或右规时,发生舍入
0舍1入法
类似四舍五入
恒置1法
不论最高位为1还是0,都把右移之后的尾数末尾置1
⑤ 溢出判断
对于正下溢,负下溢,计算机将其看作为0
强制类型转换
char→int→long→double
float→double
第三章 存储系统
存储器分类
按层次分类
cache
主存
辅存
按介质分类
磁表面
磁带
磁盘
磁芯
半导体
光盘
按存取方式分类
RAM-随机存储器
ROM-只读存储器
现代存储器可以通过电擦除
串行访问存储器
按信息可保存性分类
断电易失
RAM
非易失
ROM
磁表面
光盘
存储器性能指标
存储容量
存储字数×字长
存储速度
存取时间
启动存取到存取完成的一段时间
存储周期
存取时间+恢复周期
主存带宽
数据传输率
主存每秒进出信息的最大数量
多级存储系统
CPU-cache-主存-辅存
CPU和cache之前数据调动由硬件完成(不可见)
主存和辅存之间由硬件和操作系统完成(应用程序员不可见)
主存储器
随机存储器
RAM
cache由SRAM实现
SRAM
静态随机存储器
双稳态触发器
非破坏性读出
成本高,速度快,集成度低
主存储器由DRAM实现
DRAM
动态随机存储器
栅极电容
每隔一段时间就得刷新
集中刷新
利用固定的时间去刷新电容
死时间
分散刷新
把每行的刷新分散到各个周期里
没有死区
异步刷新
刷新周期除以行数 每隔一段时间就刷新
最大间隔时间2ms
有死时间
成本低,速度慢,集成度高
地址引脚复用
只读存储器
ROM
特点
结构简单
非易失性
分类
MROM掩模式只读存储器
不可改变内容
PROM一次可编程只读存储器
一旦写入就不可改变
EPROM可擦可编程只读存储器
可改写,编程次数有限,写入时间长
flash存储器(闪存)
长期保存信息
在线进行快速擦除重写
CDROM
只读光盘
SSD固态硬盘
长期保存信息
快速擦除,重写
并行存储器
双端口存储器
空间并行
多体并行存储器
时间并行
高位交叉(顺序方式)
串行存取
顺序存储器
低位交叉(交叉编址方式)
高位的体内地址送到低位模块译码
流水线方式
存取一个字的存取周期位T 总线传送周期为r
交叉模块数 ≥ T/r
连续存取m个字所需时间为T+(m-1)/r
主存与CPU的连接
数据线是是双向的 地址线是单向的
容量扩展
字扩展
2/4译码器作用: 片选
位扩展
片选信号cs要链接到所有片上
存储器与CPU的连接
高位片选线,低位地址线
① 地址线
② 数据线
③ IO线
④ 片选线
外存
磁盘
最小读取单位,一个扇区
特点
①成本低,容量大
②长期保存
③非破坏性读出
分类
磁盘存储器
存储区域
磁头(记录面数)
一个记录面对应一个磁头
柱面
每个盘片上有多少个磁道
扇区
每条磁道上有多少个扇区
位于同一个扇区上 → 一次访存即可读出全部数据
性能指标
平均存取时间
寻道时间
磁头移动到目的磁道的时间
延迟时间
磁头定位到读写扇区的时间
传输时间
传输数据的时间
查询扇区时间
寻道时间/2
数据传输率
每秒转数 × 每条磁道容量n bit
读写操作是串行
磁盘阵列
RAID0
无冗余无校验
RAID1
镜像磁盘阵列
相互备份
RAID2
纠错海明码磁盘阵列
RAID3
位交叉奇偶校验
RAID4
块交叉奇偶校验
RAID5
无独立校验的奇偶校验
SSD闪存
和U盘没有区别
随机写很慢
会有磨损
高速缓存cache
工作原理
CPU发出访存请求, 若主存物理地址在cache则命中,直接对cache进行读操作 若cache不命中,则仍需访问主存,从主存调入cache
cache块长,又称行长
所有程序员不可见
cache与主存的映射方式
直接映射
命中率最低,所需时间最短
组相联映射
标记和组号构成主存块号
假设每组 r 个cache行,则称为 r 路组相联 r 行为一组
cache中比较器个数也为 r 个
cache容量(bit) = 行数 × (每行数据 + 有效位 + 脏位 + 替换控制位 + 标记位)
每行数据的单位为bit
脏位(一致维护)
写回法
替换控制位
采用替换算法时,有此位 采用随机替换策略时,无此位
替换算法
① 随机算法
② 先进先出算法
优先替换最早调入的行
③ 最近最少使用算法 (局部性原理) LRU
替换最近未访问的行
④ 最不常使用 LFU
全相联映射
命中率最高,所需时间最长
cache写策略
①
全写法 (直写法)
安全性高
CPU对cache写命中
必须把数据同时写入主存和cache 某一块需要替换时,用新块直接覆盖
写缓冲
为减少直接写入主存的时间损耗
CPU同时写入数据到cache和写缓冲里, 写缓冲再将内容写入主存
非写分配法
CPU对cache写不命中
写入主存不进行调块
②
回写法(写回法)
用于密集型
CPU对cache写命中
只把数据写入cache,不立即写入主存 只有在此块被换出时才写入主存
写分配法
CPU对cache写不命中
加载主存的块到cache中,然后更新这个cache块
缺点,每次不命中都要从主存读取一块
虚拟存储器
用户编程用逻辑地址(虚地址) 主存单元为物理地址(实地址)
虚地址 = 虚存页号 + 页内
实地址 = 主存页号 + 页内
CPU使用虚存地址则通过辅助硬件找出虚实地址映射关系, 若在主存,则通过地址变换 若不在主存,则按页调入主存,由CPU访问 若主存已满,则通过替换算法
不命中时对系统性能影响大
采用全相联映射提高命中率
采用写回法
应用程序员不可见,系统程序员可见
分类
页式存储器
以 页 为单位
页表
根据虚拟地址高位的虚拟页号找到对应的页表项
快表TLB
由相联存储器构成
按内容寻址
采用组相联或全相联
TLB标记(tag)
全相联虚页号
组相联虚页号高位
多级存储系统
TLB,page,cache的关系
TLB存放的是page的一部分副本
cache存放的是主存的一部分副本
TLB命中则page必命中,TLB缺失page仍可能命中 page缺失则TLB和cache都必定缺失
cache缺失由硬件完成 page缺失由软件(操作系统缺页异常处理程序)完成 TLB缺失既可以用硬件也可以用软件完成
段式存储器
段号 + 段内地址 组成
段表记录:①段首址②装入位③段长
段页式存储器
以 页 为基本传送单位
①段号②段内页号③页内地址
第四章 指令
指令集体系结构ISA
主要内容:指令格式,数据类型及格式,操作数存放方式,程序可访问的寄存器个数位数及编号 存储空间大小及编址方式,寻址方式,指令执行控制方式等
指令格式
操作码OP + 地址码A
指令字长为字节的整数倍
分类
零地址指令
只有操作码op
操作类指令:空操作,停机,关中断 运算类指令用于堆栈计算机(操作数来源于栈顶,次栈顶)
一地址指令
只有目的操作数的单操作数指令
结果存回原地址
隐含约定目的操作数的双操作数指令
通过隐含寻址约定另一个操作数由ACC来提供, 运算结果存入ACC
二地址指令
给出目的操作数和源操作数
结果保存到目的操作数地址中
三地址指令
给出目的操作数,源操作数和结果
访问4次存储器:取指1次,取操作数2次,存放结果1次
四地址指令
op,目的操作数,源操作数,结果,下址
操作码8位,4个地址码各6位
扩展操作码指令格式
① 短操作码不能和长操作码的前面部分相同
② 各指令操作码不重复
扩展方式
全1留作下一个地址指令扩展用
操作类型
① 数据传送
② 算术逻辑运算
③ 移位操作
④ 转移操作
无条件转移
在任何情况下执行
条件转移
特定条件下执行
转移指令和调用指令区别
调用指令会保存下一条指令地址(返回地址) 转移指令不返回执行
⑤ 输入输出操作
程序控制类指令
无条件转移
条件转移
子程序调用
返回指令
循环指令
特权指令
用于操作系统及系统软件
不提供给用户使用
指令寻址方式
指令寻址
顺序寻址
PC程序计数器 + 1,形成下一条指令
跳跃寻址
通过转移类指令来实现
当前指令修改PC值,下一条指令仍然通过PC给出
数据寻址
分类
隐含寻址
单地址指令的另一操作数可通过隐含寻址得到,来源于ACC
程序指定
立即数寻址
地址字段直接给出操作数本身,采用补码表示
便捷
直接寻址
EA = A
A的位数决定了操作数的寻址范围
缩短了指令长度
1次访存
间接寻址
EA = (A)
一次间址需要2次访存
便于扩大寻址范围
寄存器寻址
EA = Ri
直接给出寄存器编号
执行阶段不访问主存,只访问寄存器
地址码长度小(缩短)
寄存器间接寻址
EA = (Ri)
Ri中不是一个操作数,而是操作所在主存单元的地址
需要访存
操作数在主存里
相对寻址
EA = (PC) + A
A是相对于当前PC值的位移量,用补码表示
用于转移指令
1次访存
基址寻址
EA = (BR) + A
用于多道序设计,BR为基址寄存器(可见)
1次访存
变址寻址
有效地址 = 形式地址A + 变址寄存器IX EA = (IX) + A
面向用户
处理数组问题
1次访存
堆栈寻址
后进先出
机器级代码表示
汇编格式
AT&T格式
第一个为源操作数,第二个为目的操作数, 方向从左至右,合乎自然
寄存器加前缀% ,立即数加前缀$
内存寻址用()
intel格式
第一个为目的操作数,第二个为源操作数, 方向从右至左
寄存器和立即数不需要加前缀
内存寻址用 [ ]
对比
常用指令
Intel格式
从右往左看
数据传送类
mov指令
将某个值复制到另一个
eg:mov eax,ebx 将ebx值复制到eax
push指令
入栈
pop指令
出栈
算术逻辑运算类
add/sub指令
加减运算
结果保存到第一个数中
eg:sub eax,10 eax - 10 → eax
inc/dec指令 (increment/decrement)
自增自减
imul指令 (multiplication)
符号数的乘法
结果保存在第一个操作数中,第一个操作数必须为寄存器
eg:imul eax,[var] eax × [var] → eax
eg:imul esi,edx,25 25 × edx → esi
idiv指令 (division)
符号数的除法
只有一个操作数即除数
eg:idiv ebx
and/or/xor指令
与,或,异或
结果放在第一个操作数中
eg:and eax,0 fH eax前28位置0,后4位不变
not指令
位翻转
0→1,1→0
neg指令 (negative)
取负
eg:neg eax -eax→eax
shl/shr指令 (shift)
逻辑左移,逻辑右移
第一个操作数表示执行对象 第二个数表示移位位数
eg:shl eax,1 eax逻辑左移1位 shr ebx,cl ebx逻辑右移n位(n为cl中的值)
控制流类
jmp指令
转移指令
jcondition指令
条件转移指令
cmp/test指令
cmp比较值大小 test对操作数逐位与运算
call/ret指令
子程序调用及返回
CISC和RISC
CISC
复杂指令系统
RISC
精简指令系统
对比
第五章 中央处理器
CPU结构
运算器
算术逻辑运算单元 ALU
算术逻辑运算
暂存寄存器
暂存从主存读来的数据
累加寄存器 ACC
暂时存放ALU的结果信息
通用寄存器 X
供用户自由编程,可存放数据和地址
与机器字长相同
可见
程序状态字寄存器 PSW
保留结果的各种状态信息
可见
移位器
对操作数或运算结果进行移位运算
计数器 CT
控制乘除运算的操作步数
控制器
程序计数器 PC
指出准备执行的指令在主存中的存放地址
位数与存储器地址位数相同 存储器地址取决于存储容量
可见
指令寄存器 IR
保存当前正在执行的指令
与指令字长相同
不能由通用寄存器代替
指令译码器
对操作码进行译码
不可见
存储器地址寄存器 MAR
存放主存单元的地址
不可见
存储器数据寄存器 MDR
存放向主存写入或读出的信息
不可见
时序系统
用于产生各种时序信号
信号发生器
CPU功能
控制器负责协调并控制计算机各部件执行程序的指令序列(取指,分析,执行) 运算器对数据进行加工
① 指令控制,完成取指,分析,执行指令的操作
② 操作控制
③ 时间控制
④ 数据加工
⑤ 中断处理
指令执行过程
指令周期
取出并执行一条指令的时间
用若干个机器周期来表示
机器周期
定长
不定长
取指,间址,执行,中断
取指周期
根据PC内容从主存取出指令代码,放入IR
PC存放的是指令的地址,根据此地址从对应的内存单元取出指令,放入IR
取指的同时PC+1
取指令由机器自动进行
间址周期
取操作数的有效地址
将指令的地址码送入MAR并送入地址总线,cu发出读命令,获取有效地址,最后存入MDR
两次访存
执行周期
取操作数,并且根据IR的指令字的操作码通过ALU操作产生结果
中断周期
处理中断请求
执行方案
单指令周期
多指令周期
流水线方案
数据通路
功能
数据在各功能部件的传送路径
描述了信息从什么地方开始,中间经过哪个寄存器或者多路开关,最后传送到哪个寄存器
由控制部件控制
基本结构
CPU内部单总线方式
CPU内部多总线方式
所有寄存器的输入输出口接到多条公共通路上
专用数据通路方式
读指
(PC)→MAR 1→R MEM (MAR)→MDR (MDR)→IR
(MDR)→MAR 1→R MEM (MAR)→MDR (MDR)→Y (ACC) +(Y)→Z (Z)→ACC
控制器
硬布线控制器
控制单元
IR
指令的操作码字段是控制单元的输入信号
FR (标志寄存器)
执行单元的反馈信息
时序
节拍发生器
产生机器周期信号和节拍信号
控制单元还接受来自系统总线的控制信号,如:中断,DMA
微操作
一个机器周期里可以完成多个微操作
取指
(PC)→MAR 1→R M(MAR)→MDR (MDR)→IR (PC)+1→PC
间址
Ad(IR)→MAR 1→R M(MAR)→MDR
执行
非访存
CLA
清空ACC
CoM
取反
SHR
算术右移
CSL
循环左移
STP
停机
访存
加法 Ad(IR)→MAR M(MAR)→MDR (MDR)+(ACC)→ACC STA X 存数指令 Ad(IR)→MAR,1→write 存储器写 (ACC)→MDR (MDR)→M(MAR) LDA X 取数指令 Ad(IR)→MAR,1→R M(MAR)→MDR (MDR)→ACC
转移
JMP X(无条件转移) Ad(IR)→PC BAN X(条件转移)
控制方式
同步控制方式
统一时钟
异步控制方式
各部件按自身固有速度工作
联合控制方式
大部分采用同步,少部分采用异步
微程序控制器
采用存储逻辑,将微操作信号代码化
一条机器指令编写成一个微程序,每个微程序包含多个微指令 一条机器指令可以分解为一个微操作序列(最基本,不可再分)
通常情况下,一个微程序周期对应一个指令周期
是为了保证整个机器控制信号的同步
微指令存放到控制存储单元里
微命令是微操作的控制信号,微操作是微命令的执行过程
主存储器用于存放数据和程序,在CPU外部,用RAM实现 控制存储器CM用于存放微程序,在CPU内部,用ROM(EPROM)实现,按照微指令的地址访问
结构
工作过程
取微指令
由机器指令的操作码字段,通过微地址形成部件产生机器指令对应的微程序入口地址,送入CMAR
从CM里逐条取出对应的微指令并执行
回到微程序入口地址,重复操作
编码方式
直接控制方式
字段直接编码方式
微命令字段分为若干个, 互斥性微命令放在相同字段,相容性命令放在不同字段
全0表示不操作
字段间接编码方式
一个字段的微命令由另一个字段微命令来解释, 缩短微指令字长
微指令地址形成方式
断定方式
由微指令下地址给出
根据机器指令的操作码形成
增量计数
标志法
网络法
硬件法
微指令格式
水平型微指令
并行操作能力强
执行时间短
垂直型微指令
只能并行执行一种基本操作
执行时间长
混合型微指令
对比
异常与中断
异常
CPU内部产生的意外事件称为异常(内中断)
如:硬件故障中断(存储器校验错,总线错误) 程序性异常(整除0,溢出,断点,单步跟踪,非法指令,栈溢出,地址越界,缺页)
内中断是不可屏蔽中断
异常的检测由CPU自身完成
分类
程序性中断(软件中断)
故障
缺段
缺页
将所需的段或页从磁盘调入主存,回到发生故障的指令继续执行
非法操作码
除数为0
无法通过异常处理程序恢复故障(仍然要调出处理程序),不能回到断点执行,直接终止进程
自陷
用于程序调试的断点设置,执行到这些指令时, 无条件或有条件地自动调出操作系统内核程序进行执行
终止(硬件中断)
控制器出错,存储器校验错等等
调出中断服务程序重启系统
外中断(硬件中断)
CPU外部的设备向CPU发出中断请求被称为中断(外中断)
如:IO 设备发出的IO 中断(键盘输入,打印机缺纸) 特殊事件(用户按esc按键,定时计数器到时间)
CPU必须通过中断请求线获取中断源信息
分类
可屏蔽中断(低优先级)
通过可屏蔽中断请求线INTR 向CPU发出的中断请求, CPU可通过在中断控制器设置相应的屏蔽字来屏蔽或者不屏蔽, 被屏蔽的中断请求不被送到CPU
不可屏蔽中断(高优先级)
例如:电源掉电
通过专门的不可屏蔽中断请求线NMI 向CPU发出的中断请求
响应过程
整个响应过程不可被打断
关中断
禁止相应新的中断,通过设置中断允许位IF触发器 实现
保存断点和程序状态
为了能够在异常和中断处理结束后回到被中断的地方继续执行
识别异常和中断,并转到相应程序
识别方式
软件识别
CPU设置一个异常状态寄存器,用于记录异常原因 按优先级顺序查询异常状态寄存器,然后转到内核相应的处理程序
硬件识别
向量中断
异常或中断的首地址称为中断向量,所有中断向量放在中断向量表中,每个中断或异常各对应一个中断类型号
指令流水线
定义
一条指令分为多个阶段,每个阶段由相应的功能部件完成
要求
指令长度应该一致 指令格式规整 采用load/store指令,其他寄存器都不能访问存储器 数据和指令在存储器中对齐存放
流水线的冒险
① 结构冒险
多条指令在同一时刻争用同一资源
解决方法 1)暂停后续指令 2)单独设置数据存储器和指令存储器
② 数据冒险
下一条指令会用到当前指令的计算结果,两条指令产生数据冲突
写后读
读后写
写后写
解决方法 1)把遇到数据相关冲突的指令及后续指令暂停一个或几个周期 2)设置相关数据通路(数据旁路技术),在运算结果一得到时,就将其快速地送入寄存器 3)调整指令顺序
③ 控制冒险
转移指令,调用,返回等,会改变PC值,产生断流
解决方法 1)对转移指令进行分支预测,尽早生成转移目标地址 2)预取转移成功和不成功两个控制流方向上的目标指令
流水线性能指标
流水线吞吐率
流水线加速比
高级流水线技术
超标量流水线
动态多发射技术
结合动态流水线调度技术,通过动态分支预测等手段 在每个时钟周期内可并发执行多条独立指令
超长指令字技术
静态多发射技术
将多条能并行操作的指令合成一条具有多操作码的超长指令字
超流水线技术
功能段划分更多
多处理器
单指令流单数据流SISD
串行
一个处理机一个存储器
顺序串行执行
单指令流多数据流SIMD
数据并行技术
向量处理器
多指令单数据流MISD
不存在
多指令多数据流MIMD
并行计算
硬件多线程
细粒度多线程
多线程轮流交叉执行
类似时间片轮转
粗粒度多线程
仅当一个线程出现较大开销,才切换线程
同时多线程
在同一个时钟周期中,发射多个不同线程中的多条指令执行
共享内存多处理机 (SMP )
共享一个物理地址空间,可以在自己的虚拟地址空间里单独运行程序
统一存储访问UMA
处理机与共享存储器之间的连接方式
非统一存储访问NUMA
组合逻辑电路和时序逻辑电路
组合逻辑电路没有统一时钟控制 时序逻辑电路必须在时钟节拍下工作
组合逻辑电路不包含存储信号的记忆单元 时序逻辑电路包含存储信号的记忆单元
第六章 总线
能为多个部件分时共享的公共信息传送线路
分时发,同时收
总线分类
片内总线
芯片内部的总线
系统总线
地址总线
用于CPU选择主存单元地址与IO端口地址的单向总线,不能回传
数据总线
传输数据信息,双向线
控制总线
I/O总线
连接中低速的IO设备
数据线
传送数据缓冲寄存器,命令/状态寄存器的内容
地址线
传送与CPU交换数据的端口地址
控制线
发送读写信号
通信总线
外部总线
计算机系统之间,或者计算机系统与其他系统之间传送信息的总线
系统总线的结构
单总线结构
双总线结构
主存总线用于CPU,主存和通道之间传送数据 IO 总线用于外部设备与通道之间传送数据
三总线结构
主存总线 IO 总线 DMA 总线
总线标准
ISA
工业标准体系结构
EISA
扩展的isa 用于32位CPU
VESA
视频电子标准协会 32位局部总线
PCI
外部设备互联
高性能32或64位总线
即插即用
属于局部总线
AGP
加速图形端口
属于局部总线
PCI-E
最新的总线接口标准
串行
取代PCI, AGP
RS -232C
串行通信总线
USB
通用串行总线
PCMCIA
笔记本电脑接口
IDE
集成设备电路
SCSI
小型计算机系统接口
SATA
串行高级技术
性能指标
总线传输周期
由若干个总线时钟周期组成
总线时钟周期
总线工作频率
= 时钟频率/N
总线时钟频率
总线时钟周期的倒数
总线带宽
= 总线工作频率 ×(总线宽度/8)
总线事务
请求
仲裁
寻址
传输
释放
猝发传送 (突发传送)
先传送地址再传送数据 只需要传一次地址即可,后续数据是连续发送
定时方式
同步定时方式
系统采用统一时钟信号
传输效率较高
可靠性较差
异步定时方式
由握手信号来定时
不互锁方式
半互锁方式
全互锁方式
总线判优控制 (总线仲裁)
集中式
链式
电路设计
离总线最近的设备,优先权最高
容易扩充设备
对电路故障敏感
仅用两根线确定设备使用哪根总线
计数器定时
电路设计
计数从0开始
优先次序固定
计数从终止点开始
优先级相等
计数器值由程序设置
优先级可变
控制复杂
采用 log₂n 条线
独立请求式
电路设计
响应速度快
优先次序控制灵活
总线控制复杂
采用2n条线
分布式
控制逻辑分散在与总线连接的各个设备上
第七章 输入输出
IO系统
IO硬件
IO设备通过设备控制器与主板系统总线相连接
外部设备
输入设备
键盘 鼠标
输出设备
显示器
屏幕大小
分辨率
灰度级
颜色的不同,灰度级越多,图像越逼真
8位(256级)→256种色
刷新
刷新率
显示存储器
VRAM容量 = 分辨率 × 灰度级位数 VRAM带宽 = 分辨率 × 灰度级位数 × 帧频
打印机
按工作方式分类
点阵打印机
针式打印机
喷墨打印机
激光打印机
计算机中一个汉字内码在主存中占2B
接口
外设与主机之间传送数据时进行协调工作的逻辑设备
输入设备
输出设备
外存
IO软件
驱动程序
用户程序
管理程序
IO控制方式
程序查询方式
CPU通过程序不断查询IO设备是否做好准备
CPU一旦启动IO就必须停止现行程序的运行
特点
CPU有踏步等待现象
不断重复同一操作,直到完成
CPU与IO串行工作
程序中断方式
在IO设备准备就绪时,向CPU发出中断请求
功能
CPU与IO并行
处理硬件故障,软件错误
人机交互
多道程序,分时操作
工作流程
中断响应发生在一条指令执行结束
中断请求
中断响应判优
不可屏蔽中断 > 内部异常 > 可屏蔽中断
中断响应条件
中断源有中断请求
CPU开中断
一条指令执行完毕
中断向量
中断程序的入口地址
确定中断类型
CPU响应中断后,通过识别中断源获得中断类型号,计算出对应中断向量的地址 再根据此地址先从中断向量表取出中断服务程序的入口地址,再送入PC,再执行中断服务程序
响应优先级
通过硬件排队器完成
处理优先级
利用中断屏蔽技术动态调整
中断屏蔽字
中断处理过程
多重中断
DMA 方式 direct memory access
直接数据通路,主存和IO设备之间
主存与DMA 接口之间有一条直接数据通路
逻辑上的通路
完全由硬件进行信息传送的控制方式
在数据传送时,主存地址的确定,等由硬件电路直接完成
主存要开辟专用的缓冲区,及时供给与接收外设数据
DMA 在传输前要通过程序预处理,在传输结束后通过中断方式进行后处理
DMA 的响应发生在一个总线事务后,DMA 的控制权大于CPU
DMA 的传送方式
1)停止CPU访存
2)周期挪用
3)DMA 与CPU交替访存
DMA 的传送过程
1)预处理 占用CPU 由CPU完成必要准备工作
其中DMA 不能直接和用户程序接触,通过设备驱动程序作为中介
2)数据传送 不占CPU 完全由DMA 硬件控制
3)后处理 占用CPU DMA 控制器向CPU发送中断请求
通道方式
主机执行IO命令时,启动相关通道,执行通道程序,完成IO操作
通道处理器,专门用于IO管理的协处理器,具备中断,DMA ,程序控制功能
通道程序在主存中,由通道执行,且只能在具有通道的IO系统中执行
效率最高
IO接口 (IO控制器)
功能
地址译码,设备选择
主机和外设的通信联络
数据缓冲
信号格式转换
传送控制命令和状态信息
基本结构
IO接口在主机侧通过IO总线与内存,CPU相连
端口是接口电路里进行读写的寄存器 多个端口与控制逻辑共同组成接口
IO指令是一种特权指令,通过操作系统内核底层IO软件使用
类型
按数据传送方式划分
串行
并行
按控制方式划分
程序程序接口
中断接口
DMA 接口
按功能划分
可编程
不可编程
IO端口
接口电路中被CPU直接访问的存储器
编址方式
统一编址
存储器映射方式
从地址码区分
将IO端口当做存储单元进行地址分配
利用统一的访存指令访问IO端口
独立编址
IO映射方式
设置专门的IO指令来访问
执行指令时,CPU使用地址线选择IO端口 使用数据线在CPU寄存器和IO端口之间传送数据