|
软件设计师必备的终极指南,探索计算机组成与结构!
有意想打印成纸质版资料的小伙伴,可获取PDF版本,免费获取方式已附在文末。
前言
软件设计师中计算机组成与结构占6分,主要在上午场的综合知识中进行考察单选题,真题单选的1-6题通常为计算机组成与结构部分。
01 计算机硬件组成
计算机的基本硬件系统由五大部件组成,分别是运算器、控制器、存储器、输入设备和输出设备。
运算器、控制器等部件被集成在一起统称为中央处理器(CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。
存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度快、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
02 中央处理单元
1、CPU的功能
(1)程序控制。CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
(2)操作控制。
(3)时间控制。
(4)数据处理。CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。
此外,CPU还需要对系统内部和外部的中段(异常)做出响应,进行相应的处理。
2、CPU的组成
CPU主要由运算器、控制器、寄存器组和内部总线等部件组成。
运算器:由算术逻辑单元ALU(实现对数据的算术和逻辑运算)、累加寄存器AC(运算结果或源操作数对存放区)、数据缓冲寄存器DR(暂时存放内存的指令或数据)和状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
控制器:由指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令译码器ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要。
程序计数器PC:用于跟踪指令地址的寄存器。
CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。
例:
(1)在CPU的寄存器中,指令寄存器对用户是完全透明的。
(2)指令寄存器的位数取决于指令字长。
03 进制转换
1、进制的表示:二进制符号为0b,一般表示为0bxxxx,十六进制符号为0x或H,表示为0x15F或15FH。(十六进制可表示1-15,10-15用A-F来表示)
2、常见的3种进制转换形式:R进制转十进制、十进制转R进制、m进制转n进制。
(1)R进制转十进制
采用位权展开法,用R进制数的每一位乘以R的n次方,n是变量,从R进制的整数最低位开始,依次为0,1,2,……累加。
例:有6进制数5043,此时R=6,用6进制数的每一位乘以6的n次方,n是变量,从6进制数的整数最低位开始,则5043=3*6^0+4*6^1+0*6^2+5*6^3=1107
(2)十进制转R进制
十进制整数(除以R倒取余数),用十进制整数除以R,记录每次所得余数,若商不为0,则继续除以R,直至商为0,而后将所有余数从下至上记录,排列成从左至右顺序,即为转换后的R进制数。
例:有十进制400,转换为6进制,此时R=6,将400/6,得商为66,余数为4,因为商不等于0,因此再将商66/6,得商为11,余数为0,再将11/6,得商为1,余数为5,再将1/6,得商为0,余数为1;此时商为0,将所有余数从下到上记录,得1504。
(3)m进制转n进制
先将m进制转换为十进制数,再将十进制数转化为n进制数,中间通过十进制中转,其中,二进制转八进制(每三位二进制转为一位八进制,不够6位的前边补0),二进制转十六进制(每四位二进制转为一位十六进制,不够8位的前边补0)可以直接转化。
例:
二进制转八进制:二进制数011 011,转为八进制数为33;
二进制数转十六进制:二进制数0111 0011,转为十六进制数为73。
04 数据表示
1、机器数:各种数值在计算机中表示的形式,特点是使用二进制计数制,数的符号使用0和1来表示,小数点隐含,不占位置。
机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位,带符号数最高位是符号位,其中,正数符号位为0,负数符号位为1。
2、定点表示法分为纯小数和纯整数,其中,小数点不占存储位,而是按照如下约定:
纯小数:约定小数点的位置在机器数的最高数值位之前;
纯整数:约定小数点的位置在机器数的最低数值位之后。
3、真值:机器数对应的实际数值,有正负之分。
4、带符号数的编码方式当真值为-23时:
原码:数的二进制表示,最高位是符号位,数值0的原码有两种形式:+0(0 0000000)和-0(1 0000000)。-23对应的原码是10100011。
反码:正数的反码=原码,负数的反码在原码的基础上,符号位不变,其他各位取反。数值0的反码也有两种形式:+0(0 0000000)和-0(1 1111111)。-23对应的反码是11011100。
补码:正数的补码=原码,负数的补码在原码的基础上,符号位不变,其他各位取反,再末位加1,若有进位则产生进位。注意⚠️:数值0的补码只有一种形式:+0=-0=0 0000000。-23对应的补码是11011101。
移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。-23对应的移码是01011101。
注意⚠️:正数的原码=反码=补码。
5、机器字长为n时,各种码制表示的带符号数的取值范围(区别在于0的表示,原码和反码都有+0和-0,补码只有一个0,可以多表示一个)
码制
定点整数
定点小数
原码
-(2^(n-1)-1)~+(2^(n-1)-1)
-(1-2^-(n-1))~+(1-2^-(n-1))
反码
-(2^(n-1)-1)~+(2^(n-1)-1)
-(1-2^-(n-1))~+(1-2^-(n-1))
补码
-2^(n-1)~+(2^(n-1)-1)
-1~+(1-2^-(n-1))
移码
-2^(n-1)~+(2^(n-1)-1)
-1~+(1-2^-(n-1))
例:机器字长为8,给出23和-23的原码、反码、补码和移码。
真值
原码
反码
补码
移码
23
00100011
00100011
00100011
10100011
-23
10100011
11011100
11011101
01011101
6、浮点数
(1)表示方法:N=F*2^E,其中,E表示阶码(带符号的纯整数),F表示尾数(带符号的纯小数),注意:符号占最高位(正数0,负数1),表示格式如下所示:
阶符
阶码
数符
尾数
一个浮点数的表示方法不是唯一的,浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定。
7、尾数的表示采用规格化方法,即带符号尾数的补码必须为1.0xxxx(负数)或者0.1xxxx(正数),其中x可以是0或1。
浮点数的运算:
(1)对阶(使两个数的阶码相同,小阶向大阶看齐,较小阶码增加几位,尾数就右移几位)
(2)尾数计算(相加,若是减运算,则加负数)
(3)结果规格化(尾数表示规格化,带符号尾数转换为1.0xxxx或0.1xxxx)
图片
05 校验码
图片
图片
1、码距:在两个编码中,从A码到B码转换所需要改变的位数称为码距,一般来说,码距越大,越利于纠错和检错。
2、三种校验码:
(1)奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。
奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个,如果是奇数个,则无误,是偶数个,则有误。
偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错。
(2)循环冗余校验码(CRC):只能检错,不能纠错。使用CRC编码,需要先约定一个生成多项式G(x)。生成多项式的最高位和最低位必须是1。假设原始信息有m位,则对应多项式M(x)。生成校验码思想就是在原始信息位后追加若干校验位,使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除,余数为0,则没有错误,反之则发生错误。
(3)海明码:本质是利用奇偶性来检错和纠错的检验方法,构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距实现检错和纠错。
设数据位是n位,校验位是k位,则n和k必须满足以下关系:2^k-1>=n+k。
图片
06 体系结构分类
图片
图片
1、按处理机的数量分为:单处理系统、并行处理系统、分布式处理系统。
2、Flynn分类法,分类的两个因素,即指令流和数据流,指令流由控制部分处理,每一个控制部分处理一条指令流,多指令流就有多个控制部分;数据流由处理器处理,每一个处理器处理一条数据流,多数据流就有多个处理器;主存模块是用来存储的,存储指令流或数据流,因此,无论是多指令流还是多数据流,都需要多个主存模块来存储,对于主存模块,指令和数据都一样。
3、依据计算机特性,是由指令来控制数据的传输,因此,一条指令可以控制一条或多条数据流,但一条数据流不能被多条指令控制,否则会出错,如同上级命令太多互相冲突,不知道该执行哪个,因此多指令单数据MISD不可能。
4、计算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。
5、计算机指令执行过程:取指令—分析指令—执行指令三个步骤,首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR,而后由指令译码器进行分析,分析指令操作码,最后执行指令,取出指令执行所需的源操作数。
6、指令操作数的寻址方式(经常考立即、直接、寄存器寻址方式)
立即寻址方式:指令的地址码字段指的是操作数本身。
直接寻址方式:操作数的地址包含在指令中。该指令的功能是将指令中的地址码送入程序计数器PC。
间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址。
寄存器寻址方式:操作数在寄存器中。
操作数速度:立即>寄存器>直接>间接。
7、CISC是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现;RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。
具体区别如下:
指令系统类型
指令
寻址方式
实现方式
其它
CISC(复杂)
数量多,使用频率差别大,可变长格式
支持多种
微程序控制技术(微码)
研制周期长
RISC(精简)
数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存
支持方式少
增加了(通用寄存器、硬布线逻辑控制为主;适合采用流水线)
优化编译,有效支撑高级语言
图片
07 指令系统
图片
图片
1、流水线
(1)原理:将指令分成不同段,每段由不同段部分去处理。
(2)RISC中的流水线技术:
超流水线技术:以时间换空间;
超标量技术:以空间换时间;
超长指令字(VLIW)技术:充分发挥软件的作用。
超长指令字与超标量的异同点:共同点是同时执行多条指令;不同点是超标量依靠硬件来实现并行处理的调度。
2、流水线时间计算(四个都要会计算,过往真题都考察过)
(1)流水线周期:指令分成不同执行段,执行时间最长的段为流水线周期。
(2)流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期。
(3)流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。公式:指令条数/流水线执行时间。
(4)流水线的加速比计算:加速比即使用流水线后的效率提升度。公式:不使用流水线执行时间/使用流水线执行时间。
不使用流水线执行时间(即顺序执行时间)=n条指令*1条指令总执行时间。
图片
08 存储系统
图片
图片
1、存储体系
(1)计算机采用分级存储体系的主要目的是为解决存储容量、成本和速度之间的矛盾问题。
(2)两级存储:Cache-主存、主存-辅存(虚拟存储体系)。
(3)局部性原理:
1⃣️时间局部性原理:一个数据项正在被访问,在近期很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
2⃣️空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。
(4)高速缓存Cache:用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,其内容是主存内存的副本拷贝,对于程序员来说是透明的。
2、地址映射(由硬件自动完成主存与Cache的地址映射)
(1)直接映像:将Cache存储器等分成块,主存也等分成块并编号。
(2)全相联映像:是最不容易发生块冲突的影像方式。同样都等分成块并编号,主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突。
(3)组相联映像:直接映像和全相联映像的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,组内全相联映像,即组号相同的两个组内的所有块可以任意调换。
3、磁盘调度算法
主要考察形式:1⃣️描述的正确性;2⃣️求最长最短时间;3⃣️求系统的响应序列。
图片
09 输入输出技术
图片
图片
1、程序中断方式:
(1)中断向量:提供中断服务程序的入口地址;
(2)多级中断嵌套,使用堆栈来保护断点和现场。
2、DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建设直接的数据通路,效率很高。
3、在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时。
图片
10 总线结构
图片
图片
总线是连接计算机硬件系统内多种设备的通信线路,一个重要特征是由总线上的所有设备共享,总线分为内部总线、系统总线和外部总线。其中,系统总线用于CPU、主存及外设不见连接,系统总线具体分为数据总线、地址总线和控制总线。代表有ISA总线、EISA总线、PCI总线。
图片
11 计算机可靠性
图片
图片
1、可靠性指标
(1)平均无故障时间MTTF=1/失效率;
(2)平均故障修复时间MTTR=1/修复率;
(3)平均故障间隔时间MTBF=MTTF+MTTR;
(4)系统可用性=MTTF/(MTTF+MTTR)*100%。
总结——计算机可靠性指标公式:
(1)可靠性:MTTF/(1+MTTF)
(2)可用性:MTBF/(1+MTBF)
(3)可维护性:1/(1+MTTR)
2、串并联系统可靠性
(1)串联系统可靠性:R=R1*R2*R3*……*Rn;
(2)并联系统可靠性:R=1-(1-R1)*(1-R2)*(1-R3)*……*(1-Rn)。
(3)串并联混合系统可靠性(R1与R2并联后,再与R3串联):R=[1-(1-R1)*(1-R2)]*R3。 |
+10
|