软件设计师考前冲刺与考点分析.docx
- 文档编号:11236314
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:51
- 大小:1.51MB
软件设计师考前冲刺与考点分析.docx
《软件设计师考前冲刺与考点分析.docx》由会员分享,可在线阅读,更多相关《软件设计师考前冲刺与考点分析.docx(51页珍藏版)》请在冰豆网上搜索。
软件设计师考前冲刺与考点分析
软件设计师考前冲刺与考点分析
第 2 章 计算机硬件基础知识
1.1 考点脉络
计算机硬件系统是软件运行的基础,掌握一些基本硬件的工作原理是软件技术提高的前提,所以硬件基础知识是软件设计师考试中的一个必考模块。
在此科目中,涉及到的知识点非常多,但真正常考的却不多,本章将对考点脉络进行梳理,对重要知识点进行精讲,并辅以习题,以便考生加深印象。
根据考试大纲,本章要求考生掌握以下几个方面的知识点。
(1)数据的表示:
数制及其转换、原码、反码、补码、移码、浮点数、溢出、算术运算、逻辑运算、校验码。
(2)计算机系统的组成、体系结构分类及特性:
CPU、存储器的组成、性能和基本工作原理、常用I/O设备、通信设备的性能及基本工作原理、I/O接口的功能、类型和特性、CISC/RISC、流水线操作、多处理机、并行处理。
(3)存储系统:
虚拟存储器基本工作原理、多级存储体系、RAID类型和特性。
(4)可靠性与系统性能评测基础知识:
诊断与容错、系统可靠性分析评价、校验方法、计算机系统性能评测方法。
从历年的考试情况来看,本章的考点主要集中以下方面。
在数据的表示中,主要考浮点数运算、溢出、算术、逻辑运算。
在计算机系统的组成与体系结构中,主要考查CPU的构成,常见寄存器的作用、计算机体系结构分类、指令系统基础、CISC与RISC、流水线操作的相关内容。
在存储系统中,主要考查Cache存储器。
在可靠性与系统性能评测基础知识中,主要考查系统可靠性分析和校验方法。
1.2 数据的表示
在数据的表示这个考点中,主要涉及到数制转换、数据编码、浮点数计算三个方面的内容,其中难度最高的是浮点数计算。
1.2.1 考点精讲
1.数制转换
(1)R进制数转换成十进制数
R进制数转换成十进制数通常使用按权展开法。
具体操作方式为:
将R进制数的每一位数值用Rk形式表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。
当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1。
例如二进制数l0101.01的值可计算如下:
l0101.01=1×24+1×22+1×20+1×
按照上面的表示法,即可计算出R进制数十进制的值。
(2)十进制数转换为R进制数
最常用的是“除以R取余法”。
例如将十进制数85转换为二进制数:
2|85余1
2|420
2|21 1
2|100
2|5 1
2|2 0
1 1
将所得的余数从低位到高位排列(1010101)2就是85的二进制数。
(3)二进制数与八进制数、十六进制数之间的转换
二进制转八进制:
将每3个二进制数转换为八进制数;
二进制转十六进制数:
将每4个二进制数转换为八进制数;
八进制转二进制:
将每个八进制数转换为3位二进制数;
十六进制转二进制:
将每个十六进制数转换为4位二进制数。
上面的转换都是以小数点作为计算数码个数的起点。
八进制数和十六进制数转换可先转换为二进制数,然后再转换为目标进制。
2.原码、反码、补码、移码
在计算机中,数据编码方式可以有多种,最为常见的有原码、反码、补码、移码。
一个正数的原码、补码、反码是相同的,负数则不同。
(1)原码
将最高位用做符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式。
这种方式是最容易理解的。
例如,+1的原码是00000001,–1的原码是10000001。
但是直接使用原码在计算时却会有麻烦,比如
(1)10+(–1)10 =0,如果直接使用原码则:
(00000001)2+(10000001)2=(10000010)2
这样计算的结果是–2,也就是说,使用原码直接参与计算可能会出现错误的结果。
所以,原码的符号位不能直接参与计算,必须和其它位分开,这样会增加硬件的开销和复杂性。
(2)反码
正数的反码与原码相同。
负数的反码符号位为1,其余各位为该数绝对值的原码按位取反。
这个取反的过程使得这种编码称为“反码”。
例如,–1的反码:
11111110。
同样对上面的加法,使用反码的结果是:
(00000001)2+(11111110)2 =(11111111)2
这样的结果是负0,而在人们普遍的观念中,0是不分正负的。
反码的符号位可以直接参与计算,而且减法也可以转换为加法计算。
(3)补码
正数的补码与原码相同。
负数的补码是该数的反码加1,这个加1就是“补”。
例如,–1的补码:
11111110+1=11111111。
再次做加法是这样的:
(00000001)2 +(11111111)2 =(00000000)2
直接使用补码进行计算的结果是正确的。
对一个补码表示的数,要计算其原码,只要对它再次求补,可得该数的原码。
由于补码能使符号位与有效值部分一起参加运算,从而简化运算规则,同时它也使减法运算转换为加法运算,进一步简化计算机中运算器的电路,这使得在大部分计算机系统中,数据都使用补码表示。
(3)移码
移码是对补码的符号位取反得到的一种编码。
移码只用于表示浮点数的阶码,所以只用于整数。
例如,-1的移码为:
01111111。
3.浮点数计算
在数学中,要表示一个很大的数时,我们常常使用一种称为科学计数法的方式:
N=M*Re
其中M称为尾数,e是指数,R为基数。
浮点数就是使用这种方法来表示大范围的数,其中指数一般是2,8,16。
而且对于特定机器而言,指数是固定不变的,所以在浮点数中指数并不出现。
从这个表达式可以看出:
浮点数表示的精读取决于尾数的宽度,范围取决于基数的大小和指数的宽度。
浮点数的运算主要有三个步骤:
对阶、尾数计数、结果格式化。
(1)对阶
首先计算两个数的指数差,把指数小的向指数大的对齐,并将尾数右移指数差的位数,这样两个浮点数就完成了对阶的操作。
可以看出,对阶的过程可能使得指数小的浮点数失去一些有效位。
如果两个浮点数阶数相差很大,大于指数小的浮点数的尾数宽度,那么对阶后那个浮点数的尾数就变成了0,即当做机器零处理了。
(2)尾数计算
对阶完成后,两个浮点数尾数就如同定点数,计算过程同定点数计算。
(3)结果格式化
尾数计算后,可能会产生溢出,此时将尾数右移,同时指数加1,如果指数加1后发生了溢出,则表示两个浮点数的运算发生了溢出。
如果尾数计算没有溢出,则尾数不断左移,同时指数减1,直到尾数为格式化数。
如果这个过程中,指数小于机器能表达的最小数,则将结果置“机器零”,这种情况称为下溢。
1.2.2 一点一练
试题1
若某计算机采用8位整数补码表示数据,则运算__
(1)__将产生溢出。
(1)A.-127+1 B.-127-1 C.127+1 D.127-1
试题2
原码表示法和补码表示法是计算机中用于表示数据的两种编码方法,在计算机系统中常采用补码来表示和运算数据,原因是采用补码可以__
(2)__。
(2)A.保证运算过程与手工运算方法保持一致
B.简化计算机运算部件的设计
C.提高数据的运算速度
D.提高数据的运算精度
试题3
计算机中的浮点数由三部分组成:
符号位S,指数部分E(称为阶码)和尾数部分M。
在总长度固定的情况下,增加E的位数、减少M的位数可以__(3)__。
(3)A.扩大可表示的数的范围同时降低精度
B.扩大可表示的数的范围同时提高精度
C.减小可表示的数的范围同时降低精度
D.减小可表示的数的范围同时提高精度
试题4
计算机中常采用原码、反码、补码和移码表示数据,其中,±0编码相同的是__(4)__。
(4)A.原码和补码 B.反码和补码
C.补码和移码 D.原码和移码
试题5
计算机在进行浮点数的相加(减)运算之前先进行对阶操作,若x的阶码大于y的阶码,则应将__(5)__。
(5)A.x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术左移
B.x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术右移
C.y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术左移
D.y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术右移
1.2.3 解析与答案
试题1分析
采用8位整数补码表示数据,数据的表示范围是-128至127,因此在各选择中运算会发生溢出的是C。
试题1答案
(1)C
试题2分析
在计算机中,各类运算都等可以采用补码进行,特别是对于有符号数的运算。
在计算机中设计补码的目的一是为了使符号位能与有效值部分一起参加运算,从而简化运算规则,使运算部件的设计更简单;二是为了使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。
因此在计算机系统中常采用补码来表示和运算数据,原因是采用补码可以简化计算机运算部件的设计。
试题2答案
(2)B
试题3分析
浮点数的表示形式如下:
N=M×rE
其中r是浮点数阶码的底,与尾数的基数相同,通常r=2。
E和M都是带符号的定点数,E叫做阶码,M叫做尾数。
浮点数的一般格式如图所示,浮点数的底是隐含的,在整个机器数中不出现。
阶码的符号位为Es,阶码的大小反映了在数N中小数点的实际位置;尾数的符号位为Ms,它也是整个浮点数的符号位,表示了该浮点数的正、负。
图1-1浮点数的一般格式
浮点数的大小由阶码部分决定,而其精度由尾数部分决定,因此增加E的位数、减少M的位数可以扩大可表示的数的范围同时降低精度。
试题3答案
A
试题4分析
本题考查计算机系统数据编码基础知识。
设机器字长为n(即采用n个二进制位表示数据),最高位是符号位,0表示正号,1表示负号。
原码表示方式下,除符号位外,n-1位表示数值的绝对值。
因此,n为8时,[+0]原=00000000,[-0]原=10000000。
正数的反码与原码相同,负数的反码则是其绝对值按位求反。
n为8时,数值0的反码表示有两种形式:
[+0]反=00000000,[-0]反=11111111。
正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加1。
在补码表示中,0有唯一的编码:
[+0]补=00000000,[-0]补=00000000。
移码表示法是在数X上增加一个偏移量来定义的,常用于表示浮点数中的阶码。
机器字长为n时,在偏移量为2n-1的情况下,只要将补码的符号位取反便可获得相应的移码表示。
试题4答案
(4)C
试题5分析
本题考查浮点数运算的基本过程。
该过程分为如下3步:
第一步:
对阶,规则是向大阶看齐。
具体方法是:
阶码小的那个尾数右移,移位的次数等于参加运算的两个数的阶码之差。
第二步:
尾数相加。
实际上进行的是定点数加法。
第三步:
结果的后处理。
包括如下3个方面:
(1)如果运算结果的尾数部分溢出,则需要向右规格化一位。
具体方法是:
尾数部分右移一位,阶码加1。
(2)如果运算结果的最高位为0,则需要向左规格化,并且要重复进行,直到尾数的最高位不为0。
尾数部分每左移一位,阶码必须减1。
(3)进行舍入处理。
所以本题的正确答案为D。
试题5答案
(5)D
1.3 计算机系统的组成与体系结构
在计算机系统的组成与体系结构中,计算机体系结构分类、计算机的硬件组成、指令系统基础、CISC与RISC、流水线操作等内容是最为重要的,下面将详细介绍这几个方面的知识。
1.3.1 考点精讲
1.计算机体系结构分类
计算机体系结构分类有多种方式,其中最为常见的是:
Flynn分类法与冯氏分类法。
而考试中主要考查的是Flynn分类法。
Flynn分类法是根据指令流、数据流和多倍性三方面来进行分类的,如表1-1所示。
表1-1 Flynn分类法
2.计算机的硬件组成
计算机硬件系统是依照冯·诺依曼所设计体系结构,即包括运算器、控制器、存储器、输入设备和输出设备五大部件组成,如图1-2所示。
图1-2 计算机硬件组成结构示意图
其中运算器和控制器组成中央处理器(CPU)。
运算器负责完成算术、逻辑运算功能,通常由ALU(算术/逻辑单元)、寄存器、多路转换器、数据总线组成;控制器则负责依次访问程序指令,进行指令译码,并协调其他设备,通常由程序计数器(PC)、指令寄存器、指令译码器、状态/条件寄存器、时序发生器、微操作信号发生器组成。
下面介绍几个主要部件的功能:
程序计数器:
用于存放下一条指令所在单元的地址的地方。
由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
当遇到转移指令时,后继指令的地址(即PC的内容)必须从指令寄存器中的地址字段取得。
在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。
因此程序计数器的结构是具有寄存信息和计数两种功能的结构。
指令寄存器:
用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到数据寄存器中,然后再传送至指令寄存器。
指令划分为操作码和地址码字段,由二进制数字组成。
为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。
指令译码器就是做这项工作的(下一词条将详细介绍其工作过程)。
指令寄存器中操作码字段的输出就是指令译码器的输入。
操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
指令译码器:
译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。
把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。
或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路。
3.指令系统基础
在计算机中,CPU都会定义出自己特定的指令系统,不过都遵循着统一的标准格式。
指令的基本格式是由操作码和地址码两个部分组成的。
操作码指出该指令要完成什么操作,地址码则是提供原始的数据。
指令系统中定义操作码的方式可以分为规整型(定长编码)和非规整型(变长编码)两种,如表1-2所示。
表1-2 指令系统操作码定义分类方法比较表
而在指令系统中用来确定如何提供操作数或提供操作数地址的方式称为寻址方式和编址方式。
操作数可以存放在CPU中的寄存器(用寄存器名操作)、主存储器(指出存储单元地址)、堆栈(先进后出的存储机制,用栈顶指针SP来标出其当前位置)、外存储器或外围设备中。
不过在运算时,数据均在主存储器中,操作数可以采用以下几种寻址方式:
(1)立即寻址方式
指令的地址字段指出的不是操作数的地址,而是操作数本身。
这种方式的特点是指令执行时间很短,不需要访问内存取数。
题目中所说的“操作数包含在指令中的寻址方式”就是立即寻址。
例如,单地址的移位指令格式为
这里D不是地址,而是一个操作数。
F为标志位,当F=1时,操作数进行右移;当F=0时,操作数进行左移。
(2)直接寻址方式
直接寻址特点是:
在指令格式的地址字段中直接指出操作数在内存的地址D。
采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,即E=D。
因此通常把形式地址D又称为直接地址。
此时,由寻址模式给予指示。
如果用S表示操作数,那么直接寻址的逻辑表达式为S=(E)=(D)
(3)间接寻址方式
间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。
如果把直接寻址和间接寻址结合起来,指令有如下形式:
寻址特征位I=0,表示直接寻址,这时有效地址E=D;I=1,表示间接寻址,这时有效地址E=(D)。
间接寻址方式是早期计算机中经常采用的方式,但由于两次访问内存,影响指令执行速度,现在已不大使用。
(4)寄存器寻址方式和寄存器间接寻址方式
当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。
此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。
这也就是题目中所说的“操作数在寄存器中的寻址方式”。
寄存器间接寻址方式与寄存器寻址方式的区别在于:
指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
这也就是题目中所说的“操作数的地址在寄存器中的寻址方式”。
(5)相对寻址方式
相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。
程序计数器的内容就是当前指令的地址。
“相对”寻址,就是相对于当前的指令地址而言的。
采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。
此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。
4.CISC与RISC
为了提高操作系统的效率,人们最初选择了向指令系统中添加更多、更复杂的指令,而随着不断地升级和向后兼容的需要,指令集也越来越大。
这种类型的计算机,我们称之为复杂指令计算机CISC。
而后来研究发现,计算机指令系统如果使用少量结构简单的指令会提高计算机的性能,这就是精简指令集计算机RISC。
计算机执行程序所需的时间P由三方面因素决定:
编译后产生的机器指令数I、执行每条指令所需的平均周期数CPI,以及每个机器周期的时间T。
它们的关系是P=I×CPI×T。
RISC正是通过简化指令的途径使计算机结构更合理,减少指令执行周期数,提高运算速度。
虽然RISC编译后产生的机器指令数(I)增多了,但指令所需的周期数(CPI)和每个周期的时间(T)都可以减少。
它与CISC可谓各有特色,如表1-3所示。
表1-3 指令系统操作码定义分类方法比较表
典型的RISC处理器包括:
DEC的Alpha21164、IBM的PowerPC620、HP的PA-8000、SGIMIPS分部的TS、Sun的UltraSPARC。
目前RISC处理器技术的发展方向是采用并行处理技术(包括超级流水线、超级标量、超长指令字)大幅度提高运算速度。
5.流水线
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。
各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。
如图1-3所示,IF,ID,EX,WD分别是流水线的流水部件。
图1-3几个部件组成的流水线
流水线要求所有的流水级部件必须在相同的时间内完成各自的子过程。
在流水线中,指令流动一步便是一个机器周期,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间来决定。
那么我们为什么要提出流水线这个概念,以及流水线是如何提高系统吞吐量的呢?
下面我们来看几个图,概念自然就清楚了。
图1-4是一个非流水线结构系统执行指令时空图。
图1-4非流水线结构系统执行指令时空图
我们从图1-4中可以看到,任意一个系统时间都有大量的设备处于空闲状态,如第一个时间段有ID,EX,WB空闲,则第二个时间段有IF,EX,WB空闲。
我们再来看采用了流水线结构的时空图1-5。
图1-5流水线结构指令时空图
显然,采用流水线可以大大提升系统资源的利用率,以及整个系统的吞吐量。
在考试中,流水线方面的考题主要考查两个知识点:
计算流水线执行时间和分析影响流水线的因素。
(1)计算流水线执行时间
假定有某种类型的任务,共可分成N个子任务,执行每个子任务需要时间t,则完成该任务所需的时间即为Nt。
若以传统的方式,则完成k个任务所需的时间是kNt;而使用流水线技术执行,花费的时间是Nt+(k-1)t。
也就是说,除了第一个任务需要完整的时间外,其他都通过并行,节省下了大量的时间,只需一个子任务的单位时间就够了。
另外要注意的是,如果每个子任务所需的时间不同,则其速度取决于其执行顺序中最慢的那个(也就是流水线周期值等于最慢的那个指令周期),要根据实际情况进行调整。
例如:
若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是取指2ns,分析2ns,执行1ns。
那么,最长的是2ns,因此100条指令全部执行完毕需要的时间就是:
(2ns+2ns+1ns)+(100-1)×2ns=203ns。
另外,还应该掌握几个关键的术语:
流水线的吞吐率(等于任务数/完成时间),加速比(不采用流水线的执行时间/采用流水线的执行时间)。
(2)影响流水性的主要因素
如图1-5所示,流水线的关键在于“重叠执行”,因此如果这个条件不能够满足,流水线就会被破坏。
这种破坏主要来自两种情况:
转移指令:
因为前面的转移指令还没有完成,流水线无法确定下一条指令的地址,因此也就无法向流水线中添加这条指令。
从这里的分析可以看出,无条件跳转指令是不会影响流水线的。
共享资源访问的冲突:
也就是后一条指令需要使用的数据,与前一条指令发生的冲突,或者相邻的指令使用了相同的寄存器,这也会使得流水线失败。
响应中断:
当有中断请求时,流水线也会停止。
对于这种情况有两种响应方式,一种是立即停止——精确断点法,能够立即响应中断;另一种是流水线中的指令继续执行,不再新增指令到流水线——不精确断点法。
1.3.2 一点一练
试题1
若某条无条件转移汇编指令采用直接寻址,则该指令的功能是将指令中的地址码送入__
(1)__。
(1)A.PC(程序计数器)B.AR(地址寄存器)
C.AC(累加器)D.ALU(算逻运算单元)
试题2
CPU中译码器的主要作用是进行__
(2)__。
(2)A.地址译码 B.指令译码 C.数据译码 D.选择多路数据至ALU
试题3
编写汇编语言程序时,下列寄存器中程序员可访问的是__(3)__。
(3)A.程序计数器(PC) B.指令寄存器(IR)
C.存储器数据寄存器(MDR) D.存储器地址寄存器(MAR)
试题4
在CPU中用于跟踪指令地址的寄存器是__(4)__。
(4)A.地址寄存器(MAR) B.数据寄存器(MDR)
C.程序计数器(PC) D.指令寄存器(IR)
试题5
若CPU要执行的指令为:
MOVR1,#45(即将数值45传送到寄存器R1中),则该指令中采用的寻址方式为__(4)__。
(4)A.直接寻址和立即寻址 B.寄存器寻址和立即寻址
C.相对寻址和直接寻址 D.寄存器间接寻址和直接寻址
试题6
在CPU的寄存器中,__(6)__对用户是完全透明的。
(6)A.程序计数器 B.指令寄存器 C.状态寄存器 D.通用寄存器
试题7
指令系统中采用不同寻址方式的目的是__(7)__。
(7)A.提高从内存获取数据的速度 B.提高从外存获取数据的速度
C.降低操作码的译码难度 D.扩大寻址空间并提高编程灵活性
试题8
总线复用方式可以__(8)__。
(8)A.提高总线的传输带宽 B.增加总线的功能
C.减少总线中信号线的数量 D.提高CPU利用率
试题9
一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指=3△t、分析时间t分析=2△t、执行时间t执行=4△t的情况下,若按串行方式执行,则10条指令全部执行完需要__(9)__△t;若按流水线的方式执行,则10条指令全部执行完需要__(10)__△t。
(9)A.40 B.7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 设计师 考前 冲刺 考点 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)