导图社区 计算机组成原理
王道计算机组成原理所有知识点的思维导图,包括计算机系统概述、数据的表示和运算、存储系统、指令系统、中央处理器、总线,欢迎收藏和使用。
编辑于2022-11-04 17:18:57 贵州计算机组成原理
计算机系统概述
计算机发展历程
冯洛依曼计算机体系结构
五大功能部件的功能
输入设备
将程序和数据以机器能够识别和接受的信息形式输入计算机
输出设备
将处理结果输出(人们能接受或者看得懂)
运算器
对数据进行算术逻辑运算
控制器
控制各个单元
存储器
存储程序和数据
为啥早期以运算器为中心后期以存储器为中心
早起存储器小而且输入输出能跟上运算出的结果后面cpu太快了,来不及输出就已经把所有内容算出来了,因此要把内容先存在存储器里
计算机系统层次结构
微程序机器层
传统机器语言层
机器只能运行机器语言
操作系统层
汇编语言层
汇编程序
高级语言层
编译程序
高级语言(c c++)往低级
计算机的性能指标
字长
都是字节的整数倍
机器字长
一次整数运算所能处理的二进制数据的位数
指令字长
一条指令的位数
存储字长
一个存储单元存储的二进制代码的位数
数据通路带宽
数据通路并行传送数据的位数并行
主存容量
运算速度
吞吐量
单位时间内处理请求的数量
响应时间
一个请求完成的时间
主频
时钟周期的倒数
时钟周期
cpu最小的时间单位
CPI(Clock cycle per instruction)
每条指令花费的时钟周期
MIPS
MFLOPS
GFLOPS
TFLOPS
数据的表示和运算
定点数的表示运算
原码反码补码移码的关系
原码反码补码正数是一样的
原码取反加一是补码
补码符号位取反是移码
原码取反是反码
补码取负是数值位取反加一,符号位取反
负数补码从低位(左边)开始找到第一个1时,1左边的各位均与反码相同,右边各位均与源码相同
-0.0110
补码
1.1010000
原码
1.0110000
反码
1.1001111
各种定点数的性质
原码
8位原码的取值范围
小数:1.1111111到0.1111111整数:-127到127
有正0和负0
10000000(八位的负零)00000000(八位の正零)
补码
8位补码的取值范围
小数:-1到0.1111111整数:-128到127
零是唯一的,只有00000000
反码
8位反码的取值范围
小数:1.1111111到0.1111111整数:-127到127
有正0和负零
11111111(负零)00000000(正零)
移码
零的表示唯一:10000000
只能表示整数
移码大数值就大,移码小数值就小
8位反码的取值范围
0(00000000)到255(11111111)但是,实际上表示-128到127
运算
移位运算
算术移位
正数
三种都一样,都是符号位不变,补0
负数
原码
补0
补码
左移添0
右移添1
反码
补1
逻辑移位
无符号数移位
添0
循环移位
1⃣不管循环带不带进位,进位都是存在的,只是看进位是否加入循环而已2⃣适合将数据低字节和高字节互换
带进位的循环移位
不带进位的循环移位
加减运算
原码
加法
步骤:先判符号位,相同则绝对值相加:不同则看绝对值谁大谁小,谁的大,符号位就用谁的,用绝对值大的减去绝对值小的数
减法
先将后面那个数符号取反,然后将取反后的数和前面那个数相加
补码
相加
补码直接相加
相减
后面那个数进行补码取负(符号位取反,数值位取反加一),之后和前面那个数相加相加
符号扩招
正数
三种都一样
0010(原码反码补码)变成8位:00000010
负数
反码
添加1
1101变成8位:11111101
原码
添加0
1010变成8位:10000010
补码
整数
添加1
小数
添加0
溢出的判断
概念
上溢
超过了机器所能表示的最大正数
下溢
小于机器所能表示的最小负数
补码定点数溢出判断
一位符号位
进行实际加减后,看看会不会出现:参加操作的两个数符号相同,结果却与原操作数不同的情况
双符号位
模4补码
倘若符号位不同,溢出;相同,不溢出。
最高位代表真正的符号位
进位判断法
通过计算,得到有效位和符号位的进位(没有进位就是0),对进位进行异或运算(相同就是0,不相同就是1)
浮点数的表示与运算
浮点数
例子:0.111×2²² 0.111是尾数,2是阶码的底,22是阶码还有数符和阶符,在这里都是0
规格化数
1/2≤|尾数|≤1
左规
尾数算术右移一位(可能需要进行多次,与其相比,右规只需进行一次)
右规
算术右移一位(如果是双符号位,就是符号位01或10或者单符号位或者进位法),尾数溢出的情况下
原码规格化后
看小数点后第一位是否为1为1✔不是1✘
正数
0.100到0.111
负数
1.111到1.100
补码规格化
看符号位和最高位是否相反相反✔不相反✘
正数
0.100到0.111(和原码相同)
负数
-1.000到1.011(没有-1/2的原因是-1/2表示为1.100,不符合1.0xx的补码规格化情况)-1是1.000是符合的
IEEE754标准
特殊在尾数采取隐藏位策略
短浮点数
数符1
阶码8
移码
来自于补码符号位取反
虽然移码的数是1-254但是实际表示-127-126全一无穷大,全零非规格
尾数23
原码
偏置值127=2⁷-1
总位数32
长浮点数
数符1
阶码11
尾数52
偏置值2¹⁰-1=1023=1024-1
总位数64
临时浮点数
数符1
阶码15
尾数80
偏置值2¹⁴-1=16383
总位数80
加减运算
对阶
小阶向大阶看齐
尾数求和
定点数加减法
规格化
小于规格化数的绝对值
左规让尾数的绝对值变大
上溢或下溢时
右规让尾数的绝对值变小
舍入
0舍1入
恒置1法
溢出判断
尾数溢出不代表浮点数溢出
中断
上溢01
机器零
下溢10
类型转换
没有损失的转换
char➡int➡long➡double
float➡double
特殊情况
char为阿斯克码整数,转换为int在前面补0
有符号整数和无符号整数转换时,因为范围不同,所以都会出现溢出
int和float转换都可能出现精度损失因为int整float小数,int32位float24位
为什么float是24位(它实际上有32位)?因为它是浮点数,23位尾数加一个隐藏位?
数据的机器表示
校验码
概念
码距
两个二进制数数之间,数字不同的位数(1010和0101码距为4/1001和0111码距为3)
奇偶校验码
加上校验码,整个校验码中1的个数为奇数就是奇校验码,为偶数就是偶校验码
另一种理解:1是错误,0是正确如果原数中有奇数个1,对于奇校验码来说,就是正确的,加上0;对于偶校验码来说就是错误的,加上1
特点
只能发现,不能纠错
海明码
纠错思想
在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中这样,不仅可以发现错位还能发现错在哪
纠错过程(五个)
确定位数
信息位和校验位的和小于2的校验位次方-1
确定校验位的分布
分别是2⁰¹²³⁴⁵⁶⁷⁸⁹次方
分组确定校验关系(校验位校验哪几位)
校验位取值
校验位对应的数据位求异或(像偶检验,但不是)
确定是否出错以及出错位置
纠错一位需要多少校验位?两位呢?
对于4位二进制数来说:3和3+1
循环冗余校验码
ALU(算术逻辑单元)
功能
算术运算和逻辑运算
串行加法器
只有一个全加器,逐位运算时间主要由计算时间决定
并行加法器
多个全加器组成,个数和机器字长相同时间由进位信号决定
进位链
将进位信号连接起来的进位网络
大端法和小端法
大端法
高对低
1234中的高位字节1放在地址①②③④低位地址中的①位中
小端法
低对低
存储系统
存储器的层次结构
存储器的分类
作用层次
高速缓冲存储器Cache
最快的(比主存快)
SRAM
MOS型存储器用触发器存储信息
非破坏性读出
易失性半导体存储器
不需要刷新
集成度低
发热量(功耗)大
存储成本(单位成本)高
高速缓存
主存储器(内存)
内存条
DRAM
用电容存储信息
SDRAM同步动态随机存取器
易失性加需要刷新
刷新以行为单位
集中刷新
分散刷新
导致刷新太多
异步刷新
特点
刷新自动进行
以行为单位
破坏性读出
集成度高
发热量小
存储成本(单位成本)低
主机内存
辅助存储器(外存)
固态硬盘
存储介质
磁表面存储器
磁盘
直接存取
先找到小区域,再在小区域顺序查找
磁带
顺序存取
磁心存储器半导体存储器
半导体存储器就是SDAM和DRAM
MOS型存储器
双极型存储器
光存储器
光盘
存取方式
随机存储器RAM
静态RAM
动态RAM
只读存储器ROM
串行访问存储器
磁盘
直接存取
磁带
顺序存取
信息的可保存性
易失性
断电信息就丢失
RAM(断电信息就丢失)
DRAM
SRAM
非易失性
ROM(断电信息依旧在)
MROM掩膜式只读存储器
PROM一次可编程只读存储器
EPROM
闪存
固态硬盘使用
是半导体存储器,MOS管
读比写快,硬盘常识
磁盘磁带
光存储器(光盘)
性能指标
存储容量
单位成本
存储速度
存取时间
一次存取操作所用的总时间(一般小于存取周期?因为存取之后还要有恢复时间)
存取周期
一次完整读写操作所需的全部时间
主存带宽(数据传输率)
数据通路带宽是一次能并行传输数据的位数
每秒从主存进出信息的最大数量
半导体随机存储器
DRAM SDRAM SRAM MOS 双极
主存储器和CPU的连接
怎么连接的?
数据总线
和位扩展对应
地址总线
可寻址的最大内存空间
和字扩展对应
控制总线
扩展
位扩展
能存100个8位二进制数的存储器,位扩展就是把8位变成16位,但是还是只能存100个数
字扩展
能存100个8位二进制数的存储器,字扩展就是把存储器变成能存两百个8位二进制数的存储器
字位同时扩展
双管齐下
双端口RAM和多模块存储器
目的
提高CPU访问存储器的速度
双端口RAM
一个存储器有两个端口对应两组总线
什么时候会发生冲突?
同时 同地 一起写或者边写边读
多模块存储器
单体多字存储器
只有一个存储体
指令和数据在内存中连续存放
多体并行存储器
就是字扩展
高位交叉编址
高位地址代表存储体号码,低位地址代表在存储体内的地址
特点
顺序存储
用满一个芯片才会用下一个
低位交叉编址
可以把数据均匀得存到各个芯片
实现条件
模块数m应该大于或者等于模块存取一个字的存取周期T比上总线传输周期r
高速缓冲存储器的基本概念和性能评估
高速缓存
利用了空间局部性和时间局部性
性能指标
命中率
Cache命中次数除以总读写次数
访问效率
读取到所有内容的时间(全部Cache命中的时间)/总访问时间
目的
提高命中率和访问效率
映射
概念
把主存内容装入到Cache
分类
直接映射(只能坐一个位置)
0,8只能坐0号1,9只能坐1号
地址结构
主存内字块地址+Cache内字块地址+字块内地址(因为字块是一个比较大的空间,可以存较多数)
全相联映射(有位置就可以坐)
因为是随便坐,所以不需要Cache地址
地址结构
主存字块地址+字块内地址
常用相联存储器
组相联映射(分组坐位置,你不能坐到其他组但是在组内随便坐)
地址结构
主存字块地址+Cache组地址+字块内地址
考大题,判断Cache容量大小
总容量除了存储容量外,还要加上有效位和标记位(标记阵列容量)的容量 每个标记项对应一个Cache行
Cache替换策略
随机算法
FIFO
LRU
最不常使用算法
写策略
全写法
全写是指既写cache也写内存上对应の那块
写缓冲
因为内存比Cache慢,所以写好Cache后内存还是没写完,因此加入Cache来加速写内存(先在写缓冲中写好)
写回法
只修改Cache中的内容,等到Cache中修改过的块调出时,再将块中内容写回主存
脏位
判断改块是不是被修改过
写不命中
写分配法
没有对应块,就给我从主存调过来
非写分配法
没有对应块,我就去内存中找到它然后修改
虚拟存储器
和操作系统那一章一起记忆
页式虚拟存储器
段式虚拟存储器
段页式虚拟存储器
快表
相联存储器构成
指令系统
指令的基本格式
零地址指令
只有操作码
一地址指令
操作码加一个地址码(操作码在前)
二地址指令
三地址指令
四地址指令
指令的寻址方式
指令寻址
顺序寻址
程序计数器加1
跳跃类寻址
通过转移类指令实现
数据寻址
指令格式:操作码+寻址特征(指出这个指令用的是什么寻址方式)+形式地址
隐含寻址
在指令中提示操作数在哪个部件(如可以在ACC中)
立即寻址
实际上不用寻址,因为形式地址就是操作数地址
直接寻址
形式地址即实际地址
间接寻址
可以一次也可以多次寻址
寄存器寻址
形式地址给出的是寄存器编号
寄存器间接寻址
形式地址给出的是寄存器地址,寄存器存的操作数在主存中的地址
相对寻址
操作数不是存在某处,而是通程序计数器中的内容加上形式地址形成的
基址寻址
形式地址加上基址寄存器(BR)中的内容就是操作数
变址寻址
形式地址加上形式地址等于有效地址,操作数在有效地址内
CISC和RISC
CISC
指令系统庞大复杂
指令数目大于200条
指令字长不定
可访存指令不加限制
各种指令执行时间相差较大
各个指令使用频度不确定
通用寄存器数量较少
目标代码生成比较困难
控制方式多为微程序控制
指令流水线可以实现也可以不实现
RISC
指令系统简单精简
指令数目小于100条
指令字长确定
可访存指令只有Load/Store指令
各种指令执行时间大部分小于一个周期
各个指令使用频繁
通用寄存器数目较多
生成目标代码比较高效
控制方式多为组合逻辑控制
指令流水线必须实现
中央处理器
CPU的功能和基本结构
运算器
算术逻辑单元ALU
暂存寄存器
暂存从主存中读取到的数据
累加寄存器ACC
存运算结果
通用寄存器
存操作数和地址
程序状态寄存器PSW
为什么它在这里?
因为它的功能是存进位信息等
移位器
对操作数或运算结果进行移位运算
计数器CT
控制乘除法的操作步数
控制器
程序计数器PC
指令寄存器IR
指令译码器ID
存储器地址寄存器MAR
存储器数据寄存器MDR
时序系统
微操作信号发生器
寄存器
对用户透明
MAR MDR IR等控制器寄存器
对用户不透明
PSW 通用寄存器组等运算器寄存器
指令的执行过程
知识储备
指令周期
CPU从机器中取出一条指令并执行的所有时间
机器周期
若干个机器周期组成指令周期(取指令的时间、取有效地址的时间都是机器周期)
机器周期和指令周期不等长
时钟周期
若干时钟周期(节拍)组成机器周期
指令周期的数据流
取指周期
间址周期
执行周期
中断周期
数据通路的功能和基本结构
结构
CPU内部单总线结构
CPU内部三总线结构
专用数据通路方式
不采用CPU
知识储备
内部总线
CPU内部连接各个寄存器(也在CPU内部)之间的总线
系统总线
CPU和外部设备(内部,外存之类)连接的总线
微操作序列
寄存器之间的数据传输
PC→BUSBUS→MAR(PC中的内容送到MAR中)
主存和CPU之间的数据传输
PC→BUS→MAR1→CUMEM(MAR)→MDRMDR→BUS→IR
执行算术或逻辑运算
Ad(IR)→BUS→MAR1→RMEM(MAR)→数据线→MDRMDR→BUS→Y(ACC)+(Y)→ZZ→ACC
控制器的功能和工作原理
知识储备
硬布线控制器(组合逻辑控制器)
原理
根据当前指令的要求、当前的时序、及内部和外部的状态发出一系列微操作控制信号
微程序控制器
原理
将每条机器指令编成一个微程序,每个微程序包含若干微指令,每个微指令对应一个或几个微操作命令
微命令
最小的控制命令,由控制部件向执行部件发出
微操作
一条机器指令可以分解成一个微操作序列,微操作是计算机中最基本的不可再分的操作
最小操作
微指令
若干微命令的集合
最小指令单位,多个微指令组成微程序
微周期
从控制存储器中读取一条微指令并执行相应的操作
微程序
一条机器指令对应一条微程序
若干微指令的有序集合
硬布线和微程序的比较
硬布线(偏硬件RISC)
工作原理
工作原理
执行速度快
执行速度慢
不规整
较规整
RISC
CISC
不易扩充
易扩充
微程序控制器(偏软件CISC)
微程序控制器
微操作序列
微指令
微指令格式
水平型微指令
直接编码
字段直接编码
字段间接编码
混合编码
垂直型微指令
对比
微指令不规整,一条微指令可能有多个微操作命令,因此可以缩短微程序的长度,但是微指令自己也变长了(水平型微指令)
微指令规整,每条微指令都由目的地址、源地址和操作码地址组成,因此导致微程序变长(垂直型微指令)
地址形成方式
直接法
直接在微命令中有
间接法
根据机器指令的操作码形成
指令流水线
指令执行过程
取指
取指周期
分析
间址周期
执行
执行周期
存结果
指令执行方式
顺序执行
一次重叠方式
二次次重叠方式
性能指标
吞吐率
单位时间内流水线完成的任务数量
公式
四段流水线采用三次重叠:4/7
加速比
不用流水线和用流水线之间所用的时间之比
公式
16/7
提高流水线段(k)可以提高加速比
效率
有效面积除以...
公式
16/28
超标量流水线技术
超标量流水线
多条流水线组合
超流水线
一个时钟周期内一个功能部件使用多次
超长指令字
水平型微指令
结构相关和数据相关以及解决方法
结构相关(资源冲突)
争用同一资源
解决方法
将冲突指令往后推迟一个周期
没看懂?资源重复配置
数据相关(数据冲突)
比如:(3+4)×5这个指令,必须要3+4完成后,才能进行乘法指令,因为数据相关
解决方法
暂停指令至问题消失
设置专用通道:计算结果7不存放到寄存器中而是直接通过专用通道参加运算
数据旁路技术
提前调整指令顺序(把加和乘法完全错开来)
控制相关(控制冲突)
控制命令(条件转移指令和改变其他PC值的指令)造成断流
第三条指令是:条件转移指令(x>0?到第四条指令;到第十五条指令)假设是6段流水线,那么第三段开始的时候,前两条指令还没算出来,所以我们预读指令4,但是时间7到了,指令二执行完毕后,发现x是小于等于0的,因此前面读取的全部浪费,在时间8我们开始执行指令8
解决方法
猜测法
总线
概述
知识储备
定义
一组能为多个部件分时共享的公共信息传送线路
总线特点
分时
数据和信息上的分时
共享
硬件上的共享
设备
主设备
获得了总线控制权的设备
从设备
被主设备访问的设备
特性
机械特性
尺寸
形状
电气特性
传输方向和有效的电平范围
功能特性
每根传输线的功能
时间特性
信号和时序的关系
分类
内部总线
系统总线
数据总线
双向,和机器字长、存储字长有关
地址总线
单向
控制总线
结构
单总线结构
双总线结构
主存总线
I/O总线
三总线结构
主存总线
I/O总线
DMA总线
外部总线(通信总线)
性能指标
总线传输周期
一次总线操作(申请、寻址、传输、结束阶段)所需时间,简称总线周期
总线时钟周期
机器时钟周期
总线工作频率
总线周期的倒数
总线的时钟频率
机器的时钟频率
总线宽度
能同时传输的数据位数
总线带宽
总线的数据传输率,单位为B/s
总线复用
例,数据总线有时可以传输地址信息
信号线数
系统总线数的总和
总线的通信方式
总线周期
申请分配阶段
寻址阶段
传输阶段
结束阶段
同步通信
以统一的时钟周期为基础进行通信
异步通信
原理
以握手信号实现通信
分类
不互锁
半互锁通信
全互锁通信
不互锁
总线仲裁
集中仲裁
链式查询
数据线 地址线 总线允许线 总线请求线 总线忙线
优点
优先级固定,因此结构简单,扩充容易
缺点
优先级不能变,可能发生饥饿现象
对硬件故障敏感
计数器定时查询
数据线 地址线 总线请求线 总线忙线 设备地址线
优点
优先级可以顺序表示也可以自己设置
对硬件故障没有链式敏感
缺点
复杂,地址线数要㏒₂n(上取整)+2(总线请求+总线忙)
独立请求方式
每个设备都有其独立的总线请求和总线允许线,公用一条总线忙线,因此n和设备需要2n+1条线
优点
速度快
优先级灵活
缺点
复杂
分布仲裁方式
要和其他设备的仲裁号pk
总线标准
系统总线
ISA
工业标准体系结构
EISA
扩展工业标准体系结构
局部总线
VESA
视频电子标准协会
PCI
外部设备互联
PCI-E
AGP
加入图形接口
串行总线
RS-232C
推荐标准
USB
通用串行总线
杂项
计算机
PCMCIA
电脑接口标准
IDE
集成设备电路
SCSI
小型计算机系统接口
SATA
串行高级技术附件