0%

软件设计师-计算机组成与体系结构

软考学习笔记

1.1 数据的表示

1.1.1 进制的转换

  1. R进制转十进制:将每位数字用R^k表示然后相加,k与该位小数点的距离有关,小数点左边第一位为0,右边第一位为-1,往左递增,往右递减,如二进制10100.01转十进制10100.01=1*24+1*22+1*2-2
  2. 十进制转R进制: 整数位使用短除法,即将十进制数除以R再取余,直至余数为零商为1,然后将余数由下往上按顺序排列,小数位乘以R,每乘一次就取它的整数位(整数位为零时就取零),直至小数位为零,然后将取得的整数位由上往下排列即可。如97转二进制
  1. 二进制转八进制及二进制转十六进制:将二进制数以小数点为界向左及向右每三个一组(转八进制),或者每四个一组(转十六进制),缺的数用零来补充,然后依次转化为相应的进制数然后按顺序排列即可。

2进制转8进制

二进制转16进制

1.1.2 原码反码补码移码

  1. 原码:将一个10进制转换为2进制数,二进制首位表示正负,0正1负,不足8位在首位和2进制数中间补0,如-1的原码为10000001
  2. 反码:原码在计算机中加减不能得到正确答案,反码的加减符合事实。正数的反码为它本身,而负数的反码为除了首位不变其余全部取反。0变1,1变0。
  3. 补码:正数的补码与原码相同,负数的补码即为其反码加一(补码的运算也符合正确答案)
  4. 移码:将正数和负数的补码首位取反,其余位不改变(移码的运算也符合正确答案)
  5. 数值表示范围,N=8(1Byte = 8bit)

1.1.3 浮点数的运算

  1. 概念:浮点数就是科学计算法,即1000=1*10³,1是尾数,10是基数,³是指数
  2. 运算:当指数不等时,低阶转高阶,尾数相加后格式化(例如:1.0*10³+1.19*10² = 1.0*10³+0.119*10³ = 1.119*10³,格式化指尾数的整数必须是个位数,10.19*10² => 1.019*10³)

1.2 计算机结构

中央处理器CPU由运算器和控制器构成

1.2.1 运算器

  1. 算术逻辑单元(ALU):数据的算数运算和逻辑运算
  2. 累加寄存器(AC):通用寄存器,为ALU提供工作区域,如存储暂存数据(2+4+6)
  3. 数据缓冲寄存器(DR):读内存时的暂存数据
  4. 状态条件寄存器(PSW):运算过程中标志位(运算溢出、中断,状态的保存)

1.2.2 控制器

  1. 程序计数器(PC):存放下一条指令的地址,通常是顺序执行(+1)
  2. 指令寄存器(IR):存放即将执行的指令
  3. 指令译码器(ID):指令分操作码和地址码,译码器用于分析操作码,告诉CPU需要怎么做
  4. 时序部件

1.3 Flynn分类法

1.4 CISC与RISC

1.5 流水线技术

  1. 指令执行流程:取指->分析->执行
  2. 流水线概念:流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可以同时为多条指令的不同部分进行工作,以提高各部分的利用率和指令的平均执行速度
  3. 流水线周期计算:流水线周期为执行时间最长的一段
  4. 流水线执行时间计算:
    1. *理论公式(考试优先):1条指令完整执行时间+(指令条数-1)流水线周期
    2. 实际公式:(1条完整指令的步骤数+指令条数-1)*流水线周期
  5. 流水线吞吐率
    1. 概念:指在单位时间内流水线所完成的任务数量或结果数量
    2. 公式:TP=指令条数/流水线执行时间
    3. 最大吞吐率公式:1/周期
  6. 流水线加速比
    1. 概念:完成同样一批任务,不使用流水线技术和使用流水线技术所用的时间之比
    2. 公式:不使用流水线的执行时间/使用流水线的执行时间
  7. 流水线的效率
    1. 概念:流水线的设备利用率

    2. 公式:E=n个任务占用的时空区/k个流水段总的时空区=T0/KTk

1.6 层次化存储结构

内存存储外存的部分内容,Cache存储内存的部分内容。Cache提高CPU的执行效率

1.7 Cache

  1. 功能:提高CPU输入输出的速率,突破冯诺依曼瓶颈,即CPU与存储器系统间数据传送带宽限制,在程序执行过程中,Cache与主存的地址映射是由硬件自动完成的。在计算机的存储体系中,Cache是访问速度最快的层次。使用Cache改善系统的依据是程序的局部性原理。
  2. Cache+主存储器的系统平均周期计算:如果以h代表对cache的访问命中率,t1表示cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用“chche+主存储器”的系统的平均周期为t3,则:t3=h*t1+(1-h)*t2;其中,(1-h)又称为失效率(未命中率)
    注:CPU会在cache中寻找它需要的数据,如果不能找到,CPU就将前往内存中寻找,而chche的访问命中率就是CPU需要的数据在cache中被找到的比例,未能找到的数据CPU将前往内存中进行再次寻找
  3. 内存与cache地址映射的三种方式:分别是直接映像(cache的区号与内存的区号一一对应)、全相连映像(cache的一个块号可以对应多个内存的块号,内存的一个块号也可以对应cache的多个块号),组相连映像(即两种方式相结合的方法);
    注:这三种映射方式都是计算机硬件自动完成的,不是软件
  4. 替换算法:替换算法的目的是使cache获得尽可能高的命中率,有以下四种:随机替换算法、先进先出算法、近期最少使用算法、优化替换算法
    注:现代的计算机cache系统是分为了三个级别的,访问时先从第一层开始访问,直至三个级别的cache都被访问完全时才会访问内存
  5. 虚拟存储器:即cpu在给出需要访问的内存地址时,给出的并不是真正的物理地址,而是物理地址的抽象,虚拟存储器是由主存-辅存两级存储器组成

1.8 主存

1.8.1 主存的分类

  1. 随机存储存储器(RAM):断电后清除所有数据,有两类RAM:静态(SRAM)和动态(DRAM),SRAM速度更快价格高,SRAM用来作为高速缓冲存储器(Cache),DRAM用来作为主存及图形系统的帧缓冲区。SRAM将每个位存储在一个双隐态的存储器单元中,DRAM将每个位存储为对一个电容的充电,由于电容非常小,在10~100ms时间内会失去电荷,所以需要周期性地刷新充电以保持信息
  2. 只读存储器(ROM):断电后仍然能够存储信息

1.8.2 主存的编址

  1. 概念:主存的编址就是把许多块芯片组成相应的存储器

一般表示方式如上图,其中左图一中的8表示它有8个地址空间,4表示每一个地址空间存储了4位的信息,而两个图一则可以拼接为图二,也可以拼接为图三

  1. 编址相关计算

其中H表示十六进制,存储单元数量等于大的内存地址减去小的内存地址再加上1;K=1024,第一个空即为存储单元数量除以1024;(C7FFF-AC000+1)/1024 = 112K 个地址单元。
112K*1628*16K*X =1;X = 4 , 该芯片每个存储单元存储4位。

1.9 磁盘结构和参数

磁头必须依次读取扇区(物理块),每次读取都会放入缓存区,缓存区可以是单个或多个,存放完会在缓存区进行处理,处理期间磁头的读取不会停止。
磁盘调度管理中,先进行移臂调度寻找磁道,再进行旋转调度寻找扇区。

1.10 总线

总线是连接计算机有关部件的一组信号线,是计算机中用来传递信息代码的公共通道

  1. 内部总线:微机内部的,各个外围芯片与处理器之间的总线,属于芯片级别
  2. 系统总线:各个插线板和系统板之间的总线
    1. 数据总线:32位/64位等一次性能够传输的位
    2. 地址总线:假设计算机的地址总线为32位,那就代表它的地址空间为232个字节
    3. 控制总线:发送相应的控制信息的总线
  3. 外部总线:微机和外部设备的总线

总线上的多个部件之间只能分时向总线发送数据,但可以同时从总线接收数据

1.11 系统可靠性分析与设计

1.11.1 串联系统

其中一个子系统失效,整个系统都失效(类似串联电路)

串联系统可靠性计算:各子系统可靠性相乘,如上图R为子系统可靠性,1-可靠性是失效率,总失效率为各子系统的失效率之和。

1.11.2 并联系统

少数子系统的失效不会影响整个系统(类似并联电路)

并联系统可靠性计算:通过计算失效率来计算可靠性,既各子系统的失效率相乘,再由1减去它,得到的结果就是并联系统可靠性

1.11.3 模冗余系统

数据输入n个子系统中,它们各自得出自己的结果,然后汇总到表决器,表决器将遵循少数服从多数的原则,输出大多数子系统得到的那个答案然后进行输出

1.11.4 混合系统可靠度计算

1.12 差错控制-CRC与海明校验码

1.12.1 码距及其作用

指整个编码系统中任意两个码字的最小距离,如A变化X个位得到B,则X就为码距

作用:增大码距能起到检错的作用,因为数据在传输的过程中如果链路出现了问题,那么将会使得接收到的二进制数发生变化,若码距过小,则很可能造成信息的混淆,增大码距就使得被改变的二进制数混淆信息的概率极大的降低;若码距再进行增大,则能够起到纠错的作用,因为数据链路出错的概率比较低,只能造成传输中极少二进制数的改变,我们可以根据该传输失真的二进制数中大部分二进制数的构成来进行推断,推断出结果就达到了纠错的目的。
注:在一个码组内为了检测e个误码,要求最小码距d应满足:d≥e+1
在一个码组内为了纠正t个误码,要求最小码距t应满足:t≥2t+1

1.12.2 循环冗余校验码-CRC:

一种可以检错不可纠错的编码
概念:在对信息进行编码的时候在其尾部加入一些校验信息,让编码后的数据能够与循环校验码的生成多项式相除余数为零,若不为零则说明传输过程出现了错误.(模2除法,使用异或)

1.12.3 校验码-海明校验码

利用多组数位的奇偶性来检错和纠错

  1. 确认校验码位数:2r=k+r+1(k:信息数位数,r:校验码位数)
  2. 确认校验码位置:2n
  3. 求出校验码:下面例图
  1. 校验码纠正:按上面步骤重新计算校验码并与收到的校验码进行异或运算;

出现1的位置为校验码错误位;

1.12.4 校验码-奇偶校验码

在编码中增加1位校验位来使编码中1的个数为奇数 (奇校验)或者偶数(偶校验),从而使码距变为2

奇校验:编码中有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误
偶校验:编码中有偶数个1
奇偶校验:只能检测1位错,无法检查出偶数个错误,并且无法纠错
假设计算机规定好的是奇校验,发送方发送的编码是01101 0,而接收方收到的是11111 0,但是奇数个1,符合奇校验,但有两个0变成了1,所以奇偶校验只能检测出1位错误,且没法纠错。