计组复习笔记
老师说的整体要注意的...
做题看清选对错
课程知识点多,难点不一定在后边,可能开头就挺难。
考试的时候经常说废话:比如主存的扩展,既告诉地址,还告诉总线的位数,总线的位数就是废话,实际的地址没那么多,要分清用不到的信息
不知道的知识点跳过去。
对缩写要知道,不要求每个字都对,要知道是什么。
第二章 系统总线
2.1 总线的基本概念
什么是总线
总线是连接各个部件的信息传输线,各模块之间传送信息的通路是 各个部件共享的传输介质
总线上信息的传送
2.2 总线的分类
1.片内总线
芯片内部的总线
2.系统总线
计算机各部件之间 的信息传输线
数据总线 双向 与机器字长、存储字长有关
地址总线 单向 与存储地址、I/O地址有关
控制总线 有出(存储器读、写,总线允许、中断确认) 有入(中断请求、总线请求)
3.通信总线
用于 计算机系统之间 或 计算机系统与其他系统(如控制仪表、移动通信等)之间的通信
传输方式
串行通信总线
并行通信总线
2.3 总线结构
一、单总线结构
优点:结构简单,成本低,易于接入新的设备。
缺点:带宽低、负载重,多个部件只能争用唯一的总线,且不支持并发传送操作。
二、多总线结构
1.双总线结构1
优点:将低速 设备从单总线上分离出来,实现了存储器总线和 总线分离。
缺点:需要增加通道风硬件设备。
2.双总线结构2
3.三总线结构1
①主存总线:用于在 和主存之间传送地址、数据和控制信息。
② 总线:用于 和各类外设之间通信。
③ 总线:用于在内存和高速外设之间直接传送数据。
优点:提高了 设备的性能,使其更快地响应命令,提高系统吞吐量。
缺点:系统工作效率较低。
4.三总线结构2
5.四总线结构
6.总线结构与系统性能关系
最大存储容量
单总线系统中,内存要为外设保留一些地址
指令系统
单总线系统中,无须专门的I/O指令
双总线系统中,设有专门的I/O指令
吞吐量
三总线系统比单总线系统要大得多
2.4 总线控制
一、总线物理实现
二、总线判优控制
1.基本概念(三种集中式方式是重点)
主设备(主控器):对总线有控制权,可以启动数据传输
从设备(受控器):响应从主设备发来的总线命令
总线判优控制(总线仲裁)
集中式
链式查询(串行链接)
计数器定时查询
独立请求方式
分布式
链式查询方式
BS -总线忙。所有主模块都通过此线向总线控制器发送“忙”信号,该信号有效时表示总线正在被占用。
BR-总线请求。所有主模块都通过此线向总线控制器发请求信号,该
信号有效时表示系统中至少有一个主模块请求使用总线。
BG-总线同意(总线使用)。总线控制器通过此线向请求总线的主模块发出允许使用总线信号,该信号有效时表示总线控制器已经响应了总线请求。
过程:通过一条判优链路对所有主模块逐个串行查询(通常,离总线控制器物理连接最近的模块优先级最高)。
优点:控制信号线数量少,结构简单,易于扩充。
缺点:查询速度慢,对传播过程中电路故障敏感;各模块优先级固定不变,使用灵活性差。
计数器定时查询方式
BS -总线忙
BR-总线请求
过程:在总线控制器中设置一个查询计数器。开始查询时,启动计数器计数。每计数一次,就将计数值作为模块地址发往各个主模块。每个申请总线的主模块对地址进行识别,地址相符合的模块就获得了总线的控制权,并且通过设置总线忙信号 有效使查询计数器停止计数
优点:优先级设置比较灵活;查询过程对电路故障敏感度较低。
缺点:控制过程相当复杂,硬性开销大,扩展困难。
独立请求方式
BG-总线同意
BR-总线请求
过程:每一个主模块专用一根总线请求信号线,和一根总线允许信号线 ,各自独立地向总线控制器发出请求。总线控制器中设置并行排队线路,对各模块发来的总线请求信号 同时进行排队判优,然后通过各自独立的总线允许信号线 ,向优先级最高的申请模块发送总线允许信号。
优点:查询速度快,优先级可以灵活变化,故障不敏感,扩展容易。
缺点:控制逻辑复杂,硬性开销大。
三、总线通信控制
1、目的
解决通信双方协调配合问题
2、总线传输周期(重点)
申请分配 主模块申请,总线仲裁决定
寻址阶段 主模块向从模块给出地址和命令
传数阶段 主模块和从模块 交换数据
结束阶段 主模块 撤消有关信息
总线传输周期通常由若干总线时钟周期构成。
3、总线通信的方式(重点)
同步通信 由 统一时标 控制数据传送
异步通信 采用 应答方式 ,没有公共时钟标准
半同步通信 同步、异步结合
(1)同步式数据输入、输出
(2)异步通信
(3)半同步通信
同步 发送方用系统时钟前沿发信号
接收方用系统时钟后沿判断、识别
异步 允许不同速度的模块和谐工作
增加一条 “等待”响应信号 WAIT
三种通信的共同点
一个总线传输周期(以输入数据为例)
主模块发地址 、命令 占用总线
从模块准备数据 不占用总线 总线空闲
从模块向主模块发数据 占用总线
(4) 分离式通信
充分挖掘系统总线每个瞬间的潜力
一个总线传输周期
子周期1 主模块申请占用总线,使用完后即放弃总线的使用权
子周期2 从模块申请占用总线,将各种信息送至总线上
分离式通信特点
- 各模块有权申请占用总线
- 采用同步方式通信,不等对方回答
- 各模块准备数据时,不占用总线
- 总线被占用时,无空闲
充分提高了总线的有效占用
第三章 运算方法和运算部件
3.1 数据的表示方法和转换
3.1.1 数值型数据的表示和转换
数制
十进制数:任意一个十进制数(N)10可表示为
二进制数:任意一个二进制数可表示为
八进制数:任意一个八进制数可表示为
十六进制:任意一个十六进制数可表示为:
3.1.2 十进制数的编码与运算
1.十进制数位的编码与运算
在计算机中采用4位二进制码对每个十进制数位进行编码。
(1) 有权码
表示一位十进制数的二进制码的每一位有确定的权。
8421码 :“以二进制编码的十进制(binary coded decimal,简称BCD)码”。
注:在计算机内运算时可能需要修正
(2) 无权码
表示一个十进制数位的二进制码的每一位没有确定的权。
余3码(Excess-3 Code):在8421码基础上,把每个编码都加上0011而形成的。(不产生进位,本位减0011 产生进位,本位加0011)
格雷码(Gray Code),格雷码又称“循环码”:任何两个相邻编码只有一个二进制位不同,而其余三个二进制位相同。
3.2 带符号的二进制数据在计算机中的表示方法及加减法运算
在计算机中表示的带符号的二进制数称为“机器数”。机器数有三种表示方式:原码、补码和反码。
3.2.1 原码、补码、反码及其加减法运算
1.原码表示法
机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后,并以绝对值形式给出。这是与真值最接近的一种表示形式。数值零的真值有+0和-0两种表示形式。
[+0]原 ≠ [-0]原
2.补码表示法
x = + 0.1110 x = -0.1100000
[x]补 = 0.1110 [x]补=1.0100000
真值为 负 时,补码可用原码除符号位外每位取反,末位加 1 求得
真值为 负 时,原码可用补码除符号位外每位取反,末位加 1 求得
数值零的补码表示形式是唯一的,即:
[+0]补=[-0]补=0.0000
补码加法运算
当补码加法运算的结果不超出机器范围时,可得出以下重要结论:
(1) 用补码表示的两数进行加法运算,其结果仍为补码。
(2) [X+Y]补=[X]补+[Y]补。
(3) 符号位与数值位一样参与运算。
连同符号位一起相加,符号位产生的进位自然丢掉
(4) [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补,计算出[-Y]补即可
(5) [y]补连同符号位在内,每位取反,末位加 1,即得[y]补
3.反码表示法
反码取反即可。
反码零有两种表示形式:
[+0]反=0.0000, [-0]反=1.1111
正数的原码、补码和反码的表示形式是相同的
4.移码表示法
(1) 移码定义
x 为真值,n为整数的位数
移码和补码仅符号位不同,把[X]补的符号位取反,即得[X]移。
[+0]移 = [-0]移
用移码表示浮点数的阶码能方便地判断浮点数的阶码大小
Ø最高位为符号位,1表示正号,0表示负号。
经典例题
将 –58 表示成二进制定点数和浮点数,并写出定点和浮点的三种机器数及阶码为移码、尾数为补码的形式,其中数值部分均取
10 位,数符取 1 位,浮点数阶码取 5 位(含1位阶符)
3.2.2 四位串行加法器(注意看)
3.2.3 定点数和浮点数
主要解决小数点在机器内部的表示问题。
1.定点数
定点数是指小数点固定在某个位置上的数据,一般有小数和整数两种表示形式。
定点纯小数是把小数点固定在数据数值部分的左边,符号位的右边;对于存放在一个n位寄存器中的定点小数X,其表示范围为:
定点整数是把小数点固定在数据数值部分的右边。对于存放在一个n位寄存器中的整数X,其表示范围为
在计算机内部,只能表示一定范围内的有限数。
若运算结果小于能表示的最小数,则计算机把它当成0处理;
若大于能表示的最大数,则发生“溢出”。
定点数的表示范围小,用定点数来进行运算很容易产生溢出。为了扩大计算机的表数范围,一般采用浮点表示法。
2.浮点数
浮点数是指小数点位置可浮动的数据,通常以下式表示:N=M·R^E 。其中,N为浮点数,M(mantissa)为尾数,E(exponent)为阶码,R(radix)称为“阶的基数(底)”。
浮点数的机内表示一般采用以下形式:
MS是尾数的符号位。
E为阶码,最高位为符号位(定点整数,位数l决定其表数范围)
M为尾数(定点小数,位数m决定其精度)
浮点数表示虽然扩大了表数范围,但并没有增加数值的个数,只是数据间的间隔变稀疏了。(n位编码还是只能表示2^n个数)
规格化
1/2 ≤ x ≤ 1
实际上是 0.1-1.0 之间
机器零(判断/选择)
当浮点数尾数为0时,不论其阶码为何值按机器零处理
当浮点数阶码小于能表示的最小值时,不论尾数为何值,按机器零处理
plus:要知道的概念
数据通路的概念:数据通路是指计算机的数据信息从一个部件传输到另一个部件所经过的路径,连同路径上的设备。如:寄存器、暂存器、多路选择器、移位器、加工部件等。
溢出:当运算结果超出机器数所能表示的范围时,称为溢出。
◦两个异号数相加或两个同号数相减,其结果是不会溢出的。
◦两个同号数相加或者两个异号数相减时,才有可能发生溢出的情况
溢出的3个条件
(1) 当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出。
(2) 当任意符号两数相加时,如果C=Cf,运算结果正确,其中C为数值最高位的进位,Cf为符号位的进位。如果C≠Cf,则为溢出。
溢出条件=C⊕Cf
(3) 采用双符号位fS1fS2。正数的双符号位为00,负数的双符号位为11。符号位参与运算,当结果的两个符号位fS1和fS2不相同时,为溢出
3.3 二进制乘法运算
3.3.1 定点数一位乘法
两个原码数相乘,其乘积的符号为相乘两数的异或值,数值则为两数绝对值之积。
设[x]原 = x0. x1x2......xn
[y]原 = y0. y1y2......yn
乘积的符号位单独处理 x0⊕y0
数值部分为绝对值相乘 X • Y
例题
X=0.1101 Y=0.1011.取双符号位
符号位=0⊕0=0
X·Y=0.10001111
Booth公式(重点)
乘数的最低1位为Yn,在其后面再添加1位Yn+1,其值为0。
booth公式运算规则
booth例题
已知 x = +0.0011 y = –0.1011 求[x·y]补
3.4 二进制除法运算
1.定点原码一位除法
两个原码数相除,其商的符号为两数符号的异或值,数值则为两数绝对值相除后的结果。
(1)恢复余数法
减法结果为正,则上商应为1;
余数 Ri>0 上商“1”
减法结果为负,则上商应为0,且要将除数加回
余数 Ri<0 上商“0”, Ri + Y 恢复余数
例题
x = 0.1011 y = 0.1101 求[x/y]原
(1)恢复余数法缺点
这种方法的缺点是:当某一次-Y的差值为负时,要多一次+Y恢复余数的操作,降低了执行速度,又使控制线路变得复杂,因此在计算机中很少采用。计算机中普遍采用的是不恢复余数的除法方案,又称之为加减交替法。
(2)加减交替法(不恢复余数法)
恢复余数法运算规则
余数 Ri>0 上商 “1”, Ri+1 =2Ri – Y
余数 Ri<0 上商 “0”, Ri+1 = 2( Ri+Y) – Y = 2Ri +Y
•加减交替法的规则
本次余数为+,商1,余数左移1位,下次减除数
上商“1” 2Ri + [–Y]补
本次余数为-,商0,余数左移1位,下次加除数
上商“0” 2Ri + Y
例题
x = 0.1011 y = 0.1101 求[x/y]原
[–Y]补 = 11.0011
结果 ① x0⊕y0 = 0⊕0= 0
② X/Y = 0.1101
∴ [X/Y]原 = 0.1101
余数 = 0.0111*2^-4 =0.00000111
特点
上商 n+1 次
第一次上商判溢出
移 n 次,加 n+1 次
用移位的次数判断除法是否结束
3.5 浮点数运算方法(看一遍就行)
3.7 数据校验码(比较重要)
数据校验码是一种常用的带有检错纠错能力的数据编码方法。
实现原理:在码字之间加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。
3.7.1 奇偶校验码
发现一位或奇数个错的编码。
实现原理:使码距由1增加到2。
实现方法:通常是为一个字节补充一个二进制位,称为校验位,用设置校验位的值为0或1,使字节的8位和该校验位含有1值的个数为奇数或偶数。
3.7.2 海明校验码
•实现原理:在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。
•发现两位错,校正一位错,校验位位数r和数据位的位数k满足下述关系:
k 值 | 最小 的 r 值 |
---|---|
1~4 | 4 |
5~11 | 5 |
12~26 | 6 |
27~57 | 7 |
58~120 | 8 |
出错的海明码位号和校验位位号的关系
海明码位号 | 数据位/校验位 | 参与校验的校验位位号 | 被校验位的海明码位号=校验位位号之和 |
---|---|---|---|
H1 | P1 | 1 | 1=1 |
H2 | P2 | 2 | 2=2 |
H3 | D1 | 1,2 | 3=1+2 |
H4 | P3 | 4 | 4=4 |
H5 | D2 | 1,4 | 5=1+4 |
H6 | D3 | 2,4 | 6=2+4 |
H7 | D4 | 1,2,4 | 7=1+2+4 |
H8 | P4 | 8 | 8=8 |
H9 | D5 | 1,8 | 9=1+8 |
H10 | D6 | 2,8 | 10=2+8 |
H11 | D7 | 1,2,8 | 11=1+2+8 |
H12 | D8 | 4,8 | 12=4+8 |
H13 | P5 | 13 | 13=13 |
S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7
S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7
S3=P3⊕D2⊕D3⊕D4⊕D8
S4=P4⊕D5⊕D6⊕D7⊕vD8
S5=P5⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8 ⊕D9 ⊕P1 ⊕P2 ⊕P3 ⊕P4
第四章 主存储器
基本术语(要知道)
记忆单元(位元):具有两种稳态的能够表示二进制数码0和1的物理器件。
存储单元:主存中具有相同地址的位构成一个存储单元。
存储体:若干存储单元构成一个存储体。
编址方式:对存储体中各存储单元进行编号的方式。(按字节编址、按字编制)
存储器地址寄存器(MAR):用于存放主存单元地址的寄存器。
存储器数据寄存器(MDR):用于存放主存单元中的数据的寄存器
存储字、编址单位和传输单位
–机器字长:运算器中参加运算的寄存器的位数。
–存储字:①存储器按机器字长组织的一个“自然”单位。它的长度一般应等于一个数或指令的位数。但大多数机器并不是这样。②存储芯片中的一个读写单位。
–编址单位:一个存储单元的位数。有的按字编址,有的按字节编址,等等。
–传输单位:对主存而言,指一次从存储器读出或写入的数的位数,它可以不等于存储字的长度,也可不等于编址单位。对外存而言,数据通常按块传输。
4.1 主存储器分类,技术指标
半导体存储器
随机存取存储器(RAM)
静态RAM(SRAM)、动态RAM(DRAM)
非易失性存储器
掩膜式ROM.........
主要技术指标
1、主存容量
(1)最小信息单位通常是一个字节
(2)以字或字节为单位来表示主存储器存储单元的总数即主存容量
(3)指令中地址码的位数决定了主存储器的可直接寻址的最大空间
2、存储器存取时间
从启动一次存储器操作到完成该操作所经历的时间:存储器的访问时间(读出时间、写入时间)
3、存储周期时间
连续启动两次独立的存储器操作(例如连续两次读操作)所需间隔的最小时间(读周期、写周期)
基本操作
读
地址:AR→AB
读信号:CPU →CB →MEM
数据:MEM →DB →DR
Ready:MEM →CB →CPU
写
地址:AR→AB
写信号:CPU →CB →MEM
数据:DR →DB →MEM
Ready:MEM →CB →CPU
4.2 读/写存储器(随机存储器(RAM))
1.半导体存储芯片的基本结构
地址线(单向) | 数据线(双向) | 芯片容量 |
---|---|---|
10 | 4 | 1K x 4位 |
14 | 1 | 16K x 4位 |
13 | 8 | 8K x 8位 |
2.半导体存储芯片的译码驱动方式(知道2种)
(1)线选法
(2)重合法
3.静态存储器(SRAM)
(1)存储单元和存储器
MOS静态存储器的存储单元
(过一遍模块)
(2)读写周期
①读周期
②写周期
4.动态存储器(DRAM)
(1)存储单元和存储器原理
(2)再生
DRAM是通过把电荷充积到MOS管的栅极电容或专门的MOS电容中去来实现信息存储的。但是由于电容漏电阻的存在,随着时间的增加,其电荷会逐渐漏掉,从而使存储的信息丢失。为了保证存储信息不遭破坏,必须在电荷漏掉以前就进行充电,以恢复原来的电荷。把这一充电过程称为再生,或称为刷新。对于DRAM,再生一般应在小于或等于2ms的时间内进行一次。
DRAM采用“读出”方式进行再生。
(3)动态RAM刷新
①集中刷新
刷新与行地址有关
②分散刷新(存取周期为1μs)
以128 ×128 矩阵为例
③分散刷新与集中刷新相结合(异步刷新)
对于128 ×128 的存储芯片(存取周期为 0.5 ms )
若每隔 15.6 μs 刷新一行
每行每隔2 ms 刷新一次
(4)动态RAM和静态RAM的比较
DRAM(主存) | SRAM(缓存cache) | |
---|---|---|
存储原理 | 电容 | 触发器 |
集成度 | 高 | 低 |
芯片引脚 | 少 | 多 |
功耗 | 小 | 大 |
价格 | 低 | 高 |
速度 | 慢 | 快 |
刷新 | 有 | 无 |
4.4 半导体存储器的组成与控制(拓展重点)
1.存储器容量拓展
(1)位拓展(增加存储字长)
用2片 1K X 4位 存储芯片组成 1K(10根地址线) X 8位(8根数据线) 的存储器
用 2片 16K * 4 位的存储芯片组成 16K * 8 位的存储器
(2)字扩展(增加存储字的数量)
用2片 1K × 8位 存储芯片组成 2K(11根地址线) × 8(8根数据线) 位的存储器
用 4片 16K * 8位组成 64K * 8 位的存储器
(3)字、位扩展
用8片 1K × 4位 存储芯片组成 4K(12根地址线) × 8(8根数据线) 位的存储器
用 8片 1K * 4位存储芯片组成 4K * 8位存储器
2.存储拓展问题分析
已有m(字)X n(位)的存储芯片,设计一个m' X n'的存储器,其中m’>=m与/或n’>=n
m’>=m n’>=n 即单纯的位扩展
m’>m n’=n 即单纯的字扩展
m’>m n’>n 即单纯的位扩展
设计要点
1、用m * n芯片构造一个p * q的阵列,待设计存储器所需的模块数为p * q,其中p=[m’/m],q=[n’/n]
2、如果m’=m,则不需增加地址位数;如果m’>m,则需增加地址位数,并设计相应的地址控制电路
3、正确连接各芯片的地址线、片选线、读/写控制线、数据输入线和数据输出线,并使存储器与CPU的时序妥善地配合
3. 存储器扩展实例 1
计算存储单元数(容量)
37FFH-3000H+1H=800H,每个单元为8位,故容量为2K * 8
计算所用RAM芯片数
[2K/1K] * [8/4]=4片
芯片构成阵列,确定总体布局
2片芯片扩展,构成单元长度为8位的芯片组
2组芯片扩展,构成2K个单元
芯片内部寻址需要10位地址(A9~A0),其他作为芯片组选择
设计译码控制电路
4. 存储器扩展实例 2
设CPU有16根地址线,8根数据线,并用/MREQ作为访存控制信号(低电平有效),用/WR作为读/写控制信号(高电平为读,低电平为写)。现有下列存储芯片:1K * 4位RAM、4K * 8 位 RAM 、8K * 8位RAM 、2K * 8位ROM 、4K * 8位ROM 、8K * 8位ROM及74LS138译码器和各种门电路。画出CPU与存储器的连接图,要求如下:
–1主存地址空间分配:6000H-67FFH为系统程序区(ROM)。
6800H-6BFFH为用户程序区(RAM)。
–2合理选用上述存储芯片,说明各选几片。
–3详细画出存储芯片的片选逻辑图。
4.5 多体交叉存储器
4.5.1 编制方式
多模块存储器实现重叠与交叉存取。
在M个模块上交叉编址(M=2^m),则称为模M交叉编址。
地址的模四交叉编址(应该要看/注意?)
模体 | 地址编址序列 | 对应二进制地址最低二位 |
---|---|---|
M0 | 0,4,8,12,…,4j+0,… | 0 0 |
M1 | 1,5,9,13,…,4j+1,… | 0 1 |
M2 | 2,6,10,14,…,4j+2,… | 1 0 |
M3 | 3,7,11,15,…,4j+3,… | 1 1 |
4.5.2 重叠与交叉存储控制
交叉访问:M个模块按一定的顺序轮流启动各自的访问周期,启动两个相邻模块的最小时间间隔等于单模块访问周期的1/M。
多体存储器
目的:优化主存性能
结构:
单体多字存储器、多体交叉存储器
单体多字存储器
多个单字长存储模块并发
共用一个地址寄存器
单存储周期内访问多个存储字
性能线性增长,总线位宽变化
多体交叉存储器
模块并行工作
CPU比存储器要快
能同时取出多条指令或者数据
可大大提高机器的运行速度及存储带宽
顺序编制与交叉编制
交叉编址顺序访问时可按流水方式存取
第五章 指令系统
5.2 指令格式
计算机是通过执行指令来处理各种数据
5.2.1 指令格式
1.零地址指令 格式:
OPCODE |
---|
2.一地址指令 格式:
OPCODE | A |
---|
3.二地址指令 格式:
OPCODE | A1 | A2 |
---|
4.三地址指令 格式:
OPCODE | A1 | A2 | A3 |
---|
5.2.2 指令操作码的扩展技术
指令操作码的长度决定指令条数。
指令操作码的格式
固定格式(规整型),即操作码的长度和位置都固定。
可变格式(非规整型),即操作码的长度可变,且分散地放在指令字的不同字段中。常用的编码方式是扩展操作码。
例题
设某机器的指令长度为16位,包括4位基本操作码字段和三个4位地址字段
固定格式编码,4位操作码字段最多只能表示16条不同的三地址指令
扩展的原则
使用频度(即指令在程序中的出现概率)高的指令应分配短的操作码
使用频度低的指令相应地分配较长的操作码
如某计算机模型有7条指令(I1~I7),它们在程序中出现的概率用Pi表示,则操作码长度的一种选择
指令 | 概率Pi(%) | 操作码 | 操作码长度(位) |
---|---|---|---|
I1 | 45 | 00 | 2 |
I2 | 28 | 01 | 2 |
I3 | 17 | 10 | 2 |
I4 | 5 | 1100 | 4 |
I5 | 3 | 1101 | 4 |
I6 | 1 | 1110 | 4 |
I7 | 1 | 1111 | 4 |
5.2.3 指令长度与字长的关系
指令长度一般为字节 (即8位)的整数倍。
字长都是字节的1,2,4或8倍。
指令长度与字长没有固定关系,小于等于字长的为短格式指令,大于字长的为长格式指令。
数据字长一般为32位。存储器的地址,一般按字节表示。指令系统支持字节、半字、字、双字。
5.3 寻址方式(编制方式)
寻址方式(或编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。
直接寻址、寄存器寻址、基址寻址、变址寻址、间接寻址、相对寻址、立即数寻址、堆栈寻址
5.5 RISC and CISC
RISC
精简指令系统计算机(reduced instruction set computer,简称RISC) 比如:MIPS、ARM、RISC-V
RISC的特点
(1)优先选取使用频率最高的简单指令
(2)指令长度固定,指令格式简单、寻址方式简单
便于硬件实现
(3)操作尽量在寄存器之间进行
(4)通用寄存器数量多,CPU设置大量寄存器
便于编译器实现
(5)大部分指令在一个或小于一个机器周期内(一个机器周期完成一条机器指令)
(6)以硬布线控制逻辑为主,CISC采用微程序
(7)用高级语言编程,重视编译优化工作,以减少程序执行时间
(8)Load/Store架构
只有存/取数指令才能访问存储器,其余指令的操作都在寄存器之间进行、便于硬件实现
CISC
复杂指令系统计算机(Complex Instruction System Computer) CISC
比如Intel X86
X86 | MIPS | |
---|---|---|
1 | 变长(1-15bytes) | 定长指令 |
2 | 指令数多 CISC | 指令数少 RISC |
3 | 8个通用寄存器 | 32个通用寄存器 |
4 | 寻址方式复杂 | 寻址方式简单 |
5 | 有标志寄存器 | 无标志寄存器 |
6 | 最多两地址指令 | 三地址指令 |
7 | 无限制 | 只有Load/store能访问存储器 |
8 | 有堆栈指令 push,pop | 无堆栈指令(访存指令代替) |
9 | 有I/O指令 | 无I/O指令(设备统一编址) |
10 | 参数传递:栈帧 | 参数传递(4寄存器+栈帧) |
第六章 CPU
6.2 控制器的组成
6.2.1 控制器的功能
取指令
分析指令
执行指令
控制程序和数据的输入与结果输出
对异常情况和某些请求的处理
“中断请求”信号
DMA请求信号
6.2.2 控制器的组成
程序计数器(PC)
指令寄存器(IR)
指令译码器或操作码译码器
脉冲源及启停线路
时序控制信号形成部件
6.2.3 指令执行过程
运算器框图示例
8个通用寄存器GR
1个算术逻辑运算部件ALU
4个标志触发器N,Z,V,C
有记忆的用触发器,没有记忆的用门电路
加法指令的执行
ADD rd/rs,((rs1)+disp
①从存储器取指令,送入指令寄存器,并进行操作码译码(分析指令)。
②计算数据地址,将计算得到的有效地址送地址寄存器AR。
③到存储器取数。
④进行加法运算,结果送寄存器,并根据运算结果置状态位N,Z,V,C。
条件转移指令的执行过程
本条指令完成以下操作:
①从存储器取指令,送入指令寄存器,并进行操作码译码。
②如转移条件成立,根据指令规定的寻址方式计算有效地址,转移指令经常采用相对寻址方式,此时转移地址=PC+disp。
6.3 微程序控制计算机的基本工作原理
6.3.1 微程序控制的基本概念(不直接考,要对应得上)
微操作:指能完成一条指令功能的按一定次序执行的基本操作,又称微命令。
微指令:在微程序控制的计算机中,将由同时发出的控制信号所执行的一组微操作称为微指令。
微程序:完成的指令功能的微指令序列的集合就叫做微程序。
控制存储器:存放微程序以及下一条执行的微指令地址(简称为下址)的存储器,被叫做控制存储器。一般可以用只读存储器实现。
执行一条指令实际上就是执行一段存放在控制存储器中的微程序
6.3.2 实现微程序控制的基本原理(必考,图没有那么复杂)
序号 | 控制信号 | 功能 | 序号 | 控制信号 | 功能 |
---|---|---|---|---|---|
1 | PC→AB | 指令地址送地址总线 | 13 | + | ALU进行加法运算 |
2 | ALU→PC | 转移地址送PC | 14 | - | ALU进行减法运算 |
3 | PC+1 | 程序计数器加1 | 15 | ∧ | ALU进行逻辑乘运算 |
4 | imm(disp)→ALU | 立即数或位移量送ALU | 16 | ∨ | ALU进行逻辑加运算 |
5 | DB→IR | 取指到指令寄存器 | 17 | ALU→GR | ALU运算结果送通用寄存器 |
6 | DB→DR | 数据总线上的数据送数据寄存器 | 18 | ALU→DR | ALU运算结果送数据寄存器 |
7 | DR→DB | 数据寄存器中的数据送数据总线 | 19 | ALU→AR | ALU计算得的有效地址送地址寄存器 |
8 | rs1→GR | 寄存器地址送通用寄存器 | 20 | AR→AB | 地址寄存器内容送地址总线 |
9 | rs,rd→GR | 寄存器地址送通用寄存器 | 21 | ADS | 地址总线上地址有效 |
10 | (rs1)→ALU | 寄存器内容送ALU | 22 | M/IO | 访问存储器或I/O |
11 | (rs)→ALU | 寄存器内容送ALU | 23 | W/R | 写或读 |
12 | DR→ALU | 数据寄存器内容送ALU |
加法指令(不会非常详细,考类似指令)
四条微指令解释执行,一条微指令中的所有控制信号是同时发出的。
(1) 取指微指令
①指令地址送地址总线
PC→AB(1)
② 发访存控制命令:
从存储器取指令送数据总线
ADS(21)
M/IO(低电平)=1(22)
W/R(低电平)=0(23)
③指令送指令寄存器
DB→IR(5)
④ 程序计数器+1
PC+1(3)
(2) 计算地址微指令
①取两个源操作数(计算地址用)
rs1→GR(8)
(rs1)→ALU(10)
disp→ALU(4)。
②加法运算
“+”(13)。
③有效地址送地址寄存器
ALU→AR(19)
(3)取数微指令
①数据地址送地址总线
AR→AB(20)。
②发访存控制命令:由存储器将数据送数据总线DB。
ADS(21)
M/IO(22)
W/R(23)
③ 数据送数据寄存器
DB→DR(6)
(4)加法运算和送结果微指令
①两源操作数送ALU
rs→GR(9)
(rs)→ALU(11)
DR→ALU(12)
②加法运算
“+”(13)
③ 送结果
ALU→GR(17)
加法指令微程序流程图
微程序控制器
CPU是什么
指令+计算=CPU
指令周期
指令周期
1.Fetch(取得指令),也就是从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。
2.Decode(指令译码),也就是根据指令寄存器里面的指令,解析成要进行什么样的操作,具体要操作哪些寄存器、数据或者内存地址。
3.Execute(执行指令),也就是实际运行对应的
指令,进行算术逻辑操作、数据传输或者直接的地址跳转。
4.重复进行 1~3 的步骤。
其实就是一个永不停歇的 “Fetch - Decode - Execute”的循环,
我们把这个循环称之为指令周期(Instruction Cycle)
机器周期
机器周期或者CPU 周期,Machine Cycle。CPU 内部的操作速度很快,但是访问内存的速度却要慢很多。每一条指令都需要从内存里面加载而来,所以我们一般把从内存里面读取一条指令的最短时间,称为 CPU 周期。
时钟周期
时钟周期以及我们机器的主频,Clock Cycle。一个 CPU 周期,通常会由几个时钟周期累积起来。一个 CPU 周期的时间,就是这几个 Clock Cycle 的总和。
建立数据通路(重点)
一般来说,数据通路就是路径+元件。通常包括两类元件组成。
第一类叫操作元件,也叫组合逻辑元件(Combinational Element),其实就是 ALU。在前面讲 ALU 的过程中可以看到,它们的功能就是在特定的输入下,根据下面的组合电路的逻辑,生成特定的输出。
第二类叫存储元件,也有叫状态元件(State Element)的。比如在计算过程中需要用到的寄存器,无论是通用寄存器还是状态寄存器,其实都是存储元件。
通过数据总线的方式,把它们连接起来,就可以完成数据的存储、处理和传输了,这就是所谓的建立数据通路了。
控制器。可以把它看成只是机械地重复“Fetch - Decode - Execute“循环中的前两个步骤,然后把最后一个步骤,通过控制器产生的控制信号,交给 ALU 去处理*。
时序逻辑电路
时序逻辑电路用于解决:
第一个就是自动运行的问题。
第二个是存储的问题。
第三个本质上解决了各个功能按照时序协调的问题。
构造CPU
-
PC 寄存器所需要的计数器
-
读写数据所需要的译码器
-
建立数据通路,构造一个最简单的 CPU
例题
某计算机的数据通路如下图所示,其中M—主存, MBR—主存数据寄存器, MAR—主存地址寄存器, R0-R3—通用寄存器, IR—指令寄存器, PC—程序计数器(具有自增能力), C、D--暂存器, ALU—算术逻辑单元(此处做加法器看待), 移位器—左移、右移、直通传送。所有双向箭头表示信息可以双向传送。请按数据通路图画出“ADD(R1),(R2)+”指令的指令周期流程图。该指令的含义是两个数进行求和操作。其中源操作地址在寄存器R1中,目的操作数寻址方式为自增型寄存器间接寻址(先取地址后加1)。
6.4 微程序设计技术
6.4.1 微指令的编译法(要知道四种方法)
1.直接控制法
控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成“1”或“0”,这样就可打开或关闭某个控制门,这就是直接控制法
2.字段直接编译法
微周期:指的是一条微指令所需的执行时间。
互斥:指若干个(一组)微命令,在每次选择使用它们的微周期内,只有一个微命令起作用,那么这若干个微命令是互斥的。
编码:将互斥的微命令编成一组,成为微指令字的一个字段,用二进制编码来表示。
字段长度与微命令数的关系
字段长度 | 微命令数 |
---|---|
2位 | 2~3 |
3位 | 4~7 |
4位 | 8~15 |
000表示不发微命令
3.字段间接控制法
字段间接编译法:指在字段直接编译法中,规定一个字段的某些微命令,要兼由另一字段中的某些微命令共同来解释
4.常数源字段E
在微指令中,一般设有一个常数源字段E,就如指令中的直接操作数一样。E字段一般仅有几位,用来给某些部件发送常数,故有时称为发射字段。该常数有时作为操作数送入ALU运算;有时作为计算器初值,用来控制微程序的循环次数等。
6.4.3 微指令格式
微指令的编译法是决定微指令格式的主要因素
1.水平型微指令
其基本特点是在一条微指令中定义并执行多个并行操作微命令。在实际应用中,直接控制法、字段编译法(直接、间接编译法)经常应用在同一条水平型微指令中。从速度来看,直接控制法最快,字段编译法要经过译码,所以会增加一些延迟时间。
2.垂直型微指令
在微指令中设置有微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。其特点是不强调实现微指令的并行控制功能,通常一条微指令只要求能控制实现一二种操作。
3.水平型微指令与垂直型微指令的比较
水平型微指令
并行操作能力强,效率高,执行时间短、灵活性强,
微指令字较长,微程序短,控存容量大,性能佳
垂直型微指令
字长短,微程序长,控存容量小,性能差
垂直型与指令相似,易于掌握
基本被淘汰
6.5 硬布线控制的计算机
6.5.5 硬布线控制与微程序控制的比较(重点)
实现
-
微程序控制器的控制功能是在存放微程序的控制存储器和存放当前正在执行的微指令的寄存器直接控制下实现的。电路比较规整,增加或修改指令容易。
-
硬布线控制则由逻辑门组合实现。电路零乱且复杂,增加与修改指令麻烦或不可能。
-
指令系统复杂的计算机,一般都采用微程序来实现控制功能
性能
-
在同样的半导体工艺条件下,微程序控制的速度比硬布线控制的速度低。
-
在超高速机器中,对影响速度的关键部分往往采用硬布线逻辑。
6.7 流水线工作原理
6.7.1 流水线基本工作原理
顺序执行方式
重叠执行(指令流水线)
运算操作流水线
6.7.2 流水线中的相关问题
流水线阻塞
6.7.3 程序转移对流水线的影响
条件转移:猜测法
中断:不精确断点法、精确断点法
例题
一个4级流水线计算机,没有流水线阻塞情况下,执行4条指令需要多少时钟周期?流水线时空图?
第七章 存储系统
7.1 存储系统的层次结构
cache(SRAM)
主存(DRAM)
辅存(顺序存取存储器和直接存取存储器)
7.2 高速缓冲存储器(cache)
为什么设置cache
避免CPU"空等"现象
CPU和主存(DRAM)的速度差异
7.2.1 cache存储器工作原理(重点,要会算)
•软件访问存储器存在区域性定律(程序局部性原理)
•时间区域性:最近访问的代码是不久将被访问的代码
•空间区域性:那些地址上相邻近的代码可能会被一起访问
数据
数组元素访问 (空间)
结构体、数据库记录访问(空间)
局部变量,计数器,指针等被重复使用 (时间)
指令
顺序访问的指令 (空间)
重复使用的循环体 (时间)
子函数 (时间)
区域性举例
命中与未命中(要知道)
主存和缓存按块(block)存储,块的大小相同块长一般取一个存取周期内从主存调出的信息长度
缓存共有 C 块,主存共有 M 块,M >> C
命中(hit) 主存块 调入 缓存
主存块与缓存块 建立 了对应关系
用 标记记录 与某缓存块建立了对应关系的 主存块号
未命中(miss) 主存块 未调入 缓存
主存块与缓存块 未建立 对应关系
cache的命中率(hit rate)
CPU 欲访问的信息在 Cache 中的 比率
H = Nc / (Nc + Nm )
命中率 与 Cache 的 容量 与 块长 有关一般每块可取 4 ~8 个字
Cache –主存系统的效率
效率 e 与 命中率 有关
e= (访问Cache的时间 / 平均访问时间) ×100%
计算效率例题
cache基本结构
替换要清楚
cache的操作
数据一致性问题
–数据丢失:Cache已更新但主存数据未更新解决
•写回法write back (标志交换(flag-swap)方式):暂时只向cache存储器写入,并用标志加以注明,直到经过修改的字块被从cache中替换出来时才一次写入主存。
•通写式write-through (写直达法):每次写入cache存储器时也同时写入主存,使cache和主存保持一致。
–数据过时:主存数据已更新但Cache未更新解决
•总线监视法、硬件监视法、划出不可高速缓存存储区法、Cache清除法
7.2.2 cache存储器组织结构(重点)
地址映像和地址变换
地址映像
把存放在主存中的信息按照某种规则装入到Cache中,并建立主存地址与Cache地址之间的对应关系。
地址变换
当信息已经装入到Cache之后,在实际运行程序过程中,把主存地址变换成Cache地址。
假定主存储器空间被分为Mm(0),Mm(1),…,Mm(i),…,Mm(2m-1)共2m个块,字块大小为2b个字。
cache存储空间被分为Mc(0),Mc(1),…,Mc(j),…,Mc(2c-1)共2^c个同样大小的块。
(1)直接映像
映象规则:主存中一块只能映象到Cache的一个特定的块中。
映像函数:j=imod 2^c
j为Cache的块号,
i是主存的块号,
2^c是Cache的块数。
整个Cache地址与主存地址的低位部分完全相同。
每个缓存块可以和 若干 个 主存块 对应
每个主存块只能和 一 个 缓存块 对应
•直接映象方式的主要优点:
硬件实现很简单,不需要相联访问存储器。
访问速度也比较快, 实际上不做地址变换。
•直接映象方式的主要缺点:
块的冲突率较高,命中率低,适合大容量cache。
(2)全相联映像
映象规则:
主存中的任意一块都可以映象到Cache中的任意一块。
如果Cache的块数为2c,主存的块数为2m,映象关系共有:2^c × 2^m种。
主存 中的 任一块 可以映射到 缓存 中的 任一块
•全相联映象方式的主要优点:
块冲突概率比较小。
Cache的利用率高,命中率高。
•全相联映象方式的主要缺点:
需要一个相联存储器,其代价很高。相联比较所花费的时间将影响Cache的访问速度。
(3)组相联映像
映象规则:
主存和Cache按同样大小划分成块。
Cache再划分成组。
组之间采用直接映象方式。
组内部采用全相联映象方式。
组相联映象方式的优点:
块的冲突概率比较低;
块的利用率大幅度提高;
块失效率明显降低。
组相联映象方式的缺点:
实现难度和造价要比直接映象方式高。
替换算法
先进先出(FIFO)算法
FIFO算法总是把一组中最先调入cache存储器的字块替换出去,它不需要随时记录各个字块的使用情况,所以实现容易,开销小。
近期最少使用(LRU)算法。
LRU算法是把一组中近期最少使用的字块替换出去。需随时记录cache存储器中各个字块的使用情况。
随机替换法(RAND)
7.3.1 虚拟存储管理
1.主存—辅存层次与cache—主存层次的比较
•主存/cache存储器的访问“时间比”较小;每次传送的基本信息单元(字块)也比较小。而辅存/主存的访问“时间比”就要大得多,每次传送的基本信息单元(段或页面)也很大
•从原理角度看,主存—辅存层次和cache—主存层次有很多相似之处。
地址变换、映像方法、替换策略
7.3.2 虚拟存储器工作的全过程
对虚拟存储器来说,程序员按虚存储空间编制程序,在直接寻址方式下由机器指令的地址码给出地址。这个地址码就是虚地址,可由虚页号及页内地址组成,如下所示:
虚地址 虚页号Nv|页内地址Nr
这个虚地址实际上不是辅存的实地址,而是辅存的逻辑地址。
第十章 输入输出(I/O)系统
外部设备、接口部件、总线以及相应的管理软件统称为计算机的输入/输出系统,简称I/O系统
输入输出接口类型
按数据传送方式
并行接口(设备和接口是将一个字节(或字)的所有位同时传送)
串行接口(设备和接口间的数据是一位一位串行传送的,而接口和主机之间是按字节或字并行传送。接口要完成数据格式的串—并变换)
10.1程序中断传送方式(中断是重点)
中断分类“中断”是由I/O设备或其他非预期的急需处理的事件引起的,它使CPU暂时中断现在正在执行的程序,而转至另一服务程序去处理这些事件,处理完后再返回原程序。
程序中断处理示意图
子程序与中断服务子程序与的区别?
子程序在特定位置显式调用,后者随机调用,现场不同?
如果A,B,C同时产生中断?
中断优先级问题,中断仲裁
如果正在运行A中断服务子程序,又收到B中断?
中断嵌套
指令执行一般流程
取指令、执行指令反复循环
中断的产生和响应
中断源:引起中断的事件,即发出中断请求的来源,称为中断源。
① 中断源的种类
外中断、内中断、软中断
② 中断触发器
中断的分级与中断优先权
所谓优先权是指有多个中断同时发生时,对各个中断响应的优先次序。
把所有中断按不同的类别分为若干级,称为中断级,在同一级中还可以有多个中断源。首先按中断级确定优先次序,然后在同一级内再确定各个中断源的优先权。
禁止中断和中断屏蔽
① 禁止中断
产生中断源后,由于某种条件的存在,CPU不能中止现行程序的执行,称为禁止中断。在CPU内部设有一个“中断允许”触发器。
② 中断屏蔽
当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余部分中断仍得到响应,称为中断屏蔽。
中断处理
过程
(1) 关中断。
(2) 保存断点和现场.
(3) 判别中断源,转向中断服务程序。
(4) 开中断。开中断将允许更高级中断请求得到响应,实现中断嵌套。
(5) 执行中断服务程序。
(6) 退出中断。即关中断,恢复现场、恢复断点,然后开中断,返回原程序执行。
判断中断源
(1) 查询法(软件法) (2)串行排队链法(硬件方法)
多重中断处理
多重中断是指在处理某一个中断过程又发生了新的中断请求,从而中断该服务程序的执行,又转去进行新的中断处理。这种重叠处理中断的现象又称为中断嵌套。
多重中断
10.2 直接存储器存取方式
直接存储器存取(direct memory access,简称DMA)方式的基本思想是在外围设备和主存之间开辟直接的数据传送通路。在正常工作时,所有工作周期均用于执行CPU的程序。当外围设备完成输入或输出数据的准备工作后,占用总线一个工作周期,和主存直接交换数据。这个周期过后,CPU又继续控制总线,执行原程序。
对比
中断方式
传送一个数据执行一次中断服务子程序(几十条指令)
效率低下,不适合于高速传输的系统
DMA方式
外设与主存间建立一个由硬件管理的数据通路(虚拟通路,还是通过系统总线)
CPU不介入外设与主存的数据传送操作
减少CPU开销,提升效率
10.3 DMA输入输出方式(过一遍 要知道)
DMA是I/O设备与主存储器之间由硬件组成的直接数据通路,用于高速I/O设备与主存之间的成组数据传送。
10.3.1 DMA三种工作方式
1.CPU暂停方式
2.CPU周期窃取方式
3.直接访问存储器工作方式
10.3.2 DMA控制器组成
10.3.3 DMA数据传送过程
DMA 的数据传送过程可分为三个阶段:
-
DMA 预处理
-
DMA 控制 I/O 设备与主存之间的数据交换
-
CPU 中断原程序进行后处理
10.4 输入输出系统概述(过一遍 要知道)
I/O通道控制(I/O channel control)方式
“通道”不是一般概念的I/O通路,它是一个专用的名称。通道能独立地执行用通道命令编写的输入输出控制程序,产生相应的控制信号送给由它管辖的设备控制器,继而完成复杂的输入输出过程。
10.4.1 I/O通道的种类
DMA 与通道的重要区别是:DMA 完全借助于硬件完成数据传送,而通道则是通过一组通道命令与硬件一起完成数据传送。
根据多台设备共享通道的不同情况,可将通道分为三类:字节多路通道、选择通道和数组多路通道
10.4.2 通道型I/O处理机(IOP)和外围处理机
输入输出处理机通常称作外围处理机(peripheral processor unit,简称PPU)。这种外围处理机的结构更接近一般处理机,甚至就是一般小型通用计算机或微机。它可完成I/O通道所要完成的I/O控制,还可完成码制变换、格式处理、数据块的检错、纠错等操作。它可具有相应的运算处理部件、缓冲部件,还可形成I/O程序所必需的程序转移手段。