[x-y] 补

Download Report

Transcript [x-y] 补

第一章 计算机系统概论
(1)计算机系统的组成:分软件和硬件两部分
(2)计算机系统的层次结构:
①从机器使用者的角度来说,粗分为应用软件、
系统软件和硬件三个层次。
②从程序设计员和机器硬件设计者的角度来说,
细分为:高级语言虚拟机、汇编语言虚拟机、
操作系统虚拟机、机器语言机器、微程序机器。
(2)计算机系统的层次结构
5
级
高级语言级
4级
汇编语言级
编译(解释)程序
汇编程序
3
级
操作系统级
2级
一般机器级
操作系统
微程序
1级
微程序设计级
微程序直接由硬件执行
机器指令
广义指令
(3)冯·诺依曼结构计算机的特点
1.计算机的五大基本部件:运算器、控制器、
存储器、输入设备和输出设备;
2.存储程序控制:程序和数据同时存入存储
器中,并按地址寻址,计算机应在不需操
作人员干预的情况下,自动逐条取出指令
和执行任务。
3.采用二进制来表示指令和数据。
(4)硬件和软件的相互关系:
• ①两者相辅相成,缺一不可。
• ②两者都用来实现逻辑功能,同一功能可
用硬件实现,也可用软件实现。
(5) 计算机硬件的基本组成和功能:
• ①运算器用来进行各种算术逻辑运算。
• ②控制器用来执行指令,送出操作控制信
号。
• ③存储器用来存放指令和数据。
• ④输入和输出设备用来实现计算机和用户
之间的信息交换。
(6)计算机系统性能评价指标:
①机器字长: CPU一次能处理二进制数据的位数。
一般将参加运算的寄存器的宽度称为机器字长。
②运行速度:
a)主频:CPU主脉冲的时钟频率。
b)定点指令执行速度:每秒钟执行多少百万条定点
指令数(MIPS)。
c)浮点操作运算速度:每秒钟执行多少浮点数操作
(FLOPS)。
③存储容量:
a)主存容量:包含RAM和ROM两部分。以单元个数
×存储单元宽度或字节数来表示。
b)辅存容量:磁盘容量,以字节为单位,如:80GB。
第二章 运算方法和运算器
• 了解真值和机器数的含义;了解无符号数的含义、用途和
表示;了解定点数的表示方法;了解定点数的乘/除运算
的基本思想;了解为何在运算中会发生溢出;了解如何判
断定点数的各类运算时的溢出;了解浮点数的表示方法;
了解串行加法器和快速并行加法器的不同;了解运算器
(数据通路)的基本结构;
• 理解为什么现代计算机都用补码表示定点数;理解算术逻
辑单元ALU的功能和结构;
• 能够在真值和不同的编码表示机器数之间进行转换;能够
在真值与单精度格式浮点数之间进行转换。
• 掌握补码定点数的加/减运算过程;掌握浮点数的规格化
方法;掌握如何计算浮点数表示范围;掌握IEEE754标准
中单精度格式的表示; 掌握浮点数加减运算过程和方法。
1. 定点数的表示方法
定点数:约定所有数据的小数点位置固定不变;
X0
X1 X2……Xn-1 Xn
符号
量值
纯小数:小数点位于X0和X1之间,0  x  1  2n
纯整数:小数点位于Xn的右边,0  x  2n 1
2. 浮点数的表示
浮点数:把数的表示范围和精度分别表示,
相当于数的小数点位置随比例因子的不同而
在一定范围内可以左右浮动的数据;
N  M R
尾数
E
基数
阶码
(2)IEEE浮点格式
总位数 符号位 阶码
单精度数 32
双精度数 64
1
8
1
11
52
临时浮点数 80
1
15
64
尾数
23
阶码决定浮点数的表示范围,而尾数则
决定浮点数的精度。
(3) 浮点数的规格化
为了提高数据的表示精度,同时为了便于浮点数之间
的运算与比较,规定计算机内浮点数的尾数部分用纯小
数形式给出,而且当尾数的值不为0时,其绝对值应
>=0.5,这种表示方式被称为浮点数的规格化表示。
机器零:当一个浮点数的尾数为0时,不论其阶码为何值,
该浮点数的值都为0。当阶码值比它能表示的最小值还小
时,不管其尾数为何值,计算机都把该浮点数看成零值,
通常称为机器零,此时该浮点数的所有位都清为0值。
IEEE754浮点数标准
• 32位规格化浮点数(尾数23位,阶码8位)
真值为: x=(-1)S×(1.M)×2(E-127)
e=E-127
其中阶码E用移码表示,尾数域表示的值是
1.M,最高位(总是1)隐含不存储。
• 64位规格化浮点数(尾数52位,阶码11位):
真值为: x=(-1)S×(1.M)×2(E-1023)
e=E-1023
例1
若浮点数x的754标准存储格式为(41360000)16,求其
浮点数的十进制数值。
• 解:将16进制数展开后,可得二制数格式为
• 0
100 00010
011 0110 0000 0000 0000 0000
• 符号S
阶码E(8位)
尾数M(23位)
指数e=E-127=10000010-01111111=00000011=(3)10
包括隐藏位1的尾数
1.M=1.011 0110 0000 0000 0000 0000=1.011011
于是有
x=(-1)S×1.M×2e=+(1.011011)×23
=(+1011.011)2=(11.375)10
例2
• 将数(20.59375)10转换成754标准的32位浮点数的
二进制存储格式。
解:首先分别将整数和分数部分转换成二进制数:
20.59375=10100.10011
然后移动小数点,使其在第1,2位之间
10100.10011=1.010010011×24
e=4于是得到:S=0,E=4+127=131, M=010010011
其中E=(131)10=(10000011)2
最后得到32位浮点数的二进制存储格式为:
01000001101001001100000000000000
=(41A4C000)16
3. 数的机器码表示
1.真值与机器数
为了区别一般书写表示的数和机器中数的编码,
通常将前者称为真值,后者称为机器数或机器码。
机器中最常用的编码方法有原码、补码、反码、
移码。
机器数:数值数据在计算机内部用二进制编码表
示的数称为机器数,即将正、负符号用一位二进制
数码0和1来代替的数。
真值:机器数真正的值(即:原来带有正负号的
数)称为机器数的真值。
定点小数的编码
(纯小数)原码,反码,补码的定义
X
[X]原=
1 – X=1+|X|
X
[X]反= (2 - 2-n)+ X
X
[X]补=
2+X
0 =<X < 1
-1 < X <= 0
0 = <X < 1
-1 < X<= 0
0 =<X < 1
-1=< X <=0
Mod ( 2 – 2-n )
Mod 2
例3
• 已知:x=+0.10010,y=-0.10010,分别求x,y的原
码、反码、补码。
解:[x]原=010010, [x]反=010010, [x]补=010010
[y]原=110010, [y]反=101101, [y]补=101110
原 反 补码表示小结
正数的 原码,反码,补码表示均相同,
-符号位为 0,数值位同数的真值。
零的原码和反码均有2个编码,补码只一个编码
负数的 原码,反码,补码表示均不同,
负数符号位为 1,数值位:原码为数的绝对值;
反码为每一位均取反;
补码为反码再在最低位+1
模4补码(变形补码)
X
X 补  
4  X
0  X  1  2 n
 1  X  0 MOD 4
例:X=+0.1101, [X]补=00.1101
X=-0.1101, [X]补=11.0011
功能特点:易于检查加减运算中的溢出情况
4.整数的编码表示
X 原
 X
 n
2  X  2 n  | X |
X 反

X
  n+1

(2  1)+X
X 补

X
  n+1
n+1

2
+
X

2
-| X |

0  X  2n
2  X 0
n
0  X  2n  1
 (2 n  1)  X  0
n为有效数据的位数
( MOD 2 n 1  1)
0  X  2n  1
 2n  X  0
( MOD 2 n 1 )
例如:整数8位码:
X = +01110 [X]原= [X]反=[X]补=0 0001110
X =-01110 [X]原= 1 0001110
[X]反= 1 1110001 [X]补= 1 1110010
5.移码表示法
设n+1位纯整数X=X0X1X2…Xn(X0为符号位)
X 移  2n  X
 2n  X  2n 1
例:X=+10110,Y=-10110,则有
X 移  25 10110 110110
Y 移  25  (10110)  001010
X 移  2n  X  2n  [ X ]补
当0  X  2n时,
X 移  2n  X  [ X ]补  2n
当-2n  X  0时,
结论:对补码的符号位取反即得其对应的移码
移码的性质
最高位代表符号位,1 表示 正,0 表示负;
‘0’有唯一的编码:[+0]移=[-0]移=1000…0
移码用于阶码的表示,两个移码容易比较大小,
便于对阶。
例4.
已知:X=+0101101, Y=-1001101
写出 [X]补、[Y]补、[X]移、[Y]移 、
解:
[X]补=00101101, [Y]补=10110011
[X]移=10101101, [Y]移=00110011
例5
• 设机器字长16位,定点表示,尾数15位,数符1位,问:
(1)定点原码整数表示时,最大正数是多少?最小负数是多少?
(2)定点原码小数表示时,最大正数是多少?最小负数是多少?
(3)定点补码小数表示时,最大正数是多少?最小负数是多少?
解:(1)定点原码整数表示
最大正数值=(215-1)10=(+32767)10
最小负数值=-(215-1)10=(-32767)10
(2)定点原码小数表示
最大正数值=(1-2-15)10=(+0.111...11)2
最小负数值=-(1-2-15)10=(-0.111..11)2
(3)定点补码小数表示
最大正数值=(1-2-15)10=(+0.111...11)2
最小负数值=-1
关于数据表示范围小结
• 补码表示时数据的表示范围比原码、
反码表示时数据的表示范围多一个
最小负数。
关于数据表示范围小结
• 对n+1位定点整数X(包括1位符号位),用原码
和反码表示时,其数据表示范围是:
-(2n-1)≤ X ≤2n-1
• 用补码表示时,其数据表示范围是:
-2n≤ X ≤2n-1
• 对于n+1位定点小数,用原码、反码表示时,其
表示范围是:
-(1-2-n)≤ X ≤1-2-n
用补码表示时,其表示范围是:
-1≤ X ≤1-2-n
练习
写出下列各数的原码、反码、补码、移码表示
(8位二进制数)。
(1)-35/64
(2) 23/128
(3) -127
(4)-1(小数表示) (5)-1(整数表示) (6) –128
1.
2.
机器字长为8位(含1位符号位),若机器数为
81H,当它分别表示原码、补码、反码和移码时,
等价的十进制整数分别是多少?
练习答案:
1.各数的原码、反码、补码、移码如下表所示:
十进制数
-35/64
43/128
-127
-1(小数)
-1(整数)
-128
二进制数
-0.100011
0.0101011
-1111111
-1.0
-1
-10000000
原码
反码
补码
移码
1.1000110 1.0111001 1.0111010 0.0111010
0.0101011 0.0101011 0.0101011 1.0101011
11111111 10000000 10000001 00000001
无
无
1.0000000 0.0000000
10000001
11111110 11111111 01111111
无
无
10000000 00000000
2.等价的十进制数分别是:
原码:-1,补码:-127 反码:-126 移码:+1
作业
P63
1. 4
6.补码的加减运算
[X + Y]补 = [X]补 + [Y] 补
[X-Y] 补 = [X]补 + [-Y]补
[-Y] 补 = 对 [Y] 补 逐位取反,再在最低位加 1
溢出判断:
1) 正 + 正 得 负 或 负 + 负 得 正;
2) 数字位有向符号位的进位,但符号位不产生向
更高位的进位;
3) 双符号位的值为 01 或 10;
例1
模 4 补码计算
X=0.1011 y= -0.0101
求[X+Y]补和[X-Y]补
解:[X]补 = 00 1011, [Y]补 = 11 1011
[-Y]补 = 00 0101
00 1011
00 1011
+11 1011
+ 00 0101
100 0110
01 0000
X+Y
X-Y
(X+Y双符号位相同,不溢出; X-Y双符号位不同,溢出)
例2
x=-0.1101,y=-0.1011,求x+y
解: [x]补=1.0011,[y]补=1.0101
[x]补
+ [y]补
11.0011
11.0101
[x-y]补 110.1000
模4丢弃
fs1=1, fs2=0,结果溢出
[x]补
+ [y]补
1.0011
1.0101
[x-y]补 10.1000
模2丢弃
C=0, Cf=1,结果溢出
作业
• P63 5(1)(3),6(2)(3)
7. 定点乘法运算
1.采用软件实现乘法运算
2.在原有数据通路的基础上增加一些硬件逻辑来
实现(用加法和右移实现 )。
定点原码一位乘
定点补码一位乘
原码两位乘
补码两位乘
3.设置专门的乘法器(阵列乘法器)
原码一位乘
1.运算公式:
设:
[ x]原  x f  x1 x2    xn
[ y ]原  y f  y1 y2    yn
则:
[ x  y ]原  ( x f  y f )  (0.x1 x2    x)  (0. y1 y2    y )
2.运算方法
若乘数的当前位=1,将被乘数和部分积求和。
若乘数的当前位=0,则跳过。
将部分积移位。
所有位都完成后,部分积即为最终结果。
例1:x=0.1001,y=-0.1101,用原码一位乘法求x×y
解: [x]原=0.1001,[y]原=1.1101
高位部分积
00.0000
+00.1001
00.1001
00.0100
+00.0000
00.0100
00.0010
+00.1001
00.1011
00.0101
+00.1001
00.1110
00.0111
低位部分积/乘数
1 1 0 1
说明
最低位为1,+x
部分积,乘数右移一位
1 1 1 0 1
0 1 1 1 0
最低位为0,+0
部分积,乘数右移一位
最低位为1,+x
部分积,乘数右移一位
1 0 1 1 1
0 1 0 1 1
最低位为1,+x
部分积,乘数右移一位
运算结果:
[x×y]原=(0⊕1)+0.01110101
=1.01110101
x×y=-0.01110101
F加法器
A F
&
&
C 乘 数
C/2 C
B F
A 部分积
&
B 被乘数
计数器 Cd
F/2 A
原码一位乘逻辑电路框图
不带符号的阵列乘法
例2
• 已知不带符号的二进制整数A=11011,B=10101,
求每一部分乘积项aibj的值与p9p8…p0的值。
解:
1 1 0 1 1 = A (2710)
×
1 0 1 0 1 = B (2110)
————————————
1 1 0 1 1 a4b0=1, a3b0=1, a2b0=0, a1b0=1, a0b0=1
00000
a4b1=0, a3b1=0, a2b1=0, a1b1=0, a0b1=0
11011
a4b2=1, a3b2=1, a2b2=0, a1b2=1, a0b2=1
00000
a4b3=0, a3b3=0, a2b3=0, a1b3=0, a0b3=0
+ 11011
a4b4=1, a3b4=1, a2b4=0, a1b4=1, a0b4=1
————————————
1000110111=P
P = p9p8p7p6p5p4p3p2p1p0 = 1000110111 (56710)
带符号的阵列乘法器
• 例3. 设x=+15,y=-13,用带求补器的原码阵列乘法器
求x.y=?
解:[x]原=01111 ,[y]原=11101,符号位运算:0⊕1=1
1111
×
1101
————————————
1111
0000
1111
+
1111
————————————
11000011
乘积符号为1,算后求补器输出11000011,
[x×y]原=111000011
换算成二进制数真值是 x·y=(-11000011)2=(-195)10
例4:设x=-15,y=-13,用带求补器的补码阵列
乘法器求出乘积x·y=? 并用十进制数乘法进行验证。
解:[x]补=10001 , [y]补=10011 , 乘积符号位运算:1⊕1=0
尾数部分算前求补器输出 |x|=1111 , |y|=1101
1111
×
1101
————————————
1111
0000
1111
+
1111
————————————
11000011
乘积符号为0,算后求补器输出11000011,[x×y]补=011000011
补码二进制数真值 x·y=0×28+1×27+1×26+1×21+1×20 =(+195)10
十进制数乘法验证 x·y = (-15)×(-13) = +195
练习与作业
• P64 7(1)
8.定点除法运算
• 原码一位除:符号位和数值位分开运算。
数值部分用无符号数除法实现。用加/减法
和左移实现。
• 并行除法器:用可控加法/减法(CAS)单元
实现。
8.定点除法运算
原码一位除
1.运算公式:
设:
[ x]原  x f  x1 x2    xn
[ y ]原  y f  y1 y2    yn
则:
[ x  y ]原  ( x f  y f )  (0.x1 x2    x)  (0. y1 y2    y )
2.运算方法
恢复余数法
加减交替法
原码一位除法运算方法
• 恢复余数法(取数的绝对值)
– 余数-除数;余数为Ri
– 若Ri >0,则上商1,余数左移1位, Ri+1 =2 Ri -Y 。
• 若Ri <0,则上商0,( Ri +Y)再左移。 Ri+1
=2( Ri +Y)-Y;即:Ri+1 =2( Ri +Y)-Y=2 Ri+Y
– 继续;直到余数为0或精度足够。
• 加减交替法(不恢复余数法)
– 被除数-除数;余数为Ri
– 若Ri >0,则上商1,余数左移1位, Ri+1 =2 Ri -Y 。
– 若Ri <0,则上商0,不恢复余数,直接对Ri左移,然
后+Y,可得新的余数。 Ri+1 =2 Ri+Y
例:x=0.1011,y=-0.1101,用原码加减交替法求
x/y
解: |x|补=00.1011, |y|补=00.1101, [-|y|]补=11.0011
被除数(高)/余数
-y
+y
-y
-y
00.1011
11.0011
11.1110
11.1100
00.1101
00.1001
01.0010
11.0011
00.0101
00.1010
11.0011
11.1101
被除数(低)/商
0 0 0 0 0
说明
x-y
0 0 0 0 0
0 0 0 0 0
余数<0,商上0
余数左移,+y
0 0 0 0 1
0 0 0 1 0
余数>0,商上1
余数左移,-y
0 0 0 1 1
0 0 1 1 0
余数>0,商上1
余数左移,-y
0 0 1 1 0
余数<0,商上0
余数
11.1101
11.1010
+y 00.1101
00.0111
商
说明
0 0 1 1 0
0 1 1 0 0
余数左移,+y
0 1 1 0 1
余数>0,商上1
最后得: [x/y]原=1+0.1101=1.1101
即: x/y=-0.1101,余数为:0.0111×2-4
并行除法器
1、可控加法/减
法(CAS)单元
原理:采用不恢
复余数(加减交
替)法
P=0,作加法运算
P=1,作减法运算
Si =Ai (Bi  P)  Ci
Ci  1  ( Ai  Ci )  ( Bi  P)+AiCi
并行除法器
2、不恢复余数的阵列除
法器
被除数
x=0.x6x5x4x3x2x1
(双倍长)
除数 y=0.y3y2y1
商数 q=0.q3q2q1
余数 r=0.00r6r5r4r3
除数右移
9. 运算器部件的组成与设计
运算器部件的功能与组成
功能1:完成对数据的
算术运算和逻辑运算
ALU
功能2:暂存参加运算
的数据和中间结果
通用寄存器
GR
功能3:接收外部数据
输入,送出运算结果
多路选择器
MUX
乘商
寄存器
快速加法器
并行加法器、先行进位加法器:
a)加法器是加/减/乘/除运算的基础,加法
器的速度至关重要
b)进位方式是影响加法器速度的重要因素
c) 并行进位方式能加快加法器速度
d)通过“进位产生”和“进位传递”函数来使
各进位独立、并行产生
定点运算器的基本结构
(1)单总线结构的运算器
(2)双总线结构的运算器
(3)三总线结构的运算器
10. 浮点数运算
由专门的浮点运算器实现:
①加减运算:
a)对阶:小阶向大阶看齐,阶小的那个数的尾
数右移,直到两数阶码相同,右移时,增加保
护位。
b)尾数相加减:用定点数加/减运算实现。
c)规格化处理:根据结果进行左规或右规操作。
d)舍入:有就近舍入 / 正向舍入 / 负向舍入 / 截
断四种方式。
② 乘除运算:尾数用定点数乘/除运算实现,阶
码用定点数加/减运算实现。
浮点加减运算
1.运算规则
X±Y=(Mx.2Ex-Ey ±My)×2Ey
Ex<=Ey
2.运算步骤
(1)对阶操作
(2)对阶后的浮点数尾数求和(差)操作
(3)规格化处理
对阶原则:
(4)舍入操作
(5)检查阶码是否溢出
小阶向大阶看齐
例1. 设x=2010×0.11011011, y=-2100×0.10101100,
求x+y 。
解: 1.0操作数检查(非0)
2.对阶:阶码对齐后才能加减。规则是阶码小的向阶码大的数
对齐;令△E=Ex-Ey
若△E=0,表示两数阶码相等,即Ex=Ey;
• 若△E>0,表示Ex>Ey;
• 若△E<0,表示Ex<Ey。
• 当Ex≠Ey时,要通过尾数的移位操作以改变Ex或Ey,使之相等。
– [x]浮=00010, 0.11011011; [y]浮=00100, 1.01010100
– [△E]补=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=00010+11100=11110
即阶差△E =-2,Ex<Ey,Mx右移两位,Ex加2。
[x]浮=00100, 0.00110110(11)
例1 解
3. 尾数相加
–
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)
4. 结果规格化
– 规则:尾数右移1位,阶码加1;尾数左移1
位,阶码减1。
– 左规处理,结果为1.00010101(10),阶码为
00011
例1 解
5. 舍入处理(对阶和向右规格化时)
就近舍入(0舍1入):类似”四舍五入”,丢弃的最高位为
1,进1
– 朝0舍入:截尾
– 朝+∞舍入:正数多余位不全为”0”,进1;负数,截尾
– 朝-∞ 舍入:负数多余位不全为”0”,进1;正数,截尾
采用0舍1入法处理, 1.00010101(10)舍入
得1.00010110。
6. 溢出判断和处理
– 阶码上溢,一般将其认为是+∞和-∞ 。
– 阶码下溢,则数值为0。
– 阶码符号位为00,不溢出。得最终结果为
x+y = 2011×(-0.11101010)
例2. 设浮点数的阶码为4位(含符号位),尾数为6位(含符号
位),x、y中的指数项、小数项均为二进制真值。
x=-2-010×0.1111 ,y=2-100×0.1110,求X-Y=?
解:x和y在机器中的浮点补码表示形式为:
[-y]补:1100,1.00100
[x]补:1110,1.00010 [y]补:1100,0.11100
①对阶,[ΔE]补=[Ex]补+[-Ey]补=1110+0100=0010,其真值为
+010,即x的阶码比y的阶码大2,-y的尾数应右移2位,保
留阶码E=1110,得: [-My]补=1.11001(00)
11.00010(00)
②尾数相减(用双符号),
+ 11.11001
即[Mx]补+[-My]补为:
110.11011(00)
丢掉
③ 结果规格化:右规,尾数右移1位,阶码加1
[x-y]补=1111,1.01110 (0舍1入)
x-y = 2-001×(-0.10010)
例3. 设x = 10Ex×Mx = 102×0.3 ,
y = 10Ey×My = 103×0.2 , 求 x+y=? x-y=?
解:
Ex=2, Ey=3, Ex<Ey, 对阶时小阶向大阶看齐。
x+y = (Mx·10Ex-Ey + My)×10Ey
= (0.3×102-3 + 0.2)×103
= 0.23 × 103 = 230
x-y = (Mx·10Ex-Ey - My)×10Ey
= (0.3×102-3 - 0.2)×103
= -0.17 × 103 = -170
课堂练习
已知:x=0.1101×201 y=-0.1010×211
尾数和阶符都采用补码表示,都采用双
符号位表示法。 求x+y
参考答案
• [x]浮=0001,00.1101
[y]浮=0011,11.0110
• [ΔE]补=[Ex]补+[-Ey]补=0001+1101=1110
即阶差为-2 ,Mx应当右移2位,
• [x]浮=0011,00.0011(01)
• 尾数和为11.1001(01)
• 左规11.0010(10),阶码减1为0010
• 舍入(0舍1入)得:11.0011
• x+y=-0.1101×210
浮点乘、除法运算
• 算法
– 阶码加、减:乘:EX+EY ,除:EX- EY
– 对尾数进行乘、除法,求得结果
– 规格化
– 舍入,可能再次规格化
– 进行溢出检查(阶码)
溢出判断(补码表示)
补码采用双符号位,为了对溢出进行判断
00
为正
11
为负
01
上溢
10
下溢
例4. x=+011,y=+110,用4位二进制数补码表示,
求[x+y]补 和 [x-y]补,并判断结果是否溢出。
解:[x]补=00011, [y]补=00110, [-y]补=11010
[x+y]补=[x]补+[y]补=01001, 结果上溢。
[x-y]补=[x]补+[-y]补=11101=1101,
结果正确,x-y为-3。
溢出判断(移码表示)
(1)运算公式:
设n+1位纯整数X=X0X1X2…Xn
X 移  2n  X
 2n  X  2n 1
(Mod 2n1 )
X 移  Y 移  2n  X  Y 移  X  Y 移
X  Y 移  X 移  Y 补
X  Y 移  X 移   Y 补
(Mod 2n1 )
(Mod 2n1 )
(2)溢出判断:
双符号位:最高符号位恒用‘0’参加运
算,当结果的最高符号位变为‘1’时则溢
出。
11. 流水线原理
设过程段Si所需的时间为τi,缓冲寄存器的延时为τ1,线性
流水线的时钟周期定义为:
τ=max{τi}+τl=τm+τl
流水线处理的频率为 f=1/τ。
流水线原理
• 一个具有k 级过程段的流水线处理 n 个任务需要
的时钟周期数为Tk=k+(n-1), 所需要的时间为:
T=Tk × τ
• 而顺序完成的时间为:T=TL×τ=n×k×τ
• k级线性流水线的加速比:
TL
n.k
Ck 

Tk k  (n  1)
例
设有一个4级流水浮点加法器每个过程段所需时间为:0操作数检查τ1=70ns,
对阶τ2=60ns,相加τ3=90ns,规格化τ4=80ns,缓冲器L的延迟时间为τl
=10ns,求(1)4级流水线加法器处理n个浮点数的加速比为多少?(2)
如果每个过程段的时间都相同,即都为75ns(包括缓存寄存器时间)时,
则处理n个浮点数的加速比是多少?
解:(1)加法器流水线的时钟周期为:
•
τ=max{70,60,90,80}+τl=90ns+10ns=100ns
处理n个浮点数的时钟周期数为:Tk=K+(n-1)=4+(n-1)=n+3
所需要的时间为: T1=Tk × τ=(n+3) τ=(n+3)×100ns
如果不是流水则处理n个浮点数加法的时间为:
T2=n×( τ1 + τ2 + τ3 + τ4 )=n×300ns
则流水加速比为:Ck=T2/T1=n×300ns/[(n+3)×100ns]=n×3/(n+3)
当n∞时, Ck≈3
(2) Ck=n×75×4/(n+3)×75=n×4/(n+3)
当n∞时, Ck≈4
本章小节
• 本章主要介绍数据的表示和运算。主要
包括:真值和机器数的概念,无符号数
的表示和作用、定点数的表示、浮点数
的表示(包括浮点数的形式、浮点数的规
格化、浮点数的表示范围、IEEE754标
准)、定点数运算(包括加减运算、乘法
运算、除法运算)、浮点数运算、算术
逻辑单元ALU和快速加法器。
第三章 指令系统
• 指令系统概述
• 指令和数据的寻址方式
• 典型指令、指令系统举例
指令系统的发展
• 从计算机组成的层次结构来说,指令有微指令、
机器指令和宏指令。
• 微指令:是微程序设计级的命令,属于硬件。
• 宏指令:是由若干条机器指令组成的软件指令,
属于软件。
• 机器指令:介于微指令和宏指令之间,通常简
称指令,每一条指令可完成一个独立的算术运
算或逻辑运算操作。
• 指令系统:一台计算机中所有指令的集合,称
为这台计算机的指令系统。
指令的格式
• 指令格式:指令用二进制代码表示的结构形式。
操作码字段
地址码字段
操作码:表示该条指令的所要完成的操作性质和
功能。
地址码:用于给出被操作的信息(指令或数据)
所在的地址。
地址码的设计
一般的操作数有:被操作数、操作数、操
作结果,根据指令中所包含的操作数的不
同,有如下几种指令格式:
三地址指令
操作码
二地址指令
操作码
一地址指令
操作码
零地址指令
A1
A2
A1
A3
A2
A
操 作 码
指令和数据的寻址方式
基本概念:
 物理地址(有效地址):指令或数据在存
储器中实际存放的单元地址。
 寻址方式:寻找指令或操作数的有效地址
的方式。
 形式地址:指令中给出的操作数的地址。
 指令的寻址方式:形成指令的有效地址的
方法。
 操作数的寻址方式:形成操作数的有效地
址的方法。
例 题
例1 指令格式如下所示,其中OP为操作码,试分析
指令格式的特点。
15 - 9
OP
8 - 6
——
7
-
4
源寄存器
3 - 0
目标寄存器
解:(1)表示两地址指令,指令字长为16位(单字
长指令);
(2)操作码字段为7位,可以表示27= 128条不同
的指令;
(3)源操作数和结果均存放在寄存器中,可分别
指定16个通用寄存器,所以是RR型指令;
(4)这种指令结构常用于算术逻辑运算类指令。
例 题
例2 一种RS型指令的结构如下所示:
6位
4位
1位
2位
16位
OP
——
通用寄存器
I
X
偏移量D
其中I为间址标志位,X为寻址模式,D为偏移量。通过I、
X、D的组合,可构成下表所示的寻址方式,请写出6种
寻址方式的名称。
寻址方式
1
2
3
4
5
6
I
0
0
0
1
1
0
X
有效地址E 说 明
00
E=D
01
E=(PC)±D PC为程序计数器
10
E=(R2)±D R2为变址寄存器
11
E=(R3)
00
E=(D)
11
E=(R1) ±D R1为基址寄存器
例 题
例3 基址寄存器的内容为2000H,变址寄存器的内容为
03A0H,指令的地址码部分是003FH,当前正在执行的指
令所在的地址为2B00H。
(1)求基址变址寻址和相对寻址两种情况的访存有效地址;
(2)设变址寻址用于取数指令,相对寻址用于转移指令,
存储器存放的内容如下:
地址 内容
003FH 2300H
2000H 2400H
203FH 2500H
23A0H 2700H
23DFH 2800H
2B00H 063FH
请写出从存储器中所取的数据及转移地址。
(3)若采用直接寻址,请写出从存储器中取出的数据。
解:
(1)基址变址:
EA=基址+变址+偏移量
=2000H+03A0H+003FH=23DFH
相对寻址:EA=(PC)+偏移量
=2B00H+003FH=2B3FH
(2)变址寻址时EA=23DF
因此从23DFH单元取出的数据为2800H;
相对寻址时转移地址=2B3FH
(3)直接寻址时EA=003FH,
S=(EA)=2300,因此取出的数据为2300H
例 题
例4 某机指令格式如下:
15 - 10
OP
9 - 8
X
7
-
0
D
图中X为寻址特征位,且X=0时不变址;X=1时用变
址寄存器X1进行变址;X=2时用变址寄存器X2进行
变址;X=3时相对寻址。设(PC)=1234H,(X1)
=0037H,(X2)=1122H,请确定下列指令的有效
地址(均用16进制表示):
1)4422H 2)3248H 3)1322H
5) 6738H
4)39A1H
解:
将指令的编码4422H展开为2进制形式为:
010001 00 00100010
OP
X
D
对应X=0,为直接寻址
所以:EA=D=00100010B=0022H
同理将6738H展开为2进制形式为:
011001 11 00111000
OP X
D
对应X=11,为相对寻址
所以:EA=(PC)+D=1234H+38H=126CH
例 5(参见P118-119)
某16位机器所使用的指令格式和寻址方式如下所示,该机有两
个20位基址寄存器,四个16位变址寄存器,十六个16位通用
寄存器。指令汇编格式中的S(源),D(目标)都是通用寄
存器,M是主存中的一个单元。三种指令的操作码分别是:
MOV(OP)=(A)H, MOV是传送指令
STO(OP)=(1B)H, STO为存数指令
LAD(OP)=(3C)H。 LAD为取数指令
要求:(1)分析三种指令的指令格式与寻址方式特点。
(2)CPU完成哪一种操作所花时间最短?哪一种操作所花时间
最长?第二种指令的执行时间有时会等于第三种指令的执行时
间吗?
例题
15 - 10
OP
15 - 10
OP
15 - 10
OP
9 - 8
——
9 - 8
7
-
目
7
-
4
3 - 0
标
源寄存器
4
3 - 0
基址
源寄存器
位移量(16位)
9 - 8
——
7
目
20位地址
-
4
标
变址寄存器
MOV S,D
STO S,M
3 - 0
LAD S,M
例题
(3)下列情况下每个十六进制指令字分别代表什么
操作?其中如果有编码不正确,如何改正才能成为
合法指令?
(a)( F0F1 ) H ( 3CD2 ) H
(b) (2856 ) H
(c) (6FD6)H
(d )( 1C2)H
例题
解: (a) F0F1 3CD2
• 1111 0000 1111 0001 0011 1100 1101 0010
3C
15号寄存器
13CD2
把主存13CD2的内存装载到15号寄存器
(b) (2856)H :是单字长指令,则一定是MOV指令,
把6号寄存器的内容送到5号寄存器中。
(c)( 6FD6)H:是单字长指令,则一定是MOV指令,则
OP错误,修改为001010 00 11010110=(28D6)H
(d) (1C2)H:单字长指令,是MOV指令, OP错误,可
改为(28C2)H
练习与作业
练习:P125-126 4 12
作业:7 及补充题
1.若某计算机数据线、地址线均是8位,有一条相对寻
址的无条件转移指令存于内存的20H单元中,指令
给出的位移量D=00010101,试计算:
(1)取该指令时PC的内容;
(2)该指令执行结束时PC的内容。
2.自己分析例5中2)3248H 3)1322H 4)39A1H 指
令对应的有效地址。
精简指令系统
RISC系统特点:
• 选取使用频率最高的一些简单指令,以及很有用
但不复杂的指令,指令条数少;
• 指令长度固定,指令格式种类少,寻址方式种类
少;
• 只有取数/存数指令访问存储器,其余指令的操
作都在寄存器之间;
• CPU中通用寄存器数量相当多;
• 以硬布线控制为主,不用或少用微程序控制;
• 大部分指令在一个机器周期内完成。
第四章 控制器部件
• 教学目的:掌握控制器的分类、微程序控制器的
具体组成与运行原理,微程序控制器和硬布线控
制器的主要差异。
• 教学要求:
– 重点掌握控制器的分类、微程序控制器的具体
组成与运行原理,微程序控制器和硬布线控制
器的主要差异。理解硬布线控制器的组成原理
和微程序流的控制。
第四章 控制器部件
4.1 控制器部件的功能和组成
一.控制器的功能
控制器的主要作用就是向整机的各个部件提供协同运
行所需要的控制信号。其功能包括:
指令控制:保证机器按程序规定的顺序执行。
操作控制:管理并产生从内存取出的每条指令的操
作信号, 把各种操作信号送往相应的部件。
时间控制:对各种操作进行定时,包括一条指令的
执行时间、指令的操作信号的时间控制。
二、控制器的组成
程序计数器(Programming Counter ,PC):用来存放正在执行
的指令的地址或接着将要执行的下一条指令的地址。
指令寄存器(Instruction Register, IR):保存当前正在执行的
一条指令。
指令译码器(Instruction Decoder,ID)对指令的操作码部分进行
分析,识别指令所要求的操作。
时序发生器:用于产生计算机系统所需的各种时序信号,以保证计
算机有条不紊的工作。
脉冲源:用于产生一定频率的脉冲信号作为整机的时钟脉冲。
启停线路:用于控制时序信号的发生或停止。
操作控制信号产生部件:根据指令的内容、指令的执行步骤,形成
各部件本时刻所需的控制信号。
数据缓冲寄存器(DR):暂时存放从内存读出或写入内存的
一条指令或一个数据。
地址寄存器(AR):保存当前CPU所访问的内存单元的地址。
CPU中的主要寄存器
各种计算机的CPU可能有这样或那样的不同,但是在CPU
中至少要有6类寄存器:
①指令寄存器(IR)
②程序计数器(PC)
③地址寄存器(AR)
④数据缓冲寄存器(DR)
⑤通用寄存器(R0、R1……)
⑥状态字寄存器(PSW):用来储存程序执行过程
中的各种条件和状态信息。它描述了CPU当前的
状态。
三.控制器的分类
根据时序产生器和操作控制信号产生器的具体
组成与运行原理的不同,分为微程序控制器和
硬布线控制器。
微程序控制器:操作控制信号是通过存储逻辑
来实现。
硬布线控制器:操作控制信号是通过时序逻辑
来实现(组合逻辑电路来实现)。
每条指令的执行步骤
—读取指令
是一次读
内存操作
指令地址送入主存地址寄存器
公共操作
读主存,读出内容送入指定的寄存器
—分析指令
—按指令规定内容执行指令
R_R类型指令
读写内存类型指令
输入输出类型指令
其他类型指令
不同指令的操作步骤数,
和具体操作内容差异很大,
是每一条指令的特定操作
—检查有无中断请求
若有,则响应中断并转中断处理
若无,则转入下一条指令的执行过程
可能执行
一次或多次
公共操作
形
成
下
一
条
指
令
地
址
4.2 指令周期
一.指令周期的基本概念
1.指令周期:取出并执行一条指令所用的时间。
2.CPU周期(机器周期):执行一步操作所需的时间,
通常用从内存中读出一个指令字的最短时间作为CPU
周期。
3.时钟周期:节拍脉冲或T周期,处理一个基本操作所
需的时间,是处理操作的最基本单位。
若干时钟周期
CPU周期
指令周期
指令周期的基本概念
4.取指周期:从存储器中取出一条指令所用的时间。
5.执行周期:执行一条指令所需的时间。
6.指令执行步骤:不同的指令根据其执行的复杂程度的
不同所需的时间也不同,因而可分为不同的操作步骤来
完成,即指令周期不同。如果用从内存中取出一个指令
字的最短时间作为CPU周期,则一条指令的指令周期最
短为2个CPU周期。
T周期
T1
T2
CPU周
期
T3
T4
指令周期
T1
T2
CPU周
期
T3
T4
例 4.1
• 某CPU主频为8MHz,设每个CPU周期平均包括4
个节拍周期(主频周期),且该机平均指令执行
速度为1MIPS。
• (1)求该机平均指令周期;
• (2)求每个指令周期包含的平均CPU周期;
• (3)若改用主频周期为0.01S的CPU芯片,试计
算平均指令执行速度?
解:要解这道题,首先应知道指令执行速度与指令周
期的关系,同时应知道指令周期的概念
平均指令周期=1/平均指令执行速度
=1/(1×106s)=1 S
节拍周期=1/主频=1/(8×106s)=0.125  S
所以1个CPU周期=4×0.125 S=0.5 S
由此可计算每个指令周期包括的CPU周期数:
1/0.5=2个
改用主频后的指令周期为:
2×4×0.01 S=0.08 S
所以平均执行速度=1/0.08 S=12.5MIPS
练习与作业
练习:P181 1
作业:
若某机主频为200MHZ,每个指令周期平
均为2.5CPU周期,每个CPU周期平均包括
2个主频周期,问:
(1)该机平均指令执行速度为多少MIPS?
(2)若主频不变,但每条指令平均包括5个
CPU周期,每个CPU周期又包括4个主频
周期,求平均指令执行速度?
例4.2
已知双总线结构机器的数据通路,画出以下指令的指令周期流
程图,假设指令的地址已放入PC中,并列出相应的微操作控
制信号序列。
(1) ADD R2,R0 ;(R2)+(R0)R0
(2) SUB R1, R3 ;(R3)-(R1)R3
解:
练习与作业
• P181 2 3
4.3 时序产生器和控制方式
• 时序产生器作用和体制
• 时序信号产生器
• 控制方式
控制方式
• 控制不同操作序列时序信号的方法,称为控
制器的控制方式。
• 常用的有三种方式,其实质反映了时序信号
的定时方式:
1.同步控制方式
2.异步控制方式
3.联合控制方式
4.4 微程序控制器的原理及组成
微程序控制器的基本思想:仿照通常解题程序的方法,
把操作控制信号编成所谓的“微指令”,存放在只读存
储器中。当机器运行时,一条一条地读出这些微指令,
从而产生全机所需要的各种操作控制信号,使相应部
件执行所规定的操作。
微程序设计技术是利用软件方法来设计硬件的一种技术,
同硬布线控制器相比较,具有规整性、灵活性、易于
修改和扩充等一系列优点,因而在计算机设计中得到
了广泛应用。
3.相容性微操作和相斥性微操作
相容性微操作:
可同时或在同
一个微指令周
期内并行执行
的微操作。
相斥性微操作:
不能在同时或
同一个微指令
周期内并行执
行的微操作。
简单运算器数据通路图
机器指令与微指令的关系
 一条机器指令对应一段微程序,这段微程序是由
若干条微指令构成。
 一条机器指令的功能是由若干条微指令组成的序
列来实现,即一条机器指令所完成的操作划分成
若干条微指令来完成,由微指令进行解释和执行。
 指令、程序、地址与内存有关。
 微指令、微程序、微地址与控制存储器有关。
 一个CPU周期对应一个微指令周期。
例 4.3
• 已知某运算器的基本结构如图所示,它具有+(加)、-
(减)、M(传送)三种操作。
• (1)写出图中1~12表示的运算器操作的微命令。
• (2)指出相斥的微命令。
解:(1)微命令分别为:
1:+
4: R1 A
7: R3
2: -
5: R2
B
10: BUS R1
A
8: R2
3:M
6: R3
B
9: R1
11: BUS R2
-、
B
10: BUS R3
(2)以下几组是相斥的微命令:
+、
A
M
R1
A、 R2
A、 R3
A
R1
B、 R2
B、
R3
B
例 4.4
CPU结构如图所示,其中包括一个累加其AC,一个状态寄
存器和其它四个寄存器,各部分之间的连线表示数据通路,
箭头表示数据传送方向。
(1)标明图中四个寄存器的名称。
(2)简述取指令的数据通路。
(3)简述完成指令LDA X的数据通路(X为内存地址,LDA
功能为(X) (AC)
(4)简述完成指令ADD Y的数据通路(Y为内存地址,ADD
ADD功能为(AC)+(Y) (AC)。
(5)简述完成指令STA Z的数据通路(Z为内存地址,STA
功能为(AC) (Z)。
DR
AR
IR
PC
解:(1)A为数据缓冲寄存器DR,B为指令寄存器IR
C为主存地址寄存器AR,D为程序计数器PC
(2)取指令的数据通路:PC
(3)LDA X的数据通路:X
AR
AR
MM
MM
DR
DR
ALU
IR
AC
作 业
图中为一简单运算器的结构,图中+、-、M分别表示ALU
的加、减、传送操作,1~9分别表示数据选择的微操作控制
制信号(微命令)。
(1)写出1-9表示的微命令,指出相斥的微命令组合。
(2)设计适合此运算器的微指令格式。
(下一节做此小题)
4.4 微程序设计技术
前面介绍了微程序控制器的工作原理及
微程序控制器的组成,在实际微程序设
计时,应考虑以下几个问题:
如何缩短微指令字长;
如何减少微程序长度;
如何提高微程序的执行速度。
本节将围绕这些问题讨论。
“微命令字段的编译法”小结
1.直接控制法
直接用微指令字的一位作一个控制信号则简单且速度快,
但会使微指令字变得很长。
2.字段直接编译法
把互斥的命令分在一组加以编码,经译码器给出命令,
速度会稍慢,但可大大减短微指令字长度,确保互斥。
3.字段间接编译法
是对直接译码的的一种改进,可进一步缩短微指令字长
度,即一个字段的某些微命令还受另一字段的制约。
4.混合编译法和常数源字段
混合编译法:将字段译码法与直接控制法相结合,
常数源字段:微指令中分配几位,用于给出特定用途的
有关数值。
下址字段小结
1.计数器方式(增量方式)
顺序执行微指令时,后续微指令地址由现行微地址加
上一个增量来产生;非顺序执行时,则要由专门的电
路产生转移微地址。
2.增量与下址相结合方式
该方式的下址字段由两部分构成:转移控制字段BCF
和转移地址字段BAF,当微程序实现转移时,将BAF
送µPC,否则顺序执行下一条微指令( µPC+1)。
3.多路转移方式:
情况一:执行取指微指令后执行取指微指令后根据指
令的操作码产生不同的后继微地址;情况二:根据某
些硬件的状态来决定后继微地址
4.微中断
CPU响应微中断请求时,由专门的硬件电路产生微中
断程序的入口地址。
微指令的格式
一、水平型微指令
一条微指令中能定义并执行多个并行操作的微命令。
水平型微指令的一般格式:
控制字段 判别测试字段 下址字段
特点:微指令字较长,用于解释一条机器指令的微程序较短。
二、垂直型微指令
微指令中设置微操作码字段,采用微操作码编译法,由微
操作码规定微指令的功能。
垂直型微指令的一般格式: 微操作码 微地址码
特点:不强调实现微指令的并行控制功能,通常一条微
指令只要求实现一、两种微操作,微指令字较短,用于
解释一条机器指令的微程序较长。
水平型微指令与垂直型微指令比较
• 水平型微指令并行操作能力强、效率高、灵活性
强,垂直型则较差。
• 水平型微指令执行一条指令的时间短,垂直型微
指令执行时间则长。
• 由水平微指令解释机器指令的微程序,具有微指
令字较长,但微程序短,而垂直型微指令则相反。
• 水平型微指令,用户难以掌握,而垂直型微指令
与机器指令相似,较易掌握。
例 4.5
已知某计算机有80条指令,平均每条指令由
12条微指令组成,其中有一条取指微指令是
所有指令公用的,设微指令长度为32位。请
计算控制存储器的容量(以字节为单位)。
解:机器中微指令的条数为:80×11+1=881
则需要的控存容量为:881×32位=
881×32/8=3524 字节
例 4.6
• 某计算机采用微程序控制方式,微指令字长24位,
水平型微指令格式,控制字段采用字段直接编码
法,下址字段采用增量与下址相结合方式(断定
方式) ,共有30个微命令,构成4个相斥类,各
包含4个、9个、14个和3个微命令,外部条件共3
个,且可根据其下址字段实现全局转移。
• (1)控制存储器的容量应为多少?
• (2)设计出微指令的具体格式。
• 解: (1)首先应分析微指令中控制字段的组成
及长度,然后确定下址字段中BCF和BAF的长度。
•
•
•
•
•
•
•
4个相斥类对应的编码长度分别应为:
4个:3位, 9个:4位, 14个:4位, 3个:2位
则控制字段的长度应为:3+4+4+2=13位
由于采用水平型微指令格式,所以下址字段的长度为:
24-13=11位
由于外部条件为3个,所以BCF的编码长度应为2位
因此BAF字段的长度为:11-2=9位
因此计算控存容量应为:29×24位=512×24位
(2)微指令的格式:
××× ×××× ××××
××
××
3:8译码器 4:16译码 4:16译码
2:4译码器 2:4译码器
器
器
9
选4个微命令
选14个微命令
控制3个转移 转移地址
位
选9个微命令
选3个微命令
练 习与作业
练习:P182 11
作业
1. 已知某机采用微程序控制方式,其存储器容量为
512×40(位),微程序在整个控制存储器中实现
转移,可控制微程序的条件共12个,微指令采用
水平格式,后继微地址采用断定方式(即增量与
下址相结合方式),如下所示:
微命令字段
操作控制
判别测试字段
下址字段
顺序控制
微指令中的三个字段分别应为多少位?说明为什么?
4.6 硬布线控制器
控制条件(如 C Z V S等 )
主振
时序控制
信号
形成部件
启停
节拍
发生器
译码
IR
….
数据总线
指令 寄存器
控制总线
地址总线
接口
输出
设备
接口
输出
设备
主存储器
部件
地
址
寄
存
器
PC
程序 计数器
运算器
部件
1.硬布线控制器的主要组成
• 程序计数器PC:保存将要执行的一条指令的地址。
• 指令寄存器IR:保存从内存读出的指令内容。
• 操作码译码器:用于区别不同指令的功能和性质。
在硬连线控制器中,它由基本的门电路组成,指令的
操作码作为输入,在任何一个时刻只有一个输出有效。
• 脉冲源与启停控制逻辑:用于向计算机各部件提供连
续的主振脉冲。
• 节拍发生器:用于标记每条指令的各执行步骤的相对
次序关系。
• 时序控制信号产生部件:根据指令的内容和执行步骤
产生各部件所需的操作控制信号。(组合逻辑线路实
现)
2.硬布线控制器的组成与运行原理
通过逻辑电路直接连线而产生各步所需的操作控制
信号,又称为组合逻辑控制方式。
与微程序控制器的共同点:它们都用于控制指令的
执行过程, 并且使用几乎相同的执行步骤和几乎完全
相同的控制信号,来完成对控制器之外的其他各功
能部件的控制作用。
3.与微程序控制器的比较(性能)
• 在相同的半导体工艺条件下,微程序控制
的速度比硬布线控制的速度低。
• 在RISC 计算机中CPU一般采用硬布线设
计,而在CISC计算机中CPU一般采用微
程序设计。
4.7 流水CPU
并行处理技术
流水CPU的结构
流水线中的主要问题
奔腾CPU
非流水线指令的执行
标量流水线指令的执行
超标量流水线指令的执行
流水线分类及应解决的主要问题
1.流水线的分类
• 指令流水线(指令执行步骤的并行)
• 算术流水线(运算操作的并行,如流水加法器、流
水乘法器、流水浮点运算器)
• 处理机流水线(程序执行步骤的并行)。
2.应解决的主要问题
• 划分时间段问题:尽量使每个任务段的时间相同。
• 流水冲突问题:数据相关、指令相关、资源相关。
例 4.9
•
某计算机采用两级流水线组织,第一级为取
指、译码,需要200ns完成操作,第二级为执
行周期,大部分指令在180ns内完成,但有两
条指令要360ns才能完成,在程序运行时,这
类指令所占比例为5-10%。
• 根据以上情况,机器周期(即一级流水线时
间)应选为 A ns。两条执行周期长的指
令宜采用的 B 方法解决。
A: 1. 180 2. 190 3. 200 4. 360
B: 1. 机器周期选为360ns;2.用两个机器周期
练习与作业
P182
12 13
第五章 存储器系统
• 教学目的:理解存储系统的概念,理解并掌
握主存储器的扩展方法,理解Cache存储
器和虚拟存储器的工作原理。
• 教学要求:重点掌握存储系统的概念、主存
储器的组成与扩展方法、Cache存储器和
虚拟存储器的工作原理。SRAM和DRAM的
工作原理、Cache存储器和虚拟存储器的
地址变换和替换算法,这些要求理解即可。
5.1 主存储器
5.1.1主存储器概述
1.主存储器的两个重要技术指标
速度:
存取时间:指从启动一次存储器操作到完成该
操作所经历的时间。
存储周期:指连续启动两次独立的存储器操作
(如读操作)所必需间隔的最小时间。
存储容量:通常用构成存储器的字节数或字数来
计量。
2. 主存储器分类
按信息保存的长短分:非易失性
(ROM,PROM,EPROM,E2PROM,FLASH)与易
失性(DRAM,SRAM)。
按生产工艺分:静态存储器与动态存储器
静态存储器(SRAM):读写速度快,生产成本
高,多用于容量较小的高速缓冲存储器。
动态存储器(DRAM):读写速度较慢,集成度
高,生产成本低,多用于容量较大的主存储器。
3. 主存储器与CPU及外围设备的连接
• 通过地址总线、数据总线、控制总线进行连接,见下
图主存储器与CPU的连接
AR
DR
4.地址总线、数据总线、控制总线的作用
 地址总线:用于选择主存储器的一个存储单元
(字或字节),其位数决定了能够访问的存储单
元的最大数目,称为最大可寻址空间。例如,当按
字节寻址时,20位的地址可以访问1MB的存储空
间,32位的地址可以访问4GB的存储空间
 数据总线:用于在计算机各功能部件之间传送数
据,数据总线的位数(总线的宽度)与总线时钟
频率的乘积,与该总线所支持的最高数据吞吐
(输入/输出)能力成正比。
5. 主存储器的读写过程
数据寄存器
读过程:
给出地址
给出片选与读命令
/CS0
主存储体
保存读出内容
写过程:
/CS1
RD/WE
给出地址
给出片选与数据
地址寄存器
给出写命令
例1
• 下图是SRA的写入时序图。其中R/W是读/写命令
控制线,当R/W线为低电平时,存储器按给定地
址把数据线上的数据写入存储器。请指出图 (a)写
入时序中的错误,并画出正确的写入时序图。
6.动态存储器的刷新操作
刷新:动态存储器是靠电容上存储的电荷量来表示二进
制信息的“0”和“1”,由于电容会缓慢放电,电容上的
电荷会逐渐减少,所存储的信息就会消失。因此它们
只能在很短的时间内保存信息(一般为几个毫秒),
如果要长时间的存储信息,就必须定时向电容补充
电荷,使所存电荷恢复到原来数值,这一操作称
为刷新(refresh)。
目前,动态存储器一般在2ms内刷新一次。
常用的刷新方式:集中式、分散式、异步式。
动态存储器的刷新操作
刷新:动态存储器是靠电容上存储的电荷量来表示二进
制信息的“0”和“1”,由于电容会缓慢放电,电容上的
电荷会逐渐减少,所存储的信息就会消失。因此它们
只能在很短的时间内保存信息(一般为几个毫秒),
如果要长时间的存储信息,就必须定时向电容补充
电荷,使所存电荷恢复到原来数值,这一操作称
为刷新(refresh)。
目前,动态存储器一般在2ms内刷新一次。
常用的刷新方式:集中式、分散式、异步式。
集中式刷新
例如:对一个128×128矩阵存储器进行刷新时,若读/
写周期为0.5s,刷新周期为2ms。
集中式刷新:刷新时间相当于128个读周期,两次刷新
之间共有4000个周期。其中前3872个周期用来读/写
或维持信息;当第3871个周期结束,便开始进行128
个周期的刷新操作(共需要64 s)。由于在这一段
时间内不能进行读写操作,因此称为“死时间”。
周期
序号 0
1
2
tc
tc
tc
3870
3871
tc tc
3872周期读/写/维持
3872
tc
3873
tc
3999 0
1
tc
128周期刷新
(死时间)
读/写/维持
分散式刷新
例如:对一个128×128矩阵存储器进行刷新时,若
读/写周期为0.5s。
分散式刷新:一个存储系统周期tc=tm+tr=0.5s
+0.5s =1s,则经过128s,对整个存储器刷新
刷新一遍。系统速度降低。
0
1
周期
W/R REF W/RREF
序号
tm tr
tm tr
126 127
W/R REF W/RREF
tm tr tm tr
刷新间隔128个系统周期
异步式刷新(分布式)
例如:对一个128×128矩阵存储器进行刷新时,若
读/写周期为0.5s,刷新周期为2ms。
异步式刷新:在2ms内分散地把128行刷新一遍,
则两行之间的刷新间隔为:2ms/128=15.5s。
周期
W/R W/R W/R
序号
tc 0.5s tc
15.5 s
REF W/R W/RW/R
tc
tc tc
tc
15.5 s
REF
tc
7.静态和动态存储器芯片特性
SRAM
存储信息
触发器
破坏性读出
非
需要刷新
不要
送行列地址 同时送
运行速度
快
集成度
低
发热量
大
存储成本
高
DRAM
电容
是
需要
分两次送
慢
高
小
低
7.静态和动态存储器芯片特性
• DRAM 速度慢,但容量大,价格低
– 可用于实现大容量的主存储器系统。
• SRAM 速度快,但容量小,价格高
– 用于实现高速缓冲存储器Cache。
5.1.4 存储器的扩展
1. 字扩展:从存储器的每个存储单元中读出的数据位数
不变,只是增加存储单元的数目。
例:用16K×8位的芯片构成64K×8位的存储器
连接时数据线相同,片内地址线相同,片间地址空间
由高位地址经译码后的片选信号确定。
2.位扩展
位扩展:存储器可访问的单元数不变,只是增加一次取
出数据的位数。
例:由8K×1位的芯片构成8K×8位的存储器
连接时,地址线相同,各片的数据输出线分别接到不
同的数据位线上,此时由于所有的芯片需要同时进行
读写操作,所有不需加片选信号。
3.字位同时扩展
在字向和位向上同时扩展,例如由2K×8位的存
储器扩展为16K×16位的存储器,则在字向方
面扩展需要(16K/2K)=8组芯片,每组在位向
方面扩展需要(16位/8位)=2片,则共需要
8×2=16 个2K×8位的芯片。
通常由mK×n位的芯片构成LK×P位的存储器
要的芯片数应为: (L/m)×(P/n)
字
位
扩
展
连
接
图
由2K×8位的存储芯片扩展为16K×16位的存储器,
需11位地址进行片内地址选择,需要16K/2K=8根信
号线作片间选择,取高3位地址经3:8译码后提供。
例1
设有一个具有20位地址和32位字长的存储器,问:
(1)该存储器能存储多少个字节的信息?
(2)如果存储器由256K×8位的RAM芯片组成,需要多少片?
(3)需要多少根片选信号线,需要多少位地址做芯片选择?
解: (1) 220×32/8=4M (字节)
(2)[220/(256×210)]×(32/8)=16(片)
(3)在字向方面需要扩展的芯片组数为:
220/(256×210)=4 组
因此需要4根片选信号线,需要2位地址做芯片选择。
例2
用16K×1位的DRAM芯片构成64K×8位的存储器,问:
(1)共需要多少位地址线?
(2)共需要多少DRAM芯片?
(3)需要多位地址作芯片选择?
(4)设存储器读/写周期为0.5S,CPU在1S内至少要访
问一次。试问采用哪种刷新方式比较合理?两次刷新的
最大时间间隔是多少?对全部存储单元刷新一遍所需的
实际刷新时间是多少?
解:要解这道题,首先应知道地址与存储器容量的关系,
同时应知道片选信号与存储器字、位扩展的关系及几
种刷新方式的区别。
(1)地址线的位数n与存储器的存储单元数(即容量)R的
关系是:R=2n或n=log2R,本题中存储器的容量为
64k×8位,64k=216,所以所需地址线的位数n=16
(2)需要DRAM的芯片数=(64/16)×(8/1)=4×8=32
(3)本题中单片DRAM芯片的存储单元数是16k,需要的
地址线为14位,扩展后的单元数是64k,需要的地址线
为16位,因此对应的片选地址线位数为:16-14=2。
(4)由于CPU要求在1  S内至少刷新一次,所以可采用
分散式刷新和异步式刷新,两次刷新的最大时间间隔是
2mS。
本题DRAM为16K×1位,共包含214个存储元,可组成
27×27的存储矩阵,若采用异步式刷新,对全部存储器刷
新一遍所需的时间取2mS,两行之间的刷新间隔为
2mS/128≈15.5 S。
若采用分散式刷新,对全部存储单元刷新一遍实际所需时
间为128×1 S=128 S。
练习
• P101 1 2
• 有一个16K×16的存储器,用1K×4位的DRAM芯
片(内部结构为64×16,引脚同SRAM)构成,
问:
• (1)共需要多少DRAM芯片?
• (2)采用异步式刷新方式,如单元刷新间隔不超
过2ms,则刷新信号周期是多少?
• (3)如采用集中刷新方式,存储器刷新一遍最少
用多少读/写周期?设T单位为0.1S, 死时间率
是多少?
参考答案
• (1)(16/1)×(16/4)=64(片)
• (2)2ms/64=31.25 S
• (3)对64行集中刷新一遍所需的时间为64T=
64×0.1 S=6.4 S,而刷新周期为2mS=2000 S,
死时间率=(6.4/2000)×100%=0.32%
作业
P102 6
用32K×8位的EPROM芯片组成128K×16位的只读
存储器,试问:
(1)数据寄存器多少位?
(2)地址寄存器多少位?
(3)共需多少个EPROM芯片?
(4)需要多少位地址作芯片选择?
(5)画出此存储器组成框图。
5.1.5 提高存储器读写速度的措施
– FPM DRAM,EDORAM,SDRAM,DDRAM
– Enhanced DRAM,CDRAM, RamLink
– 并行读写
• 一体多字
• 多体交叉存储器
• 双端口存储器
1. 快速分页组织
用以节省送地址的时间,支持这种
运行方式的存储器被称为快速分页
组织的存储器。
快速分页组织只用于动态存储器。
2.主存储器的并行读写技术
是指在主存储器的一个工作周期(或略多一点时间内)
可以读出多个主存字所采用的技术。
方案1:一体多字结构,即增加每个主存单元所包括
的数据位,使其同时存储几个主存字,则每一次读操
作就同时读出了几个主存字。
一
体
多
字
结
构
方案2:多体交叉编址技术,把主存储器分成几个能独
立读写的、字长为一个主存字的存储体(模块),可
分别对每一个存储体进行读写;还可以使几个存储体
协同运行,从而提供出比单个存储体更高(几倍)的
读写速度。
(1)编址方案
在采用交叉编址的方式中,把连续地址的几个存储字依次分
配在不同模块内,同一个模块内的地址都是不连续的。优点
是对连续字的成块传送可实现多模块流水式并行存取,大大
提高存储器的带宽
高位地址
低位地址
用于选择存储单元
内存地址
如:设有一个存储器,
0
存储容量为32字,分
4
成M0-M3四个存储
8
12
模块,每个存储模块
16
存储8个字。其编制
20
方案如图所示:
24
28
用于区分不
同的模块
4 3 2 1 0
字
模块
1
2
5
6
10
9
13
14
17
18
21
22
25
26
29
30
33
7
11
15
19
23
27
31
(2)交叉编址的两种读写方式
 完全并行方式:在同一个读写周期同时启动所有
主存体读或写。(需设专门的数据缓冲寄存器)
 流水线方式:让各存储体顺序地轮流启动进行读
或写。
优点:使依次读出来的每一个存储字,可以通过
数据总线依次传送走,而不必设置专门的数据缓
冲寄存器。
注:这时总线的传送周期必须小于等于相邻两个存
储体的最小读写时间间隔。
流水线方式存取分析
字 模块
流水线方式连续读取m个字
所需时间为:
W4 M0
t1=T+(m-1)
W3 M3
W2 M2
W1 M1
顺序方式连续读取m个字
所需时间为:
W0 M0
T

流水线方式存取示意图
时间
t2=mT
例3
设存储器容量为32字,字长64位,模块数m=4,
分别用顺序方式和交叉方式进行组织。存储周期
T=200ns,数据总线宽度为64位,总线传送周
期=50ns。问交叉存储器和顺序存储器的带宽
各是多少?(每秒钟读出数据的位数)
解:
顺序存储器和交叉存储器连续读出m=4个字的信息总量都是:
q=4×64位=256位
交叉存储器连续读出m=4个字所需时间为:
t1=T+(m-1) =
200+(4-1)×50=350ns=3.5×10-7s
顺序存储器连续读出m=4个字所需时间为:
t2=mT=4×200=800ns=8×10-7s
交叉存储器和顺序存储器的带宽分别是:
W1=q/t1=256/(3.5×10-7)=73×107[Bit/s]
W2=q/t2=256/(8×10-7)=32×107[Bit/s]
练习与作业
• 作业:P102 8
• 练习:11,12
5.2 只读存储器和闪速存储器
5.2.1 只读存储器ROM
• ROM(Read Only Memory)只读存储器。只读
的意思是在它工作时只能读出,不能写入。然而
其中存储的原始数据,必须在它工作以前写入。
只读存储器由于工作可靠,保密性强,在计算机
系统中得到广泛的应用。主要有两类:
– 掩模ROM:掩模ROM实际上是一个存储内容固定的
ROM,由生产厂家提供产品。
– 可编程ROM:用户后写入内容,有些可以多次写入。
• 一次性编程的PROM
• 多次编程的EPROM和E2PROM。
5.2.2 FLASH存储器
1、FLASH存储元
• FLASH存储器也翻译成闪速存储器,它是高密度
非失易失性的读/写存储器。高密度意味着它具有
巨大比特数目的存储容量。非易失性意味着存放
的数据在没有电源的情况下可以长期保存。总之,
它既有RAM的优点,又有ROM的优点,称得上是
存储技术划时代的进展。
• FLASH存储元在EPROM存储元基础上发展起来
的,在闪速存储器中的存储元,由单个MOS晶体
管组成,除漏极D和源极S外,还有一个控制栅和
浮空栅。
5.2 存储器系统的层次结构
1.衡量存储器的性能指标
存储速度:目前存储器访问速度的提高跟不
上CPU速度的提高。
存储容量:软件对存储器容量要求更大。
单位价格:价格/位。
2.存储器设计目标
• 高速度
– CPU对存储器的要求越来越高
• 大容量
– 应用对存储器的要求
• 高可靠性
• 低价格
3. 解决3项指标之间矛盾的思路
Cache
CPU
主存
辅存
Cache
早期的一级Cache在CPU内,二级在主板上。现在
的CPU内带L1 Cahe和L2 Cahe。全由硬件调度,对
用户透明。
多级存储层次
这种多级结构的存储器使CPU大部分时间访问
高速缓存(速度最快),仅当从缓存中读不到
数据时,才去读主存(速度略慢但容量较大);
当从主存中还读不到数据时,才去批量读虚存
(速度很慢容量极大),这样就解决了对速度、
容量、成本的需求。多级结构的存储器具有
良好的性能/价格比,是建立在程序运行的局
部性原理之上的。
4. 程序的局部性原理
时间上:在一小段时间内,最近被访
问过的程序和数据很可能再次被访问。
空间上:这些被访问的程序和数据往
往集中在一小片存储区。
在访问顺序上:指令顺序执行比转移
执行的可能性大 (大约 5:1 )。
5.3 高速缓冲存储器部件
• Cache的目的
• 基本原理
• Cache的三种地址映像方式
5.3.1 Cache的目的
解决主存与CPU的速度差异。
设置在CPU和主存储器之间,完成高
速与CPU交换信息,尽量避免CPU不
必要地多次直接访问慢速的主存储器,
从而提高计算机系统的运行效率。
使用高速缓冲存储器Cache来提高
CPU对存储器的平均访问速度。
5.3.2 CACHE的实现原理
把CPU最近最可能用到的少量信息(数
据或指令)从主存复制到CACHE中,
当CPU下次再用到这些信息时,它就不
必访问慢速的主存,而直接从快速的
CACHE中得到,从而提高了速度。
理论依据:程序运行的局部性原理。
Cache的命中率
• 在一个程序执行期间,设Nc表示cache完成存取的总次
数,Nm表示主存完成存取的总次数,h定义为命中率,
则有:
h=Nc/(Nc+Nm)
• 若tc表示命中时的cache访问时间,tm表示未命中时的
主存访问时间,1-h表示未命中率,则cache/主存系统
的平均访问时间ta为:
ta=h*tc+(1-h)tm
• 设r=tm/tc表示Cache与内存的速度比 ,e表示访问效率,
则有:
e=tc/ta=tc/[h*tc+(1-h)*tm ]
=1/[h+(1-h)*r]
=1/[r+(1-r)*h ]
由表达式看出,为提高访问效率,命中率h越接近1越好,r
值以5—10为宜,不宜太大。
例4
• CPU执行一段程序时,cache完成存取的次数为1900次,
主存完成存取的次数为100次,已知cache存取周期为50ns,
主存存取周期为250ns,求cache/主存系统的效率和平均访
问时间。
解1:
– h=Nc/(Nc+Nm)=1900/(1900+100)=0.95
– r=tm/tc=250ns/50ns=5
– e=1/[r+(1-r)h]=1/[5+(1-5)]×0.95=83.3%
– ta=tc/e=50ns/0.833=60ns
– 解2:ta=htc+(1-h)tm=0.95*50+(1-0.95)*250=60ns
– e=tc/ta=50/60=83.3%
练习与作业
• P102
9
10
5.3.3 CACHE的3种地址映射方式
地址映射(映像) :由于Cache比主存小得多,当要把
一个主存块调入Cache时,就存在应放在Cache中的
哪一个位置的问题? 即如何把主存中的地址映射成
Cache中的地址。这个映射过程全部由硬件实现,对
程序员透明。
地址变换:在程序执行时,要把主存地址变换为访问
CACHE的地址,这一过程称为CACHE的地址变换。
常用的三种地址映射方式:
全相联映射
直接映射
组相联映射
全相联映射规则
主存
cache
第0块
第1块
第0块
第1块
…
…
第 N-1 块
第 MN - 1 块
任何主存
块可映射
到任何
Cache块
位置
直接映射规则
主存
第0块
cache
第1块
第0块
…
第1块
第 N-1 块
…
…
第 N-1 块
第0区
第(M-1)N 块
第(M-1)N +1 块
j = i mod N
…
第M-1区
第 MN -1 块
j为映射到Cache的块号,i为主存的块号
组相联映射规则
主存
cache
第0块
第0组
第1组
…
…
第0块
…
…
第0组
第0区
第1组
第 N- 1 块
…
第 N- 1 块
第 (M - 1) N 块
…
…
第 MN - 1 块
第0组
第1组
组间直接映射,组内全相联映射
第M-1
区
三种映像方式比较
• 直接映像
– 主存中的一块只能映射到Cache中唯一的一个位置
– 定位时,不需要判断,只需替换
• 全相联映像
– 主存中的一块可以映射到Cache中任何一个位置
• 组相联映像(N为组内块数)
– 主存中的一块可以选择映射到Cache中N个位置
• 全相连映射和N路组相联映射的失效处理
– 从主存中取出新块
– 为了腾出Cache空间,需要替换出一个Cache块
– 不唯一,则需要判断应替出哪块
三种映像方式比较
• 全相联:灵活,不易产生冲突。其缺点
是比较电路难于实现,且效率低,速度
慢。
• 直接映射:硬件简单,成本低,但容易
产生冲突,不能有效利用Cache空间。
• 组相联:结合上面两种的优点(组间直
接映射,组内全相连映射)。
例1
• 有一个cache的容量为2K字,每块为16字,主存
容量为256K字,问:
• (1)该cache可容纳多少个块?
• (2)主存有多少块?
• (3)主存的地址有多少位?Cache的地址有多
少位?
• (4)在直接映像方式下,主存中的第i块映像到
cache中的哪一块?
• (5)进行直接映像时,主存储器地址分为哪几
段,各段分别为多少位?
解:(1)cache容量为2K字,每块为16字,则cache
包含的块数=2×1024/16=128
(2)主存包含的块数=256×1024/16=16384
(3)主存的容量为256K字=218字,所以主存的地
址有18位,cache的容量为2K字=211字,所以
cache的地址有11位。
(4)主存中的第i块映像到cache第i mod 128 块中。
(5)主存地址分成三段:区号、块号、块内地址。
区号的长度=主存地址长度-cache地址长度
块号的长度与cache中包含的块数有关,因为
cache中有128块=27块,所以块号为7位。
块内地址位数取决于块容量,因为每块为16字=24
字,所以块内地址为4位,如果存储器是按字节编
址,则存储器地址还有字内的字节地址部分。
主存的地址格式如下:
7位
7位
4位
区号E 块号B 块内地址W
例2
在一个采用组相联映像的Cache存储器中,主存
由0~7共8块组成,Cache分为2组,每组2块,每块
大小为16个存储字(每字32位)。
(1)写出主存地址和Cache地址的格式,并指出各
字段的长度(按字节编址);
(2)指出主存块0~7与Cache块0~3之间的映像关
系;
解:
(1)采用组相联映像时,主存地址格式和Cache地址格式为:
主存地址
1
1
1
6
区号E 组号G 块号B 块内地址W
Cache地址
1
1
6
组号g 块号b 块内地址w
主存按Cache大小划分为区,主存容量为8块
,Cache容量为4块,故主存分为2个区,区号E的长度
为1位;
每区分为2组,故组号G和g的长度都是1位;
每组2块,故块号B和b的长度都是1位;
每块大小为16个存储字(4字节),容量为16×4
=64B=26B,故块内地址W和w的长度都是6位
(2)组相联映像关系
第0组
第1组
0
1
2
3
主存
0
1
2
3
第0组
第0区
第1组
4
第0组
5
第1区
6
第1组
7
组相联映像规定:主存的组到Cache的组之间是直
接映像,组内块之间是全相联映像。因此主存的块
0~7与Cache的块0~3之间的映像关系是:
主存的块0,1,4,5与Cache的块0,1之间全相联;
主存的块2,3,6,7与Cache的块2,3之间全相联;
Cache
作业
1.一台计算机的主存容量为1MB,字长为32位,采用
直接地址映像,cache的容量为512字,若cache块
长为8字,访存地址为字节地址,问:
(1)该cache可容纳多少个块?
(2)主存有多少块?
(3)主存的地址有多少位?Cache的地址有多少位?
(4)设计主存地址格式和cache地址格式
2.一个组相联地址映像cache由64个存储块组成,每
组包含4个存储块。主存包含4096个存储块,每块
由128字组成。访存地址为字地址。
(1)写出cache地址位数和地址格式;
(2)写出主存地址位数和地址格式。
5.3.5 Cache的写策略
若 CPU 改写了 CACHE 某一单元内容后
且尚未改变主存相应单元内容,则出现数
据不一致性。有两种解决办法:
– 写直达法
– 写回法
二者的区别是:前者在修改Cache的同时也直
接写入主存;后者仅在被替换时才将修改过的
Cache块写回主存。
5.4 虚拟存储器
• 虚拟存储器的概念
• 虚拟存储器的工作原理
• 虚存的替换算法
• Pentium处理机的虚拟存储器
5.4.1 虚拟存储器的基本概念
• 虚拟存储器是指“主存-辅存”层次,它能使该层
次具有辅存容量、接近主存的等效速度和辅存的
每位成本。
• 它使得程序员可以按比主存大得多的虚拟存储空
间编制程序(即按虚存空间编址)。
• 虚拟存储器的目的
– 给程序员提供比实际主存大得多的地址空间
主存-辅存层次与Cache-主存层次的比较
• 从虚存的概念可以看出,主存-辅存的访问机制
与cache-主存的访问机制是类似的。这是由
cache存储器、主存和辅存构成的三级存储体系中
的两个层次。
• cache和主存之间以及主存和辅存之间分别有辅助
硬件和辅助软硬件负责地址变换与管理,以便各
级存储器能够组成有机的三级存储体系。cache和
主存构成了系统的内存,而主存和辅存依靠辅助
软硬件的支持构成了虚拟存储器。
主存-辅存层次与Cache-主存层次的比较
• 主存-辅存层次
– “主存-辅存层次”,主
要目的是解决存储容量
的问题。
– 辅存/主存的访问“时间
比”大,达100:1-
1000:1
– 单位时间内数据交换次
数较少,但每次交换的
数据量大,达几十至几
千字节。
– CPU与辅存之间无直接
通路。
• Cache-主存层次
– “Cache-主存”层次主
要目的是解决存储速度
问题。
– 主存/Cache的访问“时
间比”较小,典型为10:1
– 单位时间内数据交换的
次数较多,每次交换的
数据量较小,只有几个
到几十个字节。
– CPU与Cache和主存之
间均有直接通路。
虚拟存储器的分类
• 按程序在虚拟地址空间的划分形式,虚拟存储器可分为
段式虚拟存储器、页式虚拟存储器和段页式虚拟存储器。
• 段式虚拟存储器:段是按照程序的自然分界划分的长度
可以动态改变的区域。通常,程序员把子程序、操作数和
常数等不同类型的数据划分到不同的段中,并且每个程
序可以有多个相同类型的段。在段式虚拟存储系统中,
虚地址由段号和段内地址(偏移量)组成。
• 页式虚拟存储器:把主存空间和虚存中的程序空间按固
定大小(一般为512字节~几千字节)分成大小相等的页。
通过页表可以把虚地址转换成物理地址 。
• 段页式虚拟存储器:先按内容将程序分成段,每段再分
成大小相等的页。程序按页进行调入和调出操作,但可
按段进行编程、保护和共享。
例1
• 设主存容量为4MB,虚存容量为1GB,页面
大小为4KB(主存按字节编址)。
• (1)写出主存地址格式。
• (2)写出虚拟地址格式。
• (3)页表长度为多少?
解:
(1)主存地址格式为:
21
12 11
0
页号(10位) 页内地址(12位)
(2)虚拟地址格式为:
29
12
虚页号(18位)
11
0
页内地址(12位)
(3)页表长度为:218=256K
作业
在页式虚拟存储器中,若主存容量为
16MB,页面大小为8KB,程序地址空间
为4GB,问虚页号有多少位?页内地址
多少位?页表长度多少?写出主存地址
格式和虚拟地址格式(按字节编址)。
• 某页式虚拟存储器的虚拟存储空间分为8个虚页,
例2 虚页号为0~7,页的大小为1024个字,主存容量
为4096个字。采用页表进行地址变换时,页表内
容如表所示。
• (1)列出会发生页面失效的全部虚页号;
• (2)若程序按以下虚地址访存:0,3728,1023,
1024,2055,7800,4096,6800,请计算出变换
的主存实地址(用十进制数表示)。
实页号
3
1
2
3
2
1
0
0
装入位
1
1
0
0
1
0
1
0
解:
(1)页表的行号即是虚页的页号。装入位为“1”,则
表示相应的虚页已装入主存中,由实页号指出的位
置,装入位为“0”,则表示相应的虚页还未装入主
存,该行的实页号无效。因此,由题目给出的页表
可知,发生页面失效的虚页是:2,3,5,7。
(2)页式管理的虚拟存储器的虚、实地址变换的计
算步骤如下:
 由虚地址Av计算出该虚地址对应的虚页号P和页内
偏移量D:
 P=└Av/1024┘,其中1024是页长,
 D=Av-P×1024。
 由虚页号查页表的相应行,若装入位=“0”,则发
生页面失效,需要调页,无需变换为实地址;若装
入位=“1”,则取出相应的实页号P。
 由实页号P和页内偏移量D计算出主存实地址:
 A=P×1024+d(d=D)。
按上述步骤可计算出变换后的主存实地址如下表所示:
虚地址Av 虚页号P 页内偏移D 装入位 实页号 页内偏移d 实地址
0
3728
1023
1024
2055
7800
4096
6800
0
3
0
1
2
7
4
6
0
656
1023
0
7
632
0
656
1
0
1
1
0
0
1
1
3
0
3072
页面失效
3
1
无
1023
0
4095
1024
页面失效
无
页面失效
无
2
0
0
656
2048
656
虚存的替换算法
例3 .假设主存只允许存放a、b、c三个页面,逻辑
上构成a进c出的FIFO队列。某次操作中进程访存
的序列是0,1,2,4,2,3,0,2,1,3,2(虚页号)。若分别
采用FIFO算法、FIFO+LRU算法,请用列表法
分别求两种替换策略情况下主存的命中率。
解:求得
FIFO算法命中率:2/11=18.2%
FIFO+LRU算法命中率:3/11=27.3%
(见书上289页表)
练习与作业
• P296
5,6,8,11
5.5 辅助存储器
•
•
•
•
•
磁盘存储器的分类与主要技术指标
磁记录原理与记录方式
磁盘访问过程
磁盘阵列存储器(RAID技术)
光盘存储器
磁盘的信息分布
• 在磁盘中信息的分布是按记录
面、磁道、扇区、记录块层次
磁道
安排的。
• 记录面:磁盘片表面。
扇区
记录块
• 磁道:记录面上一系列同心圆,记录面
最外一个同心圆叫做零磁道。
• 柱面:所有记录块上半径相等
的磁道的集合。
• 扇区:将一个记录面分成若干 柱面
个区域,每一区域称为一个扇
区。
• 记录块:将磁道分成若干段,
每段称为一个记录块,一块对
应一个扇区的大小。
盘片
磁盘存储器的主要技术指标
• 存储密度
– 单位长度(磁带)或单位面积(磁盘)磁层表面所存
储的二进制信息量
– 磁盘用道密度、位密度、面密度表示
– 磁带用位密度表示
– 道密度:沿磁盘半径方向单位长度上的磁道数。
– 位密度:磁道单位长度上可记录的二进制代码位数。
• 存储容量
– 磁表面存储器所能存储的二进制信息的总量,以字节
为单位(格式化容量、非格式化容量)
– 格式化容量:用户真正可以使用的容量
– 非格式化容量:磁记录表面可以利用的磁化单元总数。
磁盘存储器的主要技术指标
• 平均存取时间:指从发出读写命令后,磁头从某
一起始位置出发移动到新的记录位置,再到开始
从盘片表面读出或写入信息所需的时间。它包括
找道时间和等待时间。找道时间和等待时间的数
值可随机变化,所以用平均时间来计算:
– 平均存取时间= 平均找道时间+平均等待时间
– 平均找道时间= (最大找道时间+最小找道时间)/2
– 平均等待时间= 磁盘旋转一周所需时间/2
=1/2×(1/转速)
磁盘存储器的主要技术指标
• 数据传输率:单位时间内磁表面存储器与主机之
间传送数据的位数或字节数。
Dr=r×N
r为磁盘的转速,N为每条磁道的容量。
Dr=磁盘转速×每道扇区数×扇区容量
• 误码率
• 价格-用位价格比较
磁盘访问时间举例
• 磁盘访问时间 = 寻道时
间 + 旋转延迟 + 传输时
间 + 磁盘控制器延迟
• 例1:
–
–
–
–
–
–
• 旋转延迟:平均旋转延迟应为磁
盘旋转半周的时间。
• 旋转1 周 = 1/5400 minutes
= 11.1ms => ½ 周: 5.6 ms
• 读1个扇区时间
平均寻道时间 = 12ms; • = 12ms + 5.6ms +
0.5K/5MBpersec+ 2ms
旋转速度 = 5400rpm
= 12 + 5.6 + 0.1ms + 2ms
磁盘控制器延迟: 2ms
= 19.7 ms
传输速度 = 5MB/s
• 读1页的时间=
= 12 ms + 5.6ms +
扇区大小 = 512 bytes
8K/5MBpersec + 2ms
读取一页(8KB)需要
= 12ms + 5.6ms + 1.6ms + 2ms
多少时间?
= 21.2 ms
例2.
• 已知某磁盘存储器转速为2400转/分,每个记录面
道数为200道,平均查找时间为60ms,每道存储
容量为96Kbit,求磁盘的存取时间和数据传输率。
• 解:
•
•
•
•
•
•
平均存取时间=平均找道时间+平均等待时间
平均等待时间=磁盘旋转一周所需时/2=0.5×(1/转速)
本题中:转速=2400转/分=40转/秒
平均等待时间=0.5×(1/40) =0.0125s=12.5ms
磁盘存取时间=60ms+12.5ms=72.5ms
数据传输Dr=r×N=40×96Kbit=3840Kbit/s
例3.
某双面磁盘每面有220道,内层磁道周长70cm,位
密度400bit/cm,转速3000转/分,求:
• 1)磁盘存储容量?
• 2)数据传输率?
解:1)每道信息量=400bit/cm×70cm
=28000bit=3500B
每面容量=220×3500B=770000B
磁盘总容量=2×770000B=1540000B
2)磁盘数据传输率Dr=r× N
r = 3000转/分=50转/秒
Dr=50转/s×3500B=175000 B/s
解:
•
•
•
•
•
•
•
•
•
1)磁盘记录区域=(30-20)cm/2=5cm=50mm
磁盘的磁道数=50mm×8道/mm=400道
非格式化容量
=记录面数×每面的磁道数×磁道容量
格式化容量
=记录面数×每面磁道数×每道扇区数×扇区容量
每道的非格式化容量=内径周长×位密度
=3.14× 20×10mm× 250bit/mm=157000bit=19625B
每道的格式化容量=扇区数×扇区容量=16×1024B=
16384B
• 盘组的非格式化容量=4×400×19625B31.4MB
• 盘组的格式化容量=4×400×16384B  26.2MB
练习与作业
P 234
6,10
5.5.4 磁盘存储设备的技术发展
• 磁盘cache
• 磁盘阵列RAID
第六章 总线系统
总线的概念和结构形态
总线接口
总线的仲裁
总线的定时和数据传送模式
HOST总线和PCI总线
InfiniBand标准
6.1 总线的概念和结构形态
•
•
•
•
•
•
总线的基本概念;
总线的类型;
总线的内部结构;
总线的控制方式;
总线的通信方式
总线举例
6.1.1 总线的基本概念
• 计算机的若干功能部件之间不可能采用全互联形
式,因此就需要有公共的信息通道,即总线。
• 总线是构成计算机系统的互联机构,是多个系统
功能部件之间进行信息传送的公共通路。
CPU
控制器
运算器
输入
设备
存储器
输出
设备
1.单处理机系统总线的分类
内部总线:CPU内部连接各寄存器及运
算器部件之间的总线。(CPU/Memory
Bus)
系统总线:外部总线。CPU和计算机系
统中其他高速功能部件(如存储器、通道
和各类输入输出接口)相互连接的总线。
(PCI Bus)
I/O总线:中低速I/O设备相互连接的总
线。 (ISA Bus)
2.总线的标准化
• 为了使不同厂家生产的相同功能部件可以
互换使用,就需要进行系统总线的标准化
工作。目前,已经出现了很多总线标准,
如微机系统中采用的标准总线有:
ISA、EISA、VESA、STD、PCI等。
3.衡量总线性能的指标-总线带宽
总线周期:一次总线操作所需的时间。
总线位宽:总线上同时能传输的数据位数。
总线工作频率:协调总线上各种操作的时钟频率。
总线工作频率越高总线工作速度越快。
总线带宽:单位时间内总线可传送的数据量。
单位是兆字节每秒(MB/s)。
总线带宽=(总线位宽/8)×总线工作频率(MHz)
实际带宽会受到总线布线长度、总线驱动器/接收器
性能、连接在总线上的模块数等因素的影响。
总线带宽
例1:(1)某总线在一个总线周期中并行传送4个字节的
数据,假设一个总线周期等于一个时钟周期,总线
时钟频率为33MHz,总线带宽是多少?(2)如果一个
总线周期中必需传送64位数据,总线时钟频率升为
66MHz,总线带宽是多少?
解: (1)设总线带宽用Dr表示,总线时钟周期T=1/f表示,
一个总线周期传送的数据量用D表示,根据定义可得:
Dr=D/T=D×(1/T)=D×f=4B×33×106/s=132MB/s
(2)64位=8B,Dr=D×f=8×66 ×106/s=528MB/s
总线的类型
• 根据连接方式不同,单机系统中采用的
总线结构有三种基本类型:
单总线:使用一条单一的系统总线来连接
CPU、内存和I/O设备。
双总线:在CPU和主存之间专门设置了一
组高速的存储总线。
三总线:系统总线是CPU、主存和通道
(IOP)之间进行数据传送的公共通路,而
I/O总线是多个外部设备与通道之间进行数据
传送的公共通路。
6.1.3 总线的内部结构
• 总线按功能分类可分为:地址线(单向)、数据
线(双向)和控制线(每一根是单向的)。
• 早期总线实际上就是CPU芯片引脚的延伸和驱动
能力的增强,存在以下不足:
• 1) CPU是总线上唯一的主控者。
• 2) 总线结构与CPU紧密相关,通用性较差。
总线结构实例
Pentium机的总线结构分为三层:CPU总线、PCI总
线和ISA总线。
• CPU总线:也称为CPU-存储器总线,它是一个
64位数据线和32位地址线的同步总线;
• PCI总线:用于连接高速的I/O设备模块,如图形
显示适配器,网络接口控制器,硬盘控制器等,
通过“桥”芯片上面与更高速的CPU总线连接
(北桥),下面与低速的ISA总线连接(南桥);
• ISA总线:用于与低速的IO设备连接,主板上留
有3-4个ISA总线扩展槽。
6.2 总线的仲裁
• 为了解决多个主设备同时竞争总线控制权,必
须有总线仲裁部件,以某种方式选择其中一个
主设备作为下一次主方。
控制信号:主设备发起总线事务
总线主设备
数据可双向传输
总线从设备
总线占用期:主方持续控制总线的时间。
按照总线仲裁电路的位置不同,仲裁方式分为集
中式和分布式两种。
1.集中式仲裁
• 集中式仲裁(控制方式)可以有以下3种:
– 链式查询方式 (菊花链方式):所有设备共用
一个总线请求信号
– 计数器定时查询方式:采用一个计数器控制总
线控制权。
– 独立请求方式:每个部件各有一个总线请求信
号线和一个总线响应信号线。
链式查询方式
计数器定时查询方式
独立请求方式
6.3 总线接口
信息的传送方式
总线接口的基本概念
1.总线的信息传送方式
• 串行传送:使用一条传输线,采用脉冲传送。
– 优点是只需要一条传输线,成本比较低廉。
– 缺点就是速度慢。
• 并行传送:每一数据位需要一条传输线,一般采
用电位传送。
• 串并行传送:将信息分组(一般每组为1个字节),
组内并行传送,组间串行传送。
• 分时传送:总线复用或是共享总线的部件分时使
用总线分时传送信息。
2. 总线接口的基本概念
接口是CPU和主存、外设之间通过总线进行
连接的逻辑部件。
接口的典型功能:
控制、缓冲、状态、转换、整理、程序中断。
一个适配器的两个接口:一个同系统总线相
连,采用并行方式,另外一个同设备相连,
可能采用并行方式或是串行方式。
例2
• 利用串行方式传送字符(如图),每秒钟传送
的比特(bit)位数常称为波特率。假设数据传
送速率是120个字符/秒,每一个字符格式规定包
含10个比特位(起始位、停止位、8个数据位),
问传送的波特率是多少?每个比特位占用的时间
是多少?
• 解: 波特率为:10位×120/秒=1200
• 每个比特位占用的时间Td
Td=1/1200=0.833×10-3s=0.833ms
练习与作业
• P208 9 -12,20
6.4 总线的定时和数据传送模式
一、 总线的定时
总线的一次信息传送过程,大致可分为如下五个阶段:请求总线、总
线仲裁、寻址、信息传送、状态返回。
定时:解决主、从设备如何获知传输开始和传输结束,以及通信双方如
何协调进行数据通信。
同步定时、异步定时。
1、同步定时
• 在同步定时协议中,事件出现在总线上的时刻由公共时钟信号来确定。
由于采用了公共时钟,每个功能模块什么时候发送或接收信息都由统
一时钟规定,因此,同步定时具有较高的传输频率。
• 同步定时适用于总线长度较短、各功能模块存取时间比较接近的情况。
总线的定时
• 2、异步定时
• 在异步定时协议中,后一事件出现在总线上的时刻取决于
前一事件的出现,即建立在应答式或互锁机制基础上。
• 在这种系统中,不需要统一的共公时钟信号。总线周期的
长度是可变的。
• 优点:提高整个系统的总有效带宽。
• 缺点:控制相当复杂,开销大。
6.5 总线举例
•
•
•
•
•
•
多总线结构
ISA总线
EISA总线
PCI总线
HOST总线
InfiniBand标准
练习与作业
• P208
8,14
第七章 输入/输出系统与设备
• 教学目的:理解和掌握CPU对I/O设备的管理和控
制方式,掌握常用I/O设备的工作原理。
• 教学要求:
– 掌握I/O 设备的编址方式和设备控制器的基本功
能。
– 熟悉查询传送、中断传送和 DMA 传送的基本工
作原理。
– 掌握中断请求、中断判优、中断响应、中断处理
和中断返回五个过程的原理。
– 掌握I/O接口电路的功能和组成
7.1 I/O系统概述
输入输出系统包括外部设备(I/O 设备和辅存)
及其与主机(CPU和主存)之间的控制部件。
通常将后者称为设备控制器或接口、适配器等,
其作用是控制并实现主机与外部设备之间的数
据传送。本节主要介绍:
I/O设备的编址及设备控制器的基本功能
I/O设备的数据传送控制方式
I/O 设备的端口及端口地址
• I/O 端口:为了将数据、状态、控制信息区分开,
在接口电路中,设有不同的寄存器(即端口),
如数据端口、状态端口、控制端口,以接收、存
放、输出不同的信息。
• 端口地址:为了便于访问端口,每个端口都
有一个编号,这个编号就是端口地址。
• 常用的I/O编址方式:
I/O 与内存单元统一编址
I/O 独立编址
数据
状态
CPU
控制
数据
接口
电路
端口1
端口2
端口3
端口4
状态
控制
I/O
设备
端口——用于存放信
息的8位或16位锁存器,
缓冲器等。
在PC机中通常为8位
7.2 I/O设备的速度分级与信息交换方式
一、外围设备的速度分级
– 外设种类繁多,存在以下几种情况:
• 不同种类的外设数据传输速率差别很大
• 同一种设备在不同时刻传输速率也可能不同
– 高速的CPU与速度参差不齐的外设怎样在时间上同步呢?
• 解决办法时在CPU和外设之间数据传送时加以定时。
• 速度极慢或简单的外设
CPU只需要接受或者发送数据即可
• 慢速或者中速的设备
可以采用异步定时的方式
• 高速外设
采用同步定时方式
二、信息交换方式
程序中
断方式
7.3 程序查询方式
• 程序查询方式:CPU直接使用输入/输出指
令来控制主机和外部设备之间传送信息。
• 特点:控制简单,但CPU的利用率低。
• 程序查询方式只适用于数据传输率比较低的
外围设备 。
• 设备编址 :统一编址,独立编址
程序查询方式工作过程
启动设备
查询设备状态
N
准备好?
Y
传送数据
修改内存地址
修改计数器
传送完?
Y
关闭设备
N
程序查询I/O设备流程图
7.4 程序中断方式
由于CPU都是由高速的电子器件组成的,而外
设大多是机电类型的产品,二者的工作速度不能比
拟。在查询传送方式中,CPU与外设串行工作,
这对CPU来说,是一极大的浪费、而且计算机速
度越高,这种与外设低速度的矛盾就越突出。为
了提高CPU的工作效率,现代计算机都引入了中
断机构,让CPU以中断方式控制外设的工作。
中断的基本概念
1. 中断(Interrupt):是指CPU暂时中止现行程序,
转去处理随机发生的紧急事件,处理完后自动返
回原程序的功能和技术。
2. 中断系统:是计算机实现中断功能的软硬件总称。
3. 一般在CPU中设置中断机构,在外设接口中设置
中断控制器,在软件上设置相应的中断服务程序。
中断处理示意图
中断处理过程流程
中断传送方式的特点
中断传送方式最大的特点是CPU与外设并行工作,
即CPU启动外设之后,不再等待外设工作的完成,
而是执行另一个程序。当外设完成一次操作后,
就向CPU发出中断申请,这时,CPU就暂停现行
程序的执行而转去用很少的时间控制外设开始下
一次I/O操作。然后CPU又恢复执行原来被中断
的程序。这样,既提高了CPU的利用率,又可以
使多台外部设备与CPU并行工作。
单级中断
• 单级中断的概念:所有中断源属于同一级。
• 当响应某一中断请求时,执行该中断源的中断服务程
序。在此过程中,不允许其他中断源再打断中断服务
程序,即使优先权比它高的中断源也不能再打断。只
有该中断服务程序执行完毕之后,才能响应其他中断。
• 中断源的识别:串行排队链法
– IR1,IR2,IR3为中断请求信号
– IS1,IS2,IS3为中断选中信号
– INTI为中断排队输入
– INTO为中断排队输出
单级中断
单级中断源的识别
四、多级中断
• 多级中断:指计算机系统中有相当多的中断源,根据各
中断事件的轻重缓急程度不同而分成若干级别,每一中
断级分配给一个优先权。
• 一个系统有n级中断,则CPU中有n个IR,n个IM,某级
中断被响应后,则关闭(置”1”)本级和低于本级的IM,
开放(置”0”)更高级的IM。
• 多级中断可以嵌套,但同一级的中断不允许嵌套。一般
说来,优先权高的中断级可以打断优先权低的中断服务
程序。根据系统的配置不同,多级中断又可分为一维多
级中断和二维多级中断。
• 中断响应时,确定哪一级中断和中断源采用硬件实现。
采用了独立请求方式和链式查询方式相结合的方式。
多级中断结构
多级中断源的识别
例1 (参见P 248-249)
参见图8.9所示的二维中断系统,请问:
(1)在中断情况下,CPU和设备的优先级如何考虑?请
按降序排列各设备的中断优先级。
(2)若CPU现执行设备B的中断服务程序,IM2,IM1,
IM0的状态是什么?如果CPU执行设备D的中断服务
程序,IM2,IM1,IM0的状态又是什么?
(3)每一级的IM能否对某个优先级的个别设备单独进
行屏蔽?如果不能,采取什么办法可达到目的?
(4)假如设备C一提出中断请求,CPU立即进行响应,
如何调整才能满足此要求?
例1
解:(1)在中断情况下,CPU的优先级最低。各设备的
优先次序是:
A→B→C→ D→E→F→G→H→I→CPU。
(2)执行设备B的中断服务程序时IM2IM1IM0=111;
执行设备D的中断服务程序时,IM2IM1IM0=011
(3)每一级的IM标志不能对某个优先级的个别设备进
行单独屏蔽。可将接口中的EI(中断允许)标志清“0”,
它禁止设备发出中断请求。
(4)要使设备C的中断请求及时得到响应,可将设备C
从第2级取出来,单独放在第3级上,使第3级的优先
级最高,即令IM3=0即可。
例2(参见P249-250)
参见例1所示的系统,只考虑A,B,C三个设备组成的单级
中断结构,它要求CPU在执行完当前指令时对中断请求进行
服务。假设:
(1)CPU“中断批准”机构在响应一个新的中断之前,先要让被中
断的程序的一条指令一定要执行完毕;
(2)TDC为查询链中每个设备的延迟时间;
(3)TA,TB,TC分别为设备A,B,C的服务程序所需的执行时
间;
(4)TS,TR为保存现场和恢复现场所需的时间;
(5)主存工作周期为TM。 试问:就这个中断请求环境来说,系
统在什么情况下达到中断饱和?
例2
解:参阅图8.5(P243)中断处理流程,并假设执行一条指令的时
间也为TM。如果三个设备同时发出中断请求,那么依次分
别处理设备A、设备B、设备C的时间如下:
tA = 2TM + TDC + TS + TA + TR
tB = 2TM + 2TDC + TS + TB + TR
tC = 2TM + 3TDC + TS + TC + TR
处理三个设备所需的总时间为:T=tA+tB+tC
T是达到中断饱和的最小时间,即中断极限频率为:f=1/T
练习与作业
• P269 2,3,7,11