第 4 章 机器数的运算方法及运算器

283

Click here to load reader

Upload: vala

Post on 23-Jan-2016

128 views

Category:

Documents


2 download

DESCRIPTION

第 4 章 机器数的运算方法及运算器. 目 录. 4.1 机器数的加减运算及其实现 4.2 定点乘法及其实现 4.4 浮点数的算术运算 4.5 运算器的组成和结构. 4.1 机器数的加减运算及其实现. 4.1.1 原码加法 4.1.2 补码加法 4.1.3 减法运算 4.1.4 补码加减运算线路的实现. 4.1.1 原码加法. 1.符号相同的两个原码相加:符号相同的两个原码相加,只要两个数的数值相加即可,其符号不变。. 例4.1 设 X=+10001,Y=+01011, 求 Z=X+Y 解: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 4 章    机器数的运算方法及运算器

第 4 章 机器数的运算方法及运算器

Page 2: 第 4 章    机器数的运算方法及运算器

目 录

4.1 机器数的加减运算及其实现

4.2 定点乘法及其实现

4.4 浮点数的算术运算

4.5 运算器的组成和结构

Page 3: 第 4 章    机器数的运算方法及运算器

4.1 机器数的加减运算及其实现

4.1.1 原码加法4.1.2 补码加法4.1.3 减法运算4.1.4 补码加减运算线路的实现

Page 4: 第 4 章    机器数的运算方法及运算器

4.1.1 原码加法

例 4.1 设 X=+10001, Y=+01011 ,求 Z=X+Y解:

即, Z=+11100。

1. 符号相同的两个原码相加:符号相同的两个原码相加,只要两个数的数值相加即可,其符号不变。

Page 5: 第 4 章    机器数的运算方法及运算器

解:

即, Z=-11100。

例 4.2 设 X=-10001, Y=-01011,求Z=X+Y

Page 6: 第 4 章    机器数的运算方法及运算器

【例 4.3 】设 X=+10101, Y=-01010 ,求 Z=X+Y

解:先比较 X与 Y 的绝对值,本题∣ X >|Y|,∣ 所以做减

法 |X -|Y|∣ ,

结果是 Z=+01011

4.1.1 原码加法

2.符号相异的两个原码相加:先比较两数的绝对值大小,用绝对值大的数减去绝对值小的数,结果的符号是绝对值大的数的符号。

Page 7: 第 4 章    机器数的运算方法及运算器

例 4.2 设 X=+01010 , Y=-10111 ,求Z=X+Y

解:先比较 X 与 Y 的绝对值,本题

∣ Y >|X| ,∣ 所以做减法 |Y -|X|∣ ,

结果是 Z=-01101

Page 8: 第 4 章    机器数的运算方法及运算器

用原码进行符号不同的两个数相加时有以下三步运算:

① 比较两个数的绝对值的大小;② 绝对值大的数的绝对值减去绝对值

小的数的绝对值;③ 结果赋以绝对值大的那个数的符号。

4.1.1 原码加法

Page 9: 第 4 章    机器数的运算方法及运算器

4.1.2 补码加法

1. 定点补码运算性质 性质 1 两数之和的补码等于两数补码之和。

[X+Y] 补=[X] 补+[Y] 补

补码运算特点:①补码运算时,不用判断符号位,符号位与数值一块参与运算;②两数相加之后,进位的最高位超出字长部分自动丢失。

Page 10: 第 4 章    机器数的运算方法及运算器

例 4.5 设 X=+11010 , Y=-10101 ,用补码的加法求 Z=X+Y

解:加数和被加数的数值位都是 5 位,在数值位之前加 1位符号位。这样,

[X] 补=011010 , [Y] 补=101011

[X+Y] 补 = [X] 补 +[Y] 补 = 011010+101011=000101

所以, X+Y=+00101。

注意:在运算中,数值位和符号位有进位,本例采用单符号位,以 2为模,进位的 1就丢掉了。

Page 11: 第 4 章    机器数的运算方法及运算器

例 4.6 设 X=+10101, Y=-11010,用补码加法求

Z=X+Y

解: [X] 补= 010101, [Y] 补=100110

[X+Y] 补=[X] 补+[Y] 补= 010101+100110=111011

所以, X+Y=-00101。

Page 12: 第 4 章    机器数的运算方法及运算器

性质 2 一个负数的补码的补码就是这个负数的原码。[[X] 补] 补= [X] 原

例 4.7 设有两个定点小数 X=-0.10011, Y=-0.11001,求这两个负数补码的补码。

解: [X] 原= 1.10011 [Y] 原= 1.11001

[X] 补= 1.01101 [Y] 补= 1.00111

[[X] 补] 补= 1.10011 = [X] 原

[[Y] 补] 补= 1.11001 = [Y] 原

补码这一性质,计算机中计算结果的补码均可化成该数的原码。

Page 13: 第 4 章    机器数的运算方法及运算器

例4.8 设有两个定点小数 X=-0.1101, Y=0.0111,(-1<X+Y<0),求这两数之和。

解: [X] 补=1.0011 [Y] 补=0.0111

[X] 补+[Y] 补=1.0011+0.0111 = 1.1010

[X+Y] 原=[[X] 补+[Y] 补] 补=[1.1010] 补=1.0110

所以, X+Y= -0.0110

用真值进行运算: X+Y= -0.1101+0.0111= -0.0110

结果相同。

用补码做加法是数值位连同符号位一起参加运算的。但是在有溢出的情况下,用一般的补码加法就得不到正确的结果,再看下面的例子。

Page 14: 第 4 章    机器数的运算方法及运算器

例 4.9 设 有 两 个 定 点 小 数X=+0.10111 , Y=+0.10001 , 用 补 码 的 加 法 求Z=X+Y

解: [X] 补= 0.10111 , [Y] 补=0.10001

[X+Y] 补= [X] 补+[Y] 补=0.10111+0.10001=1.01000

Z=X+Y=-0.11000

两个大于 0.5 的正数相加,结果就为负值,结果显然是错误的。

Page 15: 第 4 章    机器数的运算方法及运算器

例 4.10 设 X=-0.10111 , Y=-0.10001 ,用补码的加法求 Z=X+Y

解: [X] 补=1.01001 , [Y] 补=1.01111

[X+Y] 补= [X] 补+[Y] 补=1.01001+1.01111=0.11000 Z=X+Y=+0.11000

两个绝对值大于 0.5 的负数相加,结果为正值,这也是错误的。

它们的和超出了机器数所能表示的最大范围,即产生了溢出,在有溢出的情况下,用一般补码加法就无法得到正确结果。

Page 16: 第 4 章    机器数的运算方法及运算器

例 4.11 设 有 两 个 定 点 小 数X=+0.10111 , Y=-0.10001 ,用补码的加法求 Z=X+Y

解: [X] 补= 0.10111 , [Y] 补=1.01111

[X+Y] 补= [X] 补+[Y] 补

=0.10111+1.01111=0.00110 所以, Z=+0.00110 ,没有发生溢出,结果是正确的。

Page 17: 第 4 章    机器数的运算方法及运算器

例 4.12 设 有 两 个 定 点 小 数 X=-

0.10111, Y=+0.10001,用补码的加法求 Z=X+Y

解: [X] 补=1.01001 , [Y] 补=0.10001

[X+Y] 补= [X] 补+[Y] 补=1.01001+0.10001

=1.11010

[[X+Y] 补] 补=1.00110

Z=X+Y=-0.00110

所以, Z=-0.00110,没有发生溢出,结果也是正确的。

Page 18: 第 4 章    机器数的运算方法及运算器

2. 变形补码加法

变形补码是符号位用两位来表示的补码。变形补码的定义为 :

对于变形补码,补码的加法性质公式同样适用,即:

[X+Y] 变形补 = [X] 变形补 +[Y] 变形补

[[X] 变形补 ] 变形补= [X] 原

Page 19: 第 4 章    机器数的运算方法及运算器

用双符号位进行判断,若和的两个符号位相同 (00 或 11) ,不发生溢出;若和的两个符号位相异 (01 或 10) ,就说明发生了溢出。遇到溢出,就要停机进行如下处理:选取一个合理的比例因子 H=2i, 对每个加数都除以 H ,然后相加,其结果再乘以 H,即得所求。

Page 20: 第 4 章    机器数的运算方法及运算器

下面我们对例 4.9 和例 4.10 用变形补码加法来求结果。

【例 4.13 】设 X=+10111 , Y=+10001 ,用变形补码的加法求 Z=X+Y

解:设比例因子 H=2 ,则有所以,

X+Y=+101000

Page 21: 第 4 章    机器数的运算方法及运算器

【例 4.14 】设 X=-10111 , Y=-10001 ,用变形补码的加法求 Z=X+Y

解:设比例因子 H=2,

则有:

所以: X+Y=-101000

Page 22: 第 4 章    机器数的运算方法及运算器

说 明⑴ 舍入处理 在变形补码运算中,加数除以 H=2i,是通过

把 [X] 补右移 I 位得到的。在移位时,末几位可能超出机器的最末位而丢失,造成误差。为了减少误差,通常要进行舍入处理,一般有两种方法:

① 恒置 1 。即移位后机器末位总是 1 。上面的例子就 是用的恒置 1 的方法。

② 0 舍 1 入。即移出去的数是 0 则抹去,移出去的数 是 1 则进 1 到末位。

⑵ 符号位扩展 补码在右移时,要注意符号位要一起移,且最左边一位要补上原符号位的值,这就叫做符号位扩展,即把符号位扩展到为 3 位。

Page 23: 第 4 章    机器数的运算方法及运算器

总结以上,得出补码相加的规则: ① 若两数符号不同,相加的结果即为和的补码。 ②若两数符号相同,相加后若其和的符号不变,则

结果是和的补码。 ③若两数符号相同,相加后若其和的符号改变,则

表示发生了溢出。两个正数相加,结果的符号为“ 01” ,表示发生正溢出;两个负数相加,结果的符号为“ 10” ,表示发生负溢出。

说 明

Page 24: 第 4 章    机器数的运算方法及运算器

4.1.3 减法运算 性质3 两数之差的补码等于被减数的补码与负的减数补码之和。 [X-Y] 补=[X] 补+[-Y] 补

由性质 1 推导得: [X-Y] 补 =[X+( -Y) ] 补 =[X] 补 +[-

Y] 补

例 4.15 两个正数相减,被减数大于减数的例子。设X=+11001, Y=+10001,求 Z=X-Y。

解: [X] 补= 00.11001 , [-Y] 补=11.01111

[X-Y] 补= [X] 补+[-Y] 补= 00.11001+11.01111=00.01000

X-Y=+01000 所以, Z=+01000

Page 25: 第 4 章    机器数的运算方法及运算器

例 4.16 两个正数相减,被减数小于减数的例子。设 X=+10011, Y=+11001,求 Z=X-Y。

解: [X] 补= 00.10011 , [-Y] 补=11.00111

[X-Y] 补= [X] 补+[-Y] 补= 00.10011+11.00111

=11.11010

X-Y =-00110

所以, Z =-00110

Page 26: 第 4 章    机器数的运算方法及运算器

【例 4.17 】两负数相减,被减数大于减数的例子。设 X=-10011, Y=-11001,求 Z=X-Y。

解: [X] 补= 11.01101 , [-Y] 补=00.11001

[X-Y] 补 = [X] 补+[-Y] 补

=11.01101+00.11001 =00.00110 X-Y =+00110

所以, Z= +00110

Page 27: 第 4 章    机器数的运算方法及运算器

【例 4.18 】两负数相减,被减数小于减数的例子。设 X=-11001, Y=-10011,求 Z=X-Y。

解: [X] 补= 11.00111 , [-Y] 补=00.10011

[X-Y] 补 =[X] 补 +[-Y] 补 =11.00111+00.10011 =11.11010

X-Y=-00110 所以, Z=-00110

Page 28: 第 4 章    机器数的运算方法及运算器

4.1.4 补码加减运算线路的实现

在线路实现上,若已有 [Y] 补,求 [-Y] 补可用把 [Y] 补每一位(包括符号位和数值位)取反,再在最低位加 1来实现。

实现补码加减运算的逻辑电路如右图所示。

Page 29: 第 4 章    机器数的运算方法及运算器

4.1.4 补码加减运算线路的实现图中各个部件的名称和功能是:F 表示多位并行加法器,它的功能是接收参加运算的两个数 X和 Y ,实现加法运算,并在输出端给出本次运算结果。加法器的最低一位可以接收一个进位信号 1→F。

X和 Y 临时存放参加运算数据的两个寄存器, X 还用来保存运算的结果。

A “ 与”门,功能是控制寄存器 X 输出的内容是否送到加法器F 的左输入端,用 X→F 信号控制。

C “ 与”门,功能是控制加法器 F 的运算结果是否写回寄存器X ,用 F→X 信号控制。

B “ 与或”门,功能是通过控制信号 Y→F 和→ F 分别把 Y 寄存器中的内容是原数据送加法器 F 还是各位取反后送加法器F。

Page 30: 第 4 章    机器数的运算方法及运算器

运算原理如下:

参加运算的两个数被送到寄存器 X 和 Y,以补码的形式保存。要实现 [X+Y] 补→ X,需给出 X→F、 Y→F两个控制信号,

就可以把 [X] 补和 [Y] 补送入加法器 F 的两个输入端,加法器

再完成两个补码 [X] 补和 [Y] 补的相加。加法完成之后,再通过 F→X命令,把相加结果送入寄存器 X。

若要完成 [X-Y] 补→ X “, 与”门 A 送出的还是 [X] 补,但“与或”门 B 送出的应是 Y 每一位的取反值,并在加法器的最低位加进位信号 1→F,这样就得到 [-Y] 补,通过加法器 F 相

加,就实现了 [X] 补 +[-Y] 补,也就是 [X-Y] 补。再通过 F→X

命令,把 [X-Y] 补送入寄存器 X。

Page 31: 第 4 章    机器数的运算方法及运算器

4.2 定点乘法及其实现

4.2.1 原码一位乘法及其实现4.2.2 定点补码一位乘法及其实现4.2.3 原码两位乘法4.2.4 补码两位乘法 ( 了解 )

Page 32: 第 4 章    机器数的运算方法及运算器

4.2.1 原码一位乘法及其实现 在定点计算机中,用两个原码表示的数相乘,其乘积的符号由两数的符号位异或得到,乘积的数值部分是两数的绝对值相乘之积。

例如,有两个数 X 和 Y,[X] 原=XsX1X2 …Xn

[Y] 原=YsY1Y2 …Yn 则 [X*Y] 原=[X] 原*[Y] 原。

乘积的符号位为: Xs⊕Ys

乘积的数值部分为:( X1X2 …Xn) * ( Y1Y2 …

Yn)。

Page 33: 第 4 章    机器数的运算方法及运算器

例如: X=0.1001,Y=0.1101 求 Z=X*Y 解: 0.1001 X 0.1101 1001 0000 1001 1001 0.01110101得到相乘结果 X*Y= 0.01110101

Page 34: 第 4 章    机器数的运算方法及运算器

在计算机中其运算规则是:根据乘数Y 绝对值每个数位上的值 Yi是“ 1” 还

是“ 0”( 从最低位 Y0开始 ) ,决定本次

部分积是加上被乘数 X 的绝对值,还是加上全“ 0” ,得到的新部分积右移一位,再重复上面的动作,直到乘法做完为止。

Page 35: 第 4 章    机器数的运算方法及运算器

【例 4.20 】 X=+11010 , Y=+10110 ,求 Z=X*Y

解: [X] 原=0.11010 , [Y] 原=0.10110

乘积的符号位 Z0=0⊕0=0

乘积的数值部分是两数的绝对值相乘。开始时,部分积为全“ 0”。

Page 36: 第 4 章    机器数的运算方法及运算器

所得结果 Z=+0.1000111100。有时部分积的符号位出现“ 1” ,并不是出现了负数,而是

部分积的值超出了“ 1”,右移时符号位应补“ 0”。

Page 37: 第 4 章    机器数的运算方法及运算器

要实现原码一位乘法,乘积的符号可以用异或门实现,异或门的两个输入为相乘两数的符号,输出即为乘积的符号。

下图给出了实现原码一位乘法的逻辑电路框图,以实现对相乘两数的数值位相乘。

实现原码一位乘法的逻辑电路框图

Page 38: 第 4 章    机器数的运算方法及运算器

主要组成部件有:寄存器 A,存放计算的部分积 Z,具有自动移位功能;寄存器 B,存放被乘数 X;

寄存器 C,存放乘数 Y,具有自动移位功能;加法器 F,进行部分积和被乘数相加;计数器 i,用来控制逐位相乘的次数。控制信号 A→F、 B→F分别通过与门控制部分积、被乘数送

入加法器 F 进行相加;控制信号 A/2→A、 C/2→C分别控制寄存器 A、 C 自行右移一位。

Page 39: 第 4 章    机器数的运算方法及运算器

4.2.2 定点补码一位乘法及其实现 ( 重点 )

假设两个数 X 和 Y 相乘, X=x0.x1x2x3…xn;Y=y0.y1y2y3…

y

两个正数补码数相乘,其结果应直接得到乘积的补码:

[X] 补*[Y] 补=[X*Y] 补

因为: [X*Y] 补=X*Y=[X] 原*[Y] 原=[X] 补*[Y] 补

那么: X 、 Y 为任意符号呢?

Page 40: 第 4 章    机器数的运算方法及运算器

⑴ 当被乘数 X 的符号为任意,乘数 Y 的符号为正。因为 Y≥0, [Y] 补=Y,则

[X] 补*[Y] 补=[X] 补*Y=[X*Y] 补

由于: [X] 补*[Y] 补 =[X] 补*Y

=[X] 补*( 0.y1y2y3…yn)

=[X*Y] 补

Page 41: 第 4 章    机器数的运算方法及运算器

⑵ 当被乘数 X 的符号为任意,乘数 Y 的符号为负。因为 Y<0,则

补补补 ][).0(*][]*[

.012*1

210

2101

XyyyyXYX

yyyyYY

n

n

n

i

ii

( 3 )综上所述:

0321 *][.0*][]*[ yXyyyyXYX n 补补补 )(

Page 42: 第 4 章    机器数的运算方法及运算器

⑶ BOOTH法 假设两个数 X 和 Y 相乘, X=x0.x1x2x3…xn;Y=y0.y1y2y3…

y 当被乘数X 和乘数 Y 的符号都任意时侯。

[X*Y] 补=[X] 补*( 0. y1y2y3…yn) -[X] 补*y0

=[X] 补*( - y0+0. y1y2y3…yn)

=[X] 补*( -y0+y1*2-1+y2*2-2+y3*2-3…yn*2-n)

=[X] 补*{(y1-y0)+(y2-y1)*2-1+(y3-y2)*2-2+(y4-

y3)

*2-3…(yn-yn-1)*2-(n-1)+(0-yn)*2-n}

Page 43: 第 4 章    机器数的运算方法及运算器

写成递推公式: [Z0] 补=0

[Z1] 补=2-1*{[Z0] 补+(Yn+1-Yn)*[X] 补 } Yn+1=0

[Z2] 补=2-1*{([Z1] 补+(Yn-Yn-1)*[X] 补)}

[Z3] 补=2-1*{([Z2] 补+(Yn-1-Yn-2)*[X] 补)}

[Zi] 补=2-1*{([Zi-1] 补+(Yn-i+2-Yn-i+1)*[X] 补)}

[Zn+1] 补=([Zn] 补+(Y1-Y0)*[X] 补)

最后乘积为 [Zn+1] 补式中, Yn+1为附加位,在 Yn+1以后, Yn+1=0。

Page 44: 第 4 章    机器数的运算方法及运算器

由此,可以总结出比较法补码乘法的规则: 在作补码一位乘法时,在乘数的最末位后面再加一

位附加位 yn+1。开始时, yn+1=0,第一步运算是根据 yn+1

yn这两位的值判断后决定,然后再根据 yn yn-1这两位的值

判断第二步该作什么运算,再根据 yn-2 yn-3这两位的值判断第三步该作什么运算,如此等等。因为每进行一步,乘数都要右移一位, yn-1 yn 就移到 yn yn+1位置上。作第三

步时,原来的 yn-2 yn-1移到了 yn-1 yn位置上。所以每次只

要判断 yn yn+1这两位的值就行。判断规则如表4-1所示。

Page 45: 第 4 章    机器数的运算方法及运算器

补码一位比较乘法规则

Page 46: 第 4 章    机器数的运算方法及运算器

比较法计算用流程图表示

Page 47: 第 4 章    机器数的运算方法及运算器

【例 4.20 】利用补码一位乘法计算 Z=X*Y ,其中 X=-

0.1101, Y=0.1011。

解: [X] 补=11.0011 , [Y] 补=0.1011 , [-X] 补=00.1101

乘积的数值部分是两数的绝对值相乘。开始时,部分积为全“ 0”。

所以 [X*Y]补 =11.01110001 , 结果 Z=X*Y=-0.10001111 。

Page 48: 第 4 章    机器数的运算方法及运算器

部分积 乘数 /判别位 说明

00.0000 01011 0 yn+1=0 判别位 10 +[-x] 补 00.1101 部分积加 +[-x]补 00.1101 00.0110 10101 1 右移1 位,判别位 11 00.0011 01010 1 右移1 位,判别位 01 +[x] 补 11.0011 +[x] 补 11.0110 11.1011 00101 0 右移1 位,判别位 10 +[-x] 补 00.1101 +[-x] 补

00.1000 00.0100 00010 1 右移1 位,判别位 01 +[x] 补 11.0011 +[x] 补

11.0111 0001 最后一步不移位

Page 49: 第 4 章    机器数的运算方法及运算器

实现一位补码乘法的逻辑原理图如图 4-4 所示。它与一位原码乘法的逻辑原理图有些相似,不同的地方有以下几点:

⑴被乘数和乘数的符号位参加运算; ⑵乘数寄存器 C 有附加位 Yn+1,其初始状态为“ 0”。当乘数和部

分积每次右移时,部分积最低位移入寄存器 C 的首位位置,所以寄存器C 必须是具有右移功能的寄存器。

⑶被乘数寄存器 B 的每一位用原码或反码(可用触发器的 Q 端或端输出)经多路开关传送到加法器对应位的一个输入端,而多路开关的控制信号由 Yn-1、 Yn的输出译码器产生。当 Yn-1Yn=01时,送 [X] 补;当Yn-1Yn=10时,送 [-X] 补,即送寄存器 B 内容的反码且在加法器末位加1。

⑷寄存器 A 用来保存部分积,该寄存器也应具有右移的功能,其符号位与加法器的符号位始终一致。

⑸当计数器 i=n+1时,封锁 A/2→A, C/2→C控制信号,使最后一步不移位。

Page 50: 第 4 章    机器数的运算方法及运算器

补码一位乘法逻辑原理图

Page 51: 第 4 章    机器数的运算方法及运算器

4.2.3 原码两位乘法 定点原码两位乘法是根据乘数中相邻两位数码的值

来确定乘法的每一步作什么运算。 两位乘法的判别位是 2 位,即 yn yn-1,共有 4 种可

能,即 00 , 01 , 10 , 11 ,其操作方法如下表所列。

Page 52: 第 4 章    机器数的运算方法及运算器

【例 4.22】设 X=1101, Y=1001,用原码两位乘法求 Z=X*Y

解:以 X 为被乘数, Y 为乘数,其判别位Y1Y0=01, Y3Y2=10,其两位乘法的运算过程如下:

所得结果 Z= 1110101。

Page 53: 第 4 章    机器数的运算方法及运算器

【 例 4.22 】 用 原 码 两 位 乘 法 求 Z=X*Y , 其 中X=101011, Y=001001,

解 : 以 X 为 被 乘 数 , Y 为 乘 数 , 其 判 别 位Y1Y0=01, Y3Y2=10, Y5Y4=00,其两位乘法的运算过程如下:

所得结果 Z=110000011。

Page 54: 第 4 章    机器数的运算方法及运算器

说明:①部分积减去被乘数 X,是用补码进行运算,即用 +[-X]

补的方法实现。

② 部分积减去被乘数所得结果一般为负数,这是因为部分积要右移 2位,所以总是小于被乘数的缘故。

③当判别位为 11 时,要用上次部分积减被乘数,右移 2位,再在下一个判别位上加 1 。其原因是判别位为 11( 即 3) ,应加上 3 倍的被乘数。两种方法是等效的。

④符号位扩展的实质是采用几位加法器的问题。若采用n+2位加法器,符号位扩展 2位;若采用 n+3位加法器,则符号位应扩展 3位。

Page 55: 第 4 章    机器数的运算方法及运算器

4.2.4 补码两位乘法(了解)

进行定点补码两位乘法,要有 3位判别位, 3位判别位的组合关系为: -2Yi+Yi-1+Yi-2

它们的组合值与相应的加法操作,如下表所示。

Page 56: 第 4 章    机器数的运算方法及运算器

⑴ 判别位。在乘数的最低位后增加一位附加位。乘数的符号位要视数值部分的位数来决定。若数值部分的位数为偶数,则必须采用 2位符号位;否则,就采用 1位符号位。

⑵ 加法操作的次数。定点补码两位乘法运算所做加法操作的次数为乘数的位数(包括符号位)除以 2的值,即 n/2。⑶被乘数的符号位。可采用 2位符号位或 3位符号位,视情况而定。

进行定点补码两位乘法运算需注意如下问题

Page 57: 第 4 章    机器数的运算方法及运算器

⑷符号位扩展。在进行定点补码两位乘法运算中,在进行右移 2位操作时,要注意符号位的扩展,即右移时符号要一起移,空出的符号位以符号的原值填充。

⑸最后一步的移位。视乘数的符号位而定。若符号位为 2位,则不用移位;若符号位为 1 位,则要进行右移 1位的操作。

进行定点补码两位乘法运算需注意如下问题

Page 58: 第 4 章    机器数的运算方法及运算器

【例 4.23】设 X=-1101, Y=-0101 ,用补码的两位乘法求Z=X*Y

解: [X] 补=11.0011 , [-X] 补=00.1101 , [Y] 补=11.1011

采用 2位符号位, [X*Y] 补的补码两位乘法运算过程如下:

故 运 算 结 果 为 : [X*Y] 补 =00.01000001 , 所 以 Z=X*Y=+1000001

Page 59: 第 4 章    机器数的运算方法及运算器

4.4 浮点数的算术运算

4.4.1 浮点数的补码加法运算

4.4.2 浮点数的乘法运算

4.4.3 浮点数的除法运算

Page 60: 第 4 章    机器数的运算方法及运算器

4.4.1 浮点数的补码加法运算 完成浮点数加减运算的步骤:⑴ 对阶。方法是,小阶向大阶看齐,阶码较小的数的尾数每向右移 1 位,该数阶码便加 1 ,直到两数的阶码相同为止。对阶时要进行舍入处理。

⑵尾数求和。尾数连同符号相加。⑶规格化。若进行右规,还需要进行舍入处理。

Page 61: 第 4 章    机器数的运算方法及运算器

例 4.29 有 两 个 浮 点 数 A=210(-

0.110100) , B=2100(+0.101011) , 求

A+B=?解:①对阶。先把 A、 B 两数用补码表示:

[A] 补=00.010 ; 11.001100 [B] 补=00.100 ; 00.101011

可以看出, [A] 补的阶码小,应向 [B] 补阶码看齐, [A] 补阶码增

2,尾数向右移 2位: [A] 补=00.100 ; 11.110011

[B] 补=00.100 ; 00.101011

② 尾数求和。

11 110011

+ 00 101011

100.011110

Page 62: 第 4 章    机器数的运算方法及运算器

③ 规格化 上述结果为: A+B=2100×( +0.011110)

这是一个非规格化的数,对上述结果规格化,即进行左规:尾数向左移 1位,阶码减 1。得到最后结果:

A+B=2011×( +0.111100)

④ 舍入处理 舍入处理不是对每一个题目都是必须的,主要看在对阶和右规格化尾数向右移位时,尾数的低位部分有否被丢掉。常用的舍入方法有两种:一种是“ 0 舍 1 入”法,即如果右移时被丢掉的数位的最高位为 0 ,则舍去;反之则将尾数的末位加“ 1” 。另一种是“恒置 1” 法,即只要有数位被移掉,就在尾数的末位恒置“ 1”。

Page 63: 第 4 章    机器数的运算方法及运算器

4.4.2 浮点数的乘法运算 浮点数乘法的运算规则是:乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和。结果也要进行规格化和舍入处理。

如有两个浮点数 X 和 Y:

X=2ex·Sx

Y=2ey·Sy

则 Z=X×Y=2(ex+ey)·(Sx×Sy)

在具体实现中,两数阶码的求和运算可在阶码加法器中进行,两个尾数的乘法运算,就是定点数的乘法运算。

Page 64: 第 4 章    机器数的运算方法及运算器

4.4.3 浮点数的除法运算 浮点数除法的运算规则是:商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。结果也要进行规格化和舍入处理。 如有两个浮点数 X 和 Y:

X=2ex·Sx Y=2ey·Sy

则 Z=X÷Y=2(ex–ey)·(Sx÷Sy)

综上所述,浮点数的算术运算比定点数的算术运算要复杂许多,从运算器的结构来说,不但要有尾数运算器,而且还要有阶码运算器。阶码运算器用来求阶差,修改阶码等等,一般只进行加减运算。而尾数运算器不但要有加法器用以求和,还应有左移和右移的功能,以实现对阶操作和规格化操作。

Page 65: 第 4 章    机器数的运算方法及运算器

4.5 运算器的组成和结构

4.5.1 算术逻辑单元 ALU

4.5.2 通用寄存器组4.5.3 状态寄存器4.5.4 数据通路4.5.5 运算器的基本结构4.5.6 运算器组成实例

Page 66: 第 4 章    机器数的运算方法及运算器

中央处理器由运算器、控制器、总线和时钟发生器等部件组成,它是计算机的核心部件。在微型机中,中央处理器也称为微处理器,集成在一个芯片上称为 CPU芯片。

运算器是计算机对数据的进行加工处理的中心,它主要有算术逻辑单元 ALU、通用寄存器组、状态寄存器、数据多路选择器 MUX1等组成。

4.5 运算器的组成和结构

Page 67: 第 4 章    机器数的运算方法及运算器

4.5.1 算术逻辑单元 ALU ALU的主要功能是对二进制数据进行算术运算、逻辑运算

和各种移位操作。 算术运算包括定点加、减、乘和除的运算; 逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作; 移位操作主要完成逻辑左移、逻辑右移、算术左移、算术

右移及其它一些移位操作。 74181 是一种典型的 4位 ALU 器件。下页图是 74181 的电路图,及用正逻辑和负逻辑表示的 4位 ALU74181的方框图。和 74181 的运算功能表。

Page 68: 第 4 章    机器数的运算方法及运算器

74181 ALU的方框图

Page 69: 第 4 章    机器数的运算方法及运算器

74181 ALU的方框图

Page 70: 第 4 章    机器数的运算方法及运算器

74181 的运算功能表

Page 71: 第 4 章    机器数的运算方法及运算器

4.5.2 通用寄存器组 通用寄存器用来保存参加运算的操作数和运算的结果。

寄存器是计算机中存取速度最快的存储器件,同时还可以兼作某些指令的专用寄存器。例如, IBM PC系列微型计算机中,其 CPU有 8 个 16位的通用寄存器,其结构如下

图所示。

Page 72: 第 4 章    机器数的运算方法及运算器

4.5.3 状态寄存器

记录运算结果状态 ,一般设置下面几种标志状态位: Z (零标志位 ):当运算结果为零时, Z 位置 1;结果非零时,Z 位清 0 。

N (符号标志位 ):当运算结果为负时, N 位置 1;结果为正时, N 位清 0 。

V (溢出标志位 ):当运算结果有溢出发生时, V 位置 1;无溢出时, V 位清 0 。

C (进位或借位标志位 ):当作加法时,如果运算中最高有效位向前有进位, C 位置 1;否则 C 位清 0 。当作减法运算时,如果不够减,最高位向前有借位时, C 位置 1;否则 C 位清 0 。

Page 73: 第 4 章    机器数的运算方法及运算器

4.5.4 数据通路 通常把从一个功能部件向另一个功能部件传送数据所经过的功能部件、总线等称为数据通路。数据通路是个很重要的概念,正确理解数据通路,能帮助我们理解指令执行过程,理解计算机总体运行过程 。

在上面图所示的右半部分运算器中, MUX1、 MUX2分别是两个多路数据选择器,用它们来选择当前哪两组数据送到ALU中。 MUX1数据有三个来源:通用寄存器的输出、指令中的相对位移量和常数“ 0”; MUX2数据也有三个来源:通用寄存器的输出、程序计数器的输出和数据寄存器的输出。ALU 的输出信息通过内部数据总线送到通用寄存器中。

Page 74: 第 4 章    机器数的运算方法及运算器

假设这个通用寄存器组有两个输出端口 RA和 RB,有一个输入端

口 RI。寄存器中的数据以补码表示。并假设寄存器组中的寄存器

1用 R1表示,寄存器 2用 R2表示,寄存器 3用 R3表示。运算之前,

R1=0110, R2=1100, Z、 N、 C、 V 标志位全为0。

⑴ 第一种操作: R1加 R2,结果送 R3

其操作过程如下:

R1 的内容通过端口 RA 输出, MUX1选择 RA 的内容送到 ALU的

A 输入端; R2的内容通过端口 RB输出, MUX2选择 RB的内容送入

ALU的 B 输入端。令 ALU作 A+B算术加法操作,从 Y 输出端输出加的结果,并存入 R3寄存器中。

Page 75: 第 4 章    机器数的运算方法及运算器

⑵第二种操作: 0减 R1,结果送 R3,即求与R1相补的数。

其操作过程如下: R1 的内容从 RB 输出,经过 MUX2 选择,送到ALU的 B 输入端,在 MUX1处选择常数“ 0” 送入ALU的 A 输入端,在 ALU中选择 A-B的算术运算功能。由于运算器要进行的是补码运算, A-B功能是通过 [A] 补+[-B] 补来完成的。

Page 76: 第 4 章    机器数的运算方法及运算器

⑶第三种操作:利用运算器计算操作数地址或转移地址

假设当前执行转移指令,转移地址由程序计数器的值加上相对位移量得出。运算器计算转移地址的过程是: MUX2选择程序计数器 PC的内容送往 ALU的 B 输入端, MUX1选择指令字中的相对位移量到 ALU的 A 输入端,令 ALU做 A+B算术加运算,从 Y 输出的内容送往程序计数器 PC中,这时 PC中就为转移地址了。下次执行指令就从转移地址开始执行。

⑷第四种操作:关于移位操作

为简单起见,我们以 4 位二进制数 ( 最左边一位为符号位 )为例,来说明移位操作的规则和操作结果。

Page 77: 第 4 章    机器数的运算方法及运算器
Page 78: 第 4 章    机器数的运算方法及运算器
Page 79: 第 4 章    机器数的运算方法及运算器
Page 80: 第 4 章    机器数的运算方法及运算器

4.5.5 运算器的基本结构

运算器包括算术逻辑部件 ALU ,通用寄存器组、累加器、状态寄存器、多路开关、数据总线等。

运算器的设计主要是围绕 ALU 和寄存器同数据总线之间如何传送操作数和运算结果而进行的;在决定方案时,需考虑数据传送的方便性和操作速度,微型机中,考虑总线在硅片上的制作工艺。

Page 81: 第 4 章    机器数的运算方法及运算器

4.5.5 运算器的基本结构 ⒈单总线结构的运算器 运算器所有部件都接到同一条总线上的运算器结构是单总

线结构的运算器。

例如要执行一次加法操作,需要先把第一个操作数放入 A 缓冲器,然后再把第二个操作数放入 B 缓冲器,只有当这两个操作数同时出现在 ALU的两个输入端, ALU才能执行加法操作。这种结构的运算器主要缺点是操作速度较慢。

Page 82: 第 4 章    机器数的运算方法及运算器

⒉双总线结构的运算器 双总线结构的运算器如下图所示。在这种结构中,两

个操作数同时加到 ALU 进行运算,只需要一次操作控制,而且马上可以得到运算结果。

ALU的输出不能直接加到总线上,必须在 ALU的输出端设置一个缓冲寄存器。整个操作分两步完成:第一步,在 ALU 的两个输入端输入操作数,形成结果并送入缓冲寄存器;第二步,把结果送入目的寄存器。

Page 83: 第 4 章    机器数的运算方法及运算器

⒊三总线结构的运算器 三总线结构的运算器如下图所示。在三总线结构运算器中, ALU的两个输入端分别由两条总线供给,而 ALU的输出则与第三条总线相连。三总线结构的运算器的特点是操作时间快。

Page 84: 第 4 章    机器数的运算方法及运算器

4.5.6 运算器组成实例⒈最简单的运算器 下图示出的一个运算器只有三个逻辑部件:算术逻辑运

算单元 ALU、累加寄存器 AC 和数据缓冲寄存器 DR 。是最简单的运算器。

Page 85: 第 4 章    机器数的运算方法及运算器

⒉一台小型机的运算器

下页图示出了一台小型机的运算器逻辑方框图。该运算器的基本功能包括:两数的加减运算、一个数的加1 运算、两数的逻辑加运算、一个数的变补、变反传送,以及数码的左移、右移、直送和字节交换等操作。

该运算器由以下几部分组成:

⑴算术逻辑运算单元 ALU:由 4片 74181 ALU芯片和 1片 74182 CLA(先行进位加法器)芯片组成 16位字长的运算部件,因而具有两级先行进位。

Page 86: 第 4 章    机器数的运算方法及运算器
Page 87: 第 4 章    机器数的运算方法及运算器

⑵锁存器: 在 ALU的两个输入端上有两个锁存器 A 和B,用来暂存来自外部设备或存储器(经数据总线)的数据,或者暂存来自通用寄存器( R0~

R7)和源寄存器、暂存寄存器中的数据。一旦数据放入锁存器,不管其外部的数据如何变化, ALU将依据锁存器 A 和 B 中的数据进行运算。

Page 88: 第 4 章    机器数的运算方法及运算器

⑶移位器 将 ALU的输出进行左移、右移、直送、半字交换。因此

这里的移位器也是一个 4 选 1 的多路开关,每次只能从 4 路输入中选择 1 路进行输出。

⑷寄存器组 寄存器组包括 8 个可由程序编址的通用寄存器( R0~R7)和两个程序不能访问的工作寄存器(源寄存器 SR和暂存寄存器 DR)。

⑸状态寄存器 运算器中设有一个状态寄存器,运算过程中产生的“进

位”、“溢出”、“零、”“负”等状态标志可以保存在这个寄存器中,以供程序判断之用。状态寄存器的状态数据也可经由数据总线送到存储器加以保存。

Page 89: 第 4 章    机器数的运算方法及运算器

第 4 章 结 束The End

谢谢!!

Page 90: 第 4 章    机器数的运算方法及运算器

练习1.设 x= +15, y= -13,用带求补器的原码阵列乘法器求乘积 x×y = 并用十进制数乘法进行验证 .

2.已知 x = 0101, y = 0101,请用补码一位乘中的 Booth算法计算 x·y=?,列出计算过程。

1 、两个浮点数X=201(+0.1101), Y=211(-0.1010),求 X+Y=?

Page 91: 第 4 章    机器数的运算方法及运算器

1.解: 设最高位为符号位, 输入数据为 [x] 原 = 01111,

[y] 原 = 11101,因符号位单独考虑 , 尾数算前输出值为 :|x| = 1111,|y| = 1101

乘积符号位运算 : x0⊕y0 = 0⊕1 =1

加上乘积符号位, 得原码乘积值: [x×y] 原 = 111000011 换算成二进制真值:

x×y = (-11000011)2 = (-195)10

十进制数乘法验证 : x×y = 15×(-13) = -195

Page 92: 第 4 章    机器数的运算方法及运算器

尾数部分运算 : 0. 0 0 0 0 + 0. 1 1 1 1 0. 1 1 1 1

0. 0 1 1 1 1 + 0. 0 0 0 0

0. 0 1 1 1 10. 0 0 0 1 1 1 1

+ 0. 1 1 1 1 1. 0 0 1 0 1 1

0. 1 0 0 1 0 1 1 + 0. 1 1 1 1 1. 1 0 0 0 0 1 1 0. 1 1 0 0 0 0 1 1

Page 93: 第 4 章    机器数的运算方法及运算器

2.解: [x] 补=00.0101,[-x] 补=11.1011, [y] 补=0.0101.00.0000

+[-x] 补 11.1011 11.1011 11.11011 +[x] 补 00.0101 00.00101 00.000101 +[-x] 补 11.1011 11.110001 11.1110001 +[x] 补 00.0101 00.0011001 00.00011001 00.00011001

Page 94: 第 4 章    机器数的运算方法及运算器

3.解: ( 1 )对阶 先把X 、 Y 两数用补码表示: [X]补 =00 01; 00.1101 [Y]补 =00 11;

11.0110 可以看出, [X]补的阶码小,应向 [Y]补阶码看齐, [X]补阶码增2 ,尾数向右移 2 位。对阶完毕后,可得

[X]补 =00 11; 00.0011 [Y]补 =00 11; 11 0110( 2 )尾数求和

00.0011+ 11 0110

11 1001( 3 )规格化

这是一个非规格化的数,对上述结果规格化,即进行左规: 尾数向左移1 位,阶码减1 。得到最后结果: X+Y=210×( -0.1110 )

Page 95: 第 4 章    机器数的运算方法及运算器

第 5 章 指令系统

Page 96: 第 4 章    机器数的运算方法及运算器

5.1 机器指令的格式5.2 寻址方式 5.3 指令的种类 5.4 指令的执行方式 5.5 精简指令计算机( RISC)的指令系统

目 录

Page 97: 第 4 章    机器数的运算方法及运算器

5.1.1 指令的含义5.1.2 指令格式5.1.3 指令格式举例5.1.4 指令操作码的编码格式5.1.5 指令字长度与机器字长的关系5.1.6 指令助记符

5.1 机器指令的格式

Page 98: 第 4 章    机器数的运算方法及运算器

指令( Instruction)是指挥计算机执行某种操作的命令。 从计算机组成的层次结构来看,计算机的指令有微指令、机器指令和宏指令之分。 微指令是微程序级的命令,它设计在微程序控制器中,属于硬件;宏指令是由若干条机器指令组成的软件指令,若干条机器指令的功能可由执行这条宏指令实现,它属于软件;而机器指令则介于微指令和宏指令之间,通常简称为指令。

5.1.1 指令的含义

Page 99: 第 4 章    机器数的运算方法及运算器

机器指令可完成一个独立的操作功能,它是程序员进行程序设计的最小单位,是组成程序的语句; 又因为机器指令是由一串二进制数码组成的,它是机器能够直接接收、理解和执行的语言,它是硬件设计人员设计计算机硬件的依据。 从计算机系统结构的角度看,指令可理解为计算机软件和硬件的接口,是系统程序设计人员看得到的属性,也是使用汇编语言的用户能看到的属性。

5.1.1 指令的含义

Page 100: 第 4 章    机器数的运算方法及运算器

所谓指令格式是指一条指令由什么样的代码组成,一条指令的结构可用如下形式来表示。

⒈一条指令应该包含如下信息: ⑴ 操作码 :操作码具体规定了操作的性质及功能。 一个包含 n 位操作码的指令格式最多能够表示2n条指令。

5.1.2 指令格式

Page 101: 第 4 章    机器数的运算方法及运算器

⑵ 地址码:指出操作数的存储地址, CPU通

过这个地址取得操作数。根据地址码的不同,

就有不同的指令格式。

⑶ 操作结果的存放地址 .

⑷ 下一条要执行的指令的地址 .

5.1.2 指令格式

Page 102: 第 4 章    机器数的运算方法及运算器

⒉指令格式 根据地址码所给出的地址的个数(操作数的个数),可以把指令格式分成零地址指令、一地址指令、二地址指令、三地址指令和多地址指令(或称几操作数指令)。⑴ 零地址指令格式:

这类指令只有操作码而无操作数,通常也叫无操作数指令。

5.1.2 指令格式

Page 103: 第 4 章    机器数的运算方法及运算器

⑵ 一地址指令格式:

OP Code表示操作码, A 表示操作数的存储器地址或寄存器名。

5.1.2 指令格式

Page 104: 第 4 章    机器数的运算方法及运算器

⑶ 二地址指令格式:

OP Code表示操作码, A1 表示源操作数的存储器地址或寄存器名(或目的操作数的存储器地址或寄存器名), A2 表示目的操作数的存储器地址或寄存器名(或源操作数的存储器地址或寄存器名)。 这类指令有两个操作数地址,是最常用的指令格式。

5.1.2 指令格式

Page 105: 第 4 章    机器数的运算方法及运算器

⑷ 三地址指令格式:

OP Code表示操作码, A1 表示第一个操作数的

存储器地址或寄存器名, A2 表示第二个操作数的存

储器地址或寄存器名, A3 表示操作结果的存储地址。 这类指令有三个操作数地址,操作后 A1、 A2

中的操作数均保持原来数据,操作结果存入 A3 中。这类指令用于字长较长的大、中型机中。

5.1.2 指令格式

Page 106: 第 4 章    机器数的运算方法及运算器

⑸ 多地址指令 这类指令有 3 个以上的操作数地址,指令码长,在某些性能较好的大、中型机以及高档小型机中采用,如字符串处理指令、向量、矩阵运算指令等。 一般说来,零地址指令、一地址指令和二地址指令的指令码长短,具有所需存储空间少,执行速度快,硬件实现简单等优点,为结构简单的微、小型机所采用;在字长较长、功能较强的大、中型机中除采用零地址指令、一地址指令和二地址指令外,也使用三地址指令和多地址指令。

5.1.2 指令格式

Page 107: 第 4 章    机器数的运算方法及运算器

在计算机中,指令和数

据都是以二进制码的形式存储的,

机器是如何区分和判别呢?

Page 108: 第 4 章    机器数的运算方法及运算器

以具有典型指令系统意义的 PDP-

11系列小型机的指令系统为例说明,这是一种定长指令、变长操作码、双地址指令系统,指令长度为 16位,具有多种不同的指令格式。

5.1.3 指令格式举例

Page 109: 第 4 章    机器数的运算方法及运算器

5.1.3 指令格式举例

Page 110: 第 4 章    机器数的运算方法及运算器

⒈固定格式 操作码的长度是固定的,且集中放在指令字的某一个字段中。这种格式的优点是简化硬件设计,减少指令的译码时间,但操作码的平均长度长,需要指令字长长。一般在字长较长的大中型机以及超级小型机上使用。 若某机器的操作码长度为 n 位,在固定格式下,它最多只能编制 2n条不同的指令。

5.1.4 指令操作码的编码格式

Page 111: 第 4 章    机器数的运算方法及运算器

⒉可变格式 操作码的长度可变,且分散地放在指令字的不同字段中。 优点是可压缩操作码的平均长度,控制器的设计相对较为复杂,指令的译码时间也较长。一般在字长较短的微小型机上广为采用。 可变格式的指令操作码编码格式,通常是在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,把它们的操作码扩充到该地址字段中去,以能表示更多的指令。

5.1.4 指令操作码的编码格式

Page 112: 第 4 章    机器数的运算方法及运算器

如某机器的指令长度为 16位,以 4 位为 1 个字段,分成 4 个字段,一个 4 位的操作码字段, 3 个4 位的地址码字段,其指令格式为:

用可变格式编码,要表示 15条三地址指令, 15条二地址指令, 15条一地址指令和 16条零地址指令,共表示 61条指令,则可以如下安排:

可变格式的指令操作码编码格式举例

Page 113: 第 4 章    机器数的运算方法及运算器

⑴三地址指令 15条:其操作码由 4 位基本操作码的 0000~ 1110 给出,剩下的一个编码 1111用于把操作码扩展到 A1字段。⑵二地址指令 15条:操作码扩展到 A1字段,则操作码有 8 位,可从 11110000~ 11111111 ,用 11110000 ~ 11111110 作为 15 条二地址指令的操作码,剩下的一个编码 11111111 用于把操作码扩展到 A2字段。

可变格式的指令操作码编码格式举例

Page 114: 第 4 章    机器数的运算方法及运算器

⑶一地址指令 15条:操作码扩展到 A2字段,则操 作 码 有 12 位 , 可 从 111111110000 ~111111111111 , 用 111111110000 ~111111111110作为 15条一地址指令的操作码,剩下的一个编码 111111111111 用于把操作码扩展到 A3字段。⑷零地址指令 16条:操作码扩展到整个指令字,则操作码有 16位,可从 1111111111110000~1111111111111111。

可变格式的指令操作码编码格式举例

Page 115: 第 4 章    机器数的运算方法及运算器

使用频度高的指令应分配短的操作码,使用频度低的指令相应分配较长的操作码。这样不仅可以有效地缩短操作码在程序中的平均长度,节省存储器空间,而且缩短了经常使用的指令的译码时间,提高指令的执行速度,也提高了程序的运行速度。

指令操作码扩展技术的扩展原则

Page 116: 第 4 章    机器数的运算方法及运算器

指令字长度:一个指令字中所包含的二进制数码的位数。 机器字长:是指计算机的运算部件一次能直接处理的二进制数据的位数,一般简称为字长,它是计算机的一项重要的技术指标。 字长主要决定计算机的运算精度,字长越长,计算机的运算精度就越高。字长对计算机指令的直接寻址能力也有直接影响,字长长,寻址空间相对较大。

5.1.5 指令字长度与机器字长的关

Page 117: 第 4 章    机器数的运算方法及运算器

指令字长与机器字长有着密切的关系。 一般机器字的长度都是字节的 1 、 2 、 4 、 8 倍, 计算机指令的长度主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。由于指令格式的不同,一台机器上的各条指令长度是不一样的,为了充分利用存储空间,指令的长度通常采用字节的整数倍。

5.1.5 指令字长度与机器字长的关系

Page 118: 第 4 章    机器数的运算方法及运算器

指令长度与机器的字长没有固定的关系,指令长度可以小于机器的字长,也可以大于机器的字长。一般在字长较短的微小型机中,大多数指令的长度大于机器字长;而在字长较长的大中型机中,大多数指令的长度是小于或等于机器的字长。长度大于机器字长的指令称为长指令格式,而长度小于或等于机器字长的指令称为短指令格式。在同一台计算机中,可能同时存在长指令格式和短指令格式。

5.1.5 指令字长度与机器字长的关系

Page 119: 第 4 章    机器数的运算方法及运算器

机器语言存在着可读性差,不易编程和不易维护等许多缺点。为了克服这个缺陷,我们用预先规定的符号分别来代替指令中用二进制数码表示的操作码、操作数或地址,用便于记忆的符号而不是二进制数码来编写程序就要方便得多。例如 ADD 表示加法操作 SUB 表示减法操作 MUL 表示乘法操作 … ADD、 SUB、 MUL等符号就是助记符。用助记符来表示二进制数码指令序列的语言,称为汇编语言,它实际上是

与机器语言是一一对应的。

5.1.6 指令助记符

Page 120: 第 4 章    机器数的运算方法及运算器

5.2.1 寻址方式和有效地址的概

5.2.2 基本寻址方式

5.2.3 寻址方式举例

5.2 寻址方式

Page 121: 第 4 章    机器数的运算方法及运算器

⒈寻址方式的概念 所谓寻址,就是寻找操作数的地址。寻址方式就是寻找操作数地址的方式,也称编址方式。在程序的执行过程中,执行每一条指令都需要寻找操作数。操作数所在地址有如下3 种情况: ⑴ 存储器寻址:操作数在内存储器中。这时指令的地址码部分指明了操作数所在的内存单元的地址。 ⑵ 寄存器寻址:操作数在运算部件的某个寄存器中。这时指令的地址码部分指明了 CPU中的一个寄存器。 ⑶立即数寻址:操作数就在指令中。指令的地址码部分就是操作数本身,这种操作数叫做立即数。

5.2.1 寻址方式和有效地址的概

Page 122: 第 4 章    机器数的运算方法及运算器

⒉有效地址的概念 操作数的地址被称为有效地址,用 EA 表示,在Intel 32 位微处理器的存储器寻址方式下,有效地址由下面 4 个分量构成: ⑴基址寄存器内容 ⑵变址寄存器内容 ⑶位移量 ⑷比例因子(取值为 1 、 2 、 4 或 8 ) 有效地址的计算方法为: EA=基址 + (变址×比例因子) + 位移量

5.2.1 寻址方式和有效地址的概念

Page 123: 第 4 章    机器数的运算方法及运算器

⒈隐含寻址方式 隐含寻址方式是指操作数隐含在 CPU的某个通用寄存器或内存的某指定单元中,指令中不直接给出操作数或操作数地址。优点是可缩短指令的长度,这是在字长较短的微、小型机上普遍采用的寻址方式。如在 Intel8086/8088中的乘法指令

MUL OPR MUL是操作码,表示乘法, OPR是乘数,而被乘数则隐含在累加器 AX(16位乘法 ) 或 AL(8位乘法 ) 中。

5.2.2 基本寻址方式

Page 124: 第 4 章    机器数的运算方法及运算器

⒉立即数寻址方式 操作数由指令的地址码部分直接给出的寻址方式称为立即数寻址方式。 当取出指令时,操作码和操作数同时被取出,不必再去访问存储器,因此这类寻址方式的指令执行速度快。这种方式适用于操作数固定的情况。通常用于给某一个寄存器或存储器单元赋初值或提供一个常数等。例如, Intel8086/8088的传送指令

MOV, AX, imm

由立即数 imm直接给出的操作数传送到累加器 AX中。

5.2.2 基本寻址方式

Page 125: 第 4 章    机器数的运算方法及运算器

⒊直接寻址方式 指令的地址码部分给出的不是操作数,而是操作数在存储器中的存储地址。

这种寻址方式简单、直观,也便于硬件实现,指令执行速度较快,但是操作数的地址是指令的一部分,不能修改,因此只能用于访问固定存储器单元的指令。如, Intel8086/8088 的传送指令 MOV AX, [address]

5.2.2 基本寻址方式

Page 126: 第 4 章    机器数的运算方法及运算器

⒋寄存器寻址方式 指令的地址码部分给出的是存放操作数的某一通用寄存器名的寻址方式称为寄存器寻址方式。

其有效地址为: EA=R 这种寻址方式的地址码较短,而且从寄存器中存取数据比从存储器中取数快得多,故这种寻址方式可以缩短指令的长度,节省存储空间,提高指令的执行速度,在现代计算机中得到广泛的应用。

5.2.2 基本寻址方式

Page 127: 第 4 章    机器数的运算方法及运算器

⒌间接寻址方式 指令的地址码部分给出的不是操作数,也不是操作数的地址,而是操作数地址的地址的寻址方式,简称简址。

其有效地址为: EA=(A0)

5.2.2 基本寻址方式

Page 128: 第 4 章    机器数的运算方法及运算器

⒍寄存器间接寻址方式 指令的地址码部分给出的是寄存器名,寄存器中存放了操作数的地址,这种寻址方式称为寄存器间接寻址方式。

其有效地址为: EA=(R)这种简址寻址方式只需一次访问存储器,可以提高指令的执行速度,在大多数计算机中被广泛采用。

5.2.2 基本寻址方式

Page 129: 第 4 章    机器数的运算方法及运算器

⒎变址寻址方式 以变址寄存器中的内容为基址,加上指令地址码部分给出位移量之和作为操作数的地址来获得操作数地址的寻址方式。

其有效地址为: EA=(R)+A这类指令通常用于字符串处理、向量运算等成批数据处理中。

5.2.2 基本寻址方式

Page 130: 第 4 章    机器数的运算方法及运算器

⒏相对寻址方式 把程序计数器 PC的当前内容与指令地址码部分给出的地址 ( 经常是位移量 ) 之和作为操作数地址的寻址方式。

有效地址为: EA=(PC)+A

5.2.2 基本寻址方式

Page 131: 第 4 章    机器数的运算方法及运算器

⒐基址寄存器寻址方式 在这种寻址方式中,把主存的整个存储空间分成若干段,段的首地址存放于基址寄存器中,段内位移量由指令直接给出。操作数在存储器的存储地址就等于基址寄存器RB 的内容 ( 即段首地址 ) 与段内位移量 A 之和。其有效地址为: EA=(RB)+A

优点是可通过修改基址寄存器的内容就可以访问存储器的任一单元。 基址寻址技术原先用于大、中型机中,现已被移植到微、小型机上。

5.2.2 基本寻址方式

Page 132: 第 4 章    机器数的运算方法及运算器

以 PDP-11系列机为例,说明计算机指令系统的寻址方式。(参看教材表 5.1) PDP-11系列机的指令字长为 16位,指令有单操作数指令和双操作数指令两类,其地址码字段的长度均为 6 位二进制数。

5.2.3 寻址方式举例

Page 133: 第 4 章    机器数的运算方法及运算器

5.3.1 数据传送类指令5.3.2 算术逻辑运算类指令5.3.3 字符串处理指令5.3.4 输入 / 输出( I/O)指令5.3.5 特权指令和陷阱指令5.3.6 转移指令5.3.7 子程序调用指令5.3.8 处理器控制指令

5.3 指令的种类

Page 134: 第 4 章    机器数的运算方法及运算器

这类指令包括数据传送、数据交换、压栈和退栈指令三种指令。 ⒈数据传送指令 这是一种常用指令,用以实现寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的数据传送。数据传送时,数据从源地址传送到目的地址,源地址中的数据保持不变,这实际上是一种数据复制。如 Intel8086/8088的MOVS指令,一次传送一个字或一个字节。 应注意,有些计算机的数据传送指令不能实现存储单元与存储单元之间的数据传送,如 Intel8086/8088的传送指令 MOV。

5.3.1 数据传送类指令

Page 135: 第 4 章    机器数的运算方法及运算器

⒉数据交换指令 这类指令的功能是实现两个操作数之间的位置互换,这两个操作数可以是两个寄存器操作数,或一个寄存器操作数与一个存储器操作数,或两个存储器操作数。数据交换指令实现了数据的双向传送,一条数据交换指令起到了三条数据传送指令的作用。 也应注意,有些计算机的数据交换指令不能实现存储单元与存储单元之间的数据互换,如Intel8086/8088的 XCHG指令。

5.3.1 数据传送类指令

Page 136: 第 4 章    机器数的运算方法及运算器

⒊压栈和退栈指令 压栈指令功能是把数据存入堆栈区,而退栈指令的功能是把数据从堆栈中弹出。 堆栈是主存中专门用来存放数据的一个特定的区域,是由若干连续的存储单元组成的按照先进后出 (FILO)原则存取数据的存储区。 ⑴ 栈底以下是非栈区,不能放入数据,栈底以上是栈区,可存放数据。 ⑵ 为了指示栈顶的位置,需要有一个堆栈指示器(或称堆栈指针) SP。

5.3.1 数据传送类指令

Page 137: 第 4 章    机器数的运算方法及运算器

用于访问堆栈的指令有压栈指令和退栈指令,压栈指令 (在 Intel8086/8088 中是 PUSH) 用来把指定的操作数送入堆栈的栈顶,而退栈指令 ( 在 Intel8086/8088中是 POP)则用来把栈顶的数据取出。 压栈和退栈示意图

⒊压栈和退栈指令

Page 138: 第 4 章    机器数的运算方法及运算器

这类指令包括算术运算指令、逻辑运算指令和移位指令。

⒈算术运算指令 算术运算指令有二进制数的加、减、比较和求补,乘、除运算指令,浮点运算指令,以及十进制运算指令等。 执行算术运算指令后,通常都要根据算术运算的结果置状态寄存器的状态位。

5.3.2 算术逻辑运算类指令

Page 139: 第 4 章    机器数的运算方法及运算器

⒉ 逻辑运算指令 一般计算机都具有与、或、非(求反)、

异或(按位加)和测试等逻辑运算指令。有些

计算机还具有位测试、位清除、位求反等位操

作指令。

5.3.2 算术逻辑运算类指令

Page 140: 第 4 章    机器数的运算方法及运算器

⒊移位指令 移位指令可分为算术移位、逻辑移位和循环移位三类指令,移位又有左移和右移,这样,就有算术左移指令、算术右移指令、逻辑左移指令、逻辑右移指令、不带进位位左循环移位指令、不带进位位右循环移位指令、带进位位左循环移位指令和带进位位右循环移位指令 8 种基本移位指令。一般计算机都具有这些移位指令。

5.3.2 算术逻辑运算类指令

Page 141: 第 4 章    机器数的运算方法及运算器

移位指令操作过程

Page 142: 第 4 章    机器数的运算方法及运算器

字符串处理指令主要用于非数值数据的处理。它包括

字符串传送字符串转换字符串比较字符串查找字符串匹配字符串抽取和替换等指令。

5.3.3 字符串处理指令

Page 143: 第 4 章    机器数的运算方法及运算器

输入 / 输出指令是完成主机或 CPU与输入 / 输出设备之间传送数据的命令。 输入 / 输出指令的一般格式为:其中, OP为操作码,表示 I/O指令; REG是寄存器名,用于指定与外部设备交换数据的 CPU中的寄存器, A 是外部设备中的寄存器地址或设备码。 有些计算机,例如 DEC公司的 PDP-11,是把外设与存储器统一编址,把外设看成是一个存储单元,这类计算机没有输入输出指令,其输入输出功能由访问存储器的指令来实现。

5.3.4 输入 / 输出( I/O)

指令

Page 144: 第 4 章    机器数的运算方法及运算器

⒈特权指令 特权指令是指具有特殊权限的指令,这类指令一般单用户、单任务的计算机系统不需要,而多用户、多任务的计算机系统在用于系统资源分配与管理上是必不可少的。这类指令的功能包括:改变系统的工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。

为了安全,这类指令一般不直接提供给用户使用。 ⒉陷阱指令 所谓陷阱指令是处理陷阱的指令。

5.3.5 特权指令和陷阱指令

Page 145: 第 4 章    机器数的运算方法及运算器

转移指令是改变程序执行顺序的指令。一般情况下, CPU是按编程顺序执行指令的,但有时要根据所处理的结果进行判断,再根据判断的结果来确定程序的执行,这时就要使用转移指令,以实现程序的分支。 转移指令分为无条件转移和条件转移两类指令。

5.3.6 转移指令

Page 146: 第 4 章    机器数的运算方法及运算器

⒈无条件转移指令 无条件转移指令不受任何条件的约束,直接控制 CPU转移到指定的地点去执行。如 Intel80386/80486中的无条件转移指令 JMP

⒉条件转移指令 条件转移指令则先测试某些条件,条件满足就转移,否则不转移。 条件转移指令判断条件是 CPU中是状态寄存器标志位,主要有:进位标志( C )、结果为零标志( Z )、结果为负标志( N )、结果溢出标志( V )、奇偶标志( P )。具体指令请参看教材表 5.2条件转移指令一览表。

5.3.6 转移指令

Page 147: 第 4 章    机器数的运算方法及运算器

子程序调用指令包括调用指令(转子指令)和返回指令(返主指令)。 调用子程序需要用到调用指令。子程序执行完毕,就需要用返回指令返回到主程序。 要注意子程序调用指令和转移指令的区别。

①目的地址不同 ②用途不同③方式不同

5.3.7 子程序调用指令

Page 148: 第 4 章    机器数的运算方法及运算器

处理器控制指令是直接控制 CPU实现某种功能的指令。包括状态标志位的操作指令、停机指令、等待指令、空操作指令、封锁总线指令等。

5.3.8 处理器控制指令

Page 149: 第 4 章    机器数的运算方法及运算器

5.4.1 指令的顺序执行方式5.4.2 重叠执行方式5.4.3 流水线方式5.4.4 指令的执行过程

5.4 指令的执行方式

Page 150: 第 4 章    机器数的运算方法及运算器

在目前的计算机中,指令的执行有三种方式:

顺序执行方式重叠执行方式流水线方式

5.4 指令的执行方式

Page 151: 第 4 章    机器数的运算方法及运算器

顺序执行方式是一条指令接着一条指令的执行方式。

顺序执行方式的特点:⑴ 就整个程序而言,是一条指令接着一条指令顺序地串行执行的。⑵ 就一条指令而言,其取指、分析、执行三个步骤也是顺序串行进行的。⑶这种执行方式的优点是控制简单,硬件容易实现,但执行速度慢。

5.4.1 指令的顺序执行方

Page 152: 第 4 章    机器数的运算方法及运算器

多条指令在执行时在时间段上有重叠的执行指令方式称为重叠执行方式。

重叠执行方式的特点:⑴就每条指令而言,其内部的各个操作仍为顺序串行执行;⑵从相邻两条指令来看,它们的某些操作是同时进行的; ⑶其优点是明显的提高了指令的执行速度; ⑷缺点是这种执行方式技术较复杂。

5.4.2 重叠执行方式

Page 153: 第 4 章    机器数的运算方法及运算器

流水线方式是把指令的执行过程分解为若干个子过程,分别由不同的硬件去执行的方式。 通常把指令的执行过程分为取指、译码、取操作数和执行 4 个子过程,分别由取指、译码、取操作数和执行 4 个装置来执行。 流水线的指令执行方式的特点: ⑴ 就每条指令而言,其各子过程内仍为顺序串行执行,即未改变一条指令的执行时间。 ⑵每个子过程执行完毕,由于该装置已空闲,即可接收下一条指令的该子过程执行。 流水线执行方式明显的加快了程序的执行速度。

5.4.3 流水线方式

Page 154: 第 4 章    机器数的运算方法及运算器

1.有关指令周期的概念 ⑴指令周期:执行一条指令所需要的时间。也就是从取指令开始到执行完这条指令为止的全部时间。一个指令周期由若干个机器周期组成。 ⑵CPU周期:也叫机器周期。是指 CPU访问一次主存或输入输出端口所需要的时间。一个 CPU周期由若干个时钟周期组成。 ⑶时钟周期:是 CPU处理操作的最小时间单位,也叫 T 周期、 T 状态。

5.4.4 指令的执行过程

Page 155: 第 4 章    机器数的运算方法及运算器

指令周期、 CPU周期和时钟周期之间的关系

上图所示的某条指令的指令周期由 3 个 CPU周期组成,

第一个 CPU周期 TC1由 4 个时钟周期组成,第二个 CPU周期

TC2 也由 4 个时钟周期组成,第三个 CPU周期 TC3由 3 个时钟

周期组成。

Page 156: 第 4 章    机器数的运算方法及运算器

⑷取指和取指周期 从主存储器中读出指令,称为“取指”,读出一条指令所需的时间称为“取指周期”。同一机器的所有指令的取指周期都相同。一般计算机取指周期的时间是一个 CPU周期时间。⑸执行指令和执行时间 取指操作后实现指令功能的全过程称为“执行指令”,执行一条指令所需的时间为“执行时间”。指令不同其执行时间也不同,一般一条指令的执行时间需要 1 个到若干个CPU周期时间。 取指周期和执行时间之和称为指令周期,即从取指开始到指令执行结束所需的总时间。

1.有关指令周期的概念

Page 157: 第 4 章    机器数的运算方法及运算器

【例】某型号微型计算机的一条指令周期由 4 个机器周期组成,而每个机器周期由 4 个时钟周期组成,该机的主频为 1.3GHz,试求:①该机器的时钟周期为多少?②执行一条指令所需的时间是多少?③该机器在 1s内可执行多少条这样的指令?解:①因为主频 f=1.3GHz ,所以时钟周期 T=1/f=1/(1.3×109) =0.7692307×10-9s =0.7692307ns

②4×4×0.7692307ns=12.307891ns

③N=1/12.307891×109=0.08125×109 =8.125MIPS

Page 158: 第 4 章    机器数的运算方法及运算器

⒉指令执行过程简析 以三种基本指令——数据传送、加法运算和转移指令的执行过程,来说明一般指令在指令执行过程中的共同规律。⑴ 数据传送指令 指令形式: MOV R1, R2

解释:该指令是把源寄存器 R1 的内容传送到目的寄存器 R2 中。 操作过程:该指令执行的三个过程——取指、分析、执行。

5.4.4 指令的执行过程

Page 159: 第 4 章    机器数的运算方法及运算器

①取指:程序计数器的 PC内容(指令地址)装入地址寄存器MAR,送地址总线,然后由地址总线选中所在的主存单元,取出该指令代码,经数据总线输入CPU中指令寄存器IR。

②分析(指令译码):指令操作码经指令译码后,识别出这是一条从寄存器R2到R1的寄存器传送指令;R1、R2的地址码经地址译码器找到R1、R2所对应寄存器。在指令译码的同时,程序计数器 PC的内容加 1 ,以指向下一条指令,保证程序的顺序执行。

③执行:根据指令的译码结果,以及所选中的R1、R2寄存器,控制器发出相应的控制信号,有序的开启三态门,通过数据总线进行数据传送操作,将R2中的数据传送到R1中。

Page 160: 第 4 章    机器数的运算方法及运算器

⑵ 加法指令 指令形式: ADD EA 解释:该指令指定的一个操作数是累加器 AC中的值, EA为存放另一个操作数的主存单元有效地址,指令的功能是把累加器 AC 和有效地址为EA 的主存单元的内容相加,其和送回到累加器AC中。即实现 (AC)+(EA)→AC。 操作过程:该指令执行的三个过程——取指、分析、执行。

5.4.4 指令的执行过程

Page 161: 第 4 章    机器数的运算方法及运算器

①取指:程序计数器的 PC 内容(指令地址)装入地址寄存器 MAR ,送地址总线,然后由地址总线选中所在的主存单元,取出该指令代码,经数据总线输入 CPU 中指令寄存器 IR 。

②分析(指令译码):指令操作码经指令译码后,识别出这是一条累加器 AC 与主存单元相加的加法指令 ,IR 中的数据地址 EA 输出到地址总线上,然后从主存单元中读出数据,经数据总线装入 CPU 中的暂存寄存器 TR 中。在指令译码的同时,程序计数器 PC 的内容加 1 ,以指向下一条指令,保证程序的顺序执行。

③执行: AC 中的数据与 TR 中的数据送入 ALU 进行加法操作,两数之和由 ALU 输出,经数据总线输入 AC 中。

Page 162: 第 4 章    机器数的运算方法及运算器

⑶ 转移指令

指令形式: JMP EA

解释:该指令是无条件转移到以 EA为

转移地址的转移指令。

操作过程:该指令执行的三个过程——取

指、分析、执行。

5.4.4 指令的执行过程

Page 163: 第 4 章    机器数的运算方法及运算器

①取指:程序计数器的 PC 内容(指令地址)装入地址寄存器 MAR ,送地址总线,然后由地址总线选中所在的主存单元,取出该指令代码,经数据总线输入 CPU 中指令寄存器 IR 。

②分析(指令译码):指令操作码经指令译码后,识别出这是一条无条件转移指令。在指令译码的同时,程序计数器 PC 的内容加 1 ,以指向下一条指令,保证程序的顺序执行。

③执行:把指令码中的地址码部分 ----转移地址 EA

送上数据总线,在装入程序计数器 PC ,至此,无条件转移指令结束。

Page 164: 第 4 章    机器数的运算方法及运算器

总结:指令操作可以分解为取指和执行两部分。取指部分对不同的指令基本上都是相同的,执行操作,不同的指令是不同的。

一般要做一下几个内容: ①识别指令的功能和类型; ②产生操作数的地址; ③取操作数; ④执行功能操作,获得操作结果; ⑤存储结果。

Page 165: 第 4 章    机器数的运算方法及运算器

5.5.1 RISC的由来与发展5.5.2 RISC的特点5.5.3 RISC指令系统举例

5.5 精简指令计算机( RISC)的指令系统

Page 166: 第 4 章    机器数的运算方法及运算器

⒈RISC的由来 CISC计算机的指令条数的增多,势必使计算机的硬件结构复杂,增加计算机的制造成本。 1975年, IBM公司开始研究指令系统的合理性问题,该公司的 John cocke提出了精简指令系统的想法,并开始研制具有精简指令系统的计算机。 ⒉RISC的发展 从 80年代末开始, RISC计算机成为计算机发展的主要趋势。

5.5.1 RISC的由来与发展

Page 167: 第 4 章    机器数的运算方法及运算器

⑴ 设计时尽量选取使用频率最高的一些简单指令,以及用途大但不复杂的指令,因此指令的种类少(一般不超过 128种); ⑵指令长度固定(一般为 32位); ⑶指令格式种类少(一般不超过 4 种); ⑷寻址方式种类少(一般不超过 4 种); ⑸CPU内的所有操作,除了访问存储器的取数和存数( Load/Store指令)外,其余指令的操作都在寄存器之间进行;

5.5.2 RISC的特点

Page 168: 第 4 章    机器数的运算方法及运算器

⑹CPU中有一个较大的通用寄存器组(通用寄存器的数量至少为 32个); ⑺大部分指令( 80% 以上)的执行周期在一个 CPU周期之内; ⑻控制器采用硬接线方式; ⑼一般用高级语言编程,特别重视编译优化工作,以减少程序执行时间。

5.5.2 RISC的特点

Page 169: 第 4 章    机器数的运算方法及运算器

以 Sun 微系统公司的 SPARC 为例说明RISC计算机的指令系统。 SPARC的指令字长为 32位,有 3 种指令格式, 6 种指令类型。⒈SPARC的指令类型 ⑴ 算术运算指令 / 逻辑运算指令 / 移位指令 加 法 指 令 4 条 :ADD、 ADDCC、 ADDX、 ADDXCC

减 法 指 令 4 条 :SUB、 SUBCC、 SUBX、 SUBXCC

检 查 标 记 的 加 法 指 令 2 条 :TADDCC、 TADDCCTV

检 查 标 记 的 减 法 指 令 2 条 :TSUBCC、 TSUBCCTV

5.5.3 RISC指令系统举例

Page 170: 第 4 章    机器数的运算方法及运算器

逻 辑 运 算 指 令 共 12 条 :AND 、 ANDCC 、 ANDN 、 ANDNCC ;OR、 ORCC、 ORN、 ORNCC; XOR、 XORCC

、 XORN、 XORNCC。 移位指令 3 条: SLL (逻辑左移)、 SRL

(逻辑右移)、 SRA(算术右移)。 其 他 还 有 乘 法步、 SETHI、 SAVE、 RESTORE。

⑴ SPARC的算术运算指令 / 逻辑运算指令 / 移位指令

Page 171: 第 4 章    机器数的运算方法及运算器

⑵ LOAD/STORE指令 ⑶ 控制转移指令 ⑷ 读 / 写专用寄存器指令 8条以上指令合计共 66条,此外还有 ⑸ 浮点运算指令 ⑹ 协处理器指令

Page 172: 第 4 章    机器数的运算方法及运算器

⒉SPARC的指令格式 SPARC的指令格式有 3 种。 ⒊各类指令功能及寻址方式

Page 173: 第 4 章    机器数的运算方法及运算器

第 5 章 结 束The End

谢谢!!

Page 174: 第 4 章    机器数的运算方法及运算器

练习1. 若某机要求有:三地址指令 4 条,单地址指令 255条,零地址指令 16条。设指令字长为12 位,每个地址码的长度为 3 位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?说明其理由。

2.某机指令字长 16 位,设有单地址指令和双地址指令两类。若每个地址字段为 6 位,其双地址指令有 X 条。问单地址指令最多可有多少条?

Page 175: 第 4 章    机器数的运算方法及运算器

第 6 章 计算机的存储系统

Page 176: 第 4 章    机器数的运算方法及运算器

现代计算机采用程序控制方式工作,因此,用来存放程序和数据的存储系统是计算机的重要组成部分。存储器包括内存储器和外存储器。内存储器包括主存储器和高速缓冲存储器,外存储器即辅助存储器。主存储器简称主存,它位于主机内部。本章介绍计算机的存储系统,包括主存储器的基本组成、层次结构和工作原理,高速缓冲存储器的工作原理,以及各类外存储器。

Page 177: 第 4 章    机器数的运算方法及运算器

6.1 存储器与存储系统概述

6.1.1 存储器的作用

6.1.2 存储器分类

6.1.3 存储器的层次结构

Page 178: 第 4 章    机器数的运算方法及运算器

6.1.1 存储器的作用 现代计算机都是以存储器为中心的计算机,存储器处于全机的中心地位。

Page 179: 第 4 章    机器数的运算方法及运算器

6.1.1 存储器的作用 ⑴存放程序和数据。计算机执行的程序、程序运行所需要的数据都是存放在存储器中的。

⑵现代计算机可以配置的输入输出设备越来越多,数据传送速度不断加快,并且多数采用直接存储器存取( DMA )方式和输入输出通道技术,与存储器直接交换数据而不通过 CPU 。

⑶ 共享存储器的多处理器计算机的出现,使得可利用存储器来存放共享数据,并实现各处理器之间的通信,更加强了存储器作为整个计算机系统中心的作用。

Page 180: 第 4 章    机器数的运算方法及运算器

6.1.2 存储器分类⒈按存取方式分类⑴随机存取存储器RAM(Random Access Memory ) 特点:存储器中任何一个存储单元都能由 CPU 或I /O 设备随机存取,且存取时间与存取单元的物理位置无关。

用途:常用作主存或高速缓存。⑵只读存储器ROM(Read-Only Memory ) 特点:存储器的内容只能读出而不能写入。 用途:常用来存放固定不变的系统程序。作为固定存储,故又叫“固存”。

随着用户要求的提高,只读存储器产品从 ROM→ 可编程只读存储器 PROM→光可擦除可编程只读存储器 EPROM→ 电可擦除可编程的只读存储器 EEPROM ,为用户方便地存入和改写内容提供了物质条件。

Page 181: 第 4 章    机器数的运算方法及运算器

⑶顺序存取存储器 SRAM 特点:存储器中存储的信息(字或者记录块),完全按顺序进行存放或读出,在信息载体上没有惟一对应的地址号,访问指定信息所花费的时间和信息所在存储单元的物理位置密切相关。其存取时间长,速度慢。如磁带存储器。⑷直接存取存储器DAM

特点:存储器的任何部位(一个字或字节、记录块等)没有实际的、连线的寻址机构,当要存取所需要的信息时,必须执行两个逻辑操作:首先,直接指向整个存储器的一个小区域(如磁盘上的磁道或磁头);然后对这一小区域像磁带那样顺序检索、记数或等待,直至找到最后的目的块(磁道上的扇区)。这种存储器容量大,存取速度介于随机存储器与顺序存取存储器之间,多用作辅存,磁盘存储器就是直接存取存储器。 。

顺序存取存储器和直接存取存储器又合称为串行访问存储器。

Page 182: 第 4 章    机器数的运算方法及运算器

⒉按存储介质分类⑴半导体存储器:双极型半导体存储器和MOS型半导体存储器。 双极型半导体存储器采用 TTL电路或 ECL电路作存储单元,存取速度快,但功耗大,集成度低,多用作快速、小容量的存储器,如高速缓存。MOS型半导体存储器主要用作主存储器。

⑵磁表面存储器 广泛使用的是磁盘存储器和磁带存储器。特点是:存储容量大,位价格低,但结构为机电组合,工艺复杂,存取速度慢,主要用作辅助存储器。在微型计算机系统中,软磁盘存储器和硬磁盘存储器是基本配置。⑶光盘存储器

6.1.2 存储器分类

Page 183: 第 4 章    机器数的运算方法及运算器

⒊按信息的可保存性分类 分为易失性存储器和非易失性存储器。断电后,存储的信息将消失的存储器,称为易失性存储器, RAM 为易失性存储器。

断电后,存储的信息仍保存在存储器中,称非易失性存储器, ROM、 FLASH 和磁性材料存储器为非易失性存储器。

6.1.2 存储器分类

Page 184: 第 4 章    机器数的运算方法及运算器

⒋按在计算机中的作用分类 按在计算机中的作用分类,可将存储器分为主存储器(内存)、辅助存储器(外存)和缓冲存储器等。

6.1.2 存储器分类

Page 185: 第 4 章    机器数的运算方法及运算器

存储器的三级存储体系结构示意图

Page 186: 第 4 章    机器数的运算方法及运算器

6.1.3 存储器的层次结构⒈主存—辅存层次 把CPU所需的现行程序和数据存放在存取速度快,容量有限的称为“主存”或“内存”的半导体存储器中,供CPU直接使用。主存必须具有和CPU相当的工作速度,才能保证整个计算机运算速度的提高。那些暂时不用或尚未用到的程序和数据则存放在容量大、存取速度慢的称为辅助存储器的磁表面存储器或光盘存储器中,当CPU需要执行某程序时,可以将其从辅存调入内存。构成主存—辅存层次。

Page 187: 第 4 章    机器数的运算方法及运算器

主存—辅存层次使整个存储系统具有接近主存的存取速度,又有辅存的容量和接近辅存的位平均价,较好地解决了大容量和低成本的矛盾。辅存只与主存交换信息,CPU 不直接访问辅存,因此,辅存的存取速度可以慢些。

Page 188: 第 4 章    机器数的运算方法及运算器

主存的存取速度和 CPU 的存取速度往往差一个数量级。这样,主存的存取速度就成了计算机整机速度的瓶颈。

为了弥补主存速度的不足,在 CPU 与主存之间增加一级容量不大,速度很高的“高速缓冲存储器”( Cache ),借助于辅助硬件把高速缓存与主存构成一个整体。该整体具有接近于高速缓存的速度、主存的容量和接近于主存的每位平均价格,解决了速度与成本之间的矛盾。

⒉主存—高速缓存层次

Page 189: 第 4 章    机器数的运算方法及运算器

第 6 章 计算机的存储系统

Page 190: 第 4 章    机器数的运算方法及运算器

现代计算机采用程序控制方式工作,因此,用来存放程序的存储系统是计算机的重要组成部分。存储器包括内存储器和外存储器。内存储器包括主存储器和高速缓冲存储器,外存储器即辅助存储器。主存储器简称主存,它位于主机内部。本章介绍计算机的存储系统,包括主存储器的基本组成、层次结构和工作原理,高速缓冲存储器的工作原理,以及各类外存储器。

Page 191: 第 4 章    机器数的运算方法及运算器

目 录6.1 存储器与存储系统概述

6.2 主存储器

6.3 并行主存储器

6.4 高速缓冲存储器

6.5 虚拟存储器

6.6 存储保护

Page 192: 第 4 章    机器数的运算方法及运算器

6.1 存储器与存储系统概述

6.1.1 存储器的作用6.1.2 存储器分类6.1.3 存储器的层次结构

Page 193: 第 4 章    机器数的运算方法及运算器

6.1.1 存储器的作用 现代计算机都是以存储器为中心的计算机,存储器处于全机的中心地位。

Page 194: 第 4 章    机器数的运算方法及运算器

6.1.1 存储器的作用 存储器的作用可归纳为: ⑴存放程序和数据。计算机执行的程序、程序运行所需要的数据都是存放在存储器中的。

⑵现代计算机可以配置的输入输出设备越来越多,数据传送速度不断加快,并且多数采用直接存储器存取(DMA )方式和输入输出通道技术,与存储器直接交换数据而不通过CPU。

⑶ 共享存储器的多处理器计算机的出现,使得可利用存储器来存放共享数据,并实现各处理器之间的通信,更加强了存储器作为整个计算机系统中心的作用。

Page 195: 第 4 章    机器数的运算方法及运算器

6.1.2 存储器分类 ⒈按存取方式分类 ⑴随机存取存储器RAM(Random Access Memory) 特点:存储器中任何一个存储单元都能由CPU或I /O设备随机存取,且存取时间与存取单元的物理位置无关。 用途:常用作主存或高速缓存。

⑵只读存储器ROM(Read-Only Memory) 特点:存储器的内容只能读出而不能写入。用途:常用来存放固定不变的系统程序。作为固定存储,故又叫“固存”。

随着用户要求的提高,只读存储器产品从ROM→可编程只读存储器 PROM→光可擦除可编程只读存储器EPROM→电可擦除可编程的只读存储器 EEPROM ,为用户方便地存入和改写内容提供了物质条件。

Page 196: 第 4 章    机器数的运算方法及运算器

⑶顺序存取存储器SRAM 特点:存储器中存储的信息(字或者记录块),完全按顺序进行存放或读出,在信息载体上没有惟一对应的地址号,访问指定信息所花费的时间和信息所在存储单元的物理位置密切相关。其存取时间长,速度慢。如磁带存储器。

⑷直接存取存储器DAM 特点:存储器的任何部位(一个字或字节、记录块等)没有实际的、连线的寻址机构,当要存取所需要的信息时,必须执行两个逻辑操作:首先,直接指向整个存储器的一个小区域(如磁盘上的磁道或磁头);然后对这一小区域像磁带那样顺序检索、记数或等待,直至找到最后的目的块(磁道上的扇区)。这种存储器容量大,存取速度介于随机存储器与顺序存取存储器之间,多用作辅存,磁盘存储器就是直接存取存储器。

顺序存取存储器和直接存取存储器又合称为串行访问存储器 .

Page 197: 第 4 章    机器数的运算方法及运算器

⒉按存储介质分类 ⑴半导体存储器 : 双极型和MOS型半导体存储器。 双极型半导体存储器采用 TTL电路或 ECL电路作存储单元,存取速度快,但功耗大,集成度低,多用作快速、小容量的存储器,如高速缓存。 MOS型半导体存储器主要用作主存储器。

⑵磁表面存储器 广泛使用的是磁盘存储器和磁带存储器。特点是:存储容量大,位价格低,但结构为机电组合,工艺复杂,存取速度慢,主要用作辅助存储器。在微型计算机系统中,软磁盘存储器和硬磁盘存储器是基本配置。

⑶光盘存储器

6.1.2 存储器分类

Page 198: 第 4 章    机器数的运算方法及运算器

⒊按信息的可保存性分类 分为易失性存储器和非易失性存储器。断电后,存储的信息将消失的存储器,称为易失性存储器, RAM 为易失性存储器。

断电后,存储的信息仍保存在存储器中,称非易失性存储器, ROM、 FLASH和磁性材料存储器为非易失性存储器。

6.1.2 存储器分类

Page 199: 第 4 章    机器数的运算方法及运算器

⒋按在计算机中的作用分类 按在计算机中的作用分类,可将存储器分为主存储器(内存)、辅助存储器(外存)和缓冲存储器等。

6.1.2 存储器分类

Page 200: 第 4 章    机器数的运算方法及运算器

存储器的三级存储体系结构示意图

Page 201: 第 4 章    机器数的运算方法及运算器

6.1.3 存储器的层次结构⒈主存—辅存层次 把CPU所需的现行程序和数据存放在存取速度快,容量有限的称为“主存”或“内存”的半导体存储器中,供CPU直接使用。主存必须具有和CPU相当的工作速度,才能保证整个计算机运算速度的提高。那些暂时不用或尚未用到的程序和数据则存放在容量大、存取速度慢的称为辅助存储器的磁表面存储器或光盘存储器中,当CPU需要执行某程序时,可以将其从辅存调入内存。构成主存—辅存层次。

Page 202: 第 4 章    机器数的运算方法及运算器

主存—辅存层次使整个存储系统具有接近主存的存取速度,又有辅存的容量和接近辅存的位平均价,较好地解决了大容量和低成本的矛盾。辅存只与主存交换信息,CPU不直接访问辅存,因此,辅存的存取速度可以慢些。

Page 203: 第 4 章    机器数的运算方法及运算器

主存的存取速度和CPU的存取速度往往差一个数量级。这样,主存的存取速度就成了计算机整机速度的瓶颈。

为了弥补主存速度的不足,在CPU与主存之间增加一级容量不大,速度很高的“高速缓冲存储器”(Cache),借助于辅助硬件把高速缓存与主存构成一个整体。该整体具有接近于高速缓存的速度、主存的容量和接近于主存的每位平均价格,解决了速度与成本之间的矛盾。由于这个层次完全由硬件实现,不用系统辅助软件干扰,因此它对程序员来说是透明的。

⒉主存—高速缓存层次

Page 204: 第 4 章    机器数的运算方法及运算器

6.2 主存储器

6.2.1 主存储器的性能技术指标

6.2.2 随机存取存储器6.2.3 只读存储器

Page 205: 第 4 章    机器数的运算方法及运算器

6.2.1 主存储器的性能技术指标⒈存储容量:存储器中可以容纳的存储单元总数称为存储容量。

存储单元可分为字存储单元和字节存储单元。字存储单元是指一个机器字的存储单元,相应的单元地址称为字地址;而字节存储单元,是指存放一个字节的单元,相应的地址称为字节地址。如果一台计算机中可编址的最小单位是字存储单元,则该计算机称为按字编址的计算机;如果一台计算机中可编址的最小单位是字节存储单元,则该计算机称为按字节编址的计算机。目前大多数计算机采用字节为单位。在按字节寻址的计算机中,存储容量的最大字节数可由地址码的位数来确定。

Page 206: 第 4 章    机器数的运算方法及运算器

例如,某台计算机的地址码为 n 位,则可产生2n个不同的地址码,如果地址码全部利用,则其最大容量为2n个字节。当然,一台计算机设计定型以后,其地址总线、地址译码范围也已确定,因此,它的最大存储容量是确定的。而实际配置存储容量时,只能在这个范围内选择,一般主存储器实际的存储容量远远小于理论上的最大容量。

存储容量单位通常采用KB、MB、GB表示。 K为 210,M为 220, G为 230,也就是说, 1KB=1024B, 1MB=1024KB,1GB=1024MB。⒉存取时间(TA)

存取时间又称存储器访问时间,是指启动一次存储器操作到完成该操作所需的时间。具体地说,存取时间从存储器收到有效地址开始,经过译码、驱动,直到将被访问的存储单元的内容读出或写入为止。

Page 207: 第 4 章    机器数的运算方法及运算器

⒊存储周期(TM)

存储周期又称访内周期,是指连续启动两次独立的存储器操作所需间隔的最小时间。它是衡量主存储器工作性能的重要指标。

存储周期的倒数,称为存储速度。它表示每秒从存储器进出信息的最大数量,其单位用字 /秒或字节 /秒表示S=1/TMC 。如果用位 /秒表示,还应考虑总线宽度W。S=1*W/TMC

存储器带宽:每秒访问二进制位的数目,标明了一个存储器在单位时间内处理信息的能力。

例如,总线宽度为32位,存储周期为250ns则 存储器带宽=32b/250ns=32*109b/250ns=128Mbps=32MBps

Page 208: 第 4 章    机器数的运算方法及运算器

⒋可靠性 可靠性是指在规定的时间内,存储器无故障工作的时间。通常用平均无故障时间MTBF(Mean Time Between Failures)来衡量。MTBF越长,说明存储器的可靠性越高。⒌性能价格比 性能与价格的比值是衡量存储器经济性能好坏的综合性指标。这项指标与存储器的结构和外围电路以及用途、要求、使用场所等诸多因素有关。性能是前述四项性能的综合,价格是存储器的总价格。若用C 表示存储器的总价格(成本),用 S 表示存储容量(以字节位单位),则每个字节的成本 c=C/S(元 /字节)。

Page 209: 第 4 章    机器数的运算方法及运算器

6.2.2 随机存取存储器 随机存取存储器按其元件的类型来分,有双极型和

MOS型存储器两类。在存取速度和价格两方面,双极型存储器比MOS型存储器高,故双极型存储器主要用于高速的小容量存储体系。

在MOS型半导体存储器中,根据存储信息机构的原理不同,又分为静态MOS型半导体存储器(简称 SRAM )和动态MOS型半导体存储器(简称DRAM)。 SRAM采用双稳态触发器来保存信息,只要不断电,信息就不会丢失; DRAM利用记忆电容来保存信息,使用时只有不断地给电容充电才能使信息保持。SRAM 的集成度较低,功耗也较大;DRAM 的集成度较高,功耗低。在现代计算机中,内存容量较大,常由DRAM构成。

Page 210: 第 4 章    机器数的运算方法及运算器

SRAM由存储体、地址译码电路、读写电路和控制电路组成,一个4096×1位的SRAM的框图如下图所示。

⒈静态半导体存储器 SRAM

Page 211: 第 4 章    机器数的运算方法及运算器

图中, A0~ A11为地址线,用来寻址存储器中的某一个单元。 Din、 D0UT 为数据线,实现数据的输入 / 输出。 W/R 为读写控制信号线,用来实现读写操作控制。为 CS片选信号线,只有当 CS 有效时,该芯片的地址线、数据线和读写控制线才起作用,才能实现对该存储器的读写操作。

CS

Page 212: 第 4 章    机器数的运算方法及运算器

⑴ 存储体 半导体存储器的存储体由多个基本存储电路组成,每个基本存储电路对应 1 个二进制数位。上图所示的存储器内部含有 4096个存储单元,每个单元包含一个基本存储电路。存储单元按行、列排列成一个十分规则的阵列。一个m×n 的存储体矩阵如下图所示。每一个小方框代表一个基本存储电路,存放一位二进制数,每一横行代表一个存储单元,并行排列 n 个小框,表示字长为 n 位。每一位都有一条数据线,称作位线,编号相同的位公用一条位线,它是对外交换信息的通路。字线是经过译码后的输出线,共m条,每一条字线驱动一个存储单元,任何一个存储单元的长度都是相等的,读写操作时同一地址码的 n 位存储位同时被驱动。

Page 213: 第 4 章    机器数的运算方法及运算器

存储体矩阵

Page 214: 第 4 章    机器数的运算方法及运算器

⑵地址译码电路 地址译码电路的输入信息来自于总线中的地址信号,若某一存储器的地址输入信号线有 n条,则表明该存储器有 2n 个存储单元。地址译码电路的功能是接收总线中的地址信号并将其转换为存储体内部的存储单元选择信号。

Page 215: 第 4 章    机器数的运算方法及运算器

①单译码方式:相应的电路采用一维编址方式。它通常适用于小容量的存储器。若一个 4096×1 位的存储器采用一维编址方式,则其地址译码电路有 12条输入线, 4096条译码输出线(字线),该译码电路的输入、输出关系如上图所示。从该电路图中可以看到,一维编址方式在存储容量很大时会因字线过多致使存储器内部电路过于复杂而不实用,

②双译码电路,相应的电路采用二维编址方式。目前大容量存储器多采用二维编址方式。它采用双译码电路,一个叫 X 地址译码电路,另一个叫 Y地址译码电路。

地址译码有两种方式

Page 216: 第 4 章    机器数的运算方法及运算器

若每一个有 n/2个输入端,它可以译出 2n/2个输出端,那么两个译码器交叉译码的结果,共可译出2n/2×2n/2=2n个输出状态,其中 n 为地址信号线的数目。但此时译码输出只有 2n/2+2n/2=2n/

2+1根,与一维译码电路相比,大大节省了译码输出线。例如:4096×1位存储器的二维编址方式如下图所示, 4096个存储单元排列成64×64的矩阵,它需要12根地址信号线,其中X地址译码电路的输入信号为 A0~ A5,输出信号为 64(=26 )条,分别选中存储矩阵中的0~63行;Y地址译码电路的输入信号为A6~ A11,输出信号为 64(=26 )条,分别选中存储矩阵中的0 ~ 63列,控制各列的位线控制门。例如,输入地址信号为111111000000, X 方向的 A0~ A5为 000000, X 地址译码输出选中第 0 行,Y 方向的 A6~ A11为 111111, Y地址译码输出选中第 63列,第 63列的位线控制门打开,故最后译码的结果选中右上角的(0 ,63)这个存储单元。

Page 217: 第 4 章    机器数的运算方法及运算器

二维译码电路

Page 218: 第 4 章    机器数的运算方法及运算器

⑶ 读写电路和控制电路

存储器的基本操作是读操作和写操作,所以组成存储体的结构除了存储体和地址译码器以外,还有读写控制电路和控制信号输入输出流向的 I/O电路。

右图是一个二进制位的读写控制和 I/O电路的示意图。

Page 219: 第 4 章    机器数的运算方法及运算器

静态 RAM 存储器常用在主存规模较小的微型计算机中,静态 RAM 存储器的读写操作时序与微型计算机系统总线的读写操作时序基本匹配,因此,它需要较少的外围电路就可直接与系统总线相连,内存的扩充非常方便。

中央处理器发出的读写操作信号通过系统总线实现对存储器的读写操作,其过程主要分为以下三步:

① 由地址总线给出地址信号。 ② 通过控制总线发出相应的读操作信号或写操作信号。 ③ 在数据线上实现数据传送。因此,存储器与系统总线的连接也要实现对应的三类信号线的连接,即地址线的连接、控制线的连接、数据线的连接。

⒉SRAM存储器的组织及其寻址

Page 220: 第 4 章    机器数的运算方法及运算器

位扩展法是进行位数的扩充(加大字长),存储器的字数与系统的要求相同。

【例】字长为 8 位的某微型计算机,采用的存储器芯片的规格是8K×1,要求扩展为8K×8的存储器。此时就需进行位扩展。

①计算所需的存储器芯片的数量。计算的方法是:用需扩展的总容量去除以一片存储器芯片的容量。

[8K×8]/[8K×1]=8。 ②确定地址线和数据线。 8K×8 的存储容量需用 13条地址线、 8条数据线,地址线的数目与存储器芯片的地址线数目相同,因此,只需将对应的系统总线的地址线与存储芯片的地址线连在一起即可。存储芯片的数据线只有一条,可将 8片存储芯片的每条数据线分别连到 8条数据线上。在这种连接方式中,没有片选信号的要求,可将存储芯片的片选信号直接接地。

⑴ 位扩展法

Page 221: 第 4 章    机器数的运算方法及运算器

字扩展法是指增加存储器中的字数量,而位的数量保持不变。

方法是:将各芯片的地址线、数据线、读写控制线并联,与系统总线相应的地址线、数据线、读写控制线连接,而片选信号用来区分各芯片的地址范围。字扩展法的关键是各芯片地址范围的确定,即片选信号的连接。片选信号用系统地址总线的高位地址经译码器译码得到。

⑵ 字扩展法

Page 222: 第 4 章    机器数的运算方法及运算器

【例】用 4片16×8Kb的芯片组成64×8Kb的存储器原理图。 ①计算所需的存储器芯片的数量。 [64K×8]/[16K×8]=4 ②确定地址线和数据线。 16×8Kb的存储容量需14条地址线、 8条数据线;64×8Kb的存储容量需16条地址线、 8条数据线。

③系统数据线D0~D7分别与存储器的D0~D7相连;系统地址总线A0 ~A13分别与存储器的A0 ~A13相连;而A14,A15经译码器分别与存储器芯片的 4 个片选信号连接。

Page 223: 第 4 章    机器数的运算方法及运算器

④地址分配。 64×8Kb存储器地址范围是0000H~FFFFH其中芯片 1 的地址范围4000H~3FFFH;芯片2 的地址范围4000H~7FFFH;芯片 3 的地址范围8000H~BFFFH;芯片 4 的地址范围C000H~ FFFFH。

Page 224: 第 4 章    机器数的运算方法及运算器

在存储器扩展时,通常在字向和位向都要扩展。一个存储容量为M×N位的存储器,若用L×K位的存储器芯片组成,这个存储器总共需要M/L×N/K片存储器芯片。

【例】存储器字位扩展,存储器采用 INTEL2114芯片( 1K×4b),要求扩展成4K×8位的容量。

①计算所需的存储器芯片的数量。整个存储器共需8片INTEL2114芯片。 ②确定地址线、数据线和片选线。 INTEL2114芯片本身有地址线 10

条(A0~A9)、数据线4条(D0~D4)、一条片选信号和一条读写控制信号WE。系统扩展4K×8位存储器,提供地址线12条(A0~A11),数据线8条,因此每两片INTEL2114组成一组,构成8 位字长的存储器组。系统地址总线的低10条(A0~A9)对应地连接到INTEL2114的地址线,高两位地址线 A11、 A10连到 2∶4译码器的输入端,译码器产生4 个译码输出信号,每一个信号分别连接4 组存储器的中一组。

⑶ 字位扩展法

Page 225: 第 4 章    机器数的运算方法及运算器

数据总线的高 4 位数据( D7~ D4)连接到存储器序号位为奇数的存储器芯片,低 4 位数据( D3~ D0)连接到存储器组序号为偶数的存储器芯片。系统读写控制信号与 INTEL2114对应的信号相连。

Page 226: 第 4 章    机器数的运算方法及运算器

④地址分配。 4×8Kb存储器地址范围是000H~FFFH其中芯片 1 的地址范围000H~3FFH;芯片2的地址范围400H~7FFH;芯片3的地址范围800H~BFFH;芯片 4 的地址范围C00H~FFFH。

Page 227: 第 4 章    机器数的运算方法及运算器

【例】设系统要求扩展32K×8位的存储器,提供的存储器芯片是:4K×4的芯片 4片,8K×8的芯片 3片。

扩展32K×8位的存储器需15条地址线(A0~A14),8条数据线( D0~D7 )。 4片 4K×4 的存储器芯片构成8K×8 的存储器,每两片为一组,每组 4K×8 位; 3 片8K×8的存储器芯片构成24K×8的存储器,每片一组。

①控制线的连接:控制线的连接较简单,只要将控制总线的读写控制信号 WE 与每一存储器芯片的读写控制线WE直接相连即可。

⑷ 用不同规格的存储器芯片扩展存储器

Page 228: 第 4 章    机器数的运算方法及运算器

②数据线的连接:芯片组 3、 4、 5 的存储器芯片都为 8 位数据宽度,将对应的 8 位数据线与系统数据总线相连即可。芯片组 1 、 2 由 4 片 4K×4 的存储器芯片组成,每组两片,每片的数据宽度为 4 位,因此,将每组其中一片的 4 位数据线连接到系统数据总线的D7~D4 ,另一片连接到D3~D0。

③地址译码线的连接:不同规格芯片的连接,关键在于译码器输入线与输出的选择。对于输入线来说,通常以容量最小的芯片为基础。因此 , 容量大的芯片其片内高位地址线也要参加译码,例 8K×8 位芯片的 A12 要参加译码,才能保证整个存储器地址的连续。

Page 229: 第 4 章    机器数的运算方法及运算器

本例以最小容量 4K×4位的存储器位基础, 32K是4K的 8倍,故选用 3∶8译码器, 74LS138 3∶8译码器的引脚图及功能表如图6-14。

根据 3∶8译码器的功能表和表 6.3的地址分配表,用 A14、 A13、 A12三位地址线作译码输入,译码输出共 8条线,由上到下, 000选择第一组芯片, 001选择第二组芯片,第三组至第五组为 8K×8位的芯片,有 8K

个单元,是第一、第二组芯片 4K个单元的两倍,需用两条译码输出线选择,故各增加与门一个,由 010和 011

共同选择第三组芯片,由 100和 101共同选择第四组芯片,110和111共同选择第五组芯片。

Page 230: 第 4 章    机器数的运算方法及运算器
Page 231: 第 4 章    机器数的运算方法及运算器

另外,若系统地址总线有 16条, A15地址线未参加译码,它可随机出现 0 、 1 两种情况,若将其加于A14~ A0决定的任何一个地址码上,可以出现两种不同的地址码。这种现象称为地址的重合。

由于 A15未参加译码,因此又称部分译码。部分译码时必定会出现地址重合或覆盖现象。如果 A15一起参加译码,则称全译码。全译码无地址重合的现象,此时,多出的地址范围空置。要实现全译码只需将 A15与

74LS138的 G1相连,此时地址码的最高位为1 ;或将A15与 74LS138的 G2a 或 G2b相连,此时地址码的最高位为1 。

Page 232: 第 4 章    机器数的运算方法及运算器

DRAM是以 MOS管栅极和衬底间电容上的电荷来存储信息的,由于 MOS管栅极上的电荷会因漏电而泄放,故存储单元中的信息只能保持若干毫秒。为此,要求在1~3 毫秒中周期性地刷新电容上的电荷,而 DRAM本身是不具有刷新功能的,这就必须附加刷新逻辑电路。

另外, DRAM将地址分为行地址和列地址,行地址和列地址分时复用,以减少引脚数目,因此, DRAM的扩展比较复杂。

但在设计存储器时,常常采用 DRAM器件,原因有三:① DRAM的集成度高;② DRAM的功耗低;③ DRAM的价格低廉。

⒊动态 RAM

Page 233: 第 4 章    机器数的运算方法及运算器

早期在 IBM PC/XT微型计算机上使用的DRAM是4164芯片。在此以4164为例来说明DRAM的组成。 4164是64K×1位的芯片,采用双列直插式封装,其结构框图如下图所示。

⑴ DRAM的组成

Page 234: 第 4 章    机器数的运算方法及运算器

64K存储器需 16条地址线,为了减少封装引脚数,动态RAM将地址线分为行地址和列地址两部分,行、列地址共用8条地址线,采用分时复用的方法访问存储器单元。

在访问存储器某一单元时,先将低 8 位地址( A0~ A7 )作为行地址,由行地址选通信号将其锁存到行地址缓冲器,再由行地址译码器产生256个译码输出选择信号;然后将高 8 位地址(A8~A15)作为列地址,由列地址选通信号将其锁存到列地址缓冲器,再由列地址译码器产生256个译码输出选择信号。行、列地址选择线的交叉组合即可对64K位不同单元进行寻址。

4164芯片的存储器体由 4个 128×128存储体组成,每个存储体与一个 128位读出放大器相连,经 I/O门控电路及输出缓冲器,将存储体中的每一位选择连接到数据总线上。

Page 235: 第 4 章    机器数的运算方法及运算器

DRAM 的存储单元是以电容中的电荷存储信息,如果它处于静态时,电容中的信息将因电荷泄漏而逐渐消失。为了保持存储信息的不变,必须反复对存储单元进行充电,以恢复原来的内容,这个过程称为刷新。

DRAM的MOS 存储单元电路采用类似“读”操作的方式进行刷新。读出过程恢复存储单元的 MOS栅极电容电荷,并保持原单元的内容不变。读出过程又叫再生过程。

在再生过程中,只发行地址选择,不发片选信号和列地址,每次再生一行。因此,每次对存储器的每一行进行读出,就可对存储器的每一个单元进行刷新。但这些读写操作是随机的,有些单元可能因长时间得不到访问而丢失信息。

⑵ DRAM的刷新

Page 236: 第 4 章    机器数的运算方法及运算器

因此,刷新必须是定时的。对存储器上下两次刷新时间的间隔称为刷新周期,一般来说,刷新周期为1 ~ 3ms 。定时刷新由专门的控制逻辑电路来完成,它不依赖于外部的访问,所以对CPU来说是透明的。

常用的刷新方法有集中式、分散式和异步式三种。①集中式刷新 所谓集中式刷新,是指在允许的最大刷新周期内,根据存储容量的大小和存取周期的长短,集中安排一段刷新时间,在刷新时间内停止读写操作。

Page 237: 第 4 章    机器数的运算方法及运算器

例如,某一动态RAM由128×128存储矩阵组成,存取周期为 0.5μs,连续刷新 128行,共需 128个读周期,即一次刷新的总时间为 64μs 。若刷新周期为 2ms ,那么, 2ms 内有4000个读写操作。在这 4000个读写操作内,前面 3872个周期用来进行读写或维持信息,后面128个周期用来刷新。

由此图可以看出,在读写操作时,不进行刷新操作,因此,读写操作不受刷新操作影响,读写速度较高。但在刷新时,必须停止读写操作。这段不能进行读写操作的时间称为“死区”。在本例中,这段“死区”占 4000 个周期中的 128 个,故死时间率为 3.2%。

Page 238: 第 4 章    机器数的运算方法及运算器

②分散式刷新 分散式刷新是指把每行存储单元的刷新分散到每个读写周期内进行,即把系统对存储器的访问周期分为两段,前一段用来读写数据或使存储器处于保持状态,后一段用来对存储矩阵的一行进行刷新。

这种刷新方式增加了系统对存储器的存储时间,避免了“死区”,但加长了存储器的存储时间,降低了整机的处理速度。而且刷新时间过于频繁,没有充分利用所允许的最大刷新间隔时间。这种方式不使用于高速存储器。

Page 239: 第 4 章    机器数的运算方法及运算器

③异步式刷新 异步刷新是上述两种方法的结合,它充分利用最大间隔时间并使“死区”缩短。

对于 128×128存储矩阵的芯片来说,每行的刷新间隔时间是2ms/128,即每隔 15.6μs刷新一行。在 2ms内分散地对 128行轮流刷新一遍,刷新一行是只停止一次读写操作时间。这样,对每一行来说,刷新时间仍为 2ms,而“死区”的长度则缩短为0.5μs。

Page 240: 第 4 章    机器数的运算方法及运算器

DRAM的访问与刷新需要由硬件电路的支持,这个硬件电路包括刷新计数器、刷新 / 访存裁决、刷新控制逻辑电路等。这些电路集成在一片半导体芯片上,形成DRAM控制器。 DRAM控制器是总线与动态 RAM芯片之间的接口,它将总线信号变换为适合 DRAM访问的信号。DRAM控制器为内存的扩展带来很大方便。

Intel8203就是一个 DRAM控制器。它是专门为支持 2127、 2118和 2164DRAM而设计的。 8203内部结构从功能上分可分为两部分:一是地址处理部分,二是时序处理部分,其逻辑框图如下页图所示。

⑶DRAM控制器

Page 241: 第 4 章    机器数的运算方法及运算器

地址处理部分用来处理动态 RAM正常读写时地址信号和刷新过程中的地址信号。正常读写时,地址信号由地址总线提供。对于一般的 DRAM,都用行地址和列地址公共用一组引脚来减少引脚数目。为此,在动态RAM控制器内部,行地址和列地址之间要用一个多路转换器来切换,而在外部,在给出一组地址信号的同时,动态 RAM控制器再输出 RAS或者 CAS信号,向 DRAM芯片告示此刻输出的地址到底是行地址还是列地址。所以, RAS和CAS是提供外部DRAM的行地址和列地址的选通信号。

Page 242: 第 4 章    机器数的运算方法及运算器

另外一个多路开关用来实现地址的切换。因为在正常读写时,行地址来自地址总线,而在刷新时,行地址来自刷新计数器。

时序处理部分 :8203 要产生各种时序,这些时序都来自一个基准时钟。

8203的时序处理部分有 3 个主要输入端,即RD/S1、WR和 REFRQ/ALE 。 WR 和 RD 是 CPU 对内存的读写信号,REFRQ是专门用来输入外部刷新请求信号的。从图中可以看到,8203内部有一个刷新定时器,它使动态RAM每隔2ms就全面地完成一次刷新过程。也就是说,如果没有外部刷新请求,那么,刷新定时器会每隔 10~ 20μs就发一次刷新请求,对动态RAM进行逐行刷新。但有时候,希望从外部控制刷新定时,这时,就可以从REFRQ端输入外部刷新请求。

Page 243: 第 4 章    机器数的运算方法及运算器

以DRAM控制器8203与DRAM2164配合为例,说明DRAM的扩展方法。8203和2164的连接关系如下图所示。

⑷ DRAM扩展应用举例

Page 244: 第 4 章    机器数的运算方法及运算器

2164内部有 4 个 128×128的基本存储电路,它们合起来组成 64K×1位的存储容量。但是, 2164对外只有 8条引脚 A7~ A0,即行地址和列地址共用同一组引脚,这样,就要靠时序来区分是行地址还是列地址。 8203接受系统总线的地址信号后,先输出行地址,同时输出一个负脉冲,作为行地址的选通信号;然后输出列地址,同时输出一个负脉冲,作为列地址的选通信号。行地址和列地址的最高位用来确定当前操作针对 4 个矩阵中的那一个。在内存刷新周期中,最高位地址不用,这样, 4 个矩阵同时被刷新,用 128 个刷新周期就可以对 64K字节整个刷新一遍。

Page 245: 第 4 章    机器数的运算方法及运算器

64K字节是由 8片 2164芯片构成,这 8片芯片的地址线和选通信号线分别连接在一起,因此,可以将它们看成 4个128×128×8的立体矩阵。

8203 在设计时,已经考虑了使其输出信号和 2164 的输入要求进行很好的配合。由 OUT7~OUT0先后提供行地址和列地址,和则为模块中所有的 2164提供列地址选通信号和写信号。 8203的地址输出和2164的输入正好相位相反,不过,这不会引起什么问题,只是在地址线上为全“ 0”时,实际上存取的是行地址和列地址为全“1”的字节。

Page 246: 第 4 章    机器数的运算方法及运算器

在8203和2164相连时,体选输出端只有和可用,也就是说,一般情况下,一块8203可以连接 2个64K的存储组。而在 8203和 2117、 2118相连时,均为可用,这样,可以用一块8203连接4个16K的存储组。不过,在 16位数据总线系统中,一般按“字”进行存取。在按字存取的情况下, 2 个存储组(分别存放高位字节和低位字节)一起被选中,所以, 2 个存储组共用1 个体选信号,比如。这样,一个 8203实际上就可以连接4 个 64K的存储组,即一共连接 32块 2164芯片,组成 256K的模块。在按字节存取的情况下,利用体选信号、和低位字节有效信号、高位字节有效信号组合起来,实现对4 个存储组中某 1 组的选择。

Page 247: 第 4 章    机器数的运算方法及运算器

6.2.3 只读存储器 ( 了解 ) 只读存储器 ROM 的特点是一旦 ROM 中有了信息,就不会轻易改变,也不会在掉电时丢失,它们在计算机中是只供读出的存储器。

ROM器件有两个显著的优点: ①结构简单,位密度比RAM高。 ②非易失性,信息存储可靠性高。 ROM可以分为以下 4 种。 ①掩膜型ROM或者简称ROM

②可编程只读存储器PROM

③可擦除可编程的只读存储器EPROM

④可用电擦除的可编程的只读存储器EEPROM

Page 248: 第 4 章    机器数的运算方法及运算器

掩膜型ROM中的信息是厂家根据用户给定的程序或数据对芯片进行 2 次光刻而决定的。根据制造技术,掩膜型ROM又可分为MOS型和双极型两种。MOS型功耗小,但速度比较慢,微型计算机系统中用的 ROM主要是这种类型。双极型速度比 MOS型快,但功耗大,只用在速度要求较高的系统中。

在数量较少时,掩膜ROM的造价很贵,但是,如果进行批量生产,那么,就相当便宜。

掩膜ROM的引脚信号比较简单,只有 1 组地址输入引脚, 1 组数据输出引脚和 1 个片选信号及 1 个芯片输出使能端。

⒈掩膜型 ROM

Page 249: 第 4 章    机器数的运算方法及运算器

可编程的 ROM便于用户按照自己的需要来写入信息。这种ROM一般由二极管矩阵组成,写入时,利用外部引脚输入地址,对其中的二极管键进行选择,使某一些被烧断,某一些保持原状,于是就进行了编程。那些保持原状的二极管键代表“ 1”,而那些烧断的二极管键代表“ 0”。PROM一旦进行了编程,就不能再进行编程了。

PROM的价格和数量无关,但是PROM的电路和工艺比ROM复杂,又具有可编程的特性,所以,价格比较贵。一般在非批量使用时,用 PROM 比用掩膜 ROM 要便宜;在批量使用时,则掩膜ROM比较便宜。

⒉可编程的 ROM( PROM)

Page 250: 第 4 章    机器数的运算方法及运算器

EPROM是一种可以多次进行擦除和重写的ROM。 在EPROM中,信息的存储是通过电荷分布来决定的,所以,编程过程就是一个电荷注入过程。编程结束后,尽管撤除了电源,但是,由于绝缘层的包围,注入的电荷无法泄漏,因此,电荷分布能维持不变,也就是说,EPROM也是一种非易失性的存储器件。

只有当一个外部能源(比如紫外线光源)加到EPROM上时, EPROM内部的电荷分布才会被破坏,此时,聚集在各基本存储电路中的电荷会形成光电流泄漏走,使电路恢复为初始状态,从而擦除了写入的信息,这样的 EPROM 可以写入新的信息。不过, EPROM 的写入过程很慢,所以,它仍然是作为只读存储器放在计算机系统中使用。

⒊可擦除、可编程的 ROM( EPROM)

Page 251: 第 4 章    机器数的运算方法及运算器

为了使 EPROM具有可修改性, EPROM和其他集成电路的包装不同,如下图所示。在 EPROM芯片上方,有一个石英窗,从而允许紫外线穿过而照射到电路上。将EPROM 放在紫外线光源下照射 30 分钟(一般为 15 分钟,视具体型号而异)后, EPROM中的内容就会抹除,于是,就可以重新对它编程。

Page 252: 第 4 章    机器数的运算方法及运算器

Intel 2764 是一种位容量为 8K×8的 EPROM ,它有 13条地址线( A12~ A0 ), 8 条数据线( D7~D0 ), 2条电压输入端 VPP和 VCC ,除此以外,还有一条芯片允许端和编程脉冲控制端 PGM。

Intel 2764有 4 种工作方式,即读方式、编程方式、校验方式和备用方式。

以 Intel 2764为例,介绍 EPROM的几种工作方式

Page 253: 第 4 章    机器数的运算方法及运算器

在读方式下VPP和VCC接 5V电压,地址输入端A12~A0用来输入存储单元的地址,编程脉冲控制端PGM 和芯片允许端连在一起,当这两端为低电平即有效时,数据线上便出现所寻址单元的内容。这种方式和掩膜 ROM 的读出方式几乎一样。下图是 2764 的读方式时序图,这里要注意的一点就是芯片允许信号必须在地址稳定以后有效,才能保证读得所需单元的数据。

⑴读方式

Page 254: 第 4 章    机器数的运算方法及运算器

在编程方式下,VCC仍加+5V电压,但VPP引脚要按厂家要求加上 +12~+25V 的电压,引脚为高电平,从 A12~A0端输入要编程的单元地址,在D7~D0端输入数据,这时,再在 PGM 端加上 +5V编程脉冲,便可进行编程。下图左半部分就是2764编程方式时序,其中要注意的一点就是必须在地址和数据稳定之后,才能加上编程脉冲。

⑵编程方式

Page 255: 第 4 章    机器数的运算方法及运算器

校验方式总是与编程方式配合使用的,以便在每次写入一个字节数据之后,紧接着将写入的数据读出,去检查写入的数据是否正确。在校验方式下, VPP和 VCC与编程方式时候的接法一样,端为低电平,编程脉冲控制端也为低电平。上页图的右半部分就是校验方式时序图。

⑶校验方式

EPROM除了读方式、编程方式和校验方式外,还有一种备用方式。要使 EPROM工作在备用方式,只要使 PGM端输入一个 TTL高电平即可。在备用方式下,芯片功耗下降为读方式下的 25%,此时,数据输出端为高阻抗状态。

⑷备用方式

Page 256: 第 4 章    机器数的运算方法及运算器

可用电擦除的可编程 ROM简称 EEPROM。这种器件和 EPROM的外型和管脚分布十分相似,只是擦除过程不需要用紫外线光源。

EEPROM通常有 4 种工作方式,即读方式、写方式、字节擦除方式和整体擦除方式。下表列出了EEPROM Intel 2815的工作方式及各种方式下的信号电平。

⒋可用电擦除的、可编程的ROM( E2PROM)

Page 257: 第 4 章    机器数的运算方法及运算器

从表中可以看到,根据、和 VPP的不同,就可选择其中某种工作方式。

读方式是 E2PROM最经常使用的工作方式,此时,地址输入端为所需读取的存储单元的地址,、均为低电平,VPP加 4~6V电压,输出端便会得到读得的数据。

写方式时,从地址输入端上输入要写入数据的单元地址,数据输入端为要写入的数据,端和端均为高电平,VPP加+21V电压即可。

在字节擦除方式下,由地址端输入要擦除的字节的地址,为低电平,为高电平, VPP上要加上 +21V电压,数据端则要加上 TTL电平,这样即可以对指定字节进行擦除。

整体擦除方式可以使整片 E2PROM回到初始状态。在整体擦除方式下,端为低电平,端要加上 +9V~ +15V高电平, VPP端加 21V电压,数据端和字节擦除方式时一样,要加上TTL电平。

Page 258: 第 4 章    机器数的运算方法及运算器

6.3 并行主存储器

所谓并行主存储器,是指在一个主存周期内可以并行读取多个数据字的主存储器。通常采用单体多字和交叉存取方式。

寻址方式有单体多字寻址方式、多体存储器的寻址方式和多体交叉寻址方式。

Page 259: 第 4 章    机器数的运算方法及运算器

当并行的存储器共用一套地址寄存器和地址译码电路时称为单体方式,其结构原理图如下。

⒈单体多字寻址方式

Page 260: 第 4 章    机器数的运算方法及运算器

多个并行存储器与同一地址寄存器连接,所以同时被一个单元地址驱动,一次访问读出的是沿 n 个存储器顺序排列的 n 个字,故也称单体多字方式。 与单体单字结构的存储器相比,单体多字寻址方式在存取速度方面有明显的优点,因为,单体单字存储器的每一个主存周期只能读出一条指令或一个数据,在取指和读取数据的周期内, CPU 处于等待状态,因此工作效率低。在本例所示的单体 4 字的寻址方式中,一次能读出 4 个字长为 w位的数据或指令,然后再以单字长的形式送给 CPU执行。

Page 261: 第 4 章    机器数的运算方法及运算器

⒉多体存储器的寻址方式下图是多体存储器原理图

Page 262: 第 4 章    机器数的运算方法及运算器

计算机系统中的大容量主存是由多个存储体组成的,每个存储体都有自己的读写线路、地址寄存器和数据寄存器,能以同等的方式与 CPU交换信息,每个存储体容量相等,它们既能同时工作又独立编址。

这种结构的寻址方式有利于并行处理,能够实现多个分体的并行操作,一次访问并行处理的 n 个字,不像单体方式那样一定是沿存储器顺序排列的存储单元内容,而是分别由各分体的地址寄存器指示的存储单元的内容。因为各分体工作独立,因此,只要进行合理的调度,就能实现并行处理,两个存储体可以同时进行不同的操作。例如一个存储体被 CPU访问时,另一个存储体可用来与外部设备进行直接存储器存取( DMA)操作。

Page 263: 第 4 章    机器数的运算方法及运算器

多体交叉是多体存储器的另一种组织形式,下面以一个四体交叉存储器的组织形式为例,来说明多体交叉存储器的工作原理。下图是四体交叉原理图。

⒊多体交叉寻址方式

Page 264: 第 4 章    机器数的运算方法及运算器

多体交叉寻址方式与多体存储器寻址方式不同,多体存储器是以高位地址作为模块号,低位地址作为体内地址,每个模块体内地址是连续的;多体交叉寻址方式是以低位地址作为模块号,高位地址作为体内地址,各模块间地址编号采用交叉方式。上图所示的 4 个模块 M0、 M1、 M2、 M3的编址如下表所示。框内序号表示存储单元的地址编号 J=0, 1 ,2…。

Page 265: 第 4 章    机器数的运算方法及运算器

⑴地址连续的两个单元分布在相邻的两个模块中,地址按模块号方向顺序编号。

⑵同一模块内相邻的两个单元地址之差等于 n。例如在四体交叉存储器结构方式下,两个单元地址之差等于4 。

⑶任何一个存储单元的二进制地址编号的末 lg2n位正好指示该单元所属模块的编号,访问主存时只要判断这几位就能决定访问的是那个存储模块。在四体交叉存储器结构方式下, M0模块的每个单元地址的二进制编码最后两位都是 00, M1模块都是01,M2模块的都是02,M3模块的都是03。

⑷ 同一模块内每个单元地址除去模块号后的高位地址正好是模块内单元的顺序号,由此就可决定访问单元在模块中的位置。

n 体交叉寻址方式的规则满足以下 4点

Page 266: 第 4 章    机器数的运算方法及运算器

6.4 高速缓冲存储器

6.4.1 高速缓冲存储器的工作原

6.4.2 高速缓冲器的组织与管理

Page 267: 第 4 章    机器数的运算方法及运算器

6.4 高速缓冲存储器 CPU在一段较短的时间内,是对连续地址的一段很小的主存空间进行访问。对于数组这类数据结构,在主存中存放的地址空间也是连续的。因此, CPU对主存的局部地址空间访问较为频繁,而对此范围以外的访问甚少,这种现象称为程序访问的局部性。根据局部性原理,在 CPU和主存之间,设置一个存取速度高而容量相对较小的存储器,是解决计算机系统速度瓶颈问题的一个有效措施。这一高速的容量较小的存储器称为高速缓冲存储器 (Cache) ,和主存构成“ Cache—主存”的层次结构。 CPU对位于主存的正在运行的程序和处理的数据建立一个副本,存放在高速缓冲存储器 Cache中, CPU就可直接从 Cache中取指令执行程序和处理数据,从而大大提高了计算机运行程序的速度。

Page 268: 第 4 章    机器数的运算方法及运算器

6.4.1 高速缓冲存储器的工作原理 ⒈高速缓冲存储器的基本结构 高速缓冲存储器 Cache由存储体、 Cache-主存地址映像和Cache替换机构组成,结构如下图所示。

Page 269: 第 4 章    机器数的运算方法及运算器

Cache存储体是以一定的字容量所组成的存储模块,尽管它的位置介于 CPU和主存之间,但 CPU对它访问的功能全部由硬件实现,因此, Cache对程序员来说是透明的。 Cache的存储体和主存一样被分成若干个块,每个块称为一页,页的容量通常为在一个主存周期内能够访问主存的字数。

Cache存储体的容量和页的大小是影响 Cache工作效率的重要因素,通常以“命中率”来衡量 Cache的效率。所谓命中率,是指 CPU所要访问的信息在 Cache中的比率。相反,将 CPU所要访问的信息不在 Cache中的比率称为失效率。一般来说, Cache存储体的容量比主存小得多,但不能太小,太小了会使命中率降低; Cache存储体的容量也不能过大,过大了会增加成本,使整个计算机系统的性能价格比降低。

⑴ Cache存储体

Page 270: 第 4 章    机器数的运算方法及运算器

地址映像功能是把 CPU发送来的主存地址转换成 Cache地址。主存地址由标记 (段号)、块 (页 ) 号和块 (页 ) 内地址三部分组成, Cache的地址由块 ( 页 ) 号和块 ( 页 ) 内地址两部分组成。主存与Cache的块 (页 ) 的地址相同,主存的块 (页 )号与 Cache的块 (页 ) 号对应。在 Cache中,还有一个标记,它以 Cache地址中的块 ( 页 ) 号为地址,该单元内存放着该块所对应的主存块的段号。当 CPU送来主存地址时,首先用块号去访问 Cache的标记,如果取出的内容和段号相同,说明 CPU要访问的内容已经在 Cache中,称为命中,其块号和块内地址就是访问 Cache的地址;如果从 Cache标记中取出的内容和段号不相同,表示 CPU当前访问的内容不在 Cache中,称为块失效,这时, CPU则用主存地址从主存中取出所需的内容,并把它存放到 Cache中,若不能装入 Cache,则应启动替换算法,根据某种替换策略,把该块替换到Cache中。

⑵ 地址映像

Page 271: 第 4 章    机器数的运算方法及运算器

当发生块失效现象时,应将从主存中取出的内容存放到 Cache 中。若 Cache 中尚有空闲的块,则可将新的内容写入;若Cache 中的块都已装满,则需要进行替换。替换机构是按替换算法设计的,其作用是指出应该替换的块号。替换算法与 Cache 的命中率密切相关,替换机构由硬件实现。

⑶ 替换机构

Page 272: 第 4 章    机器数的运算方法及运算器

⑴ Cache的读操作 CPU在执行读操作指令时,由地址总线发出地址信号,地址信号经地址映像产生两种情况中的一种:一种是命中,另一种是未命中。若为命中,即所需的信息已经在Cache中, CPU通过硬件电路直接访问 Cache;若没有命中,即 CPU访问的信息不在 Cache中,那么, CPU就要访问主存,并把访问的信息调入 Cache。在把从主存读出的信息存入 Cache时,如果 Cache中无空闲的块,则利用替换机构找出一个旧块,把该块的内容存放到主存相应的单元中,再把新的内容存放进去 .

⒉高速缓冲存储器的读写操作

Page 273: 第 4 章    机器数的运算方法及运算器

⑵ Cache的写操作 Cache中保存的字块是主存中相应字块的一个副本,如果程序执行过程中,要对某一单元进行写操作时,就会遇到如何保持 Cache和主存内容的一致性问题。这个问题通常有以下三种解决方法:

①通过式写 ②标志交换法 ③仅将信息写入主存

Page 274: 第 4 章    机器数的运算方法及运算器

6.4.2 高速缓冲器的组织与管理⒈地址映像 把主存中地址映像到 Cache中定位,称作地址映像。三种基本地址映像方式是直接映像、全相联映像和组相联映像。

设主存划分为 2m个块,块名称分别为 Mm( 0 )、 Mm( 1 )、…、Mm( i )、…、Mm(2m-1),每块的大小为2b个字。Cache分为2c 个块,块名称分别为 Mc ( 0 )、 Mc ( 1 )、…、 Mc ( j )、…、Mc(2c-1),每块的大小同样为2b个字。

⑴直接映像函数可定义为:j = i mod 2c

j为 Cache的字块号, i 为主存的字块号。在这种映像方式中,主存的第 0块、第2c块、第2c+1块…只能映像到Cache中第 0块,主存的第 1 块、第 2c+1块、第 2c+1+1块…只能映像到 Cache中第 1 块。

Page 275: 第 4 章    机器数的运算方法及运算器

直接映像 Cache结构

Page 276: 第 4 章    机器数的运算方法及运算器

主存地址由三部分组成,末 b 位为字块内地址,中间 c 位为 Cache字块地址,高 t 位( t=m-c)是主存字块标记,当有效位为“ 1” 时,表明该数据块是主存中一块数据的副本。 Cache在接收到 CPU送来的主存地址和读写命令后,用中间 c 位字段找到对应的 Cache中字块,然后将其标记与主存地址的高 t 位比较,如果两者相等,而且有效位为“ 1”,则可根据 b 位块内地址,从 Cache中取得所需的指令或数据;如果两者不相等,或者有效位为“ 0”,就从主存读出新的字块替换 Cache中旧的字块,同时修改 Cache中标记,并将数据送给 CPU。

直接映像方式易于实现,但很不灵活,主存中的 2t个字块只能对应唯一的 Cache字块,因此,块冲突率较高。另外,即使 Cache内还空着许多字块,但它们不满足映像函数的地址对应关系,这些字块不能占用,降低了 Cache的使用效率。

Page 277: 第 4 章    机器数的运算方法及运算器

全相联映像允许主存中的每一个字块映像到 Cache中的任何一个字块上,也允许从已经被占满的 Cache中替换出任意一个旧字块。全相联映像方式如下图所示。

⑵全相联映像

Page 278: 第 4 章    机器数的运算方法及运算器

Cache和主存中的字块标记都为 m 位, CPU在执行访问主存操作时,将地址的高 m 位与 Cache的标记进行比较,从而判断出所访问的主存地址的内容是否在Cache 中。在这种方式中,块的定位是完全自由的,允许使用各种替换算法,具有灵活、块冲突率低等优点,是一种理想的方案。但需要作 2 路的相联搜索,代价较高。由于 Cache的速度要求较高,所以,所有比较都直接用硬件来实现,电路结构复杂,以致无法用于Cache系统中,实际的 Cache组织则采用各种措施来减小电路的复杂性。

Page 279: 第 4 章    机器数的运算方法及运算器

组相联映像方式实际上是直接映像和全相联映像的一个综合的方案,其结构如下图所示。

⑶ 组相联映像

Page 280: 第 4 章    机器数的运算方法及运算器

它把 Cache中的字块分成 2c 个组,每组包含 2r 个字块,于是有 c= c+r 。那么,主存字块 Mm ( i )( 0≤i≤2m-1 )可以用下列函数映像到 Cache 字块Mc(j)(0≤j≤2c-1)上。 j = (i mod 2c' )×2r+ k ; ( 0≤k≤2r-1) k 为位于上列范围内的可选参数。按这种映像方式,组间为直接映像方式,而组内为全相联映像方式。

Page 281: 第 4 章    机器数的运算方法及运算器

组相联映像方式把主存地址划分为三段,末 b 位为块内地址,中间 c’ 位为 Cache 组地址,高 t+r位形成标记字段。

组相联映像方式的性能与复杂性介于直接映像和全相联映像两种方式之间。当 r=0 时,它就成为直接映像方式;当 r=c时,就是全相联映像方式。

Page 282: 第 4 章    机器数的运算方法及运算器

当必须从主存向 Cache传送一个新块,且 Cache中的可用块已被占满时,就产生了替换算法的问题。常用的方法有以下两种:

⑴先进先出 (FIFO)算法:先进先出算法总是把最先进入 Cache的字块作为被替换掉的块。它不需要随时记录各个字块的使用情况。因此,开销小,容易实现。其缺点是一些需要经常使用的程序 ( 例循环程序 ) 块,由于它是最先进入的而被替换掉。

⑵近期最少使用 (LRU)算法 : LRU算法是把 CPU近期最少使用的块作为被替换掉的块。这种替换方法需要随时记录 Cache中各块的使用情况,以便确定哪个块是近期最少使用的块。

⒉替换算法

Page 283: 第 4 章    机器数的运算方法及运算器

第 6 章 结 束The End

谢谢!!