软件设计师考试(一):计算机组成与体系结构

1. 数据的表示

1.1 进制转换

  1. R进制转十进制:将每一位数字用Rk表示然后相加,k与该位与小数点的距离有关,小数点左边第一位为0,右边第一位为-1,往左递增,网往右递减,如:二进制数10100.01=1 * 24 + 1 * 22 + 1 * 2-2

  2. 十进制转R进制: 整数位使用短除法,即将十进制数除以R再取余,直至余数为零,然后将余数由下往上按顺序排列,小数位乘以R,每乘一次就取它的整数位( 整数位为零时就取零),直至小数位为零,然后将取得的整数位由上往下排列即可。

  3. 二进制转八进制及二进制转十六进制:将二进制数以小数点为界向左及向右每三个一组(转八进制),或者每四个一组(转十六进制),缺的数用零来补充,然后依次转化为相应的进制数然后按顺序排列即可。

1.2 原码反码补码移码

  1. 原码:将一个十进制数转换为二进制数,并且该二进制数的首位表示正负,0表示正,1表示负,不足八位的就在首位与二进制数中间用零填充。如-1的原码就是10000001

  2. 反码:原码在计算机中进行加减不能得到正确的答案,而反码的加减则符合事实,正数的反码为本身,负数的反码为其原码除首位不变外全部取反,即零变为一,一变为零

  3. 补码:正数的补码与原码相同,负数的补码即为其反码加一(补码的运算也符合正确答案)

  4. 移码:将正数和负数的补码首位取反,其余位不改变(移码的运算也符合正确答案)
    在这里插入图片描述

  5. 表示范围,区别在于0的表示,补码只有一个0可以多表示一个
    在这里插入图片描述

1.3 浮点数运算

  1. 浮点数的概念:浮点数即科学计数法,如1000=1X103; 其中,1为尾数,10为基数,3为指数。

  2. 计算机中浮点数的运算:当两个指数不等的浮点数相加时,计算机会把低阶浮点数的指数转化为高阶浮点数的指数,如:1.0X103+1.19X102,计算机会将1.19X102转化为0.119X103,然后作和,然后结果格式化(即通过指数的转化保证尾数必须为非零的一位数)如:0.1119X103+1.119X102;得到11.3019X103以后,要化为1.13019X104

2. 中央处理器(CPU)

CPU由运算器和控制器组成

2.1 运算器(ALU)

  1. 累加寄存器(AC):专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。能进行加,减,读出,移位,求补等操作。是运算器的主要部分。

  2. 程序状态寄存器(PSW):该部件用来存放两类信息,一类是体现当前指令执行结果的各种状态信息(条件码),如有无进位,有无溢出,结果正负,信息是否为零等;另一类是存放控制信息,如允许中断,跟踪标志等。

2.2 控制器

  1. 程序计数器(PC):程序计数器中存放的是下一条指令的地址。由于多数情况下程序是顺序执行的,所以程序计数器设计成自动加一的装置。当出现转移指令时,就需重填程序计数器

  2. 指令寄存器(IR):中央处理器正在执行的操作码表存放在这里,即当前正在执行的所有指令

  3. 指令译码器:将操作码解码,告诉中央处理器该做什么。

  4. 时序部件

注:

·CPU的寻址方式除了直接寻址以外还有多种寻址方式,目的是为了在效率和方便性上找一个平衡

·CPU根据指令周期的不同阶段来区分内存中以二进制编码形式存放的指令和数据

·指令最先进入到数据寄存器暂存起来,然后在拿到指令寄存器中,再交由指令译码器来解码进而运算(交给运算器),而这一过程一结束,就会迅速提取程序计数器中的指令(即下一条指令),因此,程序计数器中存储的始终是暂未执行的,下一条指令的“地址”

3. 计算机体系结构分类(Flynn)

  1. 分类依据:指令流和数据流
  2. 指令流由控制部分处理——多指令就是多控制部分
  3. 数据流由处理器来处理——多数据流就有多个处理器
    在这里插入图片描述

4. CISC和RISC

在这里插入图片描述

5. 流水线

5.1 流水线基本概念

  1. 指令执行的流程:取指——分析——执行
    注:指令执行步骤可能多于三步,应根据题意作答

  2. 流水线的概念:流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可以同时为多条指令的不同部分进行工作,以提高各部分的利用率和指令的平均执行速度
    在这里插入图片描述

5.2 流水线周期及流水线执行时间计算

  1. 流水线周期计算:流水线周期为执行时间最长的一段

  2. 流水线执行时间计算:
    (1)理论公式:1条指令完整执行的时间+(指令条数-1) X 流水线周期;
    (2)实际公式(实际生产中工厂往往采用该方法,因为该方法效率更高):(一个完整指令的步骤数+指令条数-1) X 流水线周期;注:计算时优先用理论公式,选项中没有该答案时再采用实际公式
    在这里插入图片描述
    首先,流水线周期是指在(取指、分析、执行)三个阶段中时间最长的一段,对应上面的例题,最长的一段时间为2ns,所以流水线周期为2ns。

100条指令全部执行完毕需要的时间为:理论公式:(2+2+1)+(100-1)*2=203ns。

100条指令全部执行完毕需要的时间为:实践公式:(3+100-1)*2=204ns。(公式中的k表示指令被分成了几段

5.3 流水线吞吐率计算

  1. 定义:单位时间内执行的指令条数
  2. 计算公式:TP=指令条数/流水线执行时间
  3. 流水线最大吞吐率计算公式:1/&;其中&是流水线周期

在这个公式中,我们对比5.2中的例题,指令条数为100,流水线执行时间为203ns,所以流水线的吞吐率TP=100/203。

而流水线最大吞吐率是一种理想情况,即TPmax=1/2。(Δt=流水线周期=2ns)

5.4 流水线的加速比

  1. 概念:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比

  2. 加速比计算公式:不使用流水线的执行时间/使用流水线执行时间

仍然参照5.2中的例题,如果不使用流水线,采用顺序执行的方法,所花费的时间为:(2+2+1)*100=500ns。而使用流水线的方法,所花费的时间为:(2+2+1)+(100-1)*2=203ns。所以流水线的加速比:S=500/203。

5.5 流水线效率

在这里插入图片描述

6. 层次化存储器结构

在这里插入图片描述
内存存储外存的部分内容,cache存储内存的部分内容,CPU只处理cache中的指令,cache的作用是精简内存中重复出现的指令,提高CPU的执行效率,使得计算机的运算速度得到极大的提升;此外,结构中由上至下,速度越来越慢,但容量越来越大

7. cache

  1. cache的功能:提高CPU输入输出的速率,突破冯诺依曼瓶颈,即CPU与存储器系统间数据传送带宽限制,在程序执行过程中,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的一个块号可以对应多个内存的块号,内存的一个块号也可以对应cache的多个块号),组相连映像(即两种方式相结合的方法)
    注:这三种映射方式都是计算机硬件自动完成的,不是软件

  4. 替换算法:替换算法的目的是使cache获得尽可能高的命中率,有以下四种:随机替换算法、先进先出算法、近期最少使用算法、优化替换算法
    注:现代的计算机cache系统是分为了三个级别的,访问时先从第一层开始访问,直至三个级别的cache都被访问完全时才会访问内存

  5. 虚拟存储器:即cpu在给出需要访问的内存地址时,给出的并不是真正的物理地址,而是物理地址的抽象,虚拟存储器是由主存-辅存两级存储器组成

8. 主存

8.1 主存的分类

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

  2. 只读存储器:简称ROM,断电后仍然能够存储信息

8.2 主存的编址

  1. 概念:主存的编址就是把许多块芯片组成相应的存储器
    注:一般表示方式如下图,其中左图一中的8表示它有8个地址空间,4表示每一个地址空间存储了4位的信息,而两个图一则可以拼接为图二,两个图二可以拼接为图三
    在这里插入图片描述
  2. 编址相关计算
    图注:其中H表示十六进制,存储单元数量等于大的内存地址减去小的内存地址再加上一;K=1024,第一个空即为存储单元数量除以1024
    在这里插入图片描述
    对于上面这个例题,我们首先看第一空,内存地址从AC000H到C7FFFH,共有多少K个地址单元,那么对这两个十六进制数进行相减、再加1即可,第5位:F-0=F;第四位:F-0=F;第三位:F-0=F;第二位:7-C,因为C=12,不够减,所以向高位借一位,此时第四位应该是:7+16-C=B(11,因为是十六进制,所以每借一位加16);第一位:因为被借走了一位,所以C-1=B,B-A=1;所得结果是:1BFFFH,再加1,即:1C000H(将其转换成K单位,要对结果除以1024)。将其转为十进制:(0×16^0 + 0×16^1 + 0×16^2 + C×16^3 + 1×16^4)/1024=112K。

第二空:总容量为112K×16bit,需要28片存储器芯片,每片芯片有16K个存储单元,问该芯片每个存储单元存储多少位?

也就是说:(112K×16bit)/(28×16K×a)=1,比值为1是因为我们使用这些芯片组成固定的空间,16和16约掉,K和K约掉,所以112/28a=1,即解得a=4

9. 磁盘结构与参数

磁道一般分为许多个小的扇形区,即物理块,磁头在依次读取这些物理块时(磁头必须依次读取),会在读取的同时将其存放进缓存区,缓存区可以是单个,也可以是多个,存放完成后会在缓存区花费时间进行处理,处理期间磁头的读取不会停止,因此,如果缓存区过少,就会出现:读取一个物理块花费了一个周期甚至更长的时间。

磁盘调度管理中,先进行移臂调度寻找磁道,再进行旋转调度寻找扇区
在这里插入图片描述
我们来看上面这道例题,磁盘的旋转周期为33ms,表示旋转一圈耗时33ms,一共有11个记录,可以理解为读取1个记录消耗的时间为3ms。

若采用单缓冲区顺序处理(如上图中的大圈),当我们把R0读取单缓冲区时,此时磁头跑到了R1的起始位置,但是此时是不能读取R1的,因为R0占用着缓冲区(还未处理完),所以新的记录是进不来的。当我们处理完缓冲区中的R0之后,花费了3ms,此时磁头已经跑到了R2的起始位置,但是我们接下来想要处理的应该是R1,所以这个时候磁头会一直转动,直到转过一圈,再次跑到R1的起始位置时,才可以处理R1。所以我们处理一个记录R0,一共耗时为:一个记录+一圈,也就是3+33=36ms。从R0到R9都是同样的道理,所以共耗时:36*10=360ms,而对于R10,我们就可以直接读取并处理,耗时为6ms,所以总共耗时为360+6=366ms。

若对信息存储进行优化分布(如上图中的小圈),先看大圈,我们处理R0的时候,磁头跑到了R2,此时我们将R2假设为R1;而处理完R1之后,磁头跑到了R4,此时我们将R4假设为R2,以此类推,就得到了上图中的小圈。这样下来,就没有任何的时间浪费,那么读取和处理分别耗时3ms,也就是处理完一个记录耗时3+3=6ms,一共11个记录,总共耗时6*11=66ms。

10. 总线

  1. 概念:总线是连接计算机有关部件的一组信号线,是计算机中用来传送信息代码的公共通道。

  2. 根据总线所处的位置不同,总线通常被分成三种类型

  3. 内部总线:微机内部的,各个外围芯片与处理器之间的总线,属于芯片级别

  4. 系统总线:系统总线即为各个插线板和系统板之间的总线;包括(1)数据总线:如32位,64位等一次性能够传输的位(2)地址总线:假设该计算机的地址总线为32位,那就代表它的地址空间为232个字节(3)控制总线:发送相应的控制信号的总线

  5. 外部总线:即微机和外部设备的总线

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

11.系统可靠性分析与设计

11.1 串联系统

  1. 串联系统的结构:只要一个子系统失效,则整个系统都将失效
  2. 串联系统可靠性的计算:即各个串联子系统可靠性相乘,如上图,其中R为可靠性,此外,1-可靠性即为失效率,而总的失效率即为串联各个部件的失效率作和(近似计算)
    在这里插入图片描述

11.2 并联系统

  1. 并联系统的结构 注:少数子系统的失效将不会影响整个系统
  2. 并联系统可靠性的计算:通过计算失效率来求得可靠性,即各个子系统的失效率相乘,再由1减去它,即可得到系统可靠性
    在这里插入图片描述

11.3 模冗余系统与混合系统

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

12. 校验码

12.1 检错与纠错

  1. 检错:将错误检查出来

  2. 纠错:将错误检查出来的同时并进行纠正

12.2 码距及作用

  1. 码距的概念:指整个编码系统中任意两个码字的最小距离,如A变化X个位得到B,则X就为码距,如:若使用2位长度的二进制编码,若以A=11,B=00为例,A,B之间的最小码距为2

  2. 码距的作用:增大码距能够起到检错的作用,因为数据在传输的过程中如果链路出现了

问题,那么将会使得接收到的二进制数发生变化,若码距过小,则很可能造成信息的混淆,增大码距就使得被改变的二进制数混淆信息的概率极大的降低;若码距再进行增大,则能够起到纠错的作用,因为数据链路出错的概率比较低,只能造成传输中极少二进制数的改变,我们可以根据该传输失真的二进制数中大部分二进制数的构成来进行推断,推断出结果就达到了纠错的目的。

注:在一个码组内为了检测e个误码,要求最小码距d应满足:d>=e+1

在一个码组内为了纠正t个误码,要求最小码距d应该满足:d>=2t+1

12.3 循环冗余校验码CRC

  1. CRC的概念:在对信息进行编码的时候在其尾部加入一些校验信息,让编码后的数据能够与循环校验码的生成多项式相除余数为零,若不为零则说明传输过程出现了错误,其中,原码加上(增添在右方)校验信息加(做加法)上余数所得的码即为CRC

  2. 生成多项式是一个二进制数,如"X4+X3+X+1",这个生成多项式实际上就是二进制数11011;在相除时,需在原码后方添加一些0,添加的0的个数等于生成多项式的位数减去1,增加的0即为校验信息。

  3. 二进制的除法与算术除法相似,唯一不同的是所得除数在作减法时,减得的值要取绝对值,即0-1=1;这样使得整个除法运算中不存在借位
    在这里插入图片描述

12.4 海明校验码

  1. 概念:海明码是一种利用奇偶性进行检错和纠错的校验码,是一种插入到信息中的编码,一般为多个码,其插入的位置满足规律:2r>=x+r+1;其中,x为信息的二进制数的位数,r为校验码的个数,而插入信息的位置则是2r-1,2r-2……20;如r=3时,校验码就插在1,2,4位置

  2. 校验码的计算:如信息1011,根据公式得出其校验码分别放在1,2,4位,因此其海明码将有7位数,其中3,5,6,7位即为信息位,将3写为20+21;将5写为20+22…将四个信息的位数用此方法表示以后可得到校验位的值的计算公式:r0=i4&i3&i2;r1=i4&i3&i1.r2=i4&i3&i2;其中,r表示校验位的值,且从0开始计数;在信息位被2表示以后,将都有22的信息位进行异或操作并将值赋给r2,将都有2^1的信息位进行异或操作并将值赋给r1,ro也一样操作,&符号即为异或,在异或操作中,二者值相同即等于1,不同即等于0,而ix则是将其信息位施以一种运算:信息位所处的位置为奇数就将其赋值为1,信息位所处的位置为偶数就将其赋值为0,因此i4=1,i3=0,i2=1,i1=1;

  3. 海明校验码的作用:将信息转换为海明校验码形式以后,我们就能进行纠错,如信息1011,其海明校验码的正确形式为1010101,若收到了1011101,我们可以将两个数的校验码位的数提取出来,并在对应位置进行异或运算,如该例得到了001,则说明第1位’(左数第一个信息位)出错了,若得到了010,则说明第二个信息位出错了。

在这里插入图片描述
我们看上面这个例题,对于信息1011的海明码,我们要确定校验位,此时数据位为n=4,首先采用公式 2^k - 1 ≥ n + k,解得校验位k=3,分别存放在:20=1、21=2、22=4这三个位置。而剩下空出来的位置则对应补上数据位,即:第三位为I1,第五位为I2,第六位为I3,第七位为I4。(如果校验位更多,则第八位为r3:23=8)

因为I4占据第七位:7=22+21+20;I3占据第六位:6=22+21;I2占据第五位:5=22+20;I1占据第三位:3=21+2^0。我们找出这几个式子中指数的规律:👇👇👇

校验位r2对应22,而7、6、5分别包含22,这三位分别对应数据位I4、I3、I2,则:r2=I4 异或 I3 异或 I2,而数据位I4=1,I3=0,I2=1,得异或结果为r2=0。

校验位r1对应21,而7、6、3分别包含21,这三位分别对应数据位I4、I3、I1,则:r1=I4 异或 I3 异或 I1,而数据位I4=1,I3=0,I1=1,得异或结果为r1=0。

校验位r0对应20,而7、5、3分别包含20,这三位分别对应数据位I4、I2、I1,则:r0=I4 异或 I2 异或 I1,而数据位I4=1,I2=1,I1=1,得异或结果为r0=1。

所得最终的结果为:I4=1,I3=0,I2=1,r2=0,I1=1,r1=0,r0=1,收到的信息为:1010101。

12.5 奇偶校验码

对于奇校验,它可以检测代码中奇数位出错的编码,但不能发现偶数位出错的情况,即当合法编码中的奇数位发生了错误时,编码中的1变成0或0变成1,则该编码中1的个数的奇偶性就发生了变化,从而可以发现错误。

奇校验:被传输的有效数据中“1”的个数是奇数个,校验位填“0”,否则填“1”。

偶校验:被传输的有效数据中“1”的个数是偶数个,校验位填“0”,否则填“1”。

例如:奇校验 1000110(0),采用奇校验,“1”的个数为奇数个,所以校验位填“0”。
偶校验 1000110(1),采用偶检验,“1”的个数为奇数个,所以校验位填“1”。

13. 输入输出系统

计算机中主机与外设间进行数据传输的输入输出的控制方法有程序控制方式、中断方式、DMA等,输入输出系统是一组固化到计算机内主板上一个ROM芯片上的程序

  1. 程序控制方式:由CPU执行程序控制数据的输入输出过程

  2. 中断方式:外设准备好输入数据或接受数据时向CPU发出中断请求信号,若CPU决定响应该请求,则暂停正在执行的任务,转而执行中断服务程序进行数据的输入输出处理,之后再回去执行原来的被中断的任务,中断时根据中断服务程序的入口地址进行中断

  3. DMA(直接存储器控制):CPU只需向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU的负担

注:CPU是在一个总线周期结束时响应DMA请求的,即不是DMA一请求CPU就响应,而是CPU在接收到DMA请求后,在该系统总线周期结束后进行响应,因为DMA控制器在需要的时候会代替CPU作为总线主设备,在不受CPU干预的情况下,控制I/O设备与系统主存之间的直接数据传输

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平什么阿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值