以上午选择题形式考察 ,主要有6分
计算机的基本硬件系统组成:
它们结构如下:
运算器 + 控制器 = 中央处理单元(CPU
)
CPU
是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。内部存储器+ 外部存储器 = 存储器
输入设备 和 输出设备 合成为 外部设备
这些组成会通过一些线路进行连接
CPU结构
运算器:
算术逻辑单元ALU
:数据的算术运算和逻辑运算。
累加寄存器AC
:通用寄存器,为 ALU 提供了一个工作区,用于暂存数据。
数据缓冲寄存器DR
:读写内存时,暂存指令或数据,它是CPU
与内存之间的中转站
状态条件寄存器PSW
:存状态标志与控制条件。(争议:也有将其归为控制器的)
控制标志
:因为控制标志
,导致状态条件寄存
的分类是有争议的,状态条件寄存也可划分为控制器
。考试当中如果碰到状态条件寄存
分类问题,放在最后去考虑,有其他更好的选项,就选择其他的选项。控制器:
程序计数器PC
:存储下一条要执行指令的地址
程序执行前将第一条指令地址送入内存,
PC
从内存拿到这个地址。执行指令时,CPU
会自动修改PC
的内容,使其存储下一条要执行指令的地址。
指令寄存器IR
:存储即将执行的指令
通过
PC
执向的地址,从内存区指令 > 数据缓冲寄存器 > IR
指令译码器ID
:对指令中的操作码字段进行分析解释
ID
对IR
中的地址进行解释,识别该指令的操作,并向操作控制器发出控制信号。
时序部件:提供时序控制信号
地址寄存器AR
:保存CPU
当前访问的内存的地址,直到内存读写完成。
由于内存和
CPU
存在着操作速度上的差异,所以需要AR
保持地址信息,直到内存的读写操作完成为止。
寄存器组:可以分为专用寄存器组和通用寄存器组。运算器和控制器中的寄存器是专用寄存器,其左右是固定的。通用寄存器由程序员规定其用途。
多核
CPU
(了解) 核心又称内核,是
CPU
最重要的组成部分。CPU
中间那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU
所有的计算、接收/存储命令、处理数据都是由核心执行。各种CPU
具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级和总线接口等逻辑单元都会有合理的布局。 多核即在一个芯片上集成两个甚至更多个内核,其中每个内核都有自己的逻辑单元、控制单元、终端处理器、运算单元,一级缓存、二级缓存共享或独有,其内部的完整性和单核处理内核完全一致。
AMD
将两个内核坐在一个Die
(晶元)上,通过直连架构连接起来,集成度更高。Intel
则是将放在不同核心上的两个内核封装在一起,因此 Intel 的方案称为“双芯”,将AMD
的方案称为“双核”。从用户端的角度来看,AMD
的方案只需要刷新BIOS
软件即可。 多核
CPU
的最大优点是可满足用户同时进行多任务处理的要求。 单核多线程
CPU
是交替转换执行多个任务,只不过交替的时间很短,用户一般感觉不出来。如果同时执行的任务太多,就会感觉到“慢”。而多核在理论上则是在任何时间内每个内核执行各自的任务,不存在交替的问题。因此的,单核多线程和多核(一般每核也是多线程的)虽然都可以执行多任务,但是多核的速度更快。 要发挥
CPU
的多核性能,就需要操作系统能够及时、合理的给各个核分配任务和资源(如缓存、总线、内存等),也需要应用软件在运行时可以把并行的线程同时交给多个核心分别处理。
考点1:进制转换
考点2:码制(原码/反码/补码/移码)
考点3:浮点数的表示
考点4:逻辑运算
进制特点范围进制计数器。
R
进制转10
进制
R进制
转十进制
使用按权展开法,其具体的操作方式为:将二进制数的每一位数用R
^k
,即幂的底数是R
,指数为k
,k
与该位和小数点之间的距离有关。当该位位于小数点左边,k
值是该位与小数点之间的数码的个数,而当该位位于小数点右边,k
是负值,其绝对值是该位和小数点之间的数码的个数加1。
二进制
10100.01 = 1 x 2⁴ + 1 x 2² + 1 x 2⁻²7进制
604.01 = 6 x 7² + 4 x 7⁰ + 1 x 7⁻²10
进制转R
进制
二进制转八进制与十六进制
二进制数转八进制,是从右往左数,每3位转化为一个八进制的值(0~7)
如 10001110
: 10
001
110
==> 216
二进制数转十六进制,是从右往左数,每4位转化为一个十六进制的值(0~F)
如 10001110
: 1000
1110
==> 8E
机器数分为有符号数和无符号数,最高位为符号位(0
正数 1
负数)。
为了便于计算,带符号的机器数可采用原码、反码、补码等不同的编码方法,这些编码称为码制。
原码、反码、补码和移码
原码可用上面的10
进制转2
进制即可得到。
转换规则:
正数,原码、反码、补码都一样
负数
反码:除符号位外,其余位取反
补码:在反码基础上加1
移码:在正数|负数的补码基础上,符号位取反
补充小知识:
负数的 原码转补码 和 补码转原码 操作一样,都是先取反,再加1。
原码数值0有两种表示
- +0 : 0000 0000
- -0 : 1000 0000
反码数值0也有两种表示
- +0 : 0000 0000
- -0 : 1111 1111
补码的数值0,只有一种表示形式 0000 0000
下表是具体的例子,通过例子可以发现补码进行 1-1
的结果是正确的,所以 加法和减法使用补码进行运算。
数值1 | 数值-1 | 1 - 1 | |
---|---|---|---|
原码 | 0000 00001 | 1000 00001 | 1000 0010 |
反码 | 0000 00001 | 1111 1110 | 1111 1111 |
补码 | 0000 00001 | 1111 1111 | 0000 0000 |
移码 | 1000 00001 | 0111 1111 | 1000 0000 |
定点数
定点数分为定点整数
(纯整数)和定点小数
(纯小数)。
下表是机器字长为n时,各种码制的带符号数值范围:
码制 | 定点整数 | 定点小数 |
---|---|---|
原码 | -(2ⁿ⁻¹ - 1) ~ (2ⁿ⁻¹ - 1) | -(1 - 2⁻⁽ⁿ⁻¹⁾) ~ (1 - 2⁻⁽ⁿ⁻¹⁾) |
反码 | -(2ⁿ⁻¹ - 1) ~ (2ⁿ⁻¹ - 1) | -(1 - 2⁻⁽ⁿ⁻¹⁾) ~ (1 - 2⁻⁽ⁿ⁻¹⁾) |
补码 | -2ⁿ⁻¹ ~ (2ⁿ⁻¹ - 1) | - 1 ~ (1 - 2⁻⁽ⁿ⁻¹⁾) |
移码 | -2ⁿ⁻¹ ~ (2ⁿ⁻¹ - 1) | - 1 ~ (1 - 2⁻⁽ⁿ⁻¹⁾) |
因为原码、反码 0的表示占用了 两种表示,所以他们比补码和移码的表示少一个。
定点小数的范围(原码)的推导过程:
- 例如
n
为4
==>- 去除符号位,只剩下
3
位来表示数值,其绝对值的最大值就是0.111
==>- 而
0.111
加上0.001(即 2⁻⁽ⁿ⁻¹⁾)
的结果为1
==>- 所以其绝对值的最大值就是
1 - 2⁻⁽ⁿ⁻¹⁾
==>- 所以定点小数的范围就是
-(1 - 2⁻⁽ⁿ⁻¹⁾) ~ (1 - 2⁻⁽ⁿ⁻¹⁾)
反码的范围与原码一致。
而补码、移码要比原码多一位,所以其最小值为
-1
,范围为-1 ~ (1 - 2⁻⁽ⁿ⁻¹⁾)
浮点数
当机器字长为n
时,定点数的补码和移码可表示2^n
个数,而其原码和反码只能表示2^n - 1
个数(0
表示占用了两个编码),因此定点数的表示范围比较小,在运算中很容易出现溢出的问题。浮点数是小数点位置不固定的树,它能表示更大范围的数。
例如83.25
可以写成10³x 0.083125
或10⁴ x 0.0083125
等。
浮点数的表示: N = 尾数 x 基数 ^ 阶码
1.25 x 10³
1、尾数是1.25(尾数用补码表示)
2、基数是10 (基数不存储)
3、指数是3 (指数用阶码表示)
同样,一个二进制数也可以写成多种表示形式。例如 1011.10101
可以写成2⁴ x 0.101110101
、2⁵ x 0.0101110101
、2⁶ x 0.00101110101
等。一个二进制可以表示为N = 2ᴱ x F
,E为阶码、F为尾数。用阶码和尾数表示的数称为浮点数,这种表示数的方法称为浮点表示法。
很明显一个浮点数的表示不是唯一的,当小数点位置改变时,阶码也随之改变。
浮点数相加的运算过程:
0.5~1
之间。当尾数用补码表示时,需要注意:
M>=0
,其规格化尾数形式为 0.1xxx...x
M<0
,其规格化尾数形式为 1.0xxx...x
浮点数的范围,若阶码有R位(移码),尾数有M位(补码):
+(1 - 2⁻ᵐ⁺¹) x 2²ᵔ⁽ᴿ⁻¹⁾ ⁻¹
-1 x 2²ᵔ⁽ᴿ⁻¹⁾ ⁻¹
浮点数特点:
在 IEEE 754 工业标准中,尾数也可以用原码表示。
浮点数相乘 = 阶码相加 和 尾数相乘。
浮点数相除 = 阶码相减 和 尾数相除。
工业标准 IEEE 754(了解即可)
IEEE 754 是由 IEEE 制定的有关浮点数的工业标准,被广泛采用,表示如下:
(-1)ˢ 2ᴱ (b₀b₁b₂b₃...bₚ₋₁)
(-1)ˢ
为浮点数数符,S为0表示正数,S为1表示负数(b₀b₁b₂b₃...bₚ₋₁)
为尾数,其长度为P,用源码表示下标为三种形式的IEEE 754浮点数格式
参数 | 单精度浮点数 | 双精度浮点数 | 扩充精度浮点数 |
---|---|---|---|
浮点数字长 | 32 | 64 | 80 |
尾数长度P | 23 | 52 | 64 |
符号位S | 1 | 1 | 1 |
指数长度E | 8 | 11 | 15 |
最大指数 | +127 | +1023 | +16383 |
最小指数 | -127 | -1023 | -16383 |
指数偏移量 | +127 | +1023 | +16383 |
可表示实数范围 | 10⁻³⁸ ~ 10³⁸ | 10⁻³⁰⁸ ~ 10³⁰⁸ | 10⁻⁴⁹³² ~ 10⁴⁹³² |
根据IEEE 754
标准,被编码的值分为3种不同的情况::规格化值、非规格化值和特殊值。
规格化的值
当阶码部分不全为0也不全为1时,所表示的就是规格化值。例如,在单精度浮点数格式下,阶码为1011 0011
,偏移量为+127(0111 1111)
,则其真值为1011 0011 - 0111 1111 = 0011 0100
,转换为十进制后为52
。
指数真值 + 127 = 阶码
阶码 - 127 = 指数真值
对于尾数部分,由于约定小数点左边隐含有1
位,通常这为数就是1
,因此单精度浮点数尾数的有效尾数是24
,即尾数为1.xxx...x
,也就是说在不溢出的情况下尾数M的值在1<=M<2
。例如b₀b₁...b₂₂=0100 1001 1000 1000 1001 001
,其对应尾数的真值为 1+2⁻²+2⁻⁵+2⁻⁸+2⁻⁹+2⁻¹³+2⁻¹⁷+2⁻¹⁹+2⁻²⁰+2⁻²²+2⁻²³
,转换为十进制为1.28724038600921630859375
(程序中以十进制输出时,由于精度原因不能完全给出此值)。
题:利用
IEEE 754
标准,将176.0625
表示为单精度数?
- 首先将十进制转成二进制
(176.0625)₁₀ = (1011 0000.0001)₂
- 其次对二进制数进行规格化处理:
1011 0000.0001 = 1◇01100000001 x 2⁷
,这就保证了b₀
为1
,且小数点在◇
位置上。- 将
b₀
去掉并扩展为单精度浮点数规定的23
位尾数01100000001000000000000
- 然后求阶码,上述指数为
7
,而单精度的偏移量是+127
,即E = 7 + 127 = 134
,则指数的移码表示为1000 0110
- 最后得到
(176.0625)₁₀
的单精度浮点数为0 10000110 01100000001000000000000
非规格化值
当阶码部分全为0时,就是非规格化的。这种情况下,指数的真值偏移量为1-偏移量
(对于单精度浮点是是-126
,对于双精度浮点数是-1022
),其尾数的真值就是二进制形式对应的小数,不包含隐含的1
。
非格式化值用途:
可以用来表示0
表示那些无限接近于0的数(因为规格化的值不能表示出0)。
+0 : 符号位、阶码、尾数全为0
-0 :符号位为1,阶码、尾数全为0
特殊值
当阶码部分全为1是,表示的是特殊值。
NaN
,即不是一个数。当运算结果不是实数或无穷,就表示为NaN
关系运算符
逻辑运算符
逻辑变量之间的运算称为逻辑运算。二进制数1和0在逻辑上可以代表真
与假
。
||、+、U、V、OR
,连接的两个逻辑值全0时才取0&&、*、·、∩、∧、AND
,连接的两个逻辑值全1时才取1⊕、XOR
,连接的两个逻辑值不同时才取1,相同时取0!、¬、~、NOT、-
,将原逻辑值取反即可真值表:描述一个逻辑表达式与其变量之间的关系
A B | !A | A OR B | A AND B | A XOR B |
---|---|---|---|---|
0 0 | 1 | 0 | 0 | 0 |
0 1 | 1 | 1 | 0 | 1 |
1 0 | 0 | 1 | 0 | 1 |
1 1 | 0 | 1 | 1 | 0 |
优先次序: !(非)
> &&(与)
> ||(或)
! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
短路原则
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。
a && b && c
:只要 a
为真时,才要判断b
的值,只有a、b
都为真时,才要判断c
的值a || b || c
:只要a
为真,就不必判断b、c
的值,只有 a
为假时,才判断b
。a、b
都为假才判断c
。考点1:奇偶校验码
考点2:CRC循环冗余校验码
考点3:海明校验码
我们知道数据以二进制补码形式存储在计算机中,那么在传输数据的过程中计算机又如何知道它传输的数据是否正确呢?这时候就用到我们奇偶校验码了。
为确保数据在传送过程中正确无误,一是提高硬件电路,而是提高代码的校验能力,包括查错和纠错。
其基本思想是把数据可能出现的编码分为两类:合法编码和错误编码。合法编码应用于传送数据,错误编码是不允许出现在数据中出现的编码。
码距
:一个编码系统中,两个合法编码之间二进制位数不同,其中位数最小的就是码距。
教材:所谓码距, 是指一个编码系统中任意两个合法编码之间至少有多少个二进制为不同。
例如:用4位二进制表示16种状态,则有16个不同的编码,此时码距为1。如
0000
与0001
。
1.1.5.1 奇偶校验
用来检测数据传输过程是否发生错误的一种检错码
奇校验、偶校验(在传输数据前使用哪个校验是规定好的,以确保发送端和接收端用同样的方式进行数据校验)原理是扩大码距由1变成2的方式,检错“1”的个数是奇数还是偶数来判断数据是否出错,如出错则要求重发,由于这种方法简单便捷因此也得到广泛应用。
缺点
那就是只能检错不能纠错,而且只能检错1位或奇数位个(出错的二进制位个数),不能检错偶数个,也不知道哪一位出错。
奇校验有一个特征那就是产生了不全0的代码。
原理是什么?
奇校验:原始码流+校验位 总共有奇数个1。
偶校验:原始码流+校验位 总共有偶数个1。
编码方式:信息码(一个字节)外加上一位奇偶校验位。
奇校验-输出正常时
要传输数据11001110
,数据中含5个"1",(校验线路在收到数据后,通过发生器在校验位上填0或1,以保证是奇数个1,所以其校验位为0
) 110011100
同时把110011100
传输给接收方,接收方收到数据后再一次计算奇偶性,110011100
中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。
奇校验-输出出错时
需要传输数据"11001110",数据中含5个"1",(为了确保1数个为奇数,所以其校验位为"0")110011100;
在传输的过程中如有出错,110011100>>>100011100(接收方再次计算奇偶性,1的个数是偶数,与发送方校验不一致,发生错误,要求重发)
为什么只能检错1位,不能检错多位?
证明:如数据1100 1110 0
常见的奇偶校验码有3种:水平奇偶校验、垂直奇偶校验、水平垂直奇偶校验。
水平奇偶校验码
它不但能检测出各段同一位上的奇数个错,而且还能检测出突发长度<=p的所有突发错误。其漏检率要比垂直奇偶校验方法低,但实现水平奇偶校验时,一定要使用数据缓冲器。
垂直奇偶校验
垂直奇偶校验码又被称为纵向奇偶校验码,把数据分成若干组,一组数据排成一行,再加一行校验码.,针对每一行列采用奇校验 或 偶校验。
水平垂直奇偶校验
水平垂直奇偶校验码又称为纵横奇偶校验,就是同时用水平校验和垂直校验,结合水平奇偶校验和垂直奇偶校验的基础上形成的一种校验方法,n个信息的一个分组排列成矩形式样,并以横向奇偶(HP)及纵向奇偶(VP)的形式编出奇偶校验位。
它能检测出传输过程中发生的所有3位或3位以下的错误、奇数个错误、大部分偶数个错误以及突发长度≤m+1的突发错误,可使误码率降至原误码率的百分之一到万分之一,有较强的检错能力,但是有部分偶数个错误不能检测出来。 水平垂直奇偶校验还可以自动纠正差错,使误码率降低2~4个数量级,适用于中、低速传输系统和反馈重传系统。
考题
关于采用一位奇校验方法的叙述中,正确的是( )。
A、若所有奇数位出错,则可以检测出该错误但无法纠正错误。
B、若所有偶数位出错,则可以检测出该错误并加以纠正。
C、若有奇数个数据位出错,则可以检测出该错误但无法纠正错误。
D、若有偶数个数据位出错,则可以检测出该错误并加以纠正。
正确答案 C。
1.1.5.2 海明码
海明码(Hamming Code)是由贝尔实验室的 Richard Hamming 设计的,是一种利用奇偶性来校验和纠错的方法。海明码的构成是在数据位之间的特定位置上插入 k 个 校验位,通过扩大码距来实现检错和纠错。
本文以1010 0110
这个二进制数为例解释海明码的编码和校验方法。
编码
确定编码的位数x
设数据有n
位,校验位有x
位,则校验码一共有 2ˣ
种取值方法。其中需要一种取值方式表示数据正确,剩下的2ˣ -1
种取值方式表示有一位数据出错。因为编码后的二进制串有 n+x
位,因此 x 满足 $$ 2ˣ - 1 ≥ n+x $$
为什么使用
2ˣ - 1 ≥ n+x
这个公式呢?因为只有这样才能保证校验位足够覆盖整个需要校验的码组。
比如说:校验位有3位,那就是 2³ -1 =8 - 1 = 7 这样就可以校验长度为7的码组,如果按实际来说,也就是信息位 4 位,校验码 3位。
通过上面的分析,我们知道校验位 x 加上信息位 n,就等于
2ˣ - 1
,下面就是一些 x 和 n 的关系表
信息码位数 1 2~4 5~11 12~26 27~5 58~120 校验码位数 2 3 4 5 6 7
使不等式成立的 x
的最小值就是校验码的位数。在本例中,n=8
,解得x=4
。
确定校验码的位置
对于8位的数据位,进行海明校验需要4个校验位。令数据位为D₇D₆D₅D₄D₃D₂D₁D₀
,校验位为P₄P₃P₂P₁
,形成的海明码为H₁₂H₁₁……H₃H₂H₁
,编码过程如下:
确定D与P在海明码中的位置,如下所示
H₁₂ H₁₁ H₁₀ H₉ H₈ H₇ H₆ H₅ H₄ H₃ H₂ H₁
D₇ D₆ D₅ D₄ P₄ D₃ D₂ D₁ P₃ D₀ P₂ P₁
信息位在非
2ⁿ
的位置上,而校验位在2ⁿ
位置上。校验位就是在 2ⁿ、…….16、8、4、2、1这些位置上。
确定校验关系
笔记不采用书本上的内容,因为书本上计算规则比较麻烦。
我们以求P₂
的校验码为例,为了直观,将表格中的未知用二进制表示。
位置 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
位置(二进制) | 1100 | 1011 | 1010 | 1001 | 1000 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 |
内容 | D₇ | D₆ | D₅ | D₄ | P₄ | D₃ | D₂ | D₁ | P₃ | D₀ | P₂ | P₁ |
为了求出P₂
,要使所有位置的二进制的第二位是1的数据位的异或值,由上表可以发现 分别为 D₀D₂D₃D₅D₆
,即 P₂=D₀⊕D₂⊕D₃⊕D₅⊕D₆
。
同理,可以得出 P₁、P₃、P₄
P₁=D₀⊕D₁⊕D₃⊕D₄⊕D₆
P₃=D₁⊕D₂⊕D₃⊕D₇
P₄=D₄⊕D₅⊕D₆⊕D₇
以上的是使用的偶校验的方式来进行处理的。若采用奇校验,则将各校验位的偶校验值取反即可。
例如有数据
01101001
,求出它的海明码,采用偶校验
按照上面的步骤,先排好对应的关系
位置 12 11 10 9 8 7 6 5 4 3 2 1 位置(二进制) 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 内容 0 1 1 0 P₄ 1 0 0 P₃ 1 P₂ P₁ 计算对应各个校验位的值
- 首先计算P₁=D₀⊕D₁⊕D₃⊕D₄⊕D₆ = 1⊕0⊕1⊕0⊕1 = 1
- 计算P₂=D₀⊕D₂⊕D₃⊕D₅⊕D₆ =1⊕0⊕1⊕1⊕1 =0
- 计算P₃=D₁⊕D₂⊕D₃⊕D₇ =0⊕0⊕1⊕0 = 1
- 计算P₄=D₄⊕D₅⊕D₆⊕D₇ =0⊕1⊕1⊕0 = 0
填入校验位求得其最终的结果
011001001101
检测错误
对海明码的数据进行检测很简单,只需要做以下的计算:
若采用偶校验,则G₄G₃G₂G₁ 全为0(奇校验则应全为1
)时表示接收到的数据无错,否则表示数据出错,且G₄G₃G₂G₁的十进制值指出了发生错误的位置,例如 G₄G₃G₂G₁ = 1010,说明 H₁₀(D₅)出错了,将其取反即可纠正错误。
1.1.5.3 循环冗余校验码 CRC
CRC(Cyclic Redundancy Check):即循环冗余检验码,是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
在K
位信息码后再拼接R
位的校验码,整个编码长度为N
位,因此这种编码也叫(N, K)码
。对于一个给定的(N, K)码
,可以证明存在一个最高次幂为N-K=R
的`多项式 `G(X)`。根据`G(X)`可以生成K位信息的校验码,而`G(X)`叫做这个CRC码的**生成多项式**。校验码的具体生成过程为:假设发送信息用信息多项式`G(X)`表示,将`G(X)`左移`R`位,则可表示成` `
G(X) x Xᴿ `,这样G(x)的右边就会空出R位,这就是校验码的位置。
G(X) x Xᴿ
/ 约定除数P
= 校验码
发送端:
K
位数据。假定要传送的数据是M
;M
后面添加供差错检测的N
位冗余码,然后构成一帧发送出去,一共发送(K+N)
位。冗余码可以通过下面的方法得出:
M
左移N
位,意思就是在M后面补N
个0。现在M就变成了K+N
位;M
**除以(模二除法)**除数P
(事先商定,长度为n+1
);【说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可,实际上等同于异或运算。
模2除法的特点就是:每一位除的结果不影响其它位,即不向上一位借位
模2除法原则:
- 被除数的首位为1,商为1。 就是除数
P
- 被除数的首位为0,商为0。 就是
n+1
位0- 模2除法等同于按位异或,要保证每次除完首位都为0,才能进行右移
- 计算时每次右移一位,当被除数的位数小于除数,其为余数
接收端
总结
k
位信息码之后拼接r
位校验码。应用CRC码的关键是如何从 k 位信息位简便地得到 r 位校验位,以及如何从 k+r 位信息码判断是否出错。CRC码
用约定的生成多项式G(X)
进行模二除法,如果正确则余数为0,如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错为序号之间有唯一对应的关系。Flynn分类法
是从微观上按并行程度分类,此外还有冯泽云分类法
、Handler分类法
、Kuck分类法
。
从宏观上按处理机的数量进行分类:单处理系统、并行处理与多处理系统、分布式系统。
Flynn分类法表格
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流 SISD |
控制部分:1,处 理 器 :1,主存模块:1 | 一个CPU执行一条指令 | 单处理器系统 |
单指令流多数据流 SIMD |
控制部分:1,处 理 器 :N,主存模块:N | 多个CPU以异步的形式执行同一条指令 | 并行处理机、阵列处理机、超级向量处理机 |
多指令流单数据流 MISD |
控制部分:N,处 理 器 :N,主存模块:N | 被证明是不可能,至少不实际 | 理论模型,未见成形产品,有文献称流水线计算机属于此类 |
多指令流多数据流 MIMD |
控制部分:N,处 理 器 :N,主存模块:N | 能够实现作业、任务、指令等全面并行 | 多处理机系统、多计算机 |
指令的基本概念
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如下:
寻址方式
立即寻址方式:操作数直接在指令中,速度快,灵活性差。
直接寻址方式:指令中存放的是操作数的地址
指令中存放的是操作数的内存地址
间接寻址方式:指令中存放了一个地址,这个地址对应的内容是操作数的地址。
指令中存放一个内存地址
,这个地址中存放的是操作数的内存地址
。
现在箱子里面放的是钥匙,钥匙可以打开密码箱,密码箱里面放的还是一把钥匙,这把钥匙才能打开放珠宝的密码箱。 密码箱=内存地址
寄存器寻址方式:寄存器存放操作数
指令中存放的是操作数的寄存器地址
寄存器间接寻址方式:寄存器存放操作数地址
指令中存放一个寄存器地址,这个地址中存放的是操作数的寄存器地址
。
CISC
与RISC
CISC
= (复杂指令集),RISC
= (精简指令集)
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC (复杂指令集) |
数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC (精简指令集) |
数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有 Load /Store 操作内存 |
支持方式少 | 增加通用寄存器;硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级语言 |
CISC
与RISC
比较,分哪些维度? 指令数量、指令使用频率、寻址方式、寄存器、流水线支持、高级语言支持
CISC
:复杂,指令数量多,频率差别大,多寻址RISC
:精简,指令数量少,操作寄存器,单周期,少寻址,多通用寄存器,流水线题目:以下关于 RISC (精简指令系统计算机)技术的叙述中,错误的是 ( )
A、指令长度固定、指令种类尽量少
B、指令功能强大、寻址方式复杂多样
C、增加寄存器数据以减少访存次数
D、用硬布线电路实现指令阶码,快速完成指令译码
答案是 B
流水线
1)流水线-概念
相关参数计算:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率。
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
执行一条指令可分为:取指令、分析指令、执行指令三步骤
若取值、分析、执行各执行1ms,不采用流水线技术,串行执行3条指令的时间是9秒,如下图有很多空闲时间碎片利用起来后,执行3条指令的时间就缩短为5秒。
2)流水线-流水线计算
★ 流水线周期为执行时间最长的一段(步骤)
流水线计算公式为:
题:一条指令的执行过程可以分解为取值、分析和执行散步,在取指时间 = 3Δt、分析时间 = 2Δt、执行时间 = 4Δt 的情况下,若按串行执行,则10条执行全部执行完需要 ( ) Δt;若按流水线的方式执行,流水线周期为 ( ) Δt,则10条指令全部执行完成需要 ( ) Δt ?
- 一条指令执行完成需要 9Δt, 10条执行串行执行完成需要 90Δt
- 若按流水线的方式执行,流水线周期为执行时间最长的步骤,即 4Δt
- 10条指令全部执行完成 ,理论公式计算 : 9Δt + (10 -1)* 4Δt = 9Δt + 9 * 4Δt = 9Δt +36Δt = 45Δt
记住如果是选择题,则先使用 理论公式计算,如果没有45Δt这个选项,再使用实践公式计算匹配。
实践公式计算 :3 * 4Δt + (10 -1)* 4Δt = 12Δt +36Δt = 48Δt
3)流水线-超标量流水线(拓展)
如上图,有两条流水线,那么它的度就是2。它的指令执行时间 = 单条流水线指令执行时间 / 2
。
4)流水线-流水线吞吐率计算
流水线的吞吐率(Thought Put rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。计算流水线最基本的公式如下: $$ TP = 指令条数 / 流水线执行时间 $$ 流水线最大吞吐率: $$ TPₘₐᵪ = lim(n→∞) n / (k+n-1) * t = 1 / t $$
题1:一条指令的执行过程可以分解为取值、分析和执行散步,在取指时间 = 3Δt、分析时间 = 2Δt、执行时间 = 4Δt 的情况下,10条指令的吞吐率个最大吞吐率?
- 上述题中流水线周期为 4Δt,计算出10条指令的执行时间为 9Δt +36Δt = 45Δt
- 10条指令的吞吐率为
10 / 45Δt
- 最大吞吐率为
1 / 4Δt
考点1:层次化存储结构
考点2:Cache
考点3:主存编址计算
1.2.2.1 层次化存储结构
扩展概念
虚拟存储体系是由外存和内存构成。
Cache、内存、外存 组成三级存储结构。
局部性原理是层次化存储结构的支撑
1.2.2.2 层次化存储结构-分类
存储位置:内存、外存
存取方式
工作方式
随机存取存储器RAM,如 内存DRAM,掉电丢失。
RAM 又可分为
- DRAM(动态随机存取存储器),定时刷新,成本稍低
- SRAM(静态随机存取存储器),成本稍高
只读存储器ROM,如 BIOS
PROM:可编程ROM
EPROM:可编程可擦除ROM
EEPROM:电可擦可编程只读存储器。
Flash Memory:闪存
CPU 访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个单元已被访问,则其临近的存储单元有可能还要被访问,该特性被称为 ( )。
A、数据局限性
B、指令局限性
C、空间局限性
D、时间局限性
答案是 C。
虚拟存储体系由()两级存储器构成。
A、主存-辅存
B、寄存器-cache
C、寄存器-主存
D、Cache-主存
答案是 A。
在微机系统中,BIOS(基本输入输出系统)保存在 ( )中。
A、主板上的ROM
B、CPU的寄存器
C、主板上的RAM
D、虚拟存储器
答案是 A。只读存储器。
1.2.2.3 Cache
Cache是连接CPU和内存的桥梁,让计算机能够快速响应用户的操作。
在计算的存储体系中,Cache是访问速度最快的层次。(若有寄存器,则寄存器最快)。
使用Cache改善系统性能的依据是程序的局部性原理。时间局部性(用过的还会被用)和空间局部性(用过的地方,它相连的地方会被用)。
防止抖动。
如果以 h 代表 Cache 的访问命中率, t₁ 表示Cache的周期时间,t₂ 表示主存器周期时间,以读操作为例,使用 “Cache + 主存储器”的系统平均周期为 t₃,则
t₃ = h * t₁ + (1 - h) * t₂
其中 (1-h)又称为失效率(未命中率)。
地址映像是将主存与Cache的存储空间划分为若干大小相同的页(或称为块)。例如,某机的主存容量为 1GB
,划分为 2048 页
,每页512KB
;Cache 容量为 8MB
,划分为16页,每页 512KB
。
直接相联映像
硬件电路较简单,但冲突率很高,但是它的速度很快。
主存的地址格式为(了解)
直接相联映像原理图,计算机只要记录主存区号即可找到对应的主存。
全相联映像
电路难于设计和实现,只适用于小容量的Cache,冲突率较低。
主存的地址格式
原理图,计算机需要记录主存与Cache的对应关系,这个对应关系比较多,Cache容量如果比较大的话,查找起来效率就很低。
组相联映像
直接相联和全相联的折中,冲突率电路复杂度折中。
主存的地址格式
原理图
各种相联映像对比
冲突率 | 电路复杂度 | |
---|---|---|
直接相联映像 | 高 | 简单 |
全相联映像 | 低 | 复杂 |
组相联映像 | 中 | 折中 |
题目
1、以下关于Cache(高速缓冲存储器)的叙述中,不正确的是 ( ) 。
A、Cache的设置扩大了主存的容量
B、Cache的内容是主存部分内容的拷贝
C、Cache的命中率并不随其容量增大线性的提高
D、Cache位于主存与 CPU 之间
答案是 A。
分析:A不正确。C选项,Cache的命中率并不随其容量增大线性的提高,而是越到后期,他的提升越平缓,如下图。
2、在程序执行过程中,高速缓存(Cache)与主存间的地址映射由 ( )
A、操作系统进行管理
B、存储管理软件进行管理
C、程序员自行安排
D、硬件自动完成
答案是 D。
3、主存与 Cache 的地址映射方式中,( ) 方式可以实现主存任意一块装入Cache中任意位置,只有装满才需要替换。
A、全相联
B、直接映射
C、组相联
D、串相联
答案是 A。
1.2.2.4 主存编址计算
主存-编址
上图是8*4的存储器:
存储器可以按照垂直或水平方向扩展
主存-编址计算
▶存储单元
存储单元个数 = 最大地址 - 最小地址 + 1
▶ 编址内容
▶ 总容量 = 存储单元个数 * 编址内容
▶ 根据存储器所要求的容量和选定的存储芯片容量,就可以计算出所需芯片的总数。 $$ 总片数 = 总容量 / 每片容量 $$
题目
1、内存按字节编址,地址从 A0000H 到 CFFFFH 的内存,公有 () 字节,若用存储容量为 64k x 8bit 的存储器芯片构成该内存空间,至少需要 ( ) 片。
A、80K B、96K C、160K D、192K
A、2 B、3 C、5 D、8
答案: D、B
求解过程:
- 求解总容量:
- 由地址范围得到一共有多少个存储单元 : CFFFFH - A0000H + 1 = D0000H - A0000H = 30000H
- 存储单元单位是字节,则有8位
- 得到总容量 = 3 x 16⁴ x 8 = 3 x 2¹⁶ x 8 bit
- 1K = 2¹⁰ x 1字节 = 2¹⁰ x 8bit
- 总容量 =3 x 2⁶ K= 3 * 64K = 192k
- 求解需要几片:
- 每片容量 64k * 8bit = 64k x 1字节
- 192K / 64K = 3
1.2.2.5 磁盘阵列技术
磁盘阵列是由多台磁盘存储器组成的一个快速、大容量、高可靠的外存子系统。目前,常见的RAID如表所示。
RAID级别 | 说明 |
---|---|
RAID-0 | RAID-0是一种不具备容错能力的磁盘阵列。有N个磁盘存储器组成的0级阵列,其平均故障间隔时间(MTBF)是单个磁盘存储器的N分之一,但数据传输率是单个磁盘存储器的N倍 |
RAID-1 | RAID-1是采用镜像容错改善可靠性的一种磁盘阵列 |
RAID-2 | RAID-2是采用海明码进行错误检测的一种磁盘阵列 |
RAID-3 | RAID-3减少了用于检验的磁盘存储器的个数,从而提高了磁盘整列的有效容量。一般只用一个检验盘。 |
RAID-4 | RAID-4是一种可独立地对组内各磁盘进行读写的磁盘阵列,该阵列也只用一个检验盘。 |
RAID-5 | RAID-5是对RAID-4的一种改进,它不设置专门的检验盘。同一个磁盘上既记录数据,也记录检验信息,这就解决了前面多个磁盘争用一个检验盘的问题 |
RAID-6 | RAID-6 磁盘阵列采用两级数据冗余和新的数据编码以解决数据恢复问题,使在两个磁盘出现故障时仍能正常工作。在进行写操作时,RAID-6分别进行两个独立的校验运算,形成两个独立的冗余数据,写入两个不同的磁盘。 |
1.2.3.1 数据传输控制方式
直接程序控制:分为无条件传送和程序查询方式两种。
方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
无条件传送:外设总是准备好的,它可以无条件地随时接收CPU发来的输出数据,也能无条件地随时向CPU提供需要输入的数据。
程序查询方式:通过CPU执行程序来查询外设的状态,判断外设是否准备好。
- 例如,老师是CPU,学生是外设,内存是老师的知识储备,程序查询方式,需要老师在讲课时不停的问每个学生是否听懂了,听懂了就继续讲,没有听懂就重新讲。
中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的相应速度。
就像是老师在上课,如果有学生听不懂,可以打断老师讲课,让老师解答下他不懂的地方。
DMA:DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式
和中断方式都高效
。不需要CPU执行程序指令来传送数据。
DMAC 向总线裁决逻辑提出总线请求;CPU执行完当前
总线周期
即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输。
通道方式
I/O 处理机
从直接程序控制到I/O 处理机,效率是越来越高。其中 鼠标
、键盘
采用的是中断方式来响应;移动硬盘采用DMA方式来响应。
中断处理过程:
CPU无需等待,页不必查询 I/O 状态
当 I/O 系统准备好以后,发出中断请求信号通知CPU;
CPU 接收到中断请求后,保存正在执行程序的线程(保存现场),打断的程序当前位置即为断点。
(通过中断向量表)转入 I/O 的服务的服务程序的执行,完成 I/O 系统的数据交换。
返回被打断的程序继续执行(恢复现场)。
例题
1、计算机系统中常用的输入/输出方式有无条件传送、中断、程序查询和DMA方式等。当采用 ( ) 方式时,不需要CPU执行指令来传送数据。
A.中断 B.程序查询 C. 无条件传送 D.DMA
答案 D。
2、计算机运行过程中,遇到突发事件,要求CPU暂时停止正在运行的程序,转去为突发事件服务,服务完毕,在自动返回原程序继续执行,这个过程称为 ( ),其处理过程中保存现场的目的是 ( )。
A.阻塞 B.中断 C. 动态绑定 D.静态绑定
A.防止丢失数据 B.防止对其他部件造成影响
C. 返回去继续执行原程序 D.为中断处理程序提供数据
答案 B、C
3、CPU是在 () 结束时响应DMA请求的。
A.阻塞 B.中断 C. 动态绑定 D.静态绑定
答案 B
4、CPU 是在 ( ) 结束时响应 DMA 请求的。
A.一条指令执行 B.一段程序 C. 一个时钟周期 D.一个总线周期
答案 D
根据总线所处的位置不同,总线通常被分成三种类型,分别是
➣ 内部总线
➣ 系统总线
➣ 外部总线
而我们只需要了解系统总线即可
一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。 (分时双工)
系统总线分类:
以下关于总线的叙述中,不正确的是 ( ) 。
A、并行总线适合近距离告诉数据传输。
B、串行总线适合长距离数据传输。
C、单总线结构在一个总线上适应使用不同种类的设备,设计简单且性能很高。
D、专用总线在设计上可以与连接设备实现最佳匹配。
分析:并行总线的成本较高,传输效率高,不适合长距离数据传输,所以A是正确的;与并行总线相反,串行总线适合长距离数据传输,B也是正确的;
单总线结构可以在一个总线上适应使用不同种类的设备,是对的,但是它是分时双工,与全双工相比性能不是很高,所以C是错误的;D选项是正确的。
以下
➤平均无故障时间 → (MTTF
) MTTF
=1 ÷ λ,λ为失败率
➤平均故障修复时间 → (MTTR
) MTTR
=1 ÷ μ,μ为修复率
➤平均故障时间 → (MTBF
) MTBF
= MTTR
+ MTTF
➤系统可用性 → MTTF
÷ (MTTR
+ MTTF
) × 100%
➣ 实际应用中,一般
MTTR
都很小,所以通常认为MTBF
≈MTTF
。➣ 可靠性可以用
MTTF
÷ (MTTF
+ 1) 来度量。
▶串联系统
所有的操作是串行的,有一个失败都不行。
串联系统的可靠性公式
R = R₁ × R₂ × ... × Rₙ
串联系统的失败率公式(这是一个近似公式,当每个系统的失败率低的时候才有效)
λ = λ₁ + λ₂ + ... + λₙ
▶并联系统
所有的操作是并行的,有一个成功就可以,所有的操作都失败了才会出现失败的情况。
并联系统的可靠性公式 (先算失败率,然后 1-失败率)
R = 1 - (1-R₁) × (1-R₂) × ... × (1-Rₙ)
并联系统的失败率
并联系统的失败率 = 1 ﹣ 并联系统的可靠性
从整体上看,这是一个串联系统,而每一块内部又有并联模型。我们先算出各个块的并联的可靠性,再相乘即可得到混合系统发可靠性。
1、软件可靠性是指系统在给定的时间间隔内、在给定条件下无失效运行的概率。若 MTTF 和 MTTR 分别表示平均无故障时间和平均修复时间,则公式( ) 可用于计算软件可靠性。
A、MTTF / (1+MTTF )
B、1 / (1+MTTF )
C、MTTR / (1+MTTR )
D、1 / (1+MTTR )
答案是 A,无理论来源,记住这个选项即可。
2、某系统由3个部件构成,每个部件的千小时可靠度为R,该系统的千小时千小时可靠度为 (1 - (1-R)² ) R,则该系统的构成方式是 ( )
A、3个部件串联
B、3个部件并联
C、前2个部件并联后与第三个部件串联
D、第1个部件与后两个部件并联构成的子系统串联
答案是 C。
▶字长和数据通路宽度
字长为32位,则计算机内存为 2³²,即4G内存;字长为64位,则计算机内存为 2⁶⁴,即8G内存;
我们平常所属的32位计算机、64位计算机也就是字长为32、64。
▶ 主存容量和存取速度
▶主频与CPU时钟周期
现在计算机的主频一般为2.4GHZ,它表示1秒能发出2.4G个脉冲,它的时钟周期为 1/2.4G。 $$ 时钟周期 = 1/主频 $$ ▶运算速度
与CPI、IPC 相关
▶CPI与IPC
▶吞吐量与吞吐率
时间范围内,可以执行指令的数量为吞吐量;单位时间范围内,可以执行指令的数量为吞吐率。
▶MIPS与MFLOPS
MIPS :百万条指令每秒 $$ MIPS = 指令条数/(执行时间 × 10⁶)= 主频 / (CPI × 10⁶) $$ MFLOPS:每秒百万个浮点数操作 $$ MFLOPS = 浮点数操作次数/(执行时间 × 10⁶) $$ ▶响应时间(RT)与完成时间(TAT)
响应时间:从用户发出请求,到用户收到响应的时间。
完成时间:完成操作的时间。
▶兼容性
一般是指软件是否兼容各个系统,软件一般都是向下兼容。
1、软件质量属性中,( )是指每分钟可以处理多少个请求。
A、响应时间 B、吞吐量 C、负载 D、容量
答案 B
2、某计算机系统的 CPU 主频为 2.8GHZ 。某应用程序包括3类指令,各类指令的 CPI (每条指令所需要的时钟周期数)及指令比例如下表所示。执行该应用程序时的平均 CPI 为 ( );运算速度用MIPS表示,约为 ( )。
指令A 指令B 指令C 比例 35% 45% 20% CPI 4 2 6 A、25 B、3 C、3.5 D、4
A、700 B、800 C、930 D、1100
分析:
平均CPI = (4 × 35 + 2 × 45 + 6 × 20) ÷ 100 = 3.5,所以第一个项选择 C
MIPS = 指令条数/(执行时间 × 10⁶)= 主频 / (CPI × 10⁶), 即 MIPS = 2.8G ÷ (3.5 × 10⁶)
G = 10³ M = 10⁶K = 10⁹
MIPS = 2.8 × 10⁹ ÷ (3.5 × 10⁶) = 2.8 × 10³ / 3.5 = 800
第二个选项选择 B
本章节练习题在《软件设计师考试冲刺(习题与解答)》的第六章。
做题时犹豫和做错的题目记录
▶题1:
多计算机系统属于体系结构
A、SISD B、SIMD C、MISD D、MIMD
答案是 D
分析:本题考察的是Flynn分类法。Flynn分类法是根据指令流、数据流和多倍性三方面进行分类的。具体见
1.2.1
章节的表格,多计算机属于MIMD
多指令流多数据流。
▶题2:
____ 用于将显卡、声卡、网卡和硬盘控制器等高速外围设备直接挂在CPU总线上。
A、STD总线 B、交叉开关 C、PCI总线 D、Centronic总线
答案是 C
分析:
STD总线是一种规模小、面向工业控制的8位系统总线,支持多种处理器系统。1978年 Pro-Log 公司将STD总线作为工业标准推出,随后被批准为国际标准 IEEE 961,是一种很老的总线。按 STD总线 总线设计的模块式工控机,采用小板结构,每种模板功能单一,有 CPU 模板、内存模板、键盘显示模板、串行接口模板、串行接口模板、A/D转换模板、D/A转换模板等,按扩展要求可选用其中几块模板,并支持多个CPU模板,非常灵活、方便、可靠。
交叉开关将各个CPU连接成动态互连网络,组成多处理机系统。
PCI(Peripheral Component Interconnect,外部组件互连)总线用于将显卡、声卡、网卡和硬盘控制器等高速外围设备直接挂在 CPU 总线上,其负责CPU和外围设备的通信。
集群系统是一种多处理机系统。集群系统一般使用局域网将一组高性能工作或者高档PC按一定结构连接起来,并在并行程序设计及可视化人机交互集成开发环境支持下,统一调度、协同处理,实现高效并行处理。
我们知道,通过插在PCI插槽上的网卡可以组件局域网,所以通过PCI总线是可以组件多处理机系统。
Centronic总线属于外部总线,它的接口是一张打印机并行接口标准,用于将计算机与打印机等外设连接起来。
▶题4:
两个同符号的数相加或异符号的数相减,所得结果的符号位SF和进位标志CF进行 ____ 运算为1是,表示运算的结果产生溢出。
A、与 B、或 C、与非 D、异或
答案选 D
分析:
解答这题,首先需要清楚什么是溢出。溢出是指运算结果超出机器数的表示范围。从这个概念可以了解到,两个异符号的数相加不会产生溢出,仅两个同符号的数相加时才有可能产生溢出,两个整数相加而绝对值超出允许的表示范围时称为正溢,两个负数相加而绝对值超出允许的表示范围时称为负溢。一旦溢出,溢出的部分将丢失,留下来的结果将不正确。如果只有一个符号位,溢出将时结果的符号位产生错乱。因此,一般计算机中都设置了溢出判断逻辑,如果产生溢出,将停机并显示"溢出"标志。
现在来看几个典型的例子,从中可以总结出判断溢出的方法。其实在平时的学习当中,大家也应该尽可能的自己总结规律。
在下面的例题中,二进制数首位为符号位,后面4位位数据位。采用补码运算。
例1:
3+6=9
0 0011 + 0 0110 = 0 1001
例2:
8+9=17
0 1000 + 0 1001 = 1 0001(正溢)
例3:
8 + (-5) = 3
0 1000 + 1 1011 = 0 0011 ,注-5的补码为 1 1011
例4:
(-9) + (-8) = -17
1 0111 + 1 1000 = 0 1111(负溢)
看完上面的4个运算式,可以开始总结规律了。由于上面的计算,是对两个4位的带符号二进制数进行运算,运算结果仍是一个4位带符号的二进制数。所以其运算结果的范围应是 -16~+15,非常明显,上面的例2和例4的结果溢出了。接下来,对这个例题进行详细分析。为了便于分析,令两个操作数的符号位分别为 S̶ₐ、Sₑ。结果的符号位为 Sₓ。符号位直接参与运算,所产生的符号位的进行为 Cₓ。将符号位之后的A1和B1称为最高有效位,它们产生的进位为C。在例3中,C=1,但并未溢出,所以进位不等于溢出,不能简单地根据单个进位信号区判断有无溢出,而应当从几个相关信号之间的关联去进行溢出判断。
根据这些信号的关联,可以推断出多种判断溢出的关系。
溢出判断方法1:
- 第一种情况: 当操作数符号位 S̶ₐ、Sₑ 都为0,且结果的符号位Sₓ为1时,产生溢出。符号位 S̶ₐ、Sₑ 都为0表示两个操作数都是整数,所以这种情况被称为正溢。
- 第一种情况: 当操作数符号位 S̶ₐ、Sₑ 都为1,且结果的符号位Sₓ为0时,产生溢出。符号位 S̶ₐ、Sₑ 都为0表示两个操作数都是整数,所以这种情况被称为负溢。
溢出判断方法2:
溢出 = Cₓ ⊕ C。
这种方法是从两种进位信号之间的关联角度出发, Cₓ 为符号运算后产生的进位,C为最高有效数位产生的进位。分析前面几个例题会发现:产生正溢时,由于操作数较大,因而C=1,但由于两个整数的符号位都为0, Cₓ =0;产生负溢时,由于操作数较小,因而C=0,但由于两个整数的符号位都为1, Cₓ =1;其他未溢出情况,Cₓ 与 C 都相同,所以得到第二种判断逻辑,即当Cₓ与C不同时表明溢出。这是在单符号位补码中应用较多的判断逻辑。
溢出判断方法3:
单符号位的信息量只能表示两种可能:数位正或为负,如果产生溢出,就会使符号位的含义产生混乱。将符号位扩充为两位,信息量扩大,就能判断是否有溢出及结果的正确符号。同样以前面的几个算式为例。
正数的补码 00,xxxx ;负数的补码 11,xxxx。
例5:
3 + 6 = 9
00 0011
+00 0110
00 1001
例6:
8 + 9 = 17
00 1000
+00 1001
01 0001(正溢)
例7:
8 + (-5) = 3
00 1000
+11 1011
00 0011
例8:
(-9) + (-8) = -17
11 0111
+11 1000
10 1111(负溢)
通过上面的例子,可以定义符号位的含义为:
- 00——结果为正,无溢出。
- 01——结果正溢。
- 10——结果负溢。
- 11——结果位负,无溢出。
分析到这里,我们发现此题最适合最后一种方法来解答。在双符号位中,高位就是符号位的进位 Cₓ ;而低位就是结果的符号位 Sₓ。可以看到,当Cₓ与Sₓ不同时,表示溢出;而相同时,表示操作正常。能达到此效果的运算为“异或”运算,所以此题选择 D。
▶题5:
32位计算机中的32是指该计算机____。
A、能同时处理32位二进制数 B、能同时处理32位十进制数 C、具有32根地址总线 D、运算精度可达小数点后32位
答案是 A。
分析:32位处理器的计算机是指此类计算机能同时处理32位二进制数,而64位处理器的计算机是指此类计算机能同时处理64位二进制数。64位相对于32位来说:
- 设计初衷不同,64位二进制数主要用于满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求。
- 要求配置不同:64位要能很好的发挥作用,需要配置64位操作系统及64位的软件才能发挥最佳性能。
- 运算速度不同:64位处理器一次可提取64位数据,比32位高了一倍,理论上性能会相应提升一倍。
▶题7:
下面关于局部性原理的描述正确的是____。
A、程序代码顺序执行 B、程序按照非一致性方式访问内存 C、程序连续访问许多变量 D、程序在一段时间内访问相对较小的一段地址空间。
答案是 D。
分析:程序的局部性原理,即程序的地址访问流有很强的时序相关性,未来的访问模式与最近已发生的访问模式相近。虚拟内存操作是基于程序执行的局部性原理,程序的局部性包括时间局部性和空间局部性等,如循环程序。在这里指程序在一段实践内访问相对较小的一段地址空间。
▶题8:
以下关于 I/O 设备与主机交换数据的叙述中,错误的是____。
A、中断方式下,CPU需要执行程序来实现数据传送。
B、按交换数据的效率从低到高:程序控制方式、中断方式、DMA方式
C、中断方式和DMA方式相比,快速 I/O 设备更适合采用中断方式传递数据
D、若同时接到DMA请求和中断请求,CPU优先响应DMA请求
答案 C
分析:常用的IO设备和CPU之间数据传送控制方式有4种,分别为程序直接控制方式、中断控制方式、DMA方式和通道方式。
程序直接控制方式和中断控制方式都只适用于简单、外设很少的计算机系统,因为程序直接控制方式耗费大量的CPU时间,而且无法检测发现设备或其他硬件产生的错误,设备与CPU、设备与设备只能串行工作。中断控制方式虽然在某种程度上解决了上述问题,但由于中断次数多,因而CPU仍需要花费较多的时间处理中断,而且能够并行操作的设备台数也受到中断处理时间的限制,中断次数增多也导致数据丢失。DMA方式和通道方式较好的解决了上述问题。者两种方式采用了外设和内存直接交换数据的方式。只有在一段数据传送结束时,才发出中断信号要求CPU做善后处理,从而大大减少了CPU的工作负担。DMA与通道控制方式的区别是,DMA要求CPU执行设备驱动程序来启动设备,给出存放数据的内存起始地址以及操作方式和传送字节长度等。而通道方式则是在CPU发出I/O启动命令之后,由通道来完成这些工作。
▶题9:
以下关于 CISC/RISC 计算机的叙述中,正确的是____。
A、虽然RISC机器指令数量比CISC机器少,但功能更强大。
B、RISC机器指令使用频度比CISC机器更均衡。
C、RISC采用硬布线逻辑控制;CISC 采用微程序控制技术。
D、RISC 机器指令系统中,各类指令都可以操作内存。
答案是 C。
分析:CISC——复杂指令集;RISC——精简指令集。
指令系统类型 指令 寻址方式 实现方式 其他 CISC
(复杂指令集)数量多,使用频率差别大,可边长格式 支持多种 微程序控制技术(微码) 研制周期长 RISC
(精简指令集)数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有 Load
/Store
操作内存支持方式少 增加通用寄存器;硬布线逻辑控制为主,适合采用流水线 优化编译,有效支持高级语言
▶题11:
下列描述中,正确的是____。
A、采用原码表示法,可以保证运算过程与手工运算方式保持一致。
B、采用补码表示法,其目的是为了简化计算机运算部件的设计
C、整数的原码与补码是不一样的
D、采用补码表示法,可以提高数据的运算精度
答案是B
分析:本题主要考查对数据不同编码方式的理解,最为常见数据编码方式有原码、反码、补码、移码。其中正数的原码、反码、补码相同,负数则不同。补码和移码的正负零是同一种编码,原码、反码则不是。
另外各类运算都可以采用补码进行,特别是对于有符号数的运算。在计算机中设计补码的目的是为了使符号位能与有效值部分一起参加运算,从而简化运算规则,使运算部件的设计更简单;二是为了使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。因此在计算机中常采用补码来表示和运算数据,原因是采用补码可以简化计算机运算部件的设计。
▶题18:
某计算机字长是为16位,指令有双操作数、单操作数和无操作数3中格式,每个操作数字段均用6位二进制数表示,该指令系统共有m条(m<16)双操作数指令,并存在无操作数指令。若采用扩展操作码技术,那么最多还可设计出____ 条单操作数指令。
A、2⁶ B、(2⁴-m)×2⁶ - 1 C、(2⁴-m)×2⁶ D、(2⁴-m)×(2⁶-1)
答案B
分析:一条指令包括两部分:操作码和操作数。操作码用来说明指令的功能及性质;操作码用来指明操作码实施操作的对象。命题中指令字长16位,也就是说,一条指令最长是16位:对于双操作数而言,两个长度为6位的操作数共占据12位,剩余4位用作操作码,可以设计出 2⁴=16条这样的双操作数指令。现系统中已设计m条双操作数指令,那么剩余 2⁴-m条可以用来设计但操作的操作码。对于单操作数指令而言,它的操作码长度为16-6=10位。由于题目要求采用扩展操作码技术,那么单操作数指令在原来的双操作数指令的4位操作码基础上可扩展 10-4=6位,因此最多可设计出 (2⁴-m)×2⁶ - 1。减去1的原因是"存在无操作数指令",至少留下一个用来扩展成无操作数指令。
例如,设计出了3条双指令操作数,操作码分别为 0000、0001、0011,那么剩余的 0100、0101、...、1110、1111共13个可以作为单操作数指令码的一部分。由于能扩展6位,那么这13个中每一个都可以再扩展出2⁶个如 0100可扩展成 0100 000000、0100 000001、0100 000010、...、0100 111111。
▶题19:
内存容量为16GB,字长为64位,则____。
A、地址总线和数据总线的宽度都为64
B、地址总线的宽度都为34,数据总线的宽度都为64
C、地址总线的宽度都为34,数据总线的宽度都为8
D、地址总线的宽度都为64,数据总线的宽度都为8
答案 B
分析:字长是指在同一时间中 CPU 处理二进制的位数。
数据总线是用于在计算机中传送数据的总线,它可以把 CPU 数据传送到存储器或输入输出接口等其他部件,也可以将其他部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。
地址总线是传送地址信息的总线,根据地址总线可以确定内存容量的大小,如 34 位的地址总线可以允许 2 的 34次方的内存容量,即16GB的内存容量。
1K=2¹⁰;1M=2²⁰;1G=2³⁰
▶题23:
高速缓存 Cache 与主存间采用全相连地址映像方式,高速缓存的容量为 4MB,分为 4 块,每块 1MB,主存容量为 256 MB。若主存读写时间为 30 ns,高速缓存读写时间为 3 ns,平均读写时间为 3.54 ns,则改高速缓存的命中率为____%。若地址变换表如下表,则主存地址为 8888888H,高速缓存地址为____H。
0 38H 1 88H 2 59H 3 67H A、90 B、95 C、98 D、99
A、488888 B、388888 C、288888 D、188888
答案 C D
分析:
本题是一个简单的计算题。我们假设高速缓存的命中率为 t。则有
30x(1-t) + 3*t = 3.54
解得 r = 0.98。所以命中率为 98%
由于高速缓存的容量为 4 MB,分为 4块。所以把高速缓存的22位地址长度(4 MB = 2²²Bit)划分为22块,块号为2位,而块内地址为20位。主存容量为256MB,所以主存地址长度为28位。这样主存的块号为8位,块内地址为20位。此时先将主存地址8888 888H化为二进制数 1000 1000 1000 1000 1000 1000 10000,其中斜体为块号。查表得到对应的块号为为1H,所以高速缓存地址为 188888H。
上表中左边为 Cache块号,右边为内存块号。
▶题24:
某公司拟配置存储容量不少于9TB的磁盘阵列用于存储数据。假设只能购买每块存储容量为2TB的磁盘,以下说法正确的是____。
A、如果配置 RAID5 的磁盘阵列,需要购买6块磁盘。在使用过程中当任何一块磁盘出现故障时,数据的完整性不受影响。
B、如果配置 RAID0 的磁盘阵列,需要购买5块磁盘。在使用过程中当任何一块磁盘出现故障时,数据的完整性不受影响。
C、如果配置 RAID0+1 的磁盘阵列,需要购买7块磁盘。在使用过程中当任何两块磁盘出现故障时,数据的完整性不受影响。
D、如果配置 RAID1+0 的磁盘阵列,需要购买9块磁盘。在使用过程中当任何两块磁盘出现故障时,数据的完整性不受影响。
答案 A
分析:
- RAID 0 又称为 Stripe 或 Striping,代表了所有 RAID 级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的宽度,显著提高磁盘整体存取性能。由此可知 B 的说法是错误的。
- RAID 1 又称为 Mirror或Mirroring,它的宗旨是最大限度地保证用户数据的可用性和可修复性。RAID 1 的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份,在所有 RAID 级别中, RAID 1提供最高的数据安全保障。同样,由于数据百分之百的备份,备份数据占用了总存储空间的一半,因而,Mirror的磁盘空间利用率低,存储成本高。Mirror 虽不能提高存储性能,但由于其具有的高数据安全性,使用尤其适用于存放重要的数据,如服务器和数据库存储等领域。
- RAID0+1 是 RAID 0 和 RAID 1的组合形式,即先做 RAID 0,再做 RAID 1,它是存储性能和数据安全兼顾的方案。需要购买10块磁盘。由此可知C的说法是错误的。
- RAID1+0 是 RAID 1 和 RAID 0的组合形式,即先做 RAID 1,再做 RAID 0,它是存储性能和数据安全兼顾的方案。需要购买10块磁盘。由此可知D的说法是错误的。
- RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5不对存储数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成 RAID 5 的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当 RAID 5 的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5 可以认为是 RAID 0 和 RAID 1的折中方案。RAID 5 可以为系统提供数据安全保障,但保障程度比 RAID 1低而磁盘利用率比 RAID 1高。RAID 5具有和RAID 0相似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比 RAID 0稍慢但保障程度比RAID 0要高。由此可知 A 的说法是正确的。
▶题28:
存储器中常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种,____的存取时间与存储位置无关。
A、随机存取和顺序存取 B、顺序存取和相联存取 C、随机存取和直接存取 D、随机存取和相联存取
答案 D
分析:
- 存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种.
- 顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行,磁带存储器采用顺序存取的方式,显然这种存取方式的数据存取时间与数据的存储位置有关。
- 直接存取:与顺序存取相似,直接存取也是使用一个共享的读写装置对所有的数据进行访问。但是每个数据块都有唯一的地址标识读写装置可直接移动到目的数据块所在位置进行访问。但是对于数据块内的内容,采用的是顺序存取的,因此对数据的存取时间也是与存储位置有关。
- 随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
- 相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写取决于其内容而不是地址。与普通的存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。
综上所述,可知本题的答案选 D。