计算机组成与结构(软件设计师考试)
考点分析 : 浮点数运算,溢出,算术,逻辑运算,计算机体系结构分类,指令系统基础,CISC与RISC,流水线,Cache存储器可靠性分析,检验方法
目录
一、数的表示
-
进制转换
任何的R进制都可以使用按权展开法:
1010.01 = 1 × 2 3 + 1 × 2 1 + 1 × 2 − 2 1010.01=1\times2^3+1\times2^1+1\times 2^{-2} 1010.01=1×23+1×21+1×2−2 -
十进制转R进制,可以使用短除法
2|94 取余 0 2|47 取余 1 2|23 取余 1 .... 2|上一次的商
-
二进制转八进制与16进制数
(1)二进制到八进制之间,三位二进制可以代表一位八进制
(2)二进制到十六进制,四位二进制可以代表一位十六进制如:将10001110二进制转为8进制,得 10001100 ====》 010 001 110 解释如下:(答案,216)
010 十位上1代表 1 × 2 1 = 2 1\times2^1=2 1×21=2
001 个位上1代表 1 × 2 0 = 1 1\times2^0=1 1×20=1
110 百位上1代表 1 × 2 2 = 4 1\times2^2=4 1×22=4 十位上的1代表 1 × 2 1 = 2 1\times2^1=2 1×21=2 综合得4+2=6 -
数据的表示
- 正数:
源码(一般不能直接运算),反码,补码都一样 - 负数:
源码,反码,补码负数的时候最高位都为1 - 源码:
最高为符号为 - 反码:
最高符号位不变,其他地方取反 - 补码:
在反码的基础上加1
移码:在补码的基础上最高位取反(正负数都需要改变)
- 正数:
-
取值范围经常考,补码,要比源码反码多一个
-
浮点数运算
表示方法
119== 1.19 e2 代表尾数, e代表指数,R(1.19)位基数
N = M × R e N=M \times R^e N=M×Re
对阶
1000—> 1.0 × 1 0 3 1.0\times10^3 1.0×103
119 —> 1.19 × 1 0 2 1.19\times10^2 1.19×102
两个数相加需要低的往高的转,得:
0.119 × 1 0 3 0.119\times10^3 0.119×103
尾数计算
1 + 0.119 = 1.119 × 1 0 3 1+0.119=1.119\times10^3 1+0.119=1.119×103
结果格式化
如结果: 0.1119 × 1 0 3 0.1119\times10^3 0.1119×103 需要转换为 1.119 × 1 0 2 1.119\times10^2 1.119×102 -
其他:
补码本身是带符号位的,补码表示的数字中0是唯一的,不像源码有+0和-0的区分,所以n位进制编码可以表示 2 n 2^n 2n个不同的数
采用8位补码表示整数数据时,可以表示的数据范围为-128~127
二、计算机CPU
- CPU: 由运算器,和控制器,寄存器组合内部总线等组成
- 运算器:
- 算术逻辑单元(ALU)
- 累加寄存器(AC) :存放算术或逻辑运算的一个操作数和运算结果的寄存器
- 数据缓冲寄存器(DR)
- 状态条件寄存器(PSW)
- 控制器:(内存取指令和执行指令,控制计算机有条不紊的工作)
- 程序计数器(PC):明确下一条指令的地址
- 指令寄存器(IR): 用来保存当前正在执行的指令,其位数取决于指令字长
- 指令编码器(ID):对操作码进行测试,然后向指令寄存器中输入
- 时序部件
- 运算器:
- 其他:
- 地址寄存器(AR):用来保存当前CPU所访问的内存单元的地址
- 在输入输出控制方法中,可以采用DMA,使得设备与主存间的数据块传送无需CPU干涉;
- DMA:CPU向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU
- DMA操作占用的资源是系统总线,DMA请求的检查点设置在每个机器周期也即总线周期结束时执行
三、计算机体系结构分类Flynn
Flynn分类法:是一种计算机体系结构的分类法,可以对常见的计算机进行分类; 主要根据指令流进行分类
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流SISD | 控制部分: 一个处理器:一个主存模块:一个 | 单处理器系统 | |
单指令流多数据流 SIMD | 控制部分: 一个处理器:多个主存模块:多个 | 各处理器以异步的形式执行同一条指令 | |
多指令流单数据流 MISD | 控制部分: 多个处理器:一个主存模块:多个 | 被证明不可能,至少是不实际 | 目前没有,有文献称流水线计算机为此类 |
多指令流多数据流 MIMD | 控制部分: 多个处理器: 多个主存模块: 多个 | 能实现作业,任务,指令等各级全部进行 | 多处理机系统,多计算机 |
四、CISC与RISC
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC (复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术 | 研制周期长(这个概念产生时因为计算机刚诞生的时候操作复杂) |
RISC (精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/ Store操作内存 | 支持方式少 | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 |
五、流水线的概念
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术
1. 如图中,第一图,是等第一条指令执行完了,才执行第二条,这样就会造成时间片的浪费
2. 右边图中,当步骤一执行了紧接着执行2的第一阶段,类似工厂流水线
例题1:若指令流水线把一条指令分为取值,分析和执行三部分,且三部分的时间分别是 取指 2ns, 分析2ns,执行 1ns。 那么,流水线周期时多少? 100条指令全部执行完毕需要多少时间?
-
流水线周期,指的是执行时间最长的一段
在则本道题中(取指(2),分析(2),执行(1),三个执行阶段) 周期为:2ns
-
流水线的执行时长:
理论公式: 执 行 一 条 指 令 时 间 + ( 指 令 数 − 1 ) × 流 水 线 周 期 执行一条指令时间+(指令数-1)\times流水线周期 执行一条指令时间+(指令数−1)×流水线周期
解:(默认用理论公式,如果选项没有则用实际公式) 2ns+2ns+1ns=5ns; 5+(100-1)*2=203
实践公式: ( k + n − 1 ) × 流 水 线 周 期 (k+n-1)\times 流水线周期 (k+n−1)×流水线周期
其中 k代表有多少个阶段(取指,分析,执行,三个执行阶段)
解: (3+100-1)*2=204
-
流水线吞吐量问题
-
指单位时间内流水线所完成的任务数量或者输出的结果数量
T P = 指 令 条 数 ÷ 流 水 线 执 行 时 间 TP=指令条数\div 流水线执行时间 TP=指令条数÷流水线执行时间
-
流水线最大吞吐率
1 ÷ 周 期 1\div周期 1÷周期
-
-
流水线加速比计算
完成同样一批任务,不使用流水线所使用的时间,与使用流水线所用的时间之比称为流水线加速比。
S = 不 使 用 流 水 线 执 行 时 间 ÷ 使 用 流 水 线 执 行 时 间 S= 不使用流水线执行时间\div 使用流水线执行时间 S=不使用流水线执行时间÷使用流水线执行时间
计算出例题一的加速比:
解: 不使用流水线所用时间为 (2+2+1)*100=500 得 500/203; 加速比越高越好
-
流水线的效率问题
E = n 个 任 务 占 用 的 时 空 区 ÷ k 个 流 水 线 的 总 的 时 空 区 E=n个任务占用的时空区\div k个流水线的总的时空区 E=n个任务占用的时空区÷k个流水线的总的时空区n 个 任 务 空 间 ( 2 n s + 2 n s + 1 n s ) × 3 总 的 n × 3 n个任务空间(2ns+2ns+1ns)\times3 总的 n\times 3 n个任务空间(2ns+2ns+1ns)×3总的n×3
六、 计算机存储
-
层次化存储结构
读取速度 快(内存少)—>慢 (内存大)
- 第一层: CPU —> 寄存器
- 第二层:Cache —> 按内容存取
- 第三层: 内存(主存)—>
- 第四层: 外存(辅存) —> 硬盘,光盘,U盘
-
Cache 概念
功能:提高CPU数据输入输出的速率
计算:
使用 C a c h e + 主 存 器 系 统 的 平 均 周 期 = C a c h e 的 访 问 命 中 率 × C a c h e 的 周 期 时 间 + ( 1 − C a c h e 的 访 问 命 中 率 ) × 主 主 存 器 周 期 时 间 Cache+主存器系统的平均周期=Cache的访问命中率 \times Cache的周期时间+(1-Cache的访问命中率) \times 主主存器周期时间 Cache+主存器系统的平均周期=Cache的访问命中率×Cache的周期时间+(1−Cache的访问命中率)×主主存器周期时间
t 3 = h × t 1 + ( 1 − h ) × t 2 t3=h \times t1+(1-h) \times t2 t3=h×t1+(1−h)×t2
-
局部性原理
- 时间局部性:
int i,s=0;
for(i=1,i<100;i++){
s+=j; // 重复调用这么一条指令
}
- 空间局部性
int [] arr={0,0,0,0} \\ 当程序访问当前空间后,又访问临近的空间
工作集理论: 工作集是进程运行时被频繁访问的页面集合
- 主存
-
随机存取存储器(没电了数据会丢失) DRAM
-
只读存储器(没电了数据还可以继续保持)
-
主存编址
-
例题2:内存地址从AC000H到C7FFFH,共有____K个地址单元;
公式:(大的地址-小的地址)+1
在题目中,H 不做运算代表16进制
为了方便运算我们可以先对C7FFFH加1C7FFFH+1=C8000H C8000H-AC000H=1C000
最后需要将1C000转为k(1024=1k)
1 C 000 ÷ 2 10 = ( 1 × 1 6 4 ) + ( 12 × 1 6 3 ) 2 10 1C000\div 2^{10}=\cfrac{(1 \times 16^4)+(12 \times16^3)}{2^{10}} 1C000÷210=210(1×164)+(12×163)
= ( 1 × 1 6 4 ) + ( 12 × 1 6 3 ) 2 10 =\cfrac{(1 \times 16^4)+(12 \times16^3)}{2^{10}} =210(1×164)+(12×163)
= ( 1 × 2 16 ) + ( 12 × 2 12 ) 2 10 =\cfrac{(1 \times 2^{16})+(12 \times 2^{12})}{2^{10}} =210(1×216)+(12×212)
= ( 1 × 2 16 ) 2 10 + ( 12 × 2 12 ) 2 10 =\cfrac{(1 \times 2^{16})}{2^{10}}+\cfrac{(12 \times 2^{12})}{2^{10}} =210(1×216)+210(12×212)
= 2 6 + ( 12 × 2 2 ) = 64 + 48 = 112 =2^6+(12\times2^2)=64+48=112 =26+(12×22)=64+48=112
-
如果内存地址按字(16bit)编址,由28片存储器芯片构成。已知构成此内存的芯片每片有16K个存储单元,则该芯片每个存储单元存储___位
解: 总的容量 112 k × 16 112k \times16 112k×16
我们需要28个芯片每个芯片又是16K地址单元地址单元的bit位 x x x
得: ( 16 × 112 k ) ÷ ( 16 k × 28 × x ) (16 \times 112k)\div(16k \times 28 \times x) (16×112k)÷(16k×28×x) 解得 x=4
-
- 磁盘结构
例题: 假设某磁盘每个磁道划分成11个物理块,每块存放1个逻辑记录,逻辑记录R0,R1…R9, R10存放在同一个磁道上,记录的存放顺序如下表所示:
逻辑块 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|
逻辑记录 | R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 |
- 如果磁盘的旋转周期为33ms,磁头当前处在R0的开始处。若系统使用单缓冲区顺序处理这些记录,每个记录处理时间为3ms,则处理这11个记录的最长时间为____;
- 若对信息存储进行优化分布后,处理11个记录的最少时间为_____。
解:划分11个物理块,得转一圈33ms,则读取一个记录需要3ms
单缓冲区:意思是,我只有一个缓存区,读取到一个记录后,就需要对这个记录进行处理,而处理需要用到3ms
则有,第一次读取R0放到缓冲区,然后缓冲区处理R0数据需要3ms,在处理R0数据后,磁盘的指针已经转到R2位置,但是我们想处理的R1,所有磁盘会继续转动,转一圈后到R1,读取R1数据
如此反复循环:(33+3)*10+6=366ms 意思是处理R1到R10都需要转一圈后才行(33+3)*10;R0处理需要4ms;
优化后右边分布图:则6*11=66;每个需要6ms
七、计算机总线
- 内部总线
- 系统总线
- 数据总线
- 地址总线
- 控制总线
- 外部总线
八、系统可靠性分析与设计
- 串联系统
在串联系统中,要说有系统都能正常运行才能正常运行,要是有一个系统出问题了,其他都运行不了
可靠度: R = R 1 × R 2 × R 3 × . . . × R n R=R_1\times R_2 \times R_3 \times...\times R_n R=R1×R2×R3×...×Rn
失效率: λ = λ 1 + λ 2 + . . . + λ n \lambda =\lambda_1+\lambda_2+...+\lambda_n λ=λ1+λ2+...+λn - 并联系统
在并联系统中,所有系统都不能运行了,系统才不能运行
可靠度: R = 1 − ( 1 − R 1 ) × ( 1 − R 2 ) × . . . × ( 1 − R n ) R=1-(1-R_1)\times(1-R_2)\times...\times(1-R_n) R=1−(1−R1)×(1−R2)×...×(1−Rn)
失效率: 1-可靠度 - 差错控制
CRC:可以进行检错,但不能进行纠错的编码
九、总结
后期会继续完善!如有不足请指正。