1. 计算机组成与体系结构
1.1 数据的表示
1)进制的转换
(R进制)
RK K为数距离小数点的距离
2)二进制的四种码
第一个数为符号位表示正负
- 原码:用于表示真值
- 反码:勇于求反(负数)
正数反码为其原码本身
负数的反码就是其源码除符号位取反 - 补码:用于数据的表示与存储(计算机的表示形式)
补码为其反码+1 - 移码:用于浮点数阶码表示
为其补码符号位取反
3)数的表示范围
4)浮点数的运算
- 浮点数的表示
浮点数小数点不固定,是浮动的(科学计数法表示)
N = 尾数 * 基数指数 == 2.4 * 105 == 0.24 * 106 - 运算过程
- 对阶
- 尾数计算
- 结果格式化
- 特点
- 一般尾数用补码,阶码用移码
- 阶码的位数决定表示范围大小
- 尾数的位数决定数的有效精度 位数越多精度越高(0.24 > 2.4)
- 对阶时,小数向大数看齐
- 0 表示正数 1 表示负数
1.2 计算机结构
- 运算器
1、算术逻辑单元ALU:数据的算术运算和逻辑运算
2、累加寄存器AC:通用寄存器,为ALU提供一个工作区
3、数据缓冲寄存器DR:写内存时,暂存指令或数据
4、状态条件寄存器PWS:存状态标志与控制标志(也有将其归为控制器的) - 控制器
1、程序计数器PC:存储下一条要执行指令的地址
2、指令寄存器IR:存储即将执行的指令
3、指令译码器ID:对指令中的操作码字段进行分析解释
4、时序部件:提供时序控制信号
辅助存储器 = 外存
主存储器 =内存
1) 计算机体系结构的分类-Flynn
1.3 指令
基本概念
指令格式:操作码用于计算,地址码用于存储
地址码分类
列:a + b = c; a = a+ b; a++; 关机
1)寻址方式
- 立即寻址方式:操作数直接在指令中,速度快,灵活性差
- 直接寻址方式:指令中存放操作数地址,需要访问一次内存
- 间接寻址方式:指令中存放了一个地址,这个地址对应的操作数的地址,需要访问两次内存
- 寄存器寻址:寄存器存放操作数,不是存在内存,不需要访问内存
- 寄存器间接寻址:寄存器存放操作数地址
2)CISC 与 RISC
比较:
- 指令数量
- 指令使用评率
- 寻址方式
- 寄存器
- 流水线支持
- 高级语言支持
1.4 流水线
1)概念
程序执行时多条指令重叠进行,是一种准并行处理(非真正并行)
各种部件同时处理是针对不同指令而言的,同一时刻不同部件处理不同指令
提高各个部件利用率以及指令的平均执行速度
而串行则是一个指令三个步骤执行完成后才执行下一指令
2)流水线的计算
- 流水线的周期为三个步骤中执行时间最长的一段
- 流水线计算公式:
1条指令的执行时间+(指令条数-1)*流水线周期
3) 超标量流水线(真正实现并行)
每个指令执行对应的步骤所需要对应的部件加倍
度:相同资源的冗余程度
4)流水线的吞吐率TP,Though Put rate
指单位时间内流水线所完成的任务数量或输出的结果数量
- 基本公式:
- 流水线加速比:
S = 不使用流水线执行时间 / 使用流水线执行时间
1.5 存储系统:层次化存储结构
1)Cache 高速缓存器
- Cache是访问速度第二快的层(寄存器最快)
- Cache能改善系统性能(依据程序的局部性原理)
- 命中率:(cpu在Cache里找程序时找到的概率)
若h表示访问Cache的命中率,t1表示Cache的周期时间,t2表示主存储器的周期时间,读操作为例,使用“Cache+主存储器”的平均周期时间为t3,则
t3 = h * t1 + (1 - h) t2
; 其中1-h称为失效率 (未命中率)
意思是cache里找不到就去主存里找,两个时间按照概率计算并相加
2)Cache映像
- 直接相联映像:硬件电路实现简单,冲突率高
- 全相联映像:硬件电路实现复杂,冲突率低,只适用于小容量Cache
- 组相联映像:前两种映像的折中
- 地址映像:将主存与cache的存储空间划分为若干大小相同的页(块)
方便将内存里的数据拷贝到高速缓存里去
例子:某机器内存为1GB,划分为2048页,每页512KB;
Cache容量为8M,划分为16页,每页512KB。
也就是说Cache页大小一定和内存页大小相同,这样能实现内存里的数据往cache拷贝
直接相连映像
- 对应页只能放在cache里对应位置: 0-0,1-1;
- 主存页号 = 主存标记(7位)+ Cache页号(4位) = 11位 = 211= 2048页
- 页内地址大小 = 19位 = 512KB(210k=1KB,29=512)
- Cache容量为8M,划分为16页(24)每页512KB
全相联映像
- 主存里任何一页可放入cache里任何一页(哪一页有空就放哪一页)
- 某机内存为1GB(230)划分为2048页,每页512KB
- cache容量为8M,划分为16页,每页512KB
组相联映像
内存页可随机放到cache任意组(全映像相联)
cache组分页时需要放到对应页(直接映像)
3)内存编址与计算
存储单元
- 按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字
- 按字节编址:存储体的存储单元是字节存储单元。。。。
- 所需芯片数量:总片数 / 每片的容量
1.6 总线
一条总线同一时刻,只允许一个设备发送数据,但可以接收多个
- 数据总线(Data Bus):在CPU与RAM之间来回传输需要处理的或存储的数据
- 地址总线(Address Bus):用来指定存储在RAM中数据的地址
- 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号传送到周边设备,常见:USB bus,1394 bus
1.7 串联系统与并联系统
- 可靠性:
- 串联:每一个设备都可靠的情况下才可靠
R = R1 * R2 * …*Rn - 并联:任何一个设备可靠整个就可靠
R = 1 - (1-R1)*(1-R2) * … *(1-Rn)
- 串联:每一个设备都可靠的情况下才可靠
- 失效率:
- 串联:只要有一个设备失效,整个串联设备失效
γ = γ1 + γ2+…+γn
- 串联:只要有一个设备失效,整个串联设备失效
1)混合系统的可靠性计算
1.8 校验码
1)基础知识
- 任何编码都由一组码字(code word)组成,两个码字间变化的二进制位数称为码距(code distance)
- 一种编码中任意两个码字间最少变化的二进制位数称为该数据码的最小码距
- 对于一个编码体质,将其中所有的合法码字最小距离值称为这个编码体质的码距
- 校验码的目的是为了扩大码距,通过校验规律来识别错误代码
例子:
2)模二除法
- 模二加法:1+1 = 0;0 + 1 = 1;0+0=0;
- 模二减法:1 -1 = 0;0-1 = 1;1-0 = 0;0-0 = 0
相当于二进制中逻辑异或运算,但是无进位也无错位
位相同则为0,位不同则为1 - 模二除法和模二乘法
3)三种校验码
- 奇偶校验(PCC):校验位(1位)+信息位(四位) = 校验码(5位 )
- 奇校验:校验码中1的个数为奇数
- 偶校验:校验码中1的个数为偶数
可检查出1位的错误,不能纠错,因为找不到哪一位错了
- 循环校验码(CRC)也是只能查错不能纠错。
先在要发送的帧后面附加一个数(模二除法得到),用来校验的校验码,生成一个新帧发送给接收端,达到接收端后,对新帧除以(模二除法)这个选定的除数,若有余数,则说明在传输过程中出错,余数为0则正确。
4) 多项式与二进制的直接对应关系
- x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次对应0
- 可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位
- 多项式包括生成多项式G(x)和信息多项式C(x)
5)循环校验码例题
现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码。解:
- 首先多项式转二进制:G(X) = X4 + X3 + 1,共5位 二进制11001
- 因为生成的多项式位数为5,CRC校验码位数为4(校验码的位数比生成多项式的位数少1)所以需要加4个0
最后将补0的原数据帧101100110000补的0替换为余数得到新帧101100110100,发送给接收端
6)海明校验码
不但能查错也能纠错
- 在k个数据位之外加上r个校验位,形成k+r位的新码字,使新码字码距均匀增大。