- 计算机组成原理和体系结构
约6分
- 进制的转换
使用按权展开法,直接上一个示例
10100.01 = 1 * 2的4次方 + 1 * 2的2次方 + 1* 2的-2次方
十进制转为其他进制,则使用短除法
比如94 >> 2
- 数据的原码 反码 补码 移码
原码直接转为二进制
第一个是符号位 1为0000 0001 -1为 1000 0001
反码
正数一致, 负数则是符号位还是1,不过后面的都取反
补码
正数一致, 负数则是再其基础上加一
移码
浮点运算的接码, 首位符号位取反
各种数位的取值范围
- 浮点数计算
科学计算法
1000 -> 1.0 *10的三次方
比如 1000 + 119
就是 1.0 * 10的三次方 + 0.119 * 10的三次方
最后格式化
- 计算机的结构
只包含两个部分
CPU+主存储器
CPU主要由两部分组成, 运算器和控制器
- Flynn分类法
两重指标
指令流和数据流
- CISC和RISC
主要考描述,选择题问差异
- 流水线
主要考计算
计算公式和方法
基本概念为 为多个指令的不同部分进行工作,提高利用率和平均执行速度
原本的执行
因为是顺序执行
如果采用了流水线
也就是加快多个部件的聚合
流水线的执行时长
我们拿例题来看
首先确定流水线周期,为执行时间最长的一段,上面就是2ns
剩下的就确定两个阶段,
1阶段为建立时间
2阶段为执行时间
大概为
整体时间占用为
1条指令执行时间 + (指令条数-1) * 流水线周期
理论公式
实践公式,也就是统一子周期
K是执行段,我们上面三个部分,就是k = 3
其次是吞吐率
对应的公式为
依赖于上面的执行总时间计算公式
最大吞吐量公式为
也就是 1除以流水线周期总时间
加速比的计算公式
主要是
其次是效率的计算公式
我们先上公式
上面的T0我们已经知道了,下面的kTk我们可以如下的看计算公式
假设一个任务的总时长为15个,4个任务就是60,即为kTk
- 层次化存储结构
那么我们就依次讲解这些存储结构
首先是Cache,负责在主存和CPU之间传递数据之外存储计算数据
如何计算在引入了Cache之后的读取数据平均周期呢?
这里的h是对Cache的访问命中率,一般题目都会给 比如 95%
T1是Cache的周期时间,t2是主存的周期时间,那么t3就可以算出来
- 局部性原理
分为空间局部性和时间局部性
空间局部性是内存中可能存在的连续的内存块
时间局部性则是例如循环中,可能连续访问的代码
工作集原理,则是进程运行时被频繁访问的页面集合
- 主存
首先是主存的分类
随机存取存储器 例如内存,常见掉电后数据丢失
只读存储器 例如存储bios的芯片
主存的编址计算例题
比如我们的内存地址是AC000H到C7FFFH,其拥有多少K的地址单元
首先需要计算共多少存储位
这里的计算公式是C7FFFH – AC000H + 1
首先是C7FFFH + 1为 C8000H
然后减去AC000H,得到1C000H,
除以 2的10次方得到112
然后假设这个内存是由28片存储器芯片构成,每个芯片16K,求每个芯片的存储单元
112 * 16 / 28 16 * x
X = 4
- 磁盘
计算存取时间的公式为
存取时间 = 寻道时间 + 等待时间(平均定位时间 + 转动延迟)
这里看一道困难题
这里需要注意的是对于上面的11个记录,由于是有着处理时间
那么会导致每次读取的周期被放大到 (33 + 3) * 10 + 最后一个处理 6
366
如果是进行了存储优化之后,那么可以省去大部分的寻道时间,结果为 (6+6) * 11
- 计算机的总线
考察基本的概念
- 系统可靠性分析
如果是串联的话,那么可靠性应该是单个组件的可靠性相乘
并联的话,则是根据可靠性算出不可靠性之后相乘,最后被1减去
常见的体型有
算一个系统的可靠性
- 校验码
主要用于检错和纠错
利用码距可以做到
比如采用
CRC校验码,可以用于检错,也就是在编码后的数据加入校验信息
采用了模二除法
整体可以如下看
首先根据多项式确定计算子项为
11011
然后在原始报文后面进行补位,补多少位,就是报文长度减一
然后进行模二除法
得到数据,替换后面的补位,从而方便纠错
分为校验位和信息位
校验位的位置位于 2的n次方位置
比如2的0次方,2的一次方,2的2次方
套入公式,
2的r次方 >= 4 + r +1
4是信息位的个数 r是校验码的个数
得到了长度,我们就可以计算校验码
这里我们利用下标进行二进制计算
然后确定第几位的校验码该利用第哪几位来进行计算
之后填入即可