(标三角号的相比之下不是非常重要)
1 导论
▲1.1 计算机的发展历程
1.1.1 计算机软硬件的发展
逻辑元件的发展推动了计算机的发展!
-
电子管时代
- 第一台电子数字计算机:ENIAC
- 机器语言(计算机能够直接理解的010101的电信号)
- 占地面积很大
- 耗电量很大
-
晶体管时代
- 第一台使用晶体管线路的计算机:TRADIC
- 面向过程的程序设计语言:FORTRAN
- 有了操作系统的雏形
- 耗电量获得了极大的减少
-
中小规模集成电路时代
- 高级语言迅速发展
- 开始有了分时操作系统
-
大规模、超大规模集成电路时代
- 产生了微处理器
- 新的概念:并行、流水线、高速缓存、虚拟存储器……
-
微处理器的发展:微型计算机的发展以微处理器的技术为标志
-
-
机器字长:计算机一次整数运算所能处理的二进制数(一定程度上决定了微处理器的速度)
-
操作系统位数:其所依赖的指令集的位数
-
摩尔定律揭示了信息技术进步的速度
- 集成电路上可以容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也会提升一倍
-
-
计算机软件的发展
机器语言、汇编语言->FORTRAN->PASCAL->C+±>Java等
(机器语言->计算->模块化->面向对象)
操作系统:DOS Unix Windows
1.1.2计算机的分类与发展方向
-
电子模拟计算机:处理的是一些连续的电信号(多用于科研)
电子数字计算机:处理的是一些离散的电信号
-
指令和数据流:
-
单指令流&单数据流(SISD):冯诺依曼体系结构
-
单指令流&多数据流(SIMD):阵列处理器、向量处理器
-
多指令流&单数据流(MISD):实际上不存在(和单指令流没啥区别)
-
多指令流&多数据流(MIMD):多处理器、多计算机
-
-
发展趋势:“两极分化”-> 体积更小,速度更快
1.2 计算机系统的组成
1.2.1 系统结构
-
软件和硬件在逻辑上是等效的
比如运算器一次可以处理一个8位数据,这时候来了一个16位数据,可以选择另买一块可以一次处理16位的存储器,也可以通过设计运算步骤存到存储器中来实现。
-
计算机硬件的基本组成
1.2.2 CPU及其工作过程
-
功能部件-运算器和控制器
运算器
MQ:乘商寄存器:在运算器中,乘商寄存器主要负责数据的乘法与除法运算并可保存运算结果,是运算器的基本组成部分,是运算器三个基本寄存器之一。
PSW(Program Status Word):程序状态字寄存器
控制器
-
计算机的工作过程—取数指令
M:主存中的某个存储单元
ACC、MQ、X、MAR、MDR……:相应寄存器
M(MAR):取存储单元中的数据
(ACC)……:取相应寄存器中的数据
指令:操作码|地址码
OP(IR):取操作码
Ad(IR):取地址码
(控制器永远到PC里去找指令)
CPU区分指令和数据的依据:指令周期的不同阶段
1.2.3 I/O设备
-
功能部件—I/O设备
- 输入设备:鼠标、键盘、摄像机等
- 输出设备:打印机、显示器等
- 辅存:光盘、机械硬盘、固态硬盘、U盘等
-
I/O接口
1.2.4 软件系统
-
系统软件:管理整个计算机系统,使系统资源得到合理调度
- 操作系统(OS)
- 数据库管理系统
- 语言处理程序
-
应用软件:完成用户的特定任务
- 使用系统软件提供的资源接口
-
计算机编程语言:
-
机器语言:二进制代码
0000,0000,0000000010000
代码 操作 0000 LOAD 0001 STORE …… …… -
汇编语言:助记符 LOAD A,16
汇编语言把人工查表的操作变成计算机自动查表(前提是都遵循同一个查表的规律)
汇编器(汇编程序)将汇编语言翻译成机器语言
-
高级语言:C/C++ java : c=a+b
- 把翻译的事情交给操作系统去做
- 先用编译器(编译程序)编译成汇编语言,再翻译成机器语言
- 也可以直接翻译成机器语言
- 编译程序是将一整块代码全都翻译成01代码,生成一个保存好的机器文件
- 解释程序是单独将一句话直接解释成01代码,每一句都要从头开始
-
1.2.5 五层结构
(软硬件之间并没有严格的界限)
软件 硬件互相依存,协同发展
-
冯诺依曼计算机
-
存储程序:将指令以代码的形式事先输入到计算机主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直至程序执行结束。
-
1.2.6 层次结构----存储器
驱动器增强供电
取出存储单元中的数据,直接送往数据寄存器(MDR),故而存储字长的位数基本决定了数据寄存器的位数
- MAR和MDR在逻辑上属于主存,但是在实现上会放到CPU中
1.3 计算机性能指标
1.3.1 容量
存储体总容量=存储单元的个数*存储字长 bit
=存储单元的个数*存储字长/8 Byte
若MAR的位数为n位,则系统能支持的最大容量: 2 n 2^n 2n*存储字长(n位地址对应 2 n 2^n 2n个存储单元)
- 2 10 : K 2^{10}:K 210:K
- 2 20 : M 2^{20}:M 220:M
- 2 30 : G 2^{30}:G 230:G
- 2 40 : T 2^{40}:T 240:T
1.3.2 速度
机器字长:计算机进行一次整数运算所能处理的二进制数据的位数
时钟周期:时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。
整个程序耗时----> CPU执行时间
不能单单从机器字长来判断速度,而是要综合考量
**数据通路带宽:**数据总线一次所能并行传送信息的位数
**吞吐量:**指系统在单位时间内处理请求的数量
它取决于信息能多快地输入内存,CPU能多块地取指令,数据能多块地从内存中取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存。因此,系统吞吐量主要取决于主存的存取周期
**响应时间:**指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的的结果的等待时间。
通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。
2 计算
2.1.1 进位计数法
基数:每个数位所用到的不同符号的个数
基数大(如十进制) | 基数少(如二进制) | |
---|---|---|
位数 | 少 | 多 |
运算(乘法为例) | 复杂(100多种) | 简单(4种) |
计算机选用二进制是因为二进制方便对应物理器件的状态,如高低电平
2.1.2 进制转换
-
任意进制与十进制
r进制: K n K n − 1 … … K 2 K 1 K 0 K − 1 K − 2 … … K − m K_nK_{n-1}……K_2K_1K_0K_{-1}K_{-2}……K_{-m} KnKn−1……K2K1K0K−1K−2……K−m
= K n × r n + K n − 1 × r n − 1 + … … + K 2 × r 2 + K 1 × r 1 + K 0 × r 0 + K − 1 × r − 1 + … … + K − m × r − m K_n×r^n+K_{n-1}×r^{n-1}+……+K_2×r^2+K_1×r^1+K_0×r^0+K_{-1}×r^{-1}+……+K_{-m}×r^{-m} Kn×rn+Kn−1×rn−1+……+K2×r2+K1×r1+K0×r0+K−1×r−1+……+K−m×r−m
任意进制->十进制:各数位的数字与位权相乘后依次相加之和
十进制->任意进制
整数部分:倒序取余
小数部分:乘基取整
-
2 n 2^n 2n进制之间的转换:二进制、四进制、八进制、十六进制
-
真值与机器数
机器数是将符号"数字化"的数,是数字在计算机中的二进制表示形式。
▲2.1.3 BCD码
二进制与十进制的快速转换:一一对应
Binary-Code Decimal
当十进制运算的结果用二进制表示后不在8421码中时,就将二进制的结果+0110(让它进位,和十进制保持相同)修正
4个二进制位->16种不同的状态
BCD码直接使用其中10种->不同的映射方案
余3码:8421码+ ( 0011 ) 2 (0011)_2 (0011)2(了解)
2421码:改变权值定义(了解)
▲2.1.4 字符
-
ASCII码
大写字母与小写字母在各自区间内是连续存放的
- 字符串
-
GB2312-80:汉字+各种符号共7445个
区位码:94个区,每区94个位置
2.1.5 奇偶校验
-
校验原理简介:
**码距:**两个合法码字对应位上数字的不同位的个数
码距>1时,就可以检错了(原理:码距>1时,有些编码是没有用到的)
-
奇校验:保证一段数据中(包括校验位)出现奇数个1,仅需1位校验位(加多了也没有)。只能检测出1位错误
-
偶校验:保证一段数据中(包括校验位)出现偶数个1
2.1.6 海明码
海明码设计思路:分组校验->多个校验位
->校验位标注出错位置
-
海明码的求解步骤
相当于偶校验
接收方按照S3、S2、S1的顺序组成二进制数值,对应的十进制位置就是出错的位置
2.1.7 循环冗余校验码(CRC码)
- 模2除法:看最高位是0还是1,如果是0就上0,如果是1就上1,每次减法的时候按位异或(相同为0,不同为1),最高位不管,然后把低位挪下来
2.2.1 无符号数及原码
-
无符号数
-
整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。
如1001 1100B=156D
-
表示范围
-
8位二进制数: 2 8 2^8 28种不同的状态
0000 0000 ~1111 1111 = 1 0000 0000 -1
0~255 = 2 8 − 1 2^8-1 28−1
-
n位无符号数表示范围:0~ 2 n − 1 2^n-1 2n−1
-
-
-
有符号数
-
小数点:隐含存储(定点数:事先约定;浮点数:按规则浮动),不会有一个专门的存储单元来存储小数点
-
-
原码:
符号位和数值位分开处理
(小数在后面补0,即要求补完后数值不变)
(整数在数值前补0,要求补完后数值不变)
虽然原码表示数值简便,但是在用原码运算时,需要改变符号位来改变运算规则,较为繁琐
2.2.2 补码反码移码
-
补码
-
正数的补码与原码相同
-
负数的补码:符号位与原码相同,数值位由原码取反加1得到(由补码求原码规则也是一样的)
-
-
反码
-
正数的反码与原码相同
-
负数的反码:符号位不变,数值部分将原码的数值部分按位取反(反码转原码也一样)
-
表示范围与原码一样
-
-
移码
-
补码与移码:二者符号位相反
2.2.3 移位运算
- 逻辑移位:
- 算术移位:左乘相当于乘以基数,右移相当于除以基数
- 补码、反码的算术移位:
- 循环移位:
2.2.4 加减运算和溢出判断更换
- 补码的主要作用:两个有符号数可以直接相加
- 加减运算的基本思路:
- 转换成x+y的形式
- 计算 [ x ] 补 + [ y ] 补 即 可 [x]_补+[y]_补即可 [x]补+[y]补即可
- 溢出判断
2.2.5 原码乘法
-
原码一位乘法
-
补码一位乘法
2.2.6 强制类型转换
- 长变短:高位截短,保留低位
- 短变长:符号扩展,数值不变
- 只是改变了解释方式!
▲2.2.7 除法运算
- 按照十进制中类似方法计算时
-
原码恢复余数法
(上面加减交替法为笔误)
▲2.2.8 原码除法与补码除法更换版
▲2.3.1 浮点数的表示
-
阶码通常用补码或移码表示(阶码决定范围)
-
尾数通常用原码或补码表示(尾数表示精度)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a75a9a688ffb774304f4616ebe092fa4.png)
- 规格化:尾数的最高数位必须是一个有效值
(下溢可以直接当做机器0来处理,不需要报错。但是上溢需要中断报错来处理)
▲2.3.2 IEEE754标准
2.4.1 基本逻辑符号
-
算术逻辑单元
-
逻辑符号
**与门的天然逻辑:屏蔽 **
-
复合逻辑
2.4.2 加法器设计
-
一位全加器
通过与门输出的 C i C_i Ci是进位
通过异或门输出的 S i S_i Si是和
-
串行加法器
触发器:能够存放一位二进制位的一个存储单元
- 并行加法器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EO80NaZG-1608089479503)(C:\Users\cez\AppData\Roaming\Typora\typora-user-images\image-20201212093712835.png)]
- ALU芯片的组织
3 存储系统
关于刷新存储器的容量问题:颜色数为256色即颜色位数为8bit。进行2D应用时占用显存容量=水平分辨率×垂直分辨率×颜色位
3.1-3.2 主存简单模型和寻址概念
由于一次只能有一行的信号为1,而一位二进制位可以对应两种状态,所以会产生浪费,因此可以添加一个译码器,用n位来对应 2 n 2^n 2n种状态。
译码器具有映射的功能
- 片选线:
高电平有效:当接收到高电平(1)时,整个电路是开的,在工作的
当接收到低电平(0)时,整个电路不工作
**低电平有效:**与高电平有效相反
-
主存储器的简单模型:
由上可以看出,地址线的根数对应着n位地址,可以选择 2 n 2^n 2n个地址单元
数据线的位数也对应着MDR的位数(即列数)
逻辑结构:
-
寻址
3.3.1 半导体存储器RAM
-
半导体存储芯片的基本结构:
-
半导体随机存取存储器
RAM概念:给出了一个地址,只要地址的电信号准备完毕,那么电流流过整个电路,直接给出相应存储单元,不管需要访问的单元在哪一个位置,访问的时间基本是一样的,访问某个存储单元所用时间与其所在物理位置无关
- 用触发器存储信息的是SRAM
- 用电容存储信息的是DRAM
采用行列地址可以使得选通线的数目大大减小
-
DRAM的刷新
-
SRAM的读周期
(恢复时间保证数据的稳定性)
-
SRAM的写周期
-
总结:
3.3.2 半导体存储器ROM
Read-Only Memory
ROM是易失性存储器
但是在断电之后,主存中的内容会丢失
ROM负责存储一些开机之后必要的信息(断电后仍保存信息),正在运行中的程序的信息放在RAM中。 RAM的存储速度很快。(写功能是后来才发展的)
平时自己写文件保存功能其实就是将RAM中的内容存入ROM中,防止关机之后文件丢失
-
总结
3.3.3 存储器基本概念
只有半导体存储器的存储是与电路有关的,所以是易失性存储器,而其他类型的存储器都是靠物理特性来保存信息,所以都是非易失性存储器。
- 存储器的性能指标:存储容量、单位成本、存储速度
-
存储器的层次化结构
速度与容量的不断权衡
3.4.1 主存与CPU的连接
-
主存容量扩展-位扩展
- 主存容量扩展-字扩展
-
译码器
考试时,老师为了嗯考,有时会将A14特意空出来,此时A14无论选0还是1都无所谓,但是会导致存储空间加倍。而这种设计模式在实际应用中是有问题的,所以尽量选用相邻两个来做片选信号。(经典考试思维)
-
主存容量扩展:字位同时扩展
-
总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G9Z3ZutZ-1608089479507)(C:\Users\cez\AppData\Roaming\Typora\typora-user-images\image-20201212120410583.png)]
3.4.2 主存与CPU的连接-例题
- 系统程序区用ROM,用户程序区用RAM
3.5 双口RAM和多模块存储器
-
存取周期
-
多模块存储器
-
单体多字存储器
若指令和数据不连续,则一次并行取出一行数据是没有意义的(或者说会造成存储器的浪费)
-
多体并行存储器
-
高位交叉编制仅仅起到了扩容的作用,真要冲还得看低位交叉
-
回顾
3.6.1 局部性原理及性能分析
-
局部性原理:
-
性能分析:
-
命中率&缺失率
-
3.6.2 Cache-地址映射
-
地址映射:
-
全相联映射
以本题为例,主存按字节编址后,低位6位即为块内字节地址,中间3位为Cache的块数,高位的19位为主存的块号
-
直接映射
所放入的Cache的块号=主存的块号 % Cache的块数
由于直接映射,每个Cache块内只能固定存储主存中对应块的内容,所以说中间3个位(Cache字块地址)就可以不用存了(一一对应)
- 组相联映射
3.6.3 Cache-替换算法及写策略
-
替换算法
-
写策略
- 写回法(需要设置脏位来表示是否被修改)
-
全写法:
但是由于写Cache和写主存的速度差异很大,所以需要加一个写缓冲(暂存一系列的写回操作),因此写Cache和写主存的时机是不一样的(因为CPU速度非常快,所以写缓存可能溢出)
-
写策略小结:
3.6.4 Cache例题
-
Cache工作原理
-
Cache容量计算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oSUK3Zwi-1608089479510)(C:\Users\cez\AppData\Roaming\Typora\typora-user-images\image-20201212183640359.png)]
3.7 虚拟存储器
- 页式虚拟存储器
-
段式虚拟存储器
-
段页式虚拟存储器
-
快表TLB
4 总线
- 本章总览
4.1.1 总线的概念和分类
-
总线是一组能为多个部件分时共享的公共信息传送线路
-
总线的特性
机械、电气、功能、时间
-
总线的分类
-
按数据传输格式(串行总线和并行总线)
-
串行的优点:只需要一条传输线,成本低,广泛应用于长距离传输;应用于计算机内部时,可以节省布线空间。
缺点:在数据发送和接收时要进行拆卸和装配,要考虑串行-并行的转换问题。
-
并行的优点:总线的逻辑时序比较简单,电路实现起来比较容易
缺点:信号线数量多,占用更多布线空间;远距离传输成本高。由于工作频率较高时,并行的信号线之间会产生严重的干扰,对每条线等长的要求也越高,所以无法持续提升工作效率
-
-
按总线功能(片内总线、系统总线、通信总线)
-
片内总线
-
系统总线
数据通路表示的是数据流经的路径
数据总线是承载的媒介
-
▲通信总线
-
-
按时序控制方式(同步、异步)
-
-
系统总线的结构
-
单总线结构
-
双总线结构
-
三总线结构
-
-
本节回顾
4.1.2 总线的性能指标
-
总线的传输周期(总线周期)
-
总线时钟周期
-
总线的工作频率
实际上指的是一秒内能传送几次数据
-
总线的时钟频率
-
总线宽度
-
总线带宽
-
总线复用
如下图AD0-AD15
-
信号线数
-
总结
4.2 总线仲裁
-
总线仲裁的基本概念
-
集中仲裁方式
-
链式查询方式
总线忙信 号的建立者是获得总线控制权的设备
-
计数器查询方式
-
独立请求方式
-
-
分布仲裁方式
4.3 总线操作和定时
-
总线传输的四个阶段
-
总线定时
-
同步通信
同步通信适用于总线长度较短以及总线所接部件的存取时间比较接近的系统
-
异步定时方式
-
半同步通信
-
分离式通信
-
-
本节回顾
4.4 总线标准
-
总线标准的基本概念
5 IO系统
5.1 IO系统基本概念
-
IO系统演变过程
-
IO系统基本组成
-
IO方式简介
-
本节回顾
▲5.2.1 输入输出
-
外部设备
-
输入设备
-
输出设备
重点:计算VRAM容量和带宽
-
本节回顾
▲5.2.2 外存储器
-
磁盘存储器
柱面的数量即磁道的数量
磁头的数量即盘面的数量
每一个磁道上所存的二进制位数是一定的
-
磁盘的性能指标
-
固态硬盘
-
本节回顾
5.3 IO接口
IO接口解决的是外设和主机之间的连接问题
-
IO接口的功能
-
IO接口的基本结构
-
接口与端口
-
IO端口及其编址
-
IO接口的类型
-
本节回顾
5.4.1 IO方式1 程序查询方式
CPU和IO接口传送一次数据的单位是字
-
本节回顾
5.4.2 IO方式2 程序中断方式
中断系统
-
中断的基本概念
-
中断请求的分类
-
中断请求标记
-
中断判优
-
中断处理过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zBKgm6Rn-1608089479513)(C:\Users\cez\AppData\Roaming\Typora\typora-user-images\image-20201214001515435.png)]
-
-
中断系统小结
程序中断方式
程序中断可以实现CPU与IO并行工作
-
本节回顾
5.4.3 DMA方式
因为DMA一般用于控制高速IO,所以当CPU和DMA同时请求访存时,IO访存优先
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Jk98Hfz-1608089479515)(C:\Users\cez\AppData\Roaming\Typora\typora-user-images\image-20201214180818837.png)]
-
本节回顾