软考备战-计算机组成原理

计算机系统知识

计算机硬件组成

1、计算机硬件基本系统组成:运算器、控制器、存储器、输入设备(如 鼠标、键盘)、输出设备(如 显示器)

2、存储器分为 ①内部存储器(即内存,容量小、速度快,临时存放数据)、外部存储器(即硬盘、光盘,容量大、速度慢、长期保存数据)

3、输入输出设备合并成为 外部设备,即外设

4、主机 = CPU+主存储器

中央处理单元CPU

1、中央处理单元组成:运算器、控制器、寄存器、内部总线

      功能:程序控制、操作控制、时间控制、数据处理

2、运算器组成:①算数逻辑单元ALU(实现对数据的算数和逻辑算数)②累加寄存器AC(运算结果/源操作数的存放区)③数据缓冲寄存器DR(暂时存放内容的指令/数据)④状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志)

      功能:执行所有的算术运算,如 加减乘除等;执行所有的逻辑运算并进行逻辑测试,如 与、或、非、比较等。

3、控制器组成:指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令译码器(分析指令操作码)等

      功能:控制整个CPU工作,最为重要,包括程序控制、时序控制等

数据的进制转化

进制的表示:二进制、十六进制,一般在题目中会给出中文说明,如果没给出,注意二进制符号为0b,一般表示为0b0011,十六进制符号为0x或H,可表示为0x18F或18FH。


R进制整数转十进制

位权展开法,用R进制数的每一位乘以R的n次方,n是变量,从R进制数的整数最低位开始,依次为0,1,2,3...累加。

例如

有6进制数5043,此时R=6,用6进制数的每一位乘以6的n次方,n是变量,从6进制数的整数最低位开始(5043从低位到高位排列:3,4,0,5),n依次为0,1,2,3,那么5043=3*6^0+4*6^1+0*6^2+5*6^3=1107

十进制转R进制

十进制整数(除以R倒取余数),用十进制整数除以R,记录每次所得余数,若商不为0,则继续除以R,直至商为0,而后将所有余数从下至上记录,排列成从左至右顺序,即为转换后的R进制数;

例如

有十进制数200,转换为6进制,此时R=6,将200/6,得商为33,余数为2;因为商不等于0,因此再将商33/6,得商为5,余数为3;再将56,得商为0,余数为5;此时商为0,将所有余数从下到上记录,得532。

m进制转n进制

先将m进制转化为十进制数,再将十进制数转化为n进制数中间需要通过十进制中转,但下面两种进制间可以直接转化:

二进制转八进制:每三位二进制数转换为一位八进制数,二进制数位个数不是三的倍数,则在前面补0(原则是数值不变),如二进制数011101有五位,前面补一个0就有六位,为001101,每三位转换为一位八进制数,001=1,101=1+4=5,也即01101=15。
二进制转十六进制:每四位二进制数转换为一位十六进制数,二进制数位个数不是四的倍数,则在前面补0,如二进制数101101有六位,前面补两个0就有八位,为00101101,每四位转换为一位十六进制数,0010=21101=13=D,也即101101=2D。

数的表示

机器数

①数值在计算机中的表示形式,二进制表示,小数隐含不占位置

②分为 无符号数和带符号数。

        无符号数:表示正数,没有符号位。

        带符号数:最高位为符号位,正数符号位为0,负数符号位为1。

定点表示法分为 纯小数和纯整数,其中小数点不占存储位,而是按照以下约定:

①纯小数:约定小数点的位置在机器数的最高数值位之前。

②纯整数:约定小数点的位置在机器数的最低数值位之后。

真值:机器数对应的真实数值。

数的编码方式

带符号数有以下编码方式:

原码:一个数的正常二进制表示,最高位表示符号,数值0的源码有两种形式:
+0(000000000)和-0(1000000000)
反码:①正数的反码即原码;②负数的反码是在原码的基础上,除符号号位外,其他各位按位取反。 数值0的反码也有两种形式:+0(0 0000000), -0 (1 1111111)
补码:②正教的补码即原码;③负数的补码是在原码的基础上,除符号位:其他各位按位取反,而后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式+0= -0= 000000000(1 0000 0000 最高位1溢出)
移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。

例:若机器字长为8,请给出45和-45的原码、反码、补码、移码

浮点数

表示方法为N=F*2^E,其中E称为阶码,F称为尾数(类似十进制的科学计数法,)                             十进制如85.125=0.85125*10^2, 二进制如101.011=0.101011*2^3

在浮点数的表示中,阶码为带符号的纯整数,尾数为带符号的纯小数,到要注意符号占最高位(正数0负数1),其表示格式如下:

浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定。

尾数的表示

采用规格化方法,也即带符号尾数的补码必须为1.0xxxxx(负数)或者0.1xxxx(正数),其中x可为0或1.

浮点数的运算

对阶(使两个数的阶码相同,小阶向大阶看齐,较小阶码增加几位,尾数就右移几位)
尾数计算(相加,若是减运算,则加负数)
结果规格化(即尾数表示规格化,带符号尾数转换为1.0xxxxx或0.1xxxx)。

算数运算和逻辑运算

数之间的算术运算包括加、减、乘、除等基本算术运算,对于二进制数,还应该掌握基本逻辑运算:
①逻辑与&&: 0和1相与,只要有一个为0结果就为0,两个都为1才为1
②逻辑或||: 0和1相或,只要有一个为1结果就为1,两个都为07为0
③异或: 同0非1,即参加运算的二进制数同为0或者同为1结果为0,一个为0另一个为1结果为1
④逻辑非!: 0的非是1,1的非是0.
⑥逻辑左移<<: 二进制数整体左移n位,高位若溢出则舍去,低位补0.
⑦逻辑右移>>: 二进制数整体右移n位,低位溢出则舍去,高位补0

校验码

码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错。
奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。例如:
奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误。
偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错。

循环冗余校验码CRC

CRC只能检错,不能纠错。                                                                                                               其原理是找出一个能整除多项式的编码,因此首先要将原始报文除以多项式,将所得的余数作为校验位加在原始报文之后,作为发送数据发给接收方。

CRC由两部分组成,左边为信息码(原始数据),右边为校验码。校验码是由信息码产生的,校验码位数越长,校验能力越强。求CRC编码时,采用的是模2运算(按位运算,不发生借位和进位)。

海明校验码

本质也是利用奇偶性来检错和纠错的检验方法,构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距实现检错和纠错设数据位是n位,校验位是k位,n和k必须满足:2^(k-1)>=n+k

计算机体系结构分类

FLynn分类法

计算机指令

计算机指令的组成: 一条指令由操作码操作数两部分组成。操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。                                                                                              在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码地址码,整条指令以二进制编码的形式存放在存储器中。

计算机指令执行过程:取指令--分析指令--执行指令                                                                          ①首先将程序计数器PC中的指令地址取出,送入地址总线;②CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;③而后由指令译码器进行分析,分析指令操作码;④最后执行指令,取出指令执行所需的源操作数。

指令寻址方式:
顺序寻址方式:当执行一段程序时,是一条指令接着一条指令地顺序执行。
跳跃寻址方式:指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
指令操作数的寻址方式:
立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址
间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址。
寄存器寻址方式:指令中的地址码是寄存器的编号。

指令系统

CISC是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现
RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。
具体区别如下:

指令流水线

指令流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段,如下图所示:

流水线相关计算 

流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期。
流水线吞吐率:总指令条数 / 流水线执行时间。
流水线加速比:不使用流水线总执行时间 / 使用流水线总执行时间。
超标量流水线技术:常规流水线是度为1(即每个流水线阶段只执行一个部分)当度大于1时,就是超标量技术,当度为3时,相当于3条流水并行执行,即取指、分析、执行每个阶段都同时处理3条指令,因此,当题目提到度的概念时,计算时需要将:指令条数=指令条数/度。然后再套流水线执行时间的公式。

存储系统

计算机存储系统的层次结构:


计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。
两级存储:Cache-主存、主存-辅存(虚拟存储体系)。

局部性原理

总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:
时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项
空间局部性原理:在最近的将来会用到的数据的地址和现在正在证问的数据地址很可能是相近的,即相邻的空间地址会被连续访问

高速缓存Cache

高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透的。
Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。
地址映射:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址转换称为地址映像,由硬件自动完成映射,分为下列三种方法:
①直接映像                                                                                                                                          将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。(如图所示)

②全相联映射

同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式

 ③组组相连映像

前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。

按照Cache地址映像的块冲突概率,从高到低排列的是

直接映像→组相联映像→全相联映像

 Cache置换算法

随机算法。这是最简单的替换算法。随机法完全不管cache块过去、现在及将来的使用情况,简单地根据一个随机数,选择一块替换掉。
先进先出(First In and First Out,FIFO)算法。按调入cache的先用后决定淘汰的顺序,即在需要更新时,将最先进入cache的块作为被替换的块。这种方法要求为每块做一记录,记下它们进入cache的先后次序。这种方法容易实现,而且系统开销小。其缺点是可能会把一些需要经常使用的程序块(如循环程序)替换掉。                                                                                                                          ③近期最少使用(Least Recently Used,LRU)算法。LRU算法是把CPU近期最少使用的块作为被替换的块。这种替换方法需要随时记录cache中各块的使用情况,以便确定哪个块是近期最少使用的块。LRU算法相对合理,但实现起来比较复杂,系统开销较大。通常需要对每一块设置一个称为"年龄计数器"的硬件或软件计数器,用以记录其被使用的情况。
最不经常使用页置换(Least Frequently Used (LFU))算法,要求在在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。LFU的复杂度以及计数器器规模都比LRU大,LRU只关注近期访问情况,而LFU会统计累计访问次数作为淘汰的依据。

 Cache命中率

当CPU所访问的数据在Cache中时,称为命中,直接从Cache中读取数据,否则没有命中,需要从主存中读取所需的数据。

主存编址

①先转换BFFFFH=11 15 15 15 80000H=80000
11-8=3 15-0=15=F
(BFFFFH-80000H) = 3FFFF
当进行加法运算 时,如果某一位的和超过16就会产生进位。月所以当个位的F+1=16则产生进位,百位和千位+1不等于16保持原始数3+1=4;
3FFFF+1=40000H
②再将40000H转换十进制
40000=4*16^4+0+0+0+0=262144
转成KB=262144/1024=256
所以最后的结果是256KB
③256KB=256K*8bit=256*1024*8
16Kx4bit=16*1024*4
(256*1024*8)/(16*1024*4)=32

总线结构


从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCI总线。
外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总
线)、USB(通用串行总线,即插即用,支持热插拔)。

系统可靠性分析

平均无故障时间MTTF=1/失效率。
平均故障修复时间MTTR=1/修复率。
平均故障间隔时间MTBF=MTTF+MTTR。
系统可用性=MTTF/(MTTF+MTTR)*100%。
无论什么系统,都是由多个设备组成的,协同工作,而这多个设备的组合方式可以是串联、并联,也可以是混合模式,假设每个设备的可靠性为R1,R2..........Rn,则不同的系统的可靠性R的计算公式如下:
串联系统一个设备不可靠,整个系统崩溃:R = R1 x R2 x ...x Rn
并联系统:所有设备都不可靠,整个系统才崩溃:R=1-(1-R1)x(1-R2)x...x(1-Rn)                               混合系统:划分串联、并联:

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值