计算机组成与体系结构
二进制
小数的二进制换算:
主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0
例:0.125,转换为8位二进制:0.0010000
0.125×2=0.25-----------0
0.25×2=0.5 -----------0
0.5×2=1 -----------1
二进制转换为小数:
二进制的小数转换为十进制主要是乘以2的负次方,从小数点后开始,依次乘以2的负一次方,2的负二次方,2的负三次方等
例:0.0010000,转换为十进制
0×2-1+0×2-2+1×2-3=0.125
数据的表示(原码反码补码移码)
原码:原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小;
取值范围:-(2n-1- 1)~2n-1^-1
反码:反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反;
取值范围:-(2n-1- 1)~2n-1^-1
补码:补码跟原码是正数是,一样;负数时,在反码的基础上加1;
取值范围:-2n-1~2n-1^-1
因为0的补码只有一个:0000 0000
移码:在补码的基础上,符号位取反;
例:±1 | 数值1 | 数值-1 | 相加(1-1) | 备注 |
---|---|---|---|---|
原码 | 0000 0001 | 1000 0001 | 1000 0010 | 不满足日常运算 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 | -0 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 | +0 |
移码 | 1000 0001 | 0111 1111 | 0000 0000 | 0 |
数据的表示(浮点数运算)
浮点数的表示:
M称为尾数,M只能有个位和小数位,R称为基数,e称为指数;
浮点数的运算:对阶--------->尾数计算---------->结果格式化
对阶:一般是低阶向高阶看齐
结果格式化:运算结果很可能会使个位相加后超过基数的,因此需要再次将结果转换为浮点数规范;
如:6.12×102+5.23×102=11.35×102---------------->1.135×103
CPU(中央处理器)
CPU主要由运算器、控制器、寄存器组、内部总线等部件组成
运算器
运算器由算术逻辑单元、累加寄存器、数据缓冲寄存器、状态条件寄存器等组成;
算术逻辑单元(ALU):负责处理数据,实现对数据的算术运算和逻辑运算;
累加寄存器(AC):通用寄存器,当运算器的ALU执行算术或逻辑运算时,为ALU提供一个工作区;
数据缓冲寄存器(DR):作为CPU和内存、外部设备之间数据传送的中转站,操作速度上的缓冲;
状态条件寄存器(PSW):保存由算术指令和逻辑指令运算或测试的结果建立的各种条件码内容;主要分为状态标志和控制标志;
控制器
指令寄存器(IR):当CPU执行一条指令时,先把它从内存储器渠道缓冲寄存器中,在送入IR暂存,指令译码器根据IR内容产生各种微操作指令,控制其他的组成部件工作完成所需的功能;
程序计数器(PC):保存的内容为将要执行的下一条指令的地址;
地址寄存器(AR):保存当前CPU所访问的内存单元的地址;
指令译码器(ID):包含操作码和地址码两部分;
时序部件:
计算机的体系结构
Flynn分类法
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流 | 控制部分:一个 处理器:一个 主存模块:一个 | 单处理系统 | |
单指令流多数据流 | 控制部分:一个 处理器:多个 主存模块:多个 | 各处理器以异步的 形式处理同一条指令 | 阵列处理机 并行处理机 超级向量处理机 |
多指令流单数据流 | 控制部分:多个 处理器:一个 主存模块:多个 | 理论存在,不切实际 | |
多指令流多数据流 | 控制部分:多个 处理器:多个 主存模块:多个 | 能够实现作业、任务、 指令等各级全面进行 | 多处理机系统 多计算机 |
指令系统
CISC和RISC
流水线的基本概念
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
流水线的执行周期和执行时间
流水线的执行周期指的的流水线执行时间最长的一个阶段所使用的时间。
流水线的执行时间为完成n个指令所需的时间。
执行时间计算公式:
理论公式:(t1+t2+┈┈tk) + (n-1)×△t
实践公式:(k+n-1)×△t
注:k表示一条指令分为了多少段,n表示有多少条指令,△t表示执行周期,t1+t2+┈┈tk表示每段的执行时间,加起来代表一条指令的执行时间。
流水线吞吐率
流水线吞吐率(TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。
计算公式:TP=指令条数/流水线执行时间
T
P
=
指
令
条
数
流
水
线
执
行
时
间
TP=\frac{指令条数}{流水线执行时间}
TP=流水线执行时间指令条数
流水线最大吞吐率:
计算公式:
T
P
m
a
x
=
L
i
m
n
→
+
∞
n
(
k
+
n
−
1
)
△
t
=
1
△
t
TP_{max}=Lim_{n\rightarrow+\infty} \frac{n}{(k+n-1)△t}=\frac{1}{△t}
TPmax=Limn→+∞(k+n−1)△tn=△t1
流水线的加速比
完成同样一批任务,不使用流水线时占用的时间与使用流水线占用的时间之比称为流水线的减速比。
流水线的效率
指流水线的设备利用率,在时空图上,流水线的效率定义为n个任务占用的时空区与k个流水段总的时空区之比。
E
=
n
个
任
务
占
用
的
时
空
区
k
个
流
水
段
的
总
的
时
空
区
=
T
0
k
T
k
E=\frac{n个任务占用的时空区}{k个流水段的总的时空区}=\frac{T_0}{kT_k}
E=k个流水段的总的时空区n个任务占用的时空区=kTkT0
层次化存储结构
Cache
Cache的功能:提高CPU数据输入输出的效率,突破冯•诺伊曼瓶颈,即CPU与存储系统间数据传送带宽限制。
使用Cache改善系统性能的依据是程序的局部性原理。
如果以h代表对cache的访问命中率,t1表示cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用“cache+主存储器”的系统的平均周期为t3,则:
局部性原理
时间局部性
空间局部性
工作集理论:工作集是进程运行时被频繁访问的页面集合
主存(内存)
分类:读/写存储器(随机存取存储器,RAM)、只读存储器(ROM)
编址:
地址单元个数=内存地址的结束位置 - 内存地址的起始位置 + 1
地址单元个数 × 地址单元位数 = 芯片个数 × 芯片地址单元(存储单元)× 芯片地址单元位数
磁盘结构与参数
存取时间 = 寻道时间 + 等待时间(平均定位时间 + 转动延迟)
总线
内部总线
系统总线:数据总线、地址总线、控制总线
外部总线
系统可靠性分析和设计
串联系统和并联系统
计算失效率:
串联系统:
有效率(R为每个系统的有效率):R = R1 × R2 × … × Rn
失效率(R为每个系统的失效率):R ≈ R1 + R2 + … + Rn
并联系统:
有效率(R为每个系统的有效率):R = 1 - (1 - R1) × (1 - R2) × … × (1 - Rn)
失效率:1 - R
循环校验码(CRC)
码距:一个编码系统的码距是整个编码系统中任意两个码字的最小距离。
循环校验码只能用来检错,不能用来纠错。
CRC校验码生成是采用二进制的模2算法(即减法不借位、加法不进位)计算出来的,这是一种异或操作。
例:
(1)设约定的生成多项式为G(x)=x4+x+1,其二进制表示为10011,共5位,其中k=4。
(2)假设要发送数据序列的二进制为101011(即f(x)),共6位。
(3)在要发送的数据后面加4个0(生成f(x)*xk),二进制表示为1010110000,共10位。
(4)用生成多项式的二进制表示10011去除乘积1010110000,按模2算法求得余数比特序列为0100(注意余数一定是k位的)。
(5)将余数添加到要发送的数据后面,得到真正要发送的数据的比特流:1010110100,其中前6位为原始数据,后4位为CRC校验码。
(6)接收端在接收到带CRC校验码的数据后,如果数据在传输过程中没有出错,将一定能够被相同的生成多项式G(x)除尽,如果数据在传输中出现错误,生成多项式G(x)去除后得到的结果肯定不为0。
海明校验码
海明校验码可用来检错和纠错。
海明校验码公式(假设为k个数据位设置r个校验位)
假设有r个校验位,一个位子有0或1两种情况,r个位子就有2r种排列情况,能表示2r种状态。其中一个状态用来表示正确(没有错误发生)的这种情况。其余的2r-1种状态来表示错误发生在哪一位。总共有k+r位,所以2r-1一定要≥总位子k+r
注意:
信息位的位置分配是从高位到低位依次存放
海明校验码是放在2的幂次位上的
例:求1011的海明码
(1)计算r的值:2r-1≥4+r,得出r最小为3;那么海明码的位数则为7位
7 | 6 | 5 | 4 | 3 | 2 | 1 | |
---|---|---|---|---|---|---|---|
信息位 | 1 | 0 | 1 | 1 | |||
校验位 | r2 | r1 | r0 |
(2)计算信息位对应的校验位
7=22+21+20,则对应的校验位为:r2,r1,r0
6=22+21,则对应的校验位为:r2,r1
5=22+20,则对应的校验位为:r2,r0
3=21+20,则对应的校验位为:r1,r0
(3)整理信息,将信息位对应的数据进行异或操作:
r2=1⊕0⊕1=0
r1=1⊕0⊕1=0
r0=1⊕1⊕1=1
(4)最后得出海明码为:1010101