计算机组成原理
计算机组成原理
小游计算机组成原理
概论
计算机的软硬件概念
冯诺依曼计算机的特点
计算机由运算器、存储器、控制器、输入设备和输出设备五部分组成
指令和数据以同等地位存放于存储器内,并可按地址寻访
指令和数据均用二进制数表示
指令由操作码和地址码组成,操作码用来标记操作的性质,地址码用来表示操作数在存储器中的位置
指令在存储器中按顺序存放
机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
计算机各部分的作用
运算器用来完成算术运算和逻辑运算
存储器用来存放数据和程序
控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果
输入设备用来将人们熟悉的信息形式转换为机器能别的信息形式
输出设备可将机器运算结果转换为人们熟悉的信息形式
计算机组成原理名词
CPU 处理器,是计算机硬件的核心部件,主要由运算器和控制器组成
PC 程序计数器 其功能是存放当前预执行指令的地址,并可自动计数形成下一条指令地址。
IR 指令寄存器,其功能是存放当前正在执行的指令。
CU 控制单元(部件),为控制器的核心部件,其功能是产生微操作命令序列。
ALU 算术逻辑运算单元,为运算器的核心部件,其功能是进行算术逻辑运算。
ACC 累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。
MQ 乘商寄存器,乘法运算时存放乘数,除法运算时存放商的计算器。
X 一般代指为操作数,没有什么特殊的含义。
MAR 存储器地址寄存器,在储存中用来存放预访问的存储单元的地址。
MDR 存储器数据缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。
I/O 输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与送达。
MIPS 每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。
CPI 执行一条指令所需的时钟周期(机器主频的倒数)。
FLOPS 浮点运算次数每秒。
计算机的工作步骤
- (图是盗的李慧的)
计算机硬件的主要指标技术
机器字长
更多字长区分:
机器字长(计算机字长):CPU一次运算处理的二进制位数,通常为8位
指令字长:计算机指令字的位数(指令=操作+数据地址,冯诺依曼计算机体系采用的是‘存储程序’根本特征,因此指令在运行时会存储在MDR当中,因此一般来说,指令字长=机器字长)
存储字长:存储器中一个存储单元(存储地址)所存储的二进制的位数,即存储器中的MDR的位数
数据字长:计算机数据存储所占用的位数(指计算机的数据总线一次可以传递的位数,通常大于MDR位数。
存储容量
存储器的容量应该包括主存容量和辅存容量
存储容量=存储单元*存储字长
运算速度
运算速度普遍采用单位时间内执行指令的平均条数来衡量
以MIPS作为计量单位
计算机的运算方法
进制转换
整数
2->8:2的3次方是8,将二进制数以3分组,将分出来的数字转为8进制,组合在一起
2->16:2的4次方是16,将二进制数以4分组,将分出来的数字转换为16进制,组合在一起
小数
- 10->2:
无符号数与有符号数
有符号数的原码、补码、反码(必考)
原码
整数
正数
- 前+‘0’,其他不变
负数
- 前+‘1’,其他不变
小数
正数
- 不变(形式上)
负数
- 小数+1
0的不同形式
整数
+0
- 00000
-0
- 10000
小数
- 0.0000
-
- 1.0000
x的取值范围
整数
小数
补码
整数
正数
- 前+‘0’,与原码相同
负数
- 数值位按位取反,最后+1
小数
正数
- 与原码相同,形式上不变
负数
- 小数部分按位取反,最后一位+1,将整数位置为1
0的不同形式
- 0的补码只有一种,是正数
- 0000
- 0的补码只有一种,是正数
x的取值范围
整数
小数
反码
正数=原码
负数相当于没有+1的补码
0的不同形式
x=0000
- 00000
x=-0000
- 11111
X的取值范围
- 与原码相同
移码
移码通常用于表示浮点数的阶码
特点
移码无符号位
移码只能表示整数
最高位为0表示负数,最高位为1表示正数,这与原码、补码、反码的符号位取值正好相反。
移码为全0时所对应的真值最小,为全1时所对应的真值最大! 因此,移码的大小直观地反映了真值的大小,这将有助于两个浮点数进行阶码大小比较。
移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小。
变化方法
正数
- 在数前+1,并用逗号隔开
负数
- 按位取反,在前边+0
简易做法
其实移码就是在真值上加一个常数2的n次方
在补码的基础上把符号取反
0的表示方法
- 真值0在移码中的表示形式是唯一的,即:[+0]移= [0]移= 100…00
X的取值范围
数的定点表示和浮点表示
定点表示
定义:小数点固定在某一位置的数为定点数
当为整数时,小数点在最后边;当为小数时,小数点在符号位后边
浮点表示
把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定的范围内可以自由浮动。
浮点数的表示范围
上溢
- 当浮点数阶码大于最大阶码时,称为上溢,此时机器停止运算,进行中断溢出处理
下溢
- 当浮点数阶码小于最小阶码时,称为下溢,此时溢出的数绝对值很小,通常将尾数强置为零,按机器零处理,此时机器可以继续运行
定点数与浮点数的比较
注意
无零的浮点值(机器零:0.1*2-15,最小十六位)
机器零:当一个浮点数尾数为零时,不论其阶码为何值;或者阶码小于它所能表示的最小数时,不管其尾数为何值,机器都该把浮点数作为零看待,并称之为“机器零”。
0的取值范围:
IEEE 754标准
它表示浮点数的正负,但与其有效位(尾数)是分开的。 阶码用移码表示,阶码的真值都被加上一个常数(偏移量)
定点运算
移位运算
移位和加法结合可以实现乘除运算;对于有符号数,移位称作算术移位;对于无符号数称之为逻辑移位
小数点向前移动(向高位移动)称之为右移,小数点向后移动(向低位移动)称之为左移。是左移还是右移,看的不是小数点的移动方向,而是整个数的移动方向
算术移位
- 对于正数,原码、补码和反码和真值是一样的,故移位后出现的空位均以 0 添补;而负数则根据采用的表示形式有不同的添补规则,如下:
逻辑移位
- 逻辑移位将操作数视为无符号数,规则是:无论左移右移,逻辑移位统一补零
两个移位的区别
加法与减法运算
基本公式
溢出判断(三种方法)
用一位符号位判断溢出
用两位符号位判断溢出
用符号位和进位位判断
乘法运算
原码乘法
原码一位乘
原码两位乘
补码乘法
补码一位乘(Booth算法)
补码两位乘
除法运算
恢复余数法
加减交替法(不恢复余数法)
带符号位除法
浮点四则运算(步骤必考)
步骤
\1. 对阶,使两数的小数点位置对齐(小阶向大阶对齐)
2.尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)。
3.规格化,为增加有效数字的位数,提高运算精度,必须将求和(差)后的尾数规格化。
左规
当尾数出现00.0….或11.1…..时,需左规。左规时尾数左移一位,阶码减1,直到符合标准。
11.1或00.0不用规格化,因为是0
右规
- 当尾数出现01.XXXXX或10.XXXXX时,表示尾数溢出,要右规
4.舍入
0舍1入法
- 右移时被丢掉的最高位是0则直接舍去(包括0之后的);如果是1则舍去并在最低有效位上加1
恒置1法
- 只要数位被丢掉,一律在最低有效位上加1
5.溢出判断,判断结果是否溢出
ALU电路
- 这里不知道考啥
存储器
概述
定义:存储器是计算机系统中的记忆设备,用来存放程序和数据
作用:
I/O设备要与存储器交换信息
多处理机系统中,各处理机都要与主存交换信息,而且各处理机在相互通信中,也都需要共享存放在存储器中的数据
分类
存储器的层次结构
存储器有3个性能指标:速度、容量、每位价格
速度越高,位价越高
容量越大,位价越低
容量越大,速度越低
三者之间的关系
各部件主要作用
寄存器:制作在CPU中,其中数直接在CPU内部参与运算
高速缓存cache:也制作在CPU中,速度快于内(主)存,容量小于内(主)存
内存:存放将要参与运行的程序和数据,可以直接和CPU交换信息
辅助存储器:用来存放暂时未用到的程序和数据文件,CPU不能直接访问辅存,辅存只能与主存交换信息
存储系统的层次结构体现在:缓存-主存 、 主存-辅存
缓存-主存层次:主要解决CPU和主存速度不匹配的问题
缓存的速度比主存的速度高,只要将CPU近期需要的数据调入缓存,
然后CPU在从缓存中取走数据,提高CPU的访存速度。
但是缓存容量小,需要不断从主存中调入数据,使原来的信息被替换掉,这些都是由硬件自动完成。
主存-辅存层次:主要解决存储系统的容量问题
辅存的速度低,不能和CPU直接交换信息,但它的容量大,存放了许多暂时用不到的信息。
当CPU需要的时候,将这些内容调入主存,供CPU直接访问,这两者之间的数据调动也是有硬件直接完成
主存储器
主存的基本结构
主存的基本组成
主存和CPU的联系
存储单元地址的分配
计算机系统既可以按字寻址,也可以按字节寻址
按字节寻址:以32为计算机为例,有4个可独立寻址的字节(不同计算机还有大小端的区别)
按字寻址:用该字节(高位/低位)字节的地址来表示(这里主要是因为大小端的原因)
主存的技术指标
存储容量
定义
- 指主存能存放二进制代码的总位数
计算方法
存储容量 = 存储单元个数*存储字长
存储字节总数 = 存储单元个数*存储字长/8
存储速度
表示
存取时间
定义
存储器的访问时间(指启动一次存储器操作到完成该操作的全部时间)
分类
读出时间
- 从储存器接受到有效地址开始,到产生有效输出所需的时间
写入时间
- 从存储器接收到有效地址开始,到数据写入被选中单元位置所需的时间
存取周期
- 存储器进行连续两次独立的存储器操作所需的最小时间间隔
存储器带宽
定义
- 单位时间内存储器存取的信息量
单位
字/秒
位/秒
字节/秒
提高带宽的方式
缩短存取周期
增加存储字长
增加存储体
半导体存储芯片简介
半导体存储芯片的基本结构
半导体存储芯片的译码驱动方式
随机存储器RAM
静态RAM
静态RAM的基本电路
静态RAM芯片举例
静态RAM读/写时序
读周期时序
写周期时序
动态RAM
动态RAM的基本电路
动态RAM芯片举例
三管动态RAM芯片
单管动态RAM芯片
动态RAM时序
读时序
写时序
动态RAM的刷新
动态刷新的三种方式
集中刷新
- 在一个周期的最后进行集中刷新,存取周期(0.5us)
分散刷新
- 指对每行存储单元的刷新分散到每个存储周期内完成。不存在停止读写操作的死时间,但存取周期长了,整个系统速度慢了,存取周期(1us)
异步刷新
- 每隔15.6微秒刷新一行,一个周期正好全部刷新一次。存取周期(0.5us)
刷新是以行为单位,刷新就是读操作
动态RAM与静态RAM的比较
目前,动态RAM的应用比静态RAM要广泛得多。其原因如下:
在同样大小的芯片中,动态RAM的集成度远高于静态RAM,如动态RAM的基本单元电路为一个MOS管,静态RAM的基本单元电路可为4~6个MOS管。
动态RAM行、列地址按先后顺序输送,减少了芯片引脚,封装尺寸也减少。
动态RAM的功耗比静态RAM小。
动态RAM的价格比静态RAM的价格便宜。当采用同一档次的实现技术时,动态RAM的容量大约是静态RAM容量的4
8倍,静态RAM的存取周期比动态RAM的存取周期快816倍,但价格也贵8~16倍。
只读存储器
是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。
1.掩模ROM
2.PROM
实现一次性编程
熔丝的断和未断可区别其所存信息是0或1
3.EPROM
- 是一种可擦除可编程的只读存储器
存储器与CPU的连接(考大题)
存储容量的扩展
位扩展(后边的增加)
字扩展(前边的增加)
字、位扩展
存储器的校验
奇偶校验
纵横奇偶校验
汉明码的组成
提高访存速度的措施
单体多字系统
多体并行系统
高速缓冲存储器(考大题)
Cache—主存地址映射
直接映射
全相联映射
组相联映射
练习题
指令系统
指令格式
指令的一般格式
指令长度
指令字长度:一个指令字中包含二进制代码的位数。
机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。(64位操作系统、32位操作系统)。
单字长指令:指令字长等于机器字长度的指令。
半字长指令:指令字长等于半个机器字长度的指令。
双字长指令:指令字长等于两个机器字长度的指令。
多字长指令:指令字长等于几个机器字长度的指令。
使用多字长指令,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题。其主要缺点是必须两次或多次访问内存才能取出一整条指令,降低了的运算速度,又占用了更多的存储空间。
操作码
指令的操作码 OP 表示该指令应进行什么性质的操作。不同的指令用操作码字段的不同编码来表示,每一种编码代表一 种指令。CPU中的专门电路用来解释每个操作码,因此机器就能执行操作码所表示的操作。
按操作码的位数是否固定可分为:
固定长度的操作码:所有指令长度均相同。特点是控制简单,速度快,适用于指令条数不多的场合。
可变长度的操作码:
频繁使用的指令用位数较少的操作码,不常使用的指令可利用操作码扩展技术进行扩展。
好处:
可添加更多操作
速度慢,逐个断位分析是否是操作
可缩短平均指令的长度
精简指令集一般使用固定长度的操作码,复杂指令集一般使用可变长度的操作码。
地址码
地址码其实还是地址,CPU 访问存储器获取地址,实质上是由程序员设计的指令集给出的。
根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。三地址指令是最早的计算机指令,然后又发展成二地址指令、一地址指令、零地址指令。
指令和数据的寻址方式
指令寻址
顺序寻址
- 按顺序进行
跳跃寻址
- 当程序执行循环指令或者转移指令时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址不是由程序计数器PC加1产生,而是将本条指令给出的目标地址装入PC作为下条指令的地址。
数据寻址(必考)
1.立即寻址
2.直接寻址
- EA=A
3.隐含寻址
- 指指令字中不明显地给出操作数的地址,其操作数的地址隐含在操作码或某个寄存器中
4.间接寻址(速度最慢)
EA = (A)
优点:可以缩短A,扩大寻址范围
- eg:01代替32位地址
5.寄存器寻址(速度最快)
- EA = Ri(i是下标)
6.寄存器间接寻址
- ER = (Ri)
7.基址寻址
其操作数的有效地址EA等于指令字中形式地址与基址寄存器中的内容(基地址)相加
EA = A + (BR)
8.变址寻址(数组多用)
- EA = A+(IX)
9.相对寻址(关键词:浮动,对于编写浮动程序特别有利)
- EA = (PC) + A
10.堆栈寻址 (段式寻址)
指令格式设计(考大题)
- 例题
CPU的结构和功能
CPU的组成
CPU即中央处理器,早期由运算器和控制器两大部分组成,随着科技的发展,现在的CPU基本由运算器、cache、控制器三大部分组成
运算器的功能
实现算数运算和逻辑运算
取指令
分析指令
执行指令
控制程序输入及结果输出
总线管理
处理异常情况和特殊请求
CPU的主要功能
综合控制器和运算器的功能,我们可以得出CPU的主要功能有
指令控制(PC和IR实现)
操作控制(CU和时序电路实现)
时间控制(ALU和寄存器实现)
数据加工(中断系统实现)
CPU结构框图
ALU:算数逻辑单元
CU:控制单元
控制总线:双向,CPU向外对各个组件发出命令,各设备向内对CPU提出请求
数据总线:双向,CPU向外部设备或者存储器写入数据,CPU从外存或者内部数据读入数据
地址总线:单向,均由CPU发出
指令周期
基本概念
指令周期
- 取出并执行一条指令所需的全部时间
每条指令的周期不同
- 由于各指令的功能不同,他们的周期也是不尽相同的。
取指周期:把指令地址从内存中取出
- 每个指令周期的取值周期基本都是固定的,因为这是相同的步骤
间址周期:把操作数地址从内存中取出
执行周期:把操作数从内存中取出
指令周期流程
PC->MAR
read
MDR->IR
PC+1->PC
控制器设计(这里所有的内容都考)
控制器类别
组合原理控制器
- 特点:速度快,通过电路门实现
微程 序控制器
特点:灵活
通过控存实现
控存里边存放的是微指令
微指令:操作控制+顺序控制
- 1100 0000 001(指令控制信号+下一条指令的位置)
微指令堆砌起来实现微程序,微程序的堆砌形成指令
流程(大题):
指令流程
控制信号
为信号设置时序
写出每个信号的逻辑表达式
化简
连线
微操作整理(辅助上边的大题写指令)
- 取数指令MAR->R1改为MDR