文章目录
- 前言
- 一.计算机系统概述
- 1.计算机的软硬件概念及各自组成
- 易错点:
- 2.冯诺依曼计算机的特点:
- 易错点:
- 3.程序和数据都采用二进制代码,计算机如何区分指令和数据?
- 4.现代计算机硬件框架图
- 5.计算机硬件的主要技术指标
- a.机器字长
- b.主存容量
- c.吞吐量
- d.CPI
- e.IPS(或MIPS):运算速度!
- f.FLOPS
- 6.易错点及概念:
- 四.存储系统
- 1.存储器的层次结构
- 缓存-主存层次和主存-辅存层次
- 易错点:
- 2.主存的基本组成
- 3.主存中存储单元地址的分配方式
- 大小端存储模式
- 边界对齐存储方式
- 4.主存的技术指标
- 5.动态RAM刷新
- 6.存储器与CPU 的连接
- 芯片存储容量与地址线,数据线的关系
- 位扩展:(增加主存的存储字长)
- 字扩展(增加主存的存储字数):
- 译码器的使用
- 7.提高访存速度的措施
- 调整主存结构:低位交叉、高位交叉
- 采用层次结构 Cache –主存
- 采用高速器件
- 8.存储器的效验:海明效验码
- 9.高速缓冲存储器
- Cache的基本结构和工作原理
- Cache的读操作流程 :
- Cache的写操作流程:
- 写命中时:
- 写不命中:
- 10.Cache-主存的地址映射
- 全相联映射、
- 直接映射
- 组相联映射
- 主存地址组成、地址变换、例题?
- 五.输入输出系统:
- 1、 I/O 设备编址方式
- 2、 I/O设备与主机信息传送的控制方式
- 3、I/O 接口的功能和组成?
- 4、接口和端口的概念
- 5、程序查询方式
- 6、程序中断方式
- 中断隐指令
- 中断程序:
- 单重中断和多重中断的服务程序流程
- 中断屏蔽技术
- 改变屏蔽字,改变中断处理顺序
- CPU 执行程序轨迹
- 区分响应优先级和处理优先级:
- 7、 DMA 方式
- 周期挪用
- DMA 接口的功能和组成
- DMA 传送过程:预处理、数据传送、后处理
- 六.计算机的运算方法:
- 1.有符号数的真值,原码,反码,补码,移码相互转换
- 2.浮点数与真值的相互转换,浮点数的表示范围:
- 浮点数规格化:
- IEEE754
- 3.定点运算:
- a.补码加减运算及溢出判断
- 运算:
- 溢出判断:
- b.原码一位乘法
- c.补码一位乘(Booth算法)
- 4.浮点加减运算
- 七.指令系统:
- 1.操作码
- 固定编码、扩展编码技术
- 2、与数据有关的寻址方式
- 基址寻址和变址寻址的区别
- 3、指令格式设计举例 P323-326?
- 八.中央处理器(CPU结构与功能)
- 1、指令周期流程
- 易错点:
- 九、十、控制单元:
- 1、指令周期、机器周期和时钟周期的概念及三者关系;图9.9
- 2、根据CPU的数据通路,写出指令的微操作;
- 3、微程序控制器的基本概念
- 4、微指令和微操作的关系,微指令和机器指令的关系,微程序和程序之间的关系:
- 5、微程序控制器的组成及各部件的作用
- 6、微程序控制器的设计思想 :
- 7、微程序控制器的工作原理
- 8、微指令的编码方式
- 9、微指令序列地址的形成
- 易错点:
- 总结
前言
一.计算机系统概述
1.计算机的软硬件概念及各自组成
易错点:
- 数据库系统不是系统软件,数据库管理系统才是
- 软件和硬件在逻辑上等价,硬件实现的性能更优
2.冯诺依曼计算机的特点:
易错点:
- 冯诺依曼的基本工作方式:控制流驱动方式
3.程序和数据都采用二进制代码,计算机如何区分指令和数据?
指令周期的不同阶段!!
4.现代计算机硬件框架图
5.计算机硬件的主要技术指标
a.机器字长
- 计算机进行一次整数运算所能处理的二进制数据位数
- 通常等于CPU内部寄存器大小(通用寄存器,ALU等)
b.主存容量
- 主存储器所能存储信息的最大容量。
- MAR反映存储单元个数,MDR反映存储单元的位长
- 存储容量=存储单元个数*存储字长
c.吞吐量
- 系统在单位时间内处理请求的数量
- 系统吞吐量主要取决于主存的存取周期
d.CPI
- 执行一条指令所需要的时钟周期(Clock per Instruction)
- 主频和时钟周期互为倒数
e.IPS(或MIPS):运算速度!
-
IPS:每秒执行多少条指令(Instruction per second)
-
如何计算:主频 /(CPI)
-
MIPS:每秒执行多少百万条指令
-
如何计算:主频 /(CPI*10^6)
f.FLOPS
- 每秒执行多少浮点数运算(注意单位换算)
6.易错点及概念:
- 实际软件的运行情况能够全面代表计算机的性能
- 相联存储器既可按地址寻址又可以按内容寻址
- 兼容是指计算机软件或硬件的通用性,通常在同一系列不同型号的计算机间通用
- 用户观点看,吞吐率是计算机系统性能的综合参数
- ”计算机速度“是指IPS
- 在CPU中,IR,MAR和MDR对各类程序员都是透明的
四.存储系统
1.存储器的层次结构
缓存-主存层次和主存-辅存层次
- 缓存—主存解决了主存容量不够的问题
- 主存—辅存解决了主存和CPU速度不匹配的问题
性能指标:
易错点:
- 主存和辅存之间的数据调度是硬件和操作系统共同完成的,仅对应用级程序员透明!
2.主存的基本组成
基本方式:
两种芯片:
- DRAM:动态随机存储器,由于其存储元件只有一个晶体管,每隔一段时间就要对其进行刷新!!
- SRAM:静态随机存储器,存储元是双稳态触发器(6个MOS晶体管),不用进行刷新
DRAM的刷新机制:
- 分散刷新:每次读写完都刷新一行
- 集中刷新:在一个刷新周期内有一段时间专门用于刷新,这段时间称为死区
- 异步刷新:刷新周期数除以行数,得到两次刷新操作之间的间隔t,在t里面拿一部分用于刷新某行,剩余部分用于读写操作
注意:
- 存取周期,读写周期和刷新周期是相同的!
存储器结构:
- 将一个地址通过行列地址分别寻址,减少了选通线的个数
- DRAM只有一个地址译码器,复用这个译码器,又减少了选通线的数量
芯片引脚数计算:
- 读写线:可能为1可能为2
- 地址线:地址的数量n(DRAM要除以2,因为复用了地址线)
- 片选线:1(SRAM有)
- 数据总线:字长
- 行通选线和列通选线(只有DRAM才有,有了这两条线就不用片选线了)
3.主存中存储单元地址的分配方式
大小端存储模式
- 小小小:小端的小地址(低地址)存储位数小的数(位数低的数)
边界对齐存储方式
4.主存的技术指标
- 存储容量
- 存储速度:由存取时间和存取周期表示
- 存储器带宽:单位时间内存储器存取的信息量
5.动态RAM刷新
- 分散刷新:每次读写完都刷新一行,把对每行存储单元的刷新分散到每个存取周期内完成(存取周期翻倍)
- 集中刷新:在一个刷新周期内有一段时间专门用于刷新,这段时间称为死区
- 异步刷新:刷新周期数除以行数,得到两次刷新操作之间的间隔t,在t里面拿一部分用于刷新某行,剩余部分用于读写操作
注意:
- 存取周期,读写周期和刷新周期是相同的!
6.存储器与CPU 的连接
芯片存储容量与地址线,数据线的关系
- 芯片存储容量=数据字长*地址数量
- 数据总线宽度>存储芯片字长?——位扩展
- 想要扩展主存字数怎么办?——字扩展
位扩展:(增加主存的存储字长)
字扩展(增加主存的存储字数):
译码器的使用
- 译码片选法:用除片内寻址外的高位地址线通过地址译码器通过地址译码器芯片产生片选信号
7.提高访存速度的措施
调整主存结构:低位交叉、高位交叉
- 高位交叉:高位交叉其实就相当于加大了存储器容量,没有效率上的提升
- 低位交叉:巧妙利用存取周期,一个内存条访问后,要经过一个存取周期后才能进行下一次访问,而低位交叉在访问一个内存条,一个存取时间过后就可以去访问另一个内存条,这样就提高了效率
- 宏观上低位交叉读写一个字的时间接近r(存取时间)
采用层次结构 Cache –主存
采用高速器件
8.存储器的效验:海明效验码
海明效验码过程
以一个信息b4b3b2b1为例子
- 根据位数得出检验码的总位数:2^k>=n+k+1
- 将检验码插入信息中,插入2^n方的位置
- 写出所有的二进制序号(从1开始)
- 算出每个效验码(根据效验码序号1的位置,有效位在那个位置有1就计算)
- 获得海明效验码
- 检验就是逆过程
9.高速缓冲存储器
Cache的基本结构和工作原理
- 主存与Cache之间以“块”为单位进行数据交换
- 主存里的块也称为“页/页面/页框”
- Cache里的块也称为“行”
- 一个主存地址可表示为:主存块号+块内地址
- 每次被访问的主存块,一定会被立即调入Cache
Cache的读操作流程 :
- 主存和Cache同时访问的方式
- 先访问Cache,Cache里没有在访问主存的方式
Cache的写操作流程:
写命中时:
- 写回法:当CPU对Cache写命中时,只修改Cache的内容,只有当此块被换出的时候才写回内存(设置一个脏位)
- 写直达法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存中
写不命中:
- 写分配法:当写不命中时,把主存中的块调入Cache,在Cache中修改,搭配写回法使用
- 非写分配法:写不命中时,只写入主存,不调入Cache,搭配写直通法使用。(这种方法对于Cache,只有读未命中才调入Cache)
10.Cache-主存的地址映射
全相联映射、
- Cache里的有效位,表示当前行是否有数据,标记位是用于寻址的
直接映射
组相联映射
- 是直接映射和全相联映射的结合版
主存地址组成、地址变换、例题?
五.输入输出系统:
1、 I/O 设备编址方式
- I/O端口:是指接口电路中可以被CPU直接访问的寄存器
- 统一编址:把I/O端口当作存储器的单元进行地址分配,用统一的访存地址就可以访问I/0端口。靠不同的地址码区分内存和I/0设备,I/O地址要求相对固定在地址的某部分
- 独立编址:I/O端口地址与主存地址无关,所有对I/O的访问都要有专用的I/O指令,独立编址CPU需要设置专门的输入/输出指令访问端口。靠不同的指令区分内存和I/O设备
2、 I/O设备与主机信息传送的控制方式
- 程序查询方式:CPU不断轮询检查I/O控制器的“状态寄存器”,检测到已完成之后,再从数据寄存器取出输入数据
- 程序中断方式 :等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后向CPU发出中断请求,CPU响应中断请求,取走数据
- DMA 方式:主存与高速I/O设备之间有一条直接数据通路(DMA总线)。CPU向DMA接口发出“读/写”命令,并指明主存地址,磁盘地址等参数,DMA控制器自动控制磁盘与主存的数据读写,每完成一整块的读写,才向CPU发出一次中断请求
3、I/O 接口的功能和组成?
- 选址功能:设备选择电路
- 传送命令功能,I/O接口有存放命令的寄存器及命令译码器
- 传送数据功能,有数据缓冲寄存器
- 反映I/O设备工作状态的功能:设备状态标记
4、接口和端口的概念
- I/O端口是指接口电路中可以被CPU直接访问的寄存器
5、程序查询方式
- 程序查询流程和接口电路
6、程序中断方式
中断隐指令
中断隐指令的主要任务:
- 关中断:在中断服务程序中,为了保护中断现场(即CPU主要寄存器的内容)期间不被新的中断打断,必须关中断
- 保存断点:为了保证在中断服务程序执行完毕后正确回到原来的位置,将PC的内容保存起来,可以压入堆栈,可以存入指定单元
- 引出中断服务程序:取出中断服务程序的入口地址给程序计数器PC(硬件向量法)
中断程序:
一次中断过程包含6个阶段:
-
中断请求:中断源向CPU发送中断请求信号
-
中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源
-
中断响应:根据不同的中断源形成不同的中断类型码,再根据中断类型码在中断向量中寻找中断服务程序的入口地址,转入相应的中断处理程序
-
中断处理:执行中断程序
-
中断返回:恢复现场
-
中断屏蔽:多重中断的时候,处理优先级高的会中断中断
-
中断接口电路?
-
CPU 响应中断的条件和时刻:在每一条指令执行阶段结束时刻
单重中断和多重中断的服务程序流程
- 单重中断的服务程序流程
- 多重中断的服务程序流程
中断屏蔽技术
改变屏蔽字,改变中断处理顺序
CPU 执行程序轨迹
区分响应优先级和处理优先级:
- 响应优先级是最开始选哪一个中断进行响应
- 处理优先级是在处理一个中断时,一个处理优先级高的会中断这个中断!!
- 两者是不同的概念
7、 DMA 方式
周期挪用
- I/O访存的优先级高于CPU访存,所以当同时访问时,先I/O
DMA 接口的功能和组成
功能:
- 向CPU申请DMA传送
- 在CPU允许DMA工作时,处理总线控制权的转交,避免总线竞争
- 在DMA期间管理系统总线,控制数据传送
- 在数据块传送结束时,给DMA操作完成的信号
组成:
- 主存地址寄存器(AR):用于存放主存中需要交换数据的地址。DMA传送数据前,通过程序将数据在主存中的首地址放入AR,。DMA传送过程中,+1即可
- 字计数器(WC):用于记录传送数据的总字数,以交换字数的补码预置。每传送一个字,字计数器+1,直到0,向CPU发出中断请求信号
- 数据缓冲寄存器(BR):用于暂存每次传送的数据
- DMA控制逻辑:用于管理DMA传送过程
- 中断请求:字计数器为0,由“溢出信号”通过中断机构向CPU发送中断请求
- I/O设备地址(DAR):存放I/O设备的设备码等信息
DMA 传送过程:预处理、数据传送、后处理
例题
六.计算机的运算方法:
1.有符号数的真值,原码,反码,补码,移码相互转换
- 正数原反补都相同
- 移码只能表示整数
- 补码比大小:机器数的符号位相同时,非符号位越大,真值越大
- 移码比大小:机器数越大,真值越大
- 补码和移码0只有一种表示方法,所以都能多表示一个负数(如:-128~127)
小数:
2.浮点数与真值的相互转换,浮点数的表示范围:
浮点数规格化:
- 通过调整一个非规格化浮点数的尾数和阶码的大小,使非0浮点数在尾数的最高数位上保证是一个有效值
- 当下溢时,当0处理,上溢就是异常处理
IEEE754
- 如何表示:阶码用移码表示,用真值+偏置值来表示阶码(这里的偏置值是2^(n-1)-1)。尾数用原码表示,这里要注意的是隐藏了最高位的1!!
- 注意和规格化区分,规格化的尾数需要的是最高位是有效位,而IEEE754是隐藏了最高位1!!比如原码1.10规格化是用0.110来表示,尾数为110,而IEEE尾数是用10来表示,隐藏了最前面的1
如何和真值转化?
例子:
-
真值转浮点数:
-
浮点数转真值:
表示范围:
-
正常范围:阶码不能全0全1!!
-
溢出:阶码全0全1表示特殊用途!!
3.定点运算:
a.补码加减运算及溢出判断
运算:
- 由
[x]补
变为[-x]补
:将所有位取反加1 (找到最右边的1,将其左边的(不包含这个1)的位数全部取反即可。
溢出判断:
- 正数+正数=负数溢出,负数+负数=正数溢出,正数+负数不溢出
- 符号位进位和最高数值位进位不相同在这里插入代码片表示溢出
- 双符号位,01表示上溢,10表示下溢,00和11表示没有溢出
b.原码一位乘法
- n+1位乘法,原码乘法时要进行n次加法,n次右移
- 这里的右移是指逻辑右移!!
- 根据最低位确定下一次的加数
- 遇到负数无脑取绝对值,变成正数相乘,最后在观察符号位
c.补码一位乘(Booth算法)
- n+1位数补码,n次右移,n+1次加法
- 算出两个数的补码,对于一个数,还要算出他的[-x]补
- 低位一定要记得加一个小数!!如图就是把0.1011都写到了后面,因为后面这个0有用!
- 采用双符号位!!
- 右移是算术右移!!(00补0,11补1)
- 根据辅助位和最低位的差决定加的是
[x]补
还是[-x]补
4.浮点加减运算
tips:
- 尾数右移,阶码+1
一般步骤:
- 对阶:小数往大数对
- 尾数加减:正常的补码加法
- 将浮点数规格化,小数点最高位为有效位(原码的有效位为1,补码的有效位与符号位相反)
- 舍入:对尾数进行舍入
- 判溢出:判断规格化后的阶码是否溢出(尾数溢出未必溢出,可以通过双符号位的规格化拯救,但是阶码溢出就是真溢了)
尾数溢出的情况:
七.指令系统:
1.操作码
- 指令字长:一条指令的总长度(字节的整数倍)
- 机器字长:CPU进行一次整数运算所能处理的二进制数据位数
- 存储字长:一个存储单元的二进制代码位数
固定编码、扩展编码技术
- 固定编码:用固定的位数表示操作码
- 扩展操作码指令格式:指令长度相同,但是操作码长度不同(说明不同地址数的指令使用不同长度的操作码)
2、与数据有关的寻址方式
指令寻址:
- PC+1的1是指一个指令字长(会根据指令长度和编址方式改变)
- 顺序寻址:每次取值结束后,PC+“1”
- 跳跃寻址:执行转移类指令导致PC值改变
数据寻址:
- 立即寻址:形式地址即是操作数本身,又称为立即数
- 寄存器寻址:寄存器的编号,寄存器里即是操作数
- 直接寻址:地址即是操作数地址
- 间接寻址:地址里面存放地址的才是操作数的地址
- 寄存器间接寻址:寄存器里存的是一个地址,该地址里存的是操作数
- 基址寻址:将基址寄存器的内容加上当前地址,才是真正的有效地址
- 变址寻址:将变址寄存器的内容加上当前地址,才是真正的有效地址
- 相对寻址:把程序计数器PC的内容加上当前地址,才是真正的有效地址(这里的PC是+1之后的PC)
基址寻址和变址寻址的区别
假设指令里的地址为A
- 基址寻址的基地址是基址寄存器,偏移量是A
- 变址寻址的基地址是A,偏移量是变址寄存器IX,变址寄存器是面向用户的,可以由用户修改
3、指令格式设计举例 P323-326?
八.中央处理器(CPU结构与功能)
- 指令周期:
1、指令周期流程
易错点:
- CPU内部寄存器大致分为两类:一类是可见寄存器,可对这类寄存器进行编程,如PSW(状态寄存器),PC,ACC,通用寄存器等。另一类是用户不可见的寄存器,如存储器地址寄存器(MAR),数据寄存器(MDR),指令寄存器(IR)等
- 条件转移指令执行时所依据的条件来自标志寄存器!!(条件转移指令的本质是做减法)
- n位CPU的n是指数据总线数
- 中断是在一条指令执行结束之后出现的!!
- 一个机器周期包含若干个时钟周期。
- 机器周期由存取周期确定长短,一般来说机器周期=存取周期
九、十、控制单元:
1、指令周期、机器周期和时钟周期的概念及三者关系;图9.9
2、根据CPU的数据通路,写出指令的微操作;
-
指令周期
-
间址周期
-
执行周期
-
中断周期
-
配合节拍以及微命令?
3、微程序控制器的基本概念
微命令、微操作、微指令、微周期、微程序、控制存储器
- 微周期:执行一条微指令所需要的时间,通常为1个时钟周期
4、微指令和微操作的关系,微指令和机器指令的关系,微程序和程序之间的关系:
- 微命令与操作:微命令和微操作之间存在一一对应的关系。每个微命令都对应一个具体的微操作;微命令是微操作的控制信号,而微操作则是微命令的具体执行过程
- 微指令和微命令:微指令可能包含多个微命令
- 微指令和机器指令:机器指令是对程序执行步骤的描述;微指令是对一个机器指令执行步骤的描述
- 程序和微程序:程序是由指令序列组成;微程序由微指令序列组成
- 微程序和机器指令:一条机器指令对应一个微程序
5、微程序控制器的组成及各部件的作用
组成:
- 控制存储器(CM),用于存放微指令
- 微指令存储器(CMDR)
- 微地址形成部件
- 微地址寄存器(CMAR)
-其实和CPU内的很像,只是由于我们的微指令只是指令,不会有什么数据,所以说相当于IR和MDR合并为CMAR,PC和MAR合并为CMDR
6、微程序控制器的设计思想 :
- 将一个机器指令编写为一个微程序,每一个微程序包含若干条微指令,把这些微程序存到一个控制存储器里,用寻址用户程序机器指令的方法来寻址每个微程序的微指令。
7、微程序控制器的工作原理
8、微指令的编码方式
-
水平型微指令:一个微指令能定义多个相容微命令,相容是指可以同时执行。下面的都是水平型微指令
-
直接编码:
-
字段直接编码方式
-
字段间接编码方式
-
混合编码
9、微指令序列地址的形成
-
微指令的下地址字段指出:微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后续微指令的地址,这种方式称为断定方式
-
根据机器指令的 操作码 形成:当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成
-
增量计数器:(CMAR)+1 ——>CMAR
-
分支转移:转移方式:指明判别条件;转移地址:转移成功后的去向
-
通过测试网络
-
由硬件产生微程序入口地址:当电源加点后,第一条微指令的地址可由专门的硬件电路产生。
后续微指令地址形成方式:
- (CMAR)+1 ——>CMAR
- 微指令的下地址字段指出
- 微程序的入口地址
- 微地址形成部件
易错点:
- 在微程序控制器中,形成微程序入口地址的是:机器指令的操作码字段
总结
更新不易,辛苦各位小伙伴们动动小手,👍三连走一走💕💕 ~ ~ ~ 你们真的对我很重要!最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!
专栏订阅:
每日一题
C语言学习
算法
智力题
初阶数据结构
Linux学习
C++学习
更新不易,辛苦各位小伙伴们动动小手,👍三连走一走💕💕 ~ ~ ~ 你们真的对我很重要!最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!