计算机组成原理
2021-04-26 16:11:31 366 举报
AI智能生成
计算机组成原理是计算机科学的一门重要分支,主要研究计算机硬件系统的基本结构和功能。它包括了数字逻辑、微处理器设计、存储器结构、输入输出设备、操作系统和网络等方面的知识。通过学习计算机组成原理,我们可以了解计算机是如何执行各种指令的,以及它们是如何协同工作的。此外,我们还可以掌握如何设计和优化计算机系统,以提高其性能和可靠性。总之,计算机组成原理为我们提供了深入了解计算机硬件和软件之间相互作用的基础,是成为一名优秀的计算机工程师所必备的知识。
作者其他创作
大纲/内容
免费克隆,点赞支持一下吧
1.计算机系统概述
计算机发展历程
计算机硬件的发展
电子管时代
晶体管时代
中小规模集成电路
大规模、超大规模集成电路
微处理器的发展
摩尔定律
计算机的分类和发展方向
按照作用分类
电子计算机
电子模拟计算机(一般用于科学研究)
以连续变化的电流或电压来表示被运算量的电子计算机
电子数字计算机
专用(某一方面的性能)
通用
巨型机
一种超大型电子计算机,高速度和大容量,科学研究
大型机
大型机使用专用的处理器指令集、操作系统和应用软件,科学研究
中型机
一种中高端的电子计算机
小型机
是指采用精简指令集处理器、性能和价格介于PC服务器和大型主机之间的一种高性能64位计算机
微型机
以微处理器位基础,配以内存储器及输入输出接口电路和相应的辅助电路而构成,例如PC、平板电脑
单片机
一种集成电路芯片,又称为单片微控制器,他不是完成某一个逻辑功能的芯片,而是把计算机系统集成到一个芯片上,
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备
按照指令和数据流分类
单指令流&单数据流(SISD):冯诺依曼体系结构
单指令流&多数据流(SIMD):阵列处理器、向量处理器
多指令流&单数据流(MISD):实际上并不存在
多指令流&多数据流(MIMD):多处理器、多计算机
计算机的两级分化
微型计算机
更微型化、网络化、高性能、多用途发展
巨型机
更巨型化、超高速、并行处理、智能化发展
计算机系统层次结构
计算机系统组成
硬件
软件
计算机系统的组成
- 实线为数据线,虚线为控制线和反馈线
- 主存就是内存,辅寸就是硬盘
运算器和控制器工作流程
运算器和控制器组成结构
MQ(乘商寄存器)
主要负责数据的乘法与除法运算并可保存运算结果
ACC(累加器)
累加器是一个具有特殊用途的二进制8位寄存器,专门用来存放操作数或运算结果。
ALU(算术逻辑单元)
执行算术和逻辑运算
X(通用寄存器)
可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。
PSW (程序状态字/程序状态寄存器)
存放状态信息和控制信息
Control Unit(控制单元)
分析指令,给出控制信号
Instruction Register(指令寄存器)
存放当前执行的指令
指令寄存器的位数取决于指令字长
Program Counter(程序计数器)
存放指令地址,有自动加1的功能
计算机的工作流程-取数指令
I/O设备
输入设备
鼠标
键盘
摄像机镜头
输出设备
显示器
辅助存储
光盘
硬盘
U盘
存储器(主)
多个存储单元只能一个电平为1 所以引入译码器
计算机软件系统
系统软件
管理整个计算机系统,使系统资源得到合理调度
应用软件
完成用户的特定任务,使用系统软件提供的资源接口
计算机编程语言
解释程序
一行一行解释成二进制代码速度快一些,但是没有保存文件,重复代码多次执行
翻译程序
多行编译成机器级目标代码文件(可先编译成汇编语言,也可直接编译成机器语言),可对重复代码进行操作
计算机系统的五层结构
拓展
计算器性能指标
容量
n位地址 -> 2的n次方个存储单元 * bit
机器字长
计算机进行一次整数运算所能处理的二进制数据的位数
机器字长通常与 CPU 的寄存器位数、加法器有关
数据通路带宽
外部数据总线一次所能并行传送数据的位数,非CPU内部总线
速度
主频和CPU时钟周期
主频
机器内部主时钟的频率,代表没秒内执行的时钟周期的个数
时钟周期
在一个时钟周期内,CPU仅完成一个最基本的动作(一个动作可能需要一个或者多个时钟周期)是主频的倒数
CPI(Clock cycle Per Instruction)
执行一条指令所需的时钟周期数
MIPS - (Million Instructions Per Second)
每秒执行多少百万条指令
值 = 指令条数/(执行时间 x 10^6)
MFLOPS - (Mega Floating-point Operations Per Second)
每秒执行多少百万次浮点运算
值 = 浮点操作次数/(执行时间 x 10^6)
GFLOPS - (Giga Floating-point Operations Per Second)
每秒执行多少十亿万次浮点运算
值 = 浮点操作次数/(执行时间 x 10^9)
TFLOPS - (Tera Floating-point Operations Per Second)
每秒执行多少万亿次浮点运算
值 = 浮点操作次数/(执行时间 x 10^12)
图解
拓展
拓展,计算机单位
B KB M G T
进位为 2^10
2.数据的表示与运算
数制与编码
进位计数法
进制转换
十进制与其他进制转换
十进制转换成其他进制
整数部分
除基取余,倒序
小数部分
乘基取整,正序
其他进制转换成十进制
按权相加
二进制、四进制、八进制、十六进制的转换
n位一组
整数部分不够前面补0,小数部分后面补0
真值和机器数
真值
+15
机器数
0 1111
BCD码(Binary-Coded Decimal)
8421码
余3码
2421码
字符
ASCII码
大端模式小端模式
大端模式:将数据的最高有效字节存放在低地址单元中
小端模式:将数据的最高有效字节存放在高地址单元中
校验码
奇偶校验
校验原理
码字间的距离:两个码字之间有几个位不同
码距:一个编码方案中,合法码字间的最小距离
若码距=2,有检错能力,若码距>=3,可能还会有纠错能力
奇偶校验
在信息位的首部或尾部添加一个奇偶校验位
奇校验:这个校验码(信息码和校验位)中 1 的个数为奇数
偶校验:这个校验码(信息码和校验位)中 1 的个数为偶数
奇偶校验码的码距d = 2 ,仅能检测出奇数位错误,无纠错能力
海明码
循环冗余校验码
定点数的表示和运算
定点数的表示
无符号数
1001 1100B -> 156D
n位无符号数表示范围 0 ~ 2^n -1
有符号数:原、反、补、移
原码
正数和负数的原码不变(正数符号位后补0,负数最后补0)
补码
补码的由来
当一个正数和一个负数相加 可以变成一个正数减去一个正数
如果不想改变算数的逻辑 那么可以引入求余的方法
分析:时钟上十点怎么调到八点
10 - 2 = 8
10 + 12-2 = 20 % 12 = 8
让时针转一圈到 8 就相当于 一次性转一圈 然后再-2
那么 0000 1110 + 1000 1110
0000 1110 + 1 0000 0000 - 1000 1110
1 0000 0000 % 1 0000 0000 = 0
这里 1 0000 0000 = 1 + 1111 1111
而 1111 1111 - 1000 1110 相当于取反
[ X ] -> [ X ] 补 正数不变 ;负数符号位不变 剩下的位置 取反 +1
[ X ] -> [ -X ] 补 连同符号位取反 + 1
反码
正数 与原码相同
负数 符号位不变 数值位按位取反
原,补,反相互转化
移码
移码 和 补码符号位相反
定点数的运算
移位
逻辑移位
逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0
算数移位:左移相当于乘以基数,右移相当于乘以基数
空位填补规则
原码
左移、右移都补0
左移丢1,运算出错;右移丢1,影响精度。
反码
正数补0 , 负数补1
补码
正数补0 , 负数左移补0 右移补1
循环移位
加减
符号扩展
原码
A=+1111 -> 0,1111 -> 0,0001111
B=-11000-> 1,11000 ->1,0011000
B=-11000-> 1,11000 ->1,0011000
补码
A = +1111 -> 0,1111 -> 0,0001111
B = -11000 -> 1.01000 -> 1,1101000
B = -11000 -> 1.01000 -> 1,1101000
加减运算
[A+B]补 = [A]补 + [B] 补 = 0,0001111 + 1,1101000 = 1,1110111
原码 1,0001001 真值 -9
[A+B]补 = [A]补 + [B] 补 = 0,0001111 + 0,0011000 = 0,0100111
真值 + 39
[-B]补 = [B]补连同符号位取反+1
溢出判断
若C = 124 求[ A+C ]补 [B-C]补
[ A + C ]补 = 1,0001011 -> -117
发生负溢出
[ B - C ]补 = 10,1101100 -> +108
发生正溢出
一位符号位
一位符号位 & 数据位进位
子主题
双位符号位
乘除
乘法
常规算数乘法
乘数左移
原码一位乘法
符号位和绝对值分开计算 将每步计算结果右移一位
这里MQ 的最高位符号位省略没写
补码一位乘法
对比
除法
强制类型转换
无符号数与有符号数
不改变数据内容,改变解释方式。
长整数变短整数
高位截断,保留低位。
短整数变长整数
符号扩展。
浮点数的表示与运算
浮点数的表示
基本格式
类似于 2.981 * 10^2 就是浮点数
组成
阶码
阶符
阶码的数值部分
尾数
数符
尾数的数值部分
浮点数的真值
N = r^E * M
r 阶码的底,通常为2
M 尾数 数值部分的位数n反映浮点数的精度
E 阶码 反映浮点数的表示范围及小数点的实际位置
例子
未发生精度丢失
发生精度丢失
规格化
左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数左移一位,阶码减1(基数为2时)。
右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10)时,将尾数右移一位,阶码加1(基数为2时)。
表示范围
原码规格化后
正数为0.1××...×的形式,其最大值表示为0.11...1;最小值表示为0.10...0。
尾数的表示范围为1/2≤M≤(1−2−n)。
负数为1.1××...×的形式,其最大值表示为1.10...0;最小值表示为1.11...1。
尾数的表示范围为−(1−2−n)≤M≤−1/2。
尾数的表示范围为1/2≤M≤(1−2−n)。
负数为1.1××...×的形式,其最大值表示为1.10...0;最小值表示为1.11...1。
尾数的表示范围为−(1−2−n)≤M≤−1/2。
补码规格化后
正数为0.1××...×的形式,其最大值表示为0.11...1;最小值表示为0.10...0。
尾数的表示范围为1/2≤M≤(1−2−n)。
负数为1.0××...×的形式,其最大值表示为1.01...1;最小值表示为1.00...0。
尾数的表示范围为−1≤M≤−(1/2+2−n)。
尾数的表示范围为1/2≤M≤(1−2−n)。
负数为1.0××...×的形式,其最大值表示为1.01...1;最小值表示为1.00...0。
尾数的表示范围为−1≤M≤−(1/2+2−n)。
IEEE 754标准
浮点数的运算
加减运算
真值到机器数的转换
5D=101B,1/256=2−8X = -101 ×2^−8= -0.101 ×2^−5=-0.101 ×2^−101
阶码补码: -101 -> 11011
尾数补码: -0.101 -> 11.011 -> 11.01100000
11011,11.011000000
59D=111011B,1/1024=2^−10Y = + 111011 ×2^−10= + 0.111011 ×2^−4=+ 0.111011 ×2^−100
11100,00.111011000
对阶
使两个数的阶码相等,小阶向大阶看齐,尾数毎右移一位,阶码加1
①求阶差:[ΔE]补=11011+00100=11111,知ΔE=−1
②对阶:X:11011,11.011000000 11100,11.101100000
X =-0.0101 ×2^−100
尾数加减
X-Y = X + [-Y]
10.110001000
规格化
11100, 10.110001000 ->11101,11.011000100
舍入
无舍入
0”舍“1”入
恒置“1”
溢出判断
常阶码 ,无溢出,结果真值为 2^-3 * (-0.1001111)B
强制类型转换
无损
char -> int -> long -> double
float ->double
无符号数与有符号数
int <->float
精度 (全部)
表示范围 (flot->int)
算数逻辑单元
3、存储系统
基本概念
分类
作用(层次)
高速缓冲存储器(cache)
主存储器(主存、内存)使用DRAM 和 ROM
副主存储器(辅寸、外存)
信息可保存性
断电后存储信息是否消失
易失性:RAM
非易失性
读出时是否破坏信息
破坏性读出 : DRAM
非破坏性读出
存储介质
磁芯存储器
磁表面存储器
磁盘
磁带
半导体存储器
光存储器
存取方式
随机存取
RAM
DRAM
SRAM
串行访问
顺序存取:磁带
直接存取:磁盘
性能指标
存储容量
存储字数*字长
单位成本
每位价格 = 总成本/总容量
存储速度
数据传输率(主存带宽) = 数据带宽/存储周期
层次化结构
Cache - 主存层次: 硬件实现,解决速度不匹配问题
主存 - 辅寸层次:硬件+操作系统,解决容量问题,逐渐形成虚拟存储系统
存储器与CPU的协同工作
存储器的简单模型及寻址的概念
存储器芯片的基本结构
译码驱动电路
存储矩阵
读写电路
地址线、数据线、片选线、读写控制线
图解
寻址
按字节、字、半字、双字寻址
按字节寻址:1K个单元,每个单元1B
按字寻址:256个单元,每个单元4B
按半字寻址:512个单元,每个单元2B
按双字寻址:128个单元,每个单元8B
多字节存放:大端方式,小端方式
大端方式
从低到高
小端方式
从高到低
图解
主存与CPU的连接
位扩展
字扩展
线选法
译码片选法
译码器的使用
分析地址空间
字位同时扩展
选择存储器芯片
与CPU进行连接
双口RAM和多模块存储器
存取周期
存取时间
恢复时间
双端口RAM
冲突处理 : BUSY 信号
多模块存储器
单体多字
多体并行
高位交叉编址
低位交叉编址
高速缓冲存储器
局部性原理
空间局部性
时间局部性
性能分析
命中率与失效率
Cache - 主存体系的平均访问时间
地址映射方式
全相联
主存字块标记 | 字块内地址
直接映射
主存字块标记 | Cache字块地址 | 字块内地址
组相联
主存字块标记 | 组地址 | 字块内地址
标记项
有效位、标记位(主存字块标记)
替换算法
随机算法(RAND)
先进先出(FIFO)
最近最少使用(LRU)
最不经常使用(LFU):参考操作系统
写策略
命中
全写法(写直通法,write-through)
当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)
写回法(write-back)
当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
不命中
写分配法(write-allocate)
把主存中的块调入Cache,在Cache中修改。搭配写回法使用
非写分配法(not-write-allocate)
只写入主存,不调入Cache。搭配全写法使用
虚拟存储器
基本概念
虚地址(逻辑地址)
实地址(物理地址)
类型
页式
段式
段页式
虚实地址转换
快表TLB
慢表 Page
半导体存储器
存储芯片的基本结构
存储矩阵
由大量相同的位存储单元阵列构成
译码驱动电路
将来自地址总线的地址信号翻译成对应存储单元的选通信号
该信号在读写电路的配合下完成对选中单元的读/写操作
该信号在读写电路的配合下完成对选中单元的读/写操作
读写电路
包括独处放大器和写入电路,用来完成读/写操作
地址线、数据线、片选线、读写控制线
读写控制线
决定芯片进行读/写操作
片选线
决定哪个存储芯片被选中。可用于容量扩充
地址线
是单向输入的,其位数与存储字的个数有关
数据线
是双向的,其位数与读出或写入的数据位数有关
地址线数和数据线数共同反应存储芯片容量的大小
如 地址线10根 数据线8根 芯片容量为 2^10 * 8 = 8K位
如 地址线10根 数据线8根 芯片容量为 2^10 * 8 = 8K位
图解
SRAM、DRAM的工作原理
SRAM
触发器存储信息,速度快,成本高,集成度低,常用作高速缓存
DRAM
电容存储信息,需刷新,速度慢,成本低,集成度高,常用主存(SDRAM)
DRAM的刷新:集中刷新、分散刷新、异步刷新
不需要CPU控制
以行为单位,仅需要行地址
存储器同一行中所有芯片同时刷新
图解
RAM的读写周期
SRAM 和 DRAM 区别图解
ROM的特点和基本类型
特点
结构简单,位密度比RAM高;非易失性,可靠性高
类型:MROM、PROM、EPROM、Flash Memory 、 SSD
4.指令系统
指令格式
操作码和地址码
操作码
地址码
四种地址指令
定长指令字结构
变长指令字结构
零地址指令
定长操作码
都为8位
拓展操作码
可变长度
拓展操作码
定长操作码和拓展操作码对比
操作类型
1. 数据传送
LOAD:把存储器中的数据放到寄存器中
STORE: 把寄存器中的数据放到存储器中
2. 算术逻辑操作
算数:加减乘除,增1,减1,求补,浮点运算,十进制运算
逻辑:与、或、非、异或、位操作、位清除、位求反
3. 移位操作
算数移位、逻辑移位、循环移位(带进位和不带进位)
4. 转移操作
无条件转义 JMP
条件转移 JZ:结果为0; JO:结果溢出; JC:结果又进位
调用和返回 CALL和RETURN
陷阱(Trap)与陷阱指令
5. 输入输出操作
CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)
指令寻址方式
数据存储
指令寻址
顺序寻址
跳跃寻址
数据寻址
CISC 和 RISC
两种设计方向
直接与CPU交换信息
收藏
收藏
0 条评论
下一页