计算机组成原理基础知识点
1. 概论
1.1 计算机系统
1.2 冯~诺依曼计算机的特点
- 计算机由五大部件组成:存储器,运算器,控制器,输入设备,输出设备。
- 指令和数据以同等地位存于存储器,可按地址顺序访问。
- 指令和数据用二进制表示。
- 指令由操作码和地址码组成。
- 存储程序,程序在计算机中顺序存放。
- 以运算器为中心。
1.3 计算机硬件的主要技术指标
1. 机器字长:CPU一次可以处理数据的二进制位数
2. 存储容量:包含主存容量与辅存容量
主存容量:主存中存放的二进制代码的总位数
存储容量=存储单元个数 * 存储字长
辅存容量:通常用字节表示。
3. 运算速度
2. 系统总线
2.1 总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
按照位置不同,算机的总线可以划分为片内总线、系统总线、通信总线。
2.1.1 片内总线
指芯片内部的总线,如在CPU芯片内部,寄存器和寄存器之间,寄存器和算术逻辑单元ALU之间都由片内总线连接。
2.1.2 系统总线
指CPU、主存、I/O设备各大部件之间的信息传输,又可以划分为数据总线、地址总线、控制总线,分别用来传输数据、数据地址和控制信号。
2.1.3 数据总线(DB)
传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器字长、存储字长有关。
2.1.4 地址总线(AB)
用来指出数据总线上源数据或目的数据在主存单元的地址或I/O设备的地址,与存储单元个数有关。
2.1.5 控制总线(CB)
用来控制各部件在数据总线和地址总线上的操作。 用来发出各种控制信号的传输线。控制总线可以是单向的,也可以是双向的。
2.1.6 通信总线
用于计算机系统之间或计算机系统与其他系统之间的铜线。
按传输方式可以分为两种:串行通信和并行通信。
2.1.7 串行通信
串行通信指数据在单条1位宽的传输线上,一位一位的按顺序分时发送。
1字节的信息在串行通信中要分8次从地位到高位按顺序逐次传送。
2.1.8 并行通信
并行通信指数据在多条1位宽的传输线上,同时由源传送到目的地。
并行通信适用于近距离的数据传输,串行通信适用于远距离。 数据传输速率与距离成反比。
2.2 总线特性
2.3 总线的性能指标
2.4 总线判优
2.5 总线传输周期
- 申请分配阶段:主设备申请,总线仲裁(总线判优逻辑)
- 寻址阶段:主设备将地址、命令发送给从设备
- 传数阶段:交换数据
- 结束阶段:主模块撤销消息
2.6 总线通信的四种方式
同步通信:由统一时标 控制数据传送;
异步通信:采用 应答方式,没有公共时钟标准; 不互锁 半互锁 全互锁;
半同步通信: 同步 、 异步结合;
分离式通信: 充分挖掘系统总线每个瞬间的潜力; 充分提高了总线的有效占用;
3. 存储器
3.1 存储器概论
3.3.1 按照存储介质分类
(1)半导体存储器:体积小,功耗低,存取时间短(易失性)。 TTL(高速)、MOS(高集成度)。
(2)磁表面存储器: 磁盘、磁带、磁鼓(非易失性)。
(3)磁芯存储器:(目前几乎已不被采用)硬磁材料、环状元件。(不易失,永久记忆存储器,体积大,工艺复杂,大功耗)
(4)光盘存储器 激光、磁光材料(非易失)。
其中,半导体存储器为易失性存储器或称随机存取存储器。磁表面存储器、磁芯存储器、光盘存储器为非易失性存储器。
易失性存储器:RAM。可作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。当电源关闭时不能保留数据,数据容易丢失。
3.3.2 按存取方式分类
(1)顺序访问:存取时间与物理地址无关
随机存储器RAM:可读可写,掉电丢失,用于构建主存。 分为SRAM,DRAM。SRAM:(以触发器原理寄存信息)适合做主存。
DRAM:(以电容充放电原理寄存信息)适合做缓存。
项目 DRAM(主存) SRAM(缓存) 存储原理 电容 触发器 集成度 高(一个晶体管一个电熔) 低(六个晶体管) 芯片引脚 少 多(高速度) 功耗 少(刷新用电) 高 价格 低 高 速度 慢(主要有读写与充电) 快 刷新 有 无
只读存储器ROM:只读。这种寄存器通常用来存放固定不变的程序、常数或者用于操作系统的固化,它与随机存储器可以共同作为主存的一部分,构成主存的地址域。
(2)串行访问:存取时间与物理地址有关
这种存储器由于信息所在位置不同,使得读写时间不同
顺序存取存储器:如磁带存储器,不论信息处于什么位置,读写时都从介质的始端顺序查找。
直接存取存储器:如磁盘存储器,首先指出存储器的磁道,然后再按照顺序寻找数据。
3.3.3 在计算机中的应用分类
3.3.4 主存的结构
3.3.5 缓存—主存—缓存三级存储系统
3.3.6 主存的技术指标
- 存储容量:主存中存放的二进制代码的总位数,存储单元总数、存储空间的大小、字数、字节数。
- 存储速度:由存取时间和存取周期表示。
- 存取时间:从存储器给出地址一直到得到稳定的数据输入(输出)——存储器的访问时间(读出时间、写入时间)。
- 存取周期:连续两次独立的存储器操作(读或写)所需的最小间隔时间。
- 存储器带宽:单位时间里存储器所存取的信息量,数据传输速率技术指标。
3.2 半导体存储芯片
3.2.1 基本结构
地址线:反映芯片字节数量(10根地址线芯片的字节数位2^10/1024K)
数据线:反映芯片单个字节的位数(4根数据线代表一个字节4位)
片选线:反映是否选择当前的芯片
读写控制线:表示当前数据的读与写
地址线(单向) 数据线(双向) 芯片容量 3 4 2^3*4位
3.2.2 半导体存储芯片的译码驱动方式
主要是用于:地址总线给出了地址后如何在内存中找到存储单元。方法 线选法,重合法
1.线选法特点:一根字选线对应一根存储单元
工作原理: 这里有 4根地址线 A1,A2,A3,A4,这四根地址线可以表示 16 个存储单元,在内存中对应了16根字线,可以看到是 0~15,选中0000这个存储单元,其余 15根不选中。用下面的8根位线直接为单元内每一位传输数据缺点: 适合存储容量不大的芯片。
2.重合法
特点: 将线选法中单一的地址译码器分成了行地址译码器和列地址译码器,行和列的交汇处共同锁定一个单元。
工作原理: 加入选中行地址译码器为 00000,这时0行一整行都被选中。然后让列地址译码器为00000,那么就可以确定是0行0列的这个单元
适用性: 更适合存储大的内存芯片
3.2.3 SRAM
组成:
读操作:
写操作:
读写总结:
3.2.4 DRAM
组成:
破坏性读出:靠电容存储电荷的原理来寄存信息,若电容上有足够多的电荷表示存“1”,电容上五点和表示存“0”。
3.2.5 DRAM刷新原理
1. 动态RAM共有三种刷新方式:集中刷新,分散刷新,异步刷新
2. 刷新的实质:先将原信息读出,再由刷新放大器形成原信息重新写入的再生成的过程。刷新是一行行进行的,必须在刷新周期内3. 为什么要进行刷新:存储单元被访问是随机的,有些存储单元可能长时间的不被访问,不4. 进行存储器的读写操作,其存储单元内的原信息就可能会丢失。
5. 刷新周期:对DRAM的所有存储单元恢复一次原状态的时间间隔
6. 刷新间隔:两次刷新的起始时间差(某行从第一次刷新到第二次刷新的等待时间)
7. 行刷新间隔:两行刷新的起始时间差
8. 刷新时间:规定的一个周期内刷新的总时间
集中刷新:在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新。
优点:速度高。
缺点:存在死区,死时间长。
分散刷新:是指对每行存储单元的刷新分散到每个存储周期内完成。
优点:无死区。
缺点:存取周期长,整个系统的速度降低了。
异步刷新:前两种方式的结合,缩短了死时间,充分利用了最大刷新间隔为2ms的特点。
3.3 存储器容量的扩展
3.3.1 位扩展
3.3.2 字扩展
3.3.3 位扩展与字扩展小结
3.3.4 字,位扩展
3.4 存储器与CPU的连接
对于 存储器与CPU的连接 我们一般需要考虑以下问题:
- 存储芯片的选择
- 地址线的连接
- 数据线的连接
- 片选线的连接
- 读写线的连接
以下面例题位例进行讲解:
对于第一问,想要确定容量我们有两种方式可以进行计算。
1. 终值-初值+1:
6000H-67FFH的范围为(67FF-6000+1)=800
对于十六进制数据进行二进制转换:(800)==> (1000 0000 0000) ==> 2^11 = 2K
2.终值-初值:(数有多少个连1)
6000H-67FFH的范围(67FF-6000)=7FF
对于十六进制数据进行二进制转换:(7FF)==> (0111 1111 1111) ==> 2K
对于第二问我们只要记住:
就可以了,画图也就非常简单啦。
画图可以参考上面的字扩展与位扩展的连线图。
3.5 Cache
3.5.1 为什么引入Cache?
3.5.2 Cache 的读写
3.5.3 Cache的效率
3.5.4 Cache的基本结构
3.5.5 Cache--Memory地址映射
直接映射
i = j mod c
例题:主存512KB,Cache4KB,1字块=16字,1字=32位=4B。
地址总长:
512KB = 2^19B ==> 主存的地址位数 = 19
主存字块标记:
主存字块标记位数 = 主存地址位数 - cache字块地址位数-字块内地址位数
主存字块标记位数 = 19 - 6 - 6 = 7
cache字块地址:
4KB /(4B * 16) = 64 = 2^6
cache字块地址位数 = 6
字块内地址: 所以1字块=2^4 * 2^2 =2*6b ==> 字块内地址=6
主存字块标记 Cache字块地址 字块内地址
全相联映射
计算方法同上面的直接映射,只是主存字块标记 = 主存字块标记 + Cache字块地址
主存字块标记 字块内地址
组相联映射
主存字块标记 组地址 字块内地址
4. 运算器
4.1 数的表示
4.1.1 数的表示方法
现在以+5 和 -5 为例,以5个机器字长,第一位为符号位。
要着重了解他们之间的相互转换。
数值 +5 -5 二进制 +101 -101 真值 + 0101 - 0101 原码 0 0101 1 0101 反码 0 0101 1 1010 补码 0 0101 1 1011 移码 1 0101 0 0100
其中有一点要牢记: 补码对于0的表示方法是唯一的
对于小数有定点小数与浮点数。对于定点小数我们分为纯小数与纯整数两种类型,
纯小数类型,小数点在最前方,小数点前面的一位为符号位,确定数的正负。
例如-0.1011就是1.1011,+0.1011就是0.1011。
对于纯整数,小数点则在数的后面,我们也就不用写了。
对于浮点数类型,我们可以参考科学计数法。
N = S * r^j
j的大小确定了数的大小范围,S的大小确定数的精度。
4.1.2 数的表示范围
机器字长为n位,其中有一位符号位,则表示数的位数有n-1位。(下面的范围是非常重要的)
原码: -( 2 ^ (n-1) - 1) ~ +2 ^ (n-1) - 1
补码: - 2 ^ (n-1) ~ +2 ^ (n-1) - 1
4.1.3 补码的加减运算
补码的加法:
1)符号位参与运算
2)补码相加,结果仍然是补码
具体情况看下面例题:
数 转换 补码 结果 +3 0 1101 0 0011 +2 0 1110 0 0010 -3 1 0011 1 1101 -2 1 0010 1 1110 (3+2)补 3补 + 2补 0 1101 + 0 1110 0 0101 (3-2)补 3补+(-2)补 0 1101 +1 0010 0 0001 (-3+2)补 -3)补+2补 1 0011 + 0 1110 1 0001 (-3-2)bu -3)补+(-2) 补 1 0011 +1 0010 10101
补码的减法转换成加法就可以了。
其余同加法一样即可。
其中要区分好补码与变补
4.1.4 判溢出
4.1.5 移位运算
移位运算包括算术移位与逻辑移位,对于移位运算
4.2 原码一位乘法
对于原码一位乘法,以下面这个例题为例。
首先我们先要确定A,B,C的值,对于A,B我们因为要进行加减运算所以给与双符号位,具体看下面
确定好A,B,C的之后,运算过程一定要有步数,条件,操作,A,C。条件以C的最后一位来看,
当Cn为1时,对A进行+B操作,
当Cn为0时,对A进行加0操作,
然后统一进行右移操作,在最前面进行补0,直到C没有小数。
4.3 补码一位乘法
对于补码一位乘法我们以下的题为例,基本步骤同原码一位乘法,第一步我们依旧首先确定A,B,C的值,相对于前面不同的就是我们要求一个-B。
接下来的步骤和前面一样,只是判定的条件由Cn变为了C(n+1)-Cn。
当C(n+1)-Cn为1时,对A进行+B操作,
当C(n+1)-Cn为0时,对A进行加0操作,
当C(n+1)-Cn为-1时,对A进行加-B操作,
之后对于A,C进行右移操作,在最前面要补一位数。
当执行操作为+B时补1,否则补0;
4.4 原码恢复余数除法
首先我们以定点小数为例,对于这个进行除法运算。
接下来我们看看原码恢复余数除法,首先我们记住下面的规则。
以下面这个例题来演示一下我们的原码恢复余数除法
4.5 原码不恢复余数除法
我们依旧以上面的这道题为例来了解一下原码不恢复余数除法。
接下来我们开始做题
对此我们小结一下
4.6 浮点数的四则运算
对于浮点数的四则运算我们要牢记五个步骤,
对阶:使两数阶码相等,小阶向大阶对齐。
尾数求和:求和即可
规格化:
舍入
判溢出
4.7 汉明码
5. 指令系统
5.1 指令
指令(又称机器指令):
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
5.1.1 指令的一般格式:
5.1.2 指令的分类
5.2 寻址方式
5.2.1 指令寻址
1.顺序寻址
由于指令在内存中是顺序存放,当执行一段程序时,通常是一条指令接一条指令的顺序执行。为了能够指示下一条欲执行指令的指令地址,CPU内部有一个程序计数器 PC (指令指针寄存器IP),每执行一条指令其值自动加1,指向下一条欲执行指令的指令地址。这种程序顺序执行的过程我们称为指令的顺序寻址。PC 就是用来做指令追踪
2.跳跃寻址
当程序执行循环指令或者转移指令时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址不是由程序计数器PC加1产生,而是将本条指令给出的目标地址装入PC作为下条指令的地址。
5.2.2 操作数寻址
操作码(op) | 地址码(x) |
形式地址是指令字中的地址,有效地址是操作数的内存地址。寻址过程就是通过寻址特征位把操作数的形式地址,变换为有效地址的过程。
主要分类:
1.立即寻址 (操作数=D)
操作数就是形式地址。不访存,快。
2.直接寻址(EA=A)
指令格式的形式地址 A 中直接指出操作数的有效地址EA。
3.间接寻址(EA=(A))
指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址。多次访存,慢。
4.隐含寻址
指令字中不明显地给出操作数的地址,其操作数的地址隐含在操作码或某个寄存器中。
5.寄存器寻址(EA=Ri)
地址码字段直接指出了寄存器编号,其操作数在寄存器内。
6.寄存器间接寻址(EA=(Ri))
寄存器中的内容不是操作数,而是操作数所在主存单元的地址号
7.基址寻址(EA=(BR)+A)
BR内容不变 ,A变
8.变址寻址(EA=(IX)+A)
A变,IX内容不变。
9.相对寻址(EA=PC+A)
10.堆栈寻址(了解即可)
6. 控制器
6.1 结构与功能
1.结构:
1)运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据。
2)输入设备和输出设备通过接口电路与总线相连。
3)内存储器、输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传输数据。
4)控制器部件从数据总线接收指令信息,从运算器部件接收转移指令地址,送出指令地址到地址总线,并向其他部件提供运行所需的控制信号。
2.功能:
1)从主存中取出指令
和指出下一条指令的地址
。
2)进行指令译码、测试
,产生对应的控制信号
。
3)指挥并控制 CPU、主存、I/O之间的数据流
。
6.2 周期
6.2.1 时钟周期
用时钟信号控制节拍发生器
产生宽度为一个时钟周期的节拍。
6.2.2 机器周期
通常以存取周期作为基准时间
,即内存中读取一个指令字的最短时间作为机器周期。
6.2.3 指令周期
一条指令从主存取出到执行完成的时间。
6.2.4 取指周期
6.2.5 间址周期
6.2.6 执行周期
6.3 CPU控制方式
6.3.1 同步控制
指系统有一个统一的时钟,所有控制信号均来自这个统一的时钟信号;通常以最长的微操作序列和最繁琐的微操作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行不同指令。优点是电路简单,缺点是速度慢。
6.3.2 异步控制
指不存在基准时标信号,各部件按自身固有的速度工作,通过应答方式联络;优点是运行速度快,缺点是控制电路复杂。
6.3.3 联合控制
是同步控制、异步控制的折中,对不同指令的微操作实行大部分采用同步控制、小部分采用异步控制的方法。
6.4 微程序
将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令
。
6.4.1 微命令和微操作
一条机器指令可分解为一个微操作序列,而微操作是计算机中最基本、不可再分的操作。
在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令称为微命令。
微命令的相容性:指那些可以同时产生、共同完成某一些微操作的命令。
微命令的互斥性:指在机器中不允许同时出现的微命令。
微命令的相容与互斥是相对的,不是绝对的。
6.4.2 微指令与微周期
微指令:若干微命令的集合,存放微指令的控制存储器的单元地址称为微地址;一条微指令包括:操作控制字段(操作码字段),用于产生某一步操作所需的各种操作信号;顺序控制字段(微地址码字段),用于控制产生下一条要执行的微指令地址。
微周期:指从控制存储器中读取一条微指令并执行相应微操作所需的时间。
6.4.3 主存储器与控制存储器
主存储器用于存放程序和数据,位于 CPU 外部,用 RAM 实现;控制存储器(CM)用于存放微程序,在 CPU 内部,用 ROM 实现。
6.4.4 程序与微程序
程序是指令的有序集合,用于完成特定的功能;微程序是微指令的有序集合,一条指令的功能由一段微程实现。微程序用于描述机器指令,是机器指令的实时解释器,由计算机设计者事先编制好并存放在控制存储器中,一般不提供给用户;程序由机器指令组成,由软件设计人员事先编制好并存放在主存或辅存中。