第一章 计算机组成原理
本部分要求掌握计算机方面的基础知识,包括计算机的发展、计算的系统组成、基本组成和工 作原理、计算机的数制数据表示以及运算校验、指令系统以及计算机系统的安全等基础性的知识。 内容多而且复杂,尤其是有关计算机硬件方面的内容,很细而且灵活性不高,知识量相当大,掌握 这部分一定要多下功夫,学会取舍、把握重点、抓住要害。
1.1 考试大纲及历年考题知识点
1.1.1 大纲要求
考试要求:
1 掌握数据表示、算术和逻辑运算;
2 掌握计算机体系结构以及各主要部件的性能和基本工作原理 考试范围
1 计算机科学基础
1.1 数制及其转换 二进制、十进制和十六进制等常用制数制及其相互转换
1.2 数据的表示
? 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)
? 非数值表示(字符和汉字表示、声音表示、图像表示)
? 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)
1.3 算术运算和逻辑运算
? 计算机中的二进制数运算方法
? 逻辑代数的基本运算和逻辑表达式的化简
2.计算机系统知识
2.1 计算机系统的组成、体系结构分类及特性
? CPU 和存储器的组成、性能和基本工作原理
? 常用 I/O 设备、通信设备的性能,以及基本工作原理
? I/O 接口的功能、类型和特性
? I/O 控制方式(中断系统、DMA、I/O 处理机方式)
? CISC/RISC,流水线操作,多处理机,并行处理
2.2 存储系统
? 主存-Cache 存储系统的工作原理
? 虚拟存储器基本工作原理,多级存储体系的性能价格
? RAID 类型和特性
2.3 安全性、可靠性与系统性能评测基础知识
? 诊断与容错
? 系统可靠性分析评价
? 计算机系统性能评测方式
1.2 计算机科学基础
1.2.1 数制及其转换
1、 R 进制转换成十进制的方法 按权展开法:先写成多项式,然后计算十进制结果. 举例:
? (1101.01)2=1×2^3+1×2^2+0×2^1+1×2^0+ 0×2^-1+1×2^-2 =8+4+1+0.25=13.25
? (237)8=2×8^2+3×8^1+7×8^0 =128+24+7=159
? (10D)16=1×16^2+13×16^0=256+13=269
2、 十进制转换成二进制方法 一般分为两个步骤:
? 整数部分的转换
? 除 2 取余法(基数除法)
? 小数部分的转换
? 乘 2 取整法(基数乘法)
例:求(75.453)10转二进制(取4位小数)
2|37 1
………….
0 1
把余数写下来:由下至上写得1001011
小数部分: 0.453
× 2
0.906 0
× 2
1.812 1
× 2
1.624 1
× 2
规则:进位留,乘积略。由上至下写得:0111(取4位小数)
最后结果:1001011.0111 (10进制转8,16进制类似)
3、 其它进制之间的直接转换法
例:二转8,16进制 (1000100.1011)2=(104.54)8=(44.B)16
1.2.2 数据的表示
机器数:计算机中表示的带符号的二进制数。把符号位和数字位一起编码来表示相应的数的各 种表示方法。
机器数有四种表示方法即原码、补码、反码和移码。
【概念:定点数】
1.原码表示法 原码表示法用“0”表示正号,用“1”表示负号,
有效值部分用二进制的绝对值表示。
(1)0的表示:对于 0,原码机器中往往有“+0”、“-0”之分,故有两种形式:
[+0]原=0000...0
[-0]原=1000...0
(2)表示范围:
原码小数的表示范围: -1<X<1
原码整数的表示范围:
? 最大值 : 2^n-1【n指除符号位外的二进制位数】
? 最小值:-(2^n-1)
2.补码表示法
(1)0的表示:对于 0,[+0]补=[-0]补=00000 注意,0 的补码表示只有一种形式。
(2)表示范围:
定点小数: -1<=X<1
定点整数: -2^n<= X < 2^n
(3)原码与补码之间的转换:知原码求补码
正数 [X]补=[X]原
负数 符号除外,各位取反,末位加 1
例:X= -01001001
[X]原=11001001 ,
[X]补=10110110+1=10110111
3 反码表示法
正数的表示与原码相同,负数是保持原码符号位不变,数值位是将原码的数值按位取反
(1)0的表示:
[+0]反=00000000;
[-0]反=11111111
(2)表示范围同原码
4.移码表示法
补码的符号位取反就得到移码
(1)0的表示:100000…
(2)例:X1 = 0101 0101
[X1]补=0101 0101
[X1]移=1101 0101
X2 = -0101 0101
[X2]补=1010 1011
[X2]移=0010 1011
码制表示法小结
? [X]原、[X]反 、[X]补用“0”表示正号,用“1”表示负号; [X]移用“1”表示正号,用“0”表示 负号。
? 如果 X 为正数,则[X]原=[X]反 =[X] 补。
? 如果 X 为 0,则 [X] 补 、[X]移有唯一编码, [X]原、[X]反 有两种编码。
? 移码与补码的形式相同,只是符号位相反。
例:若码值FFH是一个整数的原码表示,则该整数的真值为__(45)__:若码值FFH是一个整数的补码表示,则该整数的真值为__(46)__。
(45)A.127 B.0 C.-127 D.-1
(46)A.127 B.0 C.-127 D.-1
C D 把FFH化为二进制:11111111 原码很简单,补码看符号位为1,后7为取反+1可得真值为1,再加上符号位得-1
1.2.3 汉字的表示方法
1.汉字的输入编码 数字编码:常用的是国标区位码,用数字串代表一个汉字输入。
拼音码:拼音码是以汉字拼音为基础的输入方法。 字形编码:字形编码是用汉字的形状来进行的编码。
2.汉字内码 汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。
英文字符的机内代码是七位的 ASCII 码,当用一个字节表示时,最高位为“0”。为了与英文字符相互区别,汉字机内代码中两个字节的最高位均规定为“1”。
3.汉字字模码 字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。
根据汉字输出的要求不同,点阵的多少也不同。字模点阵的信息量很大,所占存储空间也很大。 因此字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵代码。当 显示输出或打印输出时才检索字库,输出字模点阵,得到字形。
注意:汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同 用途的编码,不要混为一谈。
例:已知汉字“大”的国标码为3473H,其机内码为__(2)__。
(2)A. 4483H B. 5493H C. B4F3H D.74B3H
解:3473H转二进制(占两个字节),把每字节的最高位置“1”,再转回16进制即得机内码。
1.2.4 校验码
元件故障、噪声干扰等各种因素常常导致计算机在处理信息过程中会出现错误。 为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。 通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。
1、 奇偶校验
设x=(x0x1…xn-1)是一个 n 位字,则奇校验位C定义为
C=x0⊕x1⊕…⊕xn-1 (2.15)
式中⊕代表按位加,表明只有当x中包含有奇数个 1 时,才使 C=1,即 C=0。
偶校验位C定义为 C=x0⊕x1⊕…⊕xn-1 (2.16) 即x中包含偶数个 1 时,才使 C=0。
假设一个字x从部件 A 传送到部件 B。在源点 A,校验位 C 可用上面公式算出来,并合在一起将(x0x1…xn-1C)送到 B。假设在 B 点真正接收到的是x=(x'0x'1…x'n-1C '),然后计算
F=x'0⊕x'1⊕…⊕x'n-1⊕C '
若 F=1,意味着收到的信息有错,若 F=0,表明x字传送正确。奇偶校验可提供单个错误检 测,但无法检测多个错误,更无法识别错误信息的位置。
[例]已知下表中左面一栏有 5 个字节的数据。请分别用奇校验和偶校验进行编码,填在中间一栏和 右面一栏。
[解:] 假定最低一位为校验位,其余高 8 位为数据位,列表如下。从中看出,校验位的 值取 0 还是取 1, 是由数据位中 1 的个数决定的。
数 据 偶校验编码 C 奇校验编码 C
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
1.2.5 数据格式
计算机中常用的数据表示格式有两种: 一是定点格式,二是浮点格式 定点格式容许的数值范围有限,但要求的处理硬件比较简单。 浮点格式容许的数值范围很大,但要求的处理硬件比较复杂。
1、定点表示法定点格式:小数点位置固定的数。计算机中的定点数一般只采用纯整数或者纯小数形式,分别称为 定点整数和定点小数。
2、浮点表示法浮点格式:小数点位置不固定的数。把一个数的有效数字和数的表示范围在计算机中分别表示。
(1)浮点数格式 一个任意进制的数 N 可以写成:
N = RE * M
M:浮点数的尾数(mantissa),一般用定点小数表示
E:浮点数的阶码(exponent),一般用定点整数表示
R:基数(radix),一般为 2,8 或 16。
? 计算机中,常用补码进行加减运算
? 补码可将减法变加法进行运算
? 补码运算特点:符号位数值位一同运算
? 定点补码运算在加法运算时的基本规则:
? [X]补+[Y]补 = [X+Y]补(两个补码的和等于和的补码)
? 定点补码运算在减法运算时的基本规则: [X-Y]补=[X]补+[-Y]补
2、 补码加法 负数用补码表示后,可以和正数一样来处理。这样,运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器。
补码加法的公式是
[x]补+[y]补=[x+y]补 (mod 2)
补码加法的特点:一是符号位要作为数的一部分一起参加运算,二是要在模 2 的意义下相加,即超过2 的进位要丢掉。
[例] x=0.1001, y=0.0101,求x+y。
[解:]
[x]补=0.1001, [y]补=0.0101
[x]补 0.1001
+[y]补 0.0101
[x+y]补 0.1110
所以 x+y=+0.1110
3、 补码减法: 数用补码表示时,减法运算的公式为
[x-y]补=[x]补-[y]补=[x]补+[-y]补
从[y]补求[-y]补的法则是:对[y]补包括符号位“求反且最末位加 1”,即可得到[-y]补。
[例] 已知x1=-0.1110,x2=+0.1101,求:[x1]补,[-x1]补,[x2]补,[-x2]补。
[解:]
[x1]补=1.0010
[-x1]补=0.1110
[x2]补=0.1101
[-x2]补=1.0011
4、 溢出概念与检测方法
在定点小数机器中,数的表示范围为|x|<1. 在运算过程中如出现大于 1 的现象,称为“溢出”。在定点机中,正常情况下溢出是不允许 的。
[例] x=+0.1011, y=+0.1001,求x+y。
[解:]
[x]补=0.1011 [y]补=0.1001
[x]补 0.1011
+ [y]补 0.1001
[x+y]补 1.0100
两个正数相加的结果成为负数,这显然是错误的。
[例] x=-0.1101, y=-0.1011,求x+y。
[解:]
[x]补=1.0011 [y]补=1.0101
[x]补 1.0011
+ [y]补 1.0101
[x+y]补 0.1000
两个负数相加的结果成为正数,这同样是错误的。 上溢:两个正数相加,结果大于机器所能表示的最大正数。
下溢:两个负数相加,结果小于机器所能表示的最小负数。
溢出检测方法:双符号位法和单符号位法。
双符号位法:运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为 V=Sf1⊕Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实现。
单符号位法:如上两例,当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。故溢出逻辑表达式为V=Cf⊕Co,其中Cf为符号位产生的进位,Co为最高有效位产生的进位。此逻辑表达式也可用异或门实现。
5、 逻辑运算 计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。 计算机中的逻辑运算,主要是指逻辑非、逻辑加、逻辑乘、逻辑异四种基本运算。
1)逻辑非运算
逻辑非也称求反。对某数进行逻辑非运算,就是按位求它的反,常用变量上方加一横来表示。
2)逻辑加运算
对两个数进行逻辑加,就是按位求它们的“或”,所以逻辑加又称逻辑或,常用记号“V”或“+”来表示。
[例] x=10100001,y=10011011, 求x∨y。
[解:]
1 0 1 0 0 0 0 1 x
∨ 1 0 0 1 1 0 1 1 y
1 0 1 1 1 0 1 1 z
即 x∨y = 10111011
3)逻辑乘运算
对两数进行逻辑乘,就是按位求它们的“与”,所以逻辑乘又称“逻辑与”,常用记号“∧”或“×”来 表示。
[例] x=10111001,y=11110011,求x∧y。
[解:]
1 0 1 1 1 0 0 1 x
∧ 1 1 1 1 0 0 1 1 y
1 0 1 1 0 0 0 1 z
即 x∧y = 10110001
4)逻辑异运算
对两数进行异就是按位求它们的模 2 和,所以逻辑异又称“按位加”,常用记号“⊕”表示。
[例] x=10101011,y=11001100,求x⊕y。
[解:]
1 0 1 0 1 0 1 1 x
⊕ 1 1 0 0 1 1 0 0 y
0 1 1 0 0 1 1 1 z
即 x⊕y = 01100111
6、 浮点加法、减法运算
设有两个浮点数x和y,它们分别为
x=2Ex. Mx
y=2Ey?My
其中 Ex和 Ey分别为数x和y的阶码,Mx和 My为数x和y的尾数
步骤:对阶-求和差-规格化-舍入
1、对阶:即对齐两数的小数点使两数的阶码相等
对阶原则:小阶向大阶看齐即小阶的尾数每右移一位,阶码+1。
2、求和/差:对阶之后进行尾数运算。(尾数按补码加减运算规则运算)
3、规格化:
当浮点数大于0时,其规格化尾数应为:M=0.1xxx…x -2n-1≤ E ≤ 2n-1 –1
当浮点数为0时,其规格化尾数应为: M=0.00…0 E=0
当浮点数小于0时,其规格化尾数应为:M=1.0xxx…x -2n-1≤ E ≤ 2n-1 –1
补码尾数求和的结果,可能出现下列6种情况:
[M]补=00.1…… ①
[M]补=11.0…… ②
[M]补=00.0…… ③
[M]补=11.1…… ④
[M]补=10. …… ⑤
[M]补=01. …… ⑥
其中① ②符合规格化数的定义,是规格化数 ③ ④需使尾数左移、阶码减1,直至满足规格化要求称为左规 ⑤ ⑥在浮点运算中表明尾数之和绝对值大于1, 将尾数右移实现规格化称为右规
若两浮点数求和后运算结果为: [A+B]浮=0011 11.1101 非规格化浮点数,应左规,结果为: [A+B]浮=0001 11.0100
若两浮点数求和后运算结果为: [C+D]浮=0101 01.0010 非规格化浮点数,应右规,结果为: [C+D]浮=0110 00.1001
4、舍入操作
①“0舍1入”法:即移掉的最高位为1时则在尾数末位加1;为0时则舍去移掉的数值。 ②末位恒1法:即右移时,丢掉移出的原低位上的值并将结果的最低位置1。
5、阶码溢出判断
阶码无溢出 加减运算正常结束
阶码下溢 运算结果置为机器0
阶码上溢 置溢出标志
[例] 设x=2010×0.11011011,y=2100×(-0.10101100),求x+y。
[解:]
假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为
[x]浮=00 010, 0.11011011
[y]浮=00 100, 1.01010100
<1> 求阶差并对阶
△E=Ex-Ey=[Ex]补+[-Ey]补=00 010+11 100=11 110
(11 110补码转原码 若是负数,则数值位取反+1得原码:11 010 故下一句说是-2)
即△E为-2,x的阶码小,应使Mx右移两位,Ex加 2,
[x]浮=00 100,0.00110110(11)
其中(11)表示Mx右移 2 位后移出的最低两位数。
<2> 尾数求和
0. 0 0 1 1 0 1 1 0 (11)
+ 1. 0 1 0 1 0 1 0 0
────────────────
1. 1 0 0 0 1 0 1 0 (11)
<3>规格化处理
尾数运算结果的符号位与最高数值位同值,应执行左规处理,结果为1.00010101(10),阶码为00 011。
<4>舍入处理
采用 0 舍 1 入法处理,则有
1. 0 0 0 1 0 1 0 1
+ 1
────────────────
1. 0 0 0 1 0 1 1 0
<5>判溢出
阶码符号位为 00,不溢出,故得最终结果为
x+y=2011×(-0.11101010)
1.3 计算机硬件系统结构
1.3.1 计算机的硬件组成
计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部件组成。
1.3.2 计算机硬件的典型结构
1、 单总线结构
2、以 CPU 为中心的双总线组成结构
3、以存储器为中心的双总线组成结构
1.4 计算机基本工作原理
1.4.1 中央处理机 CPU
1、 CPU 的组成
(1) 运算器 运算器是对数据进行加工处理的部件,它主要完成算术运算和逻辑运算,完成对数据的加工与处理。不同的计算机,运算器的结构也不同,但最基本的结构都是由算术/逻辑运算单元(ALU)、 累加器 ACC、寄存器组、多路转换器和数据总线等逻辑部件组成。
(2) 控制器 计算机能执行的基本操作叫做指令,一台计算机的所有指令组成指令系统。指令由操作码和地址码两部分组成,操作码指明操作的类型,地址码则指明操作数及运算结果存放的地址。 控制器是由程序计数器(简称 PC)、指令寄存器、指令译码器、状态条件寄存器、时序产生器、微操作信号发生器组成
例:控制机器指令执行的微程序存放在_(52)__中。
(52)A.控制存储器 B.指令寄存器 C.内部存储器 D.SRAM
执行过程: 指令-》指令寄存器-》译码器(译出微指令)-》微操作形成部件(控制存储器)
2、 CPU 的功能
(1) 程序控制
(2) 操作控制
(3) 时间控制
(4) 数据处理
1.5 计算机体系结构
计算机体系结构分类:
(1) Flynn 分类法 按指令流和数据流的不同组织方式,把计算机体系结构分为如下四类:单指令流单数据流(SISD);单指令流多数据流(SIMD);多指令流单数据流(MISD);多指令流多数据流(MIMD)。
SISD:如流水线处理机(IS指令流,DS数据流,MM主存,PU处理单元,CU控制单元)
SIMD: 并行处理机、阵列处理机、向量处理机、相联处理机、超标量处理机、超流水线处理机、...
MISD 几条指令对同一个数据进行不同处理,实际上不存在
MIMD 多处理机系统,包括:紧密偶合:IBM3081、IBM3084、UNIVAC-1100/80
松散偶合:D-825、Cmmp、CRAY-2
(2)冯式分类法
1972 年冯泽云提出用最大并行度来对计算机体系结构进行分类。所谓最大并行度 Pm 是指计算机系统在单位时间内能够处理的最大的二进制位数。
1.5.1 系统结构中并行性的发展
(1)并行性 并行性包括两个侧面:同时性和并发性。
同时性是指两个或两个以上的事件在同一时刻发生。 并发性是指两个或两个以上的事件在同一时间间隔内连续发生。
充分利用并行性实现计算机的并行处理,从而提高计算机的处理速度
(2)从计算机信息处理的步骤和阶段的角度,并行处理可分为:
? 存储器操作并行;
? 处理器操作步骤并行(流水线处理机);
? 处理器操作并行(阵列处理机);
? 指令、任务、作业并行(多处理机、分布处理系统、计算机网络)。
(3)并行性的发展 从上世纪八十年×××始,在计算机系统结构上有了很大发展,相继出现了精减指令集计算机(RISC)、指令级上并行的超标量处理机、超级流水线处理机、超长指令计算机、多微处理机系统、 数据流计算机等。
九十年代以来,最主要的发展是大规模并行处理(MPP),其中多处理机系统和多计算机系统 是研究开发的热点。
1.5.2 存储系统
1. 存储器的层次结构
存储体系结构包括不同层次上的存储器, 通过适当的硬件、软件有机地组合在一起形成计算机 的存储体系结构。
三级存储结构是高速缓存(Cache)、主存储器(MM)和辅肋存储器(外存储器)。
2. 存储器的分类
(1)按存储器所处的位置,可分为内存和外存
(2)按构成存储器的材料,可分为磁存储器、半导体存储器和光存储器。
(3)按工作方式可分为读写存储器和只读存储器。只读存储器根据数据的写入方式,这种存储器又可细分为 ROM、PROM、EPROM、EEPROM、闪速存储器等类型。
(4) 按访问方式可分为按地址访问的存储器和按内容访问的存储器。
(5) 按寻址方式分类可分为随机存储器、顺序存储器和直接存储器。
① 随机存储器(Random Access Memory,RAM)这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间是相同的。
② 顺序存储器(Sequentially Addressed Memory,SAM)访问数据所需要的时间与数据所在的 存储位置相关,磁带是典型的顺序存储器。
③ 直接存储器(Direct Addressed Memory,DAM)介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取存储器,它对磁道的寻址是随机的,而在一个磁道内,则是顺序寻址。
3. 相联存储器 相联存储器是一种按内容访问的存储器。其工作原理就是把数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字。
4. 高速缓存 Cache
高速缓存 Cache 是用来存放当前最活跃的程序和数据,作为主存局部域的副本,其特点是:容 量一般在几 KB 到几 MB 之间;速度一般比主存快 5 到 10 倍,由快速半导体存储器构成;其内容是主存局部域的副本,对程序员来说是透明的。
1.5.2.1 高速缓存的组成
Cache 由两部分组成:控制部分和 Cache 存储器部分。
Cache 存储器部分用来存放主存的部分拷贝(副本)信息。控制部分的功能是:判断 CPU 要访 问的信息是否在 Cache 存储器中,若在即为命中,若不在则没有命中。命中时直接对 Cache 存储器 寻址。未命中时,要按照替换原则,决定主存的一块信息放到 Cache 存储器的哪一块里面。
(2)高速缓存中的地址映像方法
在 CPU 工作时, 送出的是主存的地址, 而应从 Cache 存储器中读写信息。这就需要将主存地址 转换成 Cache 存储器的地址,这种地址的转换叫做地址映像。Cache 的地址映像有三种方法。
1.5.2.2 Cache 的地址映象方法:
1.全相联映射方式
主存中任一块(页)都可以映射到cache中的任一块(页)上。
特点:
1) 内存不用分区
2) Cache块内字节数=内存块内字节数
3) Cache标记精确到主存的块,若主存分2048块,则需11位标记,(2的11次方)
这种方法可使主存的一个块直接拷贝到 cache 中的任意一行上,非常灵活。 它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量 cache 采用
图中CACHE8块(页),内存256块(页),每块512字节
主存: 8位 9位
|
Cache标记:8位(Cache标记精确到主存的块)
2.直接映射方式
每个主存块(页)只能复制到固定的某一块(页)cache中,其特点是:
1) Cache块内字节数=内存块内字节数
2) cache总块数=内存某区内的块数
3) 内存区数=内存总块数/cache总块数
4) cache标记精确到主存的区(组),若主存分128区,则cache标记7位。
直接映射方式的优点是硬件简单,成本低。 缺点是每个主存块只有一个固定的cache行位置可存放,容易产生冲突。因此适合大容量 cache 采用。
不够灵活,即使 Cache 存储器别的许多地址空着也不能占用。这使得 cache 存储空间得不到充分利 用,并降低了命中率。
图中:主存分64区,每区8块,每块512字节
Cache分8块,每块512字节
主存: 6位 3位 9位
|
Cache标记:6位(Cache标记精确到主存的区)
3.组相联映射方式
它将 cache 分成 u 区(组),每组 v 块,这种方式是前两种方式的折衷方案主存块存放到哪个组是固定的, 至于存到该组哪一块是灵活的,即有如下函数关系:
特点:
1) 主存的块到cache的区之间映射时,用直接映射,选中cache的某区后,到cache区内寻找某块存放时,用全相联映射。
2) Cache的区数=主存的区内块数
3) Cache标记=表示主存地址的二进制位数-cache区号位数-cache块内地址位数
组相联映射方式中的每组行数 v 一般取值较小,这种规模的 v 路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少 组相联映像方式的性能与复杂性介于直接映像与全相联映像两种方式之间。
Cache 的命中率除了与地址映像的方式有关外,还与 cache 的容量有关。cache 容量大,则命中率 就高,但达到一定容量后,命中率的提高就不明显了。
图中:主存分256区,每区8块,每块512字节
Cache分8区,每区2块,每块512字节
主存:
7位 3位 1位 9位
Cache: 3位 1位 9位
Cache标记:8位(表示主存地址的二进制位数-cache区号位数-cache块内地址位数)
例:某PC主存容量1MB分2048页,每页512B,cache容量8kB,分为16页,每页512B,用直接映象时,主存应被分 组,cache标记 位;若用全相联映象,cache标记 位;若用组相联映象,cache分8组,每组2页,主存应划分为 组,每组 页,此时cache标记 位。
解:1)直接映象时:内存区数=内存总块数/cache总块数 得:2048/16=128组
cache标记精确到主存的区(组) 得:27=128 7位
全相联映象时:cache标记精确到主存的块(页) 得:211=2048 11位
组相联映象时:因为cache分8组,即决定了内存每组分8页,
则内存组数=2048/8=256组,每组8页,
cache标记=表示主存地址的二进制位数-cache区号位数-cache块内地址位数
则cache标记=20-3-9=8位
1.5.2.3 替换算法
替换算法的目标就是使 Cache 获得最高的命中率。常用算法有:
①随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
②先进先出算法。就是将最先进入 Cache 的信息块替换出去。此法简单但并能说最先进入的并不经常用。
③近期最少使用算法。这种方法是将近期最少使用的 Cache 中的信息块替换出去。该算法较先进先 出算法要好一些。但此法也不能保证过去不常用将来也不常用。
④优化替换算法。这种方法必须先执行一次程序, 统计 Cache 的替换情况。有了这样的先验信息, 在第二次执行该程序时便可以用最有效的方式来替换,达到最优的目的。
1.5.2.4 高速缓存的性能分析
若 H 为 Cache 的命中率;tc 为 Cache 的存取时间;tm 为主存的访问时间。则 Cache 存储器的等 效访问时间 ta 为:
ta=H tc+(1-H)tm
使用 Cache 存储器比不使用 Cache 存储器 CPU 的访问存储器的速度提高的倍数 r 可用下式求得:
r=tm/ta
1.6 存储器
存储器分为虚拟存储器和外存储器。先来了解虚拟存储器。 虚拟存储器是由主存、辅存、存储管理单元及操作系统中存储管理软件组成的存储系统。在程序员使用该存储系统时,可以使用的内存空间可以远远大于主存的物理空间。但实际上并不存在那 么大的主存,故称其为虚拟存储器。
虚拟存储器分为:
1.页式虚拟存储器
是以页为信息传送单位的虚拟存储器。通常一页为几百字节到几 K 字节。为实现页式管理, 需建立虚页与实页间的关系表,称为页表;在页表及变换软件的控制下,可将程序的虚拟地址变换 为主存的实地址。页式管理的优点是:页表硬件少,查表速度快;主存零头少。其缺点是:分页无 逻辑意义,不利于存储保护。
2.段式虚拟存储器 是以程序的逻辑结构形成的段,(如某一独立程序模块、子程序等)作为主存分配依据的一种段式虚拟存储器的管理方法。为实现段式管理,需建立段表;在段地址变换机构及软件的控制下, 可将程序的虚拟地址变换为主存的实地址。 优点:段的界限分明;支持程序的模块化设计;易于对程序段的编译、修改和保护;便于多道程序 的共享。 缺点:因为段的长度不一,主存利用率不高,产生大量内存碎片,造成浪费;段表庞大,查表速度慢。
3.段页式虚拟存储器 是页式虚拟存储器和段式虚拟存储器两者相结合的一种管理方式。在这种虚拟存储器中,程序按逻辑结构分段,每一段再分成若干大小固定的页。程序的调入调出是按页进行的,而程序又可 按段实现保护。因此,这种管理方式兼有前两者的优点, 只是地址变换速度比较慢。
外存储器
外存储器用来存放暂时不用的程序和数据,并且以文件的形式存储。CPU 不能直接访问外存中的程序和数据,只有将其以文件为单位调入主存方可访问。外存储器由磁表面存储器(如磁盘、磁带)及光盘存储器构成。
1.7 精简指令集计算机(RISC)
人们对典型的 CISC 执行程序中指令使用频度进行统计发现,指令系统中只有大约 20%的指 令被经常使用,其使用频度达 80%,而且这些指令都是一些加、传送、转移等最简单的指令。也就 是说大多数的复杂指令只有 20%的使用概率。
若只保留 20%的最简单的指令,使指令尽可能简单,从而设计一种硬件结构十分简单、执行 速度很高的 CPU。这就是精简指令集计算机(RISC)。
RISC 的特点
RISC 简化了 CPU 的控制器,同时提高了处理速度,它的特点列如下:
(1)指令种类少。
(2)指令长度固定,指令格式少。
(3)寻址方式少。
(4)设置最少的访内指令。
(5)在 CPU 内部设置大量的寄存器。
(6)非常适合流水线操作。
再来了解一下关于指令流水线的知识:
(1)流水的基本概念:流水线技术是将一个重复的时序分解成若干个子过程,而每一个子过程都可 有效地在其专用功能段上与其他子过程同时执行。
若把指令的执行过程进一步细分为取指令、指令译码、取操作数和执行四个子过程,并改进运算器的结构以加快其执行子过程,则得到图所示的流水处理的时空图。
例:若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是t取指=2ns,t分析=2ns,t执行=1ns。则100条指令全部执行完毕需__(4)__ns。
(4)A.163 B.183 C.193 D.203
解:这种情况下,完成N条(本题100条)指令所需要的时间:
t取指+max{t取指,t分析}+max{ t取指,t分析,t执行}×(N-2)+max{ t分析,t执行}+t执行=2+2+2×98+2+1=203ns
推论:上例是一条指令分三部分,若分四部分,公式是什么样子呢?(思考)
t1+max{t1,t2}+max{ t1,t2,t3}+max{ t1,t2,t3,t4}×(N-3)+max{ t2,t3,t4}+max{t3,t4}+t4
1.8 多处理机与并行处理
1. 多处理机 多处理机系统是有多台处理机组成的系统,每台处理机有属于自己的控制部,可以执行独立的程序,共享一个主存储器和所有的外部设备。它是多指令流多数据流计算机。在多处理机系统中, 机间的互连技术决定着多处理机的性能。多处理机之间的互连,要满足高频带、低成本、连接方式 的多样性以及在不规则通信情况下连接的无冲突性。
2.并行处理机 与采用流水结构的单机系统都是单指令流多数据流计算机,但它们也有区别,并行处理机采用资源重复技术,而采用流水结构的单机系统则采用时间重叠技术。 并行处理机的两种典型结构:具有分布存储器的并行处理机结构和具有共享存储器的并行处理机
结构。
1.9 安全性、可靠性与系统性能评测基础知识
1.9.1 计算机可靠性
计算机系统的可靠性是指从它开始运行(t=0)到某时刻这段时间内能正常运行的概率,用 R 表示。
所谓失效率是指单位时间内失效的元件数与元件总数的比例,以λ?表示,当λ为常数时,可靠性与失效率的关系为:
两次故障之间系统能正常工作的时间的平均值称为平均无故障时间(MTBF):
计算机可靠性模型 常见的系统可靠性数学模型有以下几种:
(1) 串联系统:假设一个系统由个子系统组成,当且仅当所有的子系统都能正常工作时,系统才能 正常工作,这种系统称为串联系统。
R=R1R2…Rn
【例】 设计算机系统由 CPU、存储器、I/O 三部分组成,其可靠性分别为 0.95,0.90 和 0.85。求计 算机系统的可靠性。
解:R = R1?R2?R3 = 0.95×0.90×0.85 = 0.73
计算机系统的可靠性为 0.73。
(2)并联系统:假如一个系统由个子系统组成,只要有一个子系统正常工作,系统就能正常工作,这 样的系统称为并联系统。
R=1-(1-R1)(1-R2)…(1-Rn)
【例】 设一个系统由三个相同子系统构成,其可靠性为 0.9,平均无故障时间为 10000 小时,求系 统的可靠性和平均无故障时间。
解:R1=R2=R3=0.9
系统可靠性 R=1-(1-R1)3=0.999 系统平均无故障时间 MTBF 为:(小时)
1.9.2 计算机故障诊断与容错
1.计算机故障诊断技术
(1) 计算机的故障 根据计算机故障表现出的特点,可以分为永久性、间歇性及瞬时性三类。
① 永久性故障:永久性故障表现出稳定性及持续性的特征,如元器件的损坏、电路的断线或短路、 程序编写的错误等,它的特点是故障可以重复出现。
② 间歇性故障:间歇性故障表现出不稳定性及对系统状态具有依赖性的特征,此时可能表现出机器 时好时坏的现象。
③ 瞬时性故障:瞬时性故障是由偶然原因引起的短暂故障,一般无衙修复就能恢复正常。但若频繁 出现,也会影响工作;所以需要查出故障原因,以消除影响。
(2) 故障诊断方法 故障诊断包括故障检测和故障定位两个方面。
? 故障检测:测试并确定计算机系统有无故障的过程;
? 故障定位:判定故障发生在某个子系统、功能块或器件的过程 故障诊断的主要方法有下述三种:
① 对电路直接进行测试的故障定位测试法;
②“检查诊断程序”法:用机器语言写的“检查诊断程序”来进行诊断的方法是一种功能测试法。
③ 微诊断法:在微程序控制的计算机中用微指令来对系统进行诊断叫做微诊断法。
2.计算机容错技术 容错是采用冗余方法来消除故障影响。针对硬件,有时间冗余和元器件冗余两种方法。
? 时间冗余:对同一计算进行重复运算,并对结果进行比较,或进行验算等,这种方法对解决 偶然性故障比较有效。
? 元器件冗余:利用附加的硬件来保证在局部有故障的情况下系统能正常工作。
(1) 简单的双机备份
? ① 热备份(双重系统)
? ② 冷备份(双工系统)
(2) 操作系统支持的双机容错:该结构的特点是系统内包括双处理器、双存储器、双输入输出控制 器、不间断工作的电源以及与之适应的操作系统等。
? 对故障处理步骤及方法归纳如下:
① 故障封闭:防止故障扩散:
② 检错:利用冗余代码,提供出错信息,例如奇偶检验码、海明检验码、CRC 校验码等;
③ 重复执行:利用软件重新执行运算,以清除瞬时异常的影响;
④ 诊断:对于非瞬时异常,确定故障性质及地点;
⑤ 系统重构及恢复:对故障部件从系统中退出,重建系统结构,然后恢复运行;
⑥ 修复:对故降部件进行在线修复或脱机修复,一般为后者;
⑦ 重入:故障部件修复后,重新投入系统运行。
1.9.3 寻址方式
计算机系统采用不同的寻址方式的目的就是要缩短指令的长度、扩大寻址空间,从而提高编程的灵活性。这也是CISC计算机的一个主要特征。而在RISC计算机中采用的是定长的指令格式。在本题中的寻址方式中,取得操作数最慢的是存储器间接寻址。
当采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式。常用的寻址方式有立即数寻址、直接寻址、间接寻址、寄存器寻址、基址寻址、变址寻址、相对寻址。
寻址方式分为两类,既指令寻址方式和数据寻址方式,前者比较简单,后者比较复杂。
? 指令的寻址方式
一种是顺序寻址方式,另一种是跳跃寻址方式。
? 操作数寻址方式
形成操作数的有效地址的方法,称为操作数的寻址方式。
立即寻址特点是:指令的地址字段指出的不是操作数的地址,而直接是操作数本身。
直接寻址特点是:在指令格式的地址字段中直接指出操作数在内存的地址D。
间接寻址特点是:指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。
寄存器寻址方式和寄存器间接寻址方式:寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
相对寻址方式:相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。
基址寻址方式:将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。它的优点是可以扩大寻址能力。
变址寻址方式:变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律变化。
块寻址方式:块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。
段寻址方式:这种寻址方式的实质还是基址寻址,方法上采用段寄存器数据自动左移若干位,然后与偏移量相加,进而形成所需的内存地址。
? 寻址方式比较:
间接慢,直接快
内存慢,寄存器快,立即数更快
要运算的慢,不需运算的快
间接的复杂,直接的简单
直接的死板,间接的灵活
内存地址长,寄存器地址短
1.10 计算机组成原理小结
因为本部分内容多而且复杂,根据大纲以及历年的考试题,在最后把此部分内容简单归纳一下, 掌握了如下的知识点,并且可以做到举一反三,就能把相关考题的分数拿到手:
1、 计算机的数制表示 经常考到的是二进制、十进制、十六进制数。在一些有关二进制计算的题目中,题目中给出十 进制或者十六进制数,必须先把他们转换成二进制才能进行相关的运算。这是一种基本的技能。
2、 计算机的数据表示数据的 4 种编码:原码,反码,补码,移码;表示数的范围的不同。
4 种编码中零的表示
3、 浮点数的表示及其规格化 本考点几乎每年都有题,而且题型差不多。任意浮点数N由阶码E和尾数M组成,N=MRE ,尾 数M为定点小数,阶码E是定点整数,R是阶码的底又成基数。 只要了解了它的结构和表示方法及转换关系,就可以做到游刃有余。
4、 逻辑运算
5、 指令的寻址方式及寻址过程 寻址方式的种类; 掌握各种寻址方式的实际地址的计算过程取指令――>指令译码(计算操作码地址、计算操作数有效地址)――>执行指令――>保存结果。
6、 Cache 缓存和虚拟存储器 高速缓存的工作方法;读写机制;淘汰算法。