软件设计师笔记-计算机组成与结构体系
一、计算机组成与体系结构
1.1、数据的表示
1.1.1、进制的转化
-
二进制<->十进制
-
二进制转十进制
-
按权展开
- image-20211002132745461
-
-
十进制转二进制
-
短除法
- image-20211002132753705
-
-
-
二进制转八进制
-
三位为一组进行转换
- image-20211002132759966
-
-
二进制转十六进制
-
四位数为一组进行转换
- image-20211002132808027
-
1.1.2、编码问题
-
案例
- image-20211002132815118
-
原码
-
最高位表示符号位
-
正数
- 0
-
负数
- 1
-
-
缺点
- 不能直接进行数据运算
-
取值范围
-
- 反码
- 变换方式
-
正数
- 不变
-
负数
- 符号位不动
- 其余位置取反
-
取值范围
-
- 变换方式
-
补码
-
变换方式
-
正数
- 不变
-
负数
- 在反码的基础上加一
-
-
取值范围
-
- 移码
- 在补码的基础上将符号位取反
1.1.3、浮点数运算
-
表示方式
- image-20211002132845498
-
计算方式
- image-20211002132924720
-
对阶
- 全部向最高位对阶
- 尾数计算
- 然后如果不满足M属于1-9之间的数,则将M格式化为1-9之间的数
1.2、计算机的结构
1.2.1、主机
-
主存储器
-
CPU
-
运算器
- 算术逻辑单元ALU
- 累加寄存器AC
- 数据缓冲寄存器DR
- 状态条件寄存器PSW
-
控制器
- 程序计数器PC
- 指令寄存器IR
- 指令译码器
- 时序部件
-
1.3、Flynn分类法
-
SISD
- 在以前的电脑上有,现在的电脑是都没有了
- 在一些单片机中存在这样的结构
-
SIMD
-
代表
- ==阵列处理机==
-
-
MISD
- 实际上不存在
-
MIMD
- 现在的服务器基本都是这种
1.4、CISC和RISC
-
CISC
- 定制的计算机的指令集
- 比较具有针对性
-
RISC
-
精简指令集
-
普适性更高
-
只保留了基本的指令
- 复杂的指令则由精简的指令组合而成
-
-
更加适合流水线
1.5、流水线技术
-
概念
image-20211002132947589 -
流水线周期
- 执行时间最长的一段
-
流水线计算公式
-
1条指令执行时间+ (指令条数-1)* 流水线周期
-
①理论公式
-
(t1 + t2+t3+...+tk)=(n-1)* △t
- k为流水线的段数
- △t : 流水线周期
- n: 执行的指令条数
-
-
②实际公式
- (k +n-1)*△t
-
例题
- image-20211002132955234
-
-
流水线的吞吐率
-
Though Put rate ,TP
-
单位时间内流水线所完成的任务数量或者输出的结果数量
-
吞吐率公式
- image-20211002133054659
-
流水线最大吞吐率
- image-20211002133058665
- 在不考虑流水线创建时间的情况下理论最大吞吐率
-
-
流水线的加速比
-
完成同一任务,不使用流水线所用的时间与使用流水线所用的时间之比成为流水线的加速比
-
公式
- image-20211002133105241
-
-
流水线的效率
-
流水线的设备利用率。在时空图上,流水线按的效率定义为n个任务占用的时空图与k个流水段总的时空区比
-
公式
- image-20211002133109831
-
例题
- image-20211002133113692
-
1.6、存储系统
存储速度
- image-20211002133118752
catch
- image-20211002133123394
- image-20211002133130261
局部性原理
-
时间局部性
-
如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。
-
例如
- 程序循环、堆栈等是产生时间局部性的原因。
-
-
空间局部性
-
空间局部性是一旦一个指令一个存储单元被访问,那么它附近的单元也将很快被访问
-
例如
- 数组的相邻空间
-
-
工作集理论
-
工作集是进程运行时被频繁访问的页面集合
-
解释
- 就是将被频繁访问的集合打包起来,这样就可以整体的访问这个集合,从而减少访问的次数和时间
-
主存
-
分类
-
随机存储器
-
分类
-
DRAM(Dynamic RAM,动态的RAM )
-
SDRAM
-
SRAM(Static RAM,静态的RAM)
-
-
特点
- 数据断电丢失
-
-
只读存储器
-
分类
-
MROM(Mask ROM,掩模式ROM)
-
PROM
-
Programmable ROM
- 一次可编程ROM
-
-
EPROM
-
Erasable PROM
- 可擦除的PROM
-
-
闪速存储器
-
flash memory
- 闪存
-
-
-
特点
- 数据断电保留
-
-
-
编址
-
image-20211002133148490
- 8代表有八个地址空间
- *4 表示每个地址空间存储了4个比特的信息
-
如果要用8*4的存储器组成每个空间拥有8个比特信息的存储空间,则将两个存储器拼起来
-
image-20211002133158825
- 地址仍然是8个
- 但是每个地址的容量已经由4变成了8
-
image-20211002133158825
-
同理16*4 的存储空间也存在
- image-20211002133204974
-
出题
- image-20211002133209999
-
image-20211002133148490
磁盘结构与参数
-
结构
- image-20211002133216312
- image-20211002133222221
-
概述
- image-20211002133228166
-
例题
- image-20211002133232250
1.7、总线系统
根据位置分为三类
-
内部总线
-
系统总线
- 数据总线
- 我们平常说的系统是32位的还是64位的就是值得数据总线
- 总线的宽度是32位的,一次能够传输的数据就是三十二个比特位
- 地址总线
- 代表地址空间是2的32次方也就是4G
- 也即是说我们如果用到的系统是32位的,那么他能够管理的系统空间就是4G
- 数据总线
-
控制总线
- 用来传送各种控制信号的总线。
- 外部总线
1.8、可靠性
串联系统与并联系统
-
问题
- 给一个串并联在一起的模型计算出可靠度
-
串联模型
- image-20211002133241146
- 可靠的概率是所有的子系统的可靠性的概率乘积
-
并联模型
- image-20211002133246020
模冗余系统与混合系统
-
模冗余系统(几乎不考)
- image-20211002133249924
-
混合系统
1.9、校验码
-
基础概念
- image-20211002133327661
-
差错控制
循环校验码(CRC)
- image-20211002133331995
-
所谓的模2除法是二进制数字之间的计算,就是将被除数和除数进行异或相除,如上图左边的除法
-
例题
- image-20211002133340987
-
解题方法
-
先根据多项式生成对象的除数
- 11011
-
然后根据除数的个数 - 1 在原文信息后边补0生成被除数
-
用被除数除以除数得到余数
- 即为校验码
-
用校验码将之前我们补在原信息后边的0替换掉就是使用CRC编码之后生成的信息
-
海明校验码
- image-20211002133348048
-
校验码存在的位置
- 2的N次方的位置
-
校验位的位数和信息位的位数的关系必须满足
- r:为校验码的个数
x:为信息的个数
- r:为校验码的个数
技巧型快速生成海明码
注意: 技巧型的思路适合学过海明校验码的人来增加解题速度,但是不太适合完全不知道海明校验码的人来学习
纠错编码——hamming Code 汉明码(海明码)的快速手算方法_哔哩哔哩_bilibili
生成
image-20211017091649280思路如下
-
先看一下原信息的位数 (10101101)是8位,根据公式
image-20211017091905904
可以算出校验位是4位, 信息位加上校验位总共是12个位置
- 然后画出一个三行12列的表格,
- 第一列从大到小写上1-12,
- 第二列将校验位空出来,其他位置写上原信息
- 因为我们的校验码总共有4位,所以第二行原信息中为1 的那一列中的第一行信息转化成4位二进制数, 如果第二行的信息为0,则第一行不进行转换 不变
- 例如:将3转化为 0011
- 5 不变
- 6转化为 0110 等等
- 例如:将3转化为 0011
- 然后将所有的二进制数写在右侧一个单独区域(不明白的看图),对二进制数进行异或操作,得到一个4位 的二进制数
- 该二进制数就是海明校验码,注意顺序是从右到左排列的,分别在将四个校验码填写到相应的位置就得到了处理后的信息
这套方法运用熟练之后就可以只写两行,然后计算出二进制数之后直接写在右侧计算异或的区域
海明码方向校验原信息
image-20211017094002376解题方式
-
还是画一个表格,然后将有1的位置转化为二进制位
- image-20211017094321574
-
做异或运算
- image-20211017094405063
- 异或得到的结果如果是0000 说明是正确的
- 但是我们获取到的结果是0110 ,说明信息是错误的,将0110 转化为10进制位之后得到 6 说明第六位是错误的
-
纠错
- image-20211017094634445