计算机组成原理
重点:数据运算、存储器、CPU、IO
计算机系统概述
计算机系统组成
其中,有下面几个问题需要注意:
- cache的作用是解决CPU(快)和内存(慢)的速度不匹配问题。
- 外存的作用是扩容。
- CPU可以直接访问内存,但不能直接访问外存。
- 存储器:
- 二级存储系统:内存、外存
- 三级存储系统:(chache、主存)、辅存
计算机硬件的主要技术指标
| 技术指标 | 含义 | 作用 |
|---|---|---|
| 机器字长 | CPU一次能处理、运算的二进制位数。常见32位、64位 | 机器字长越长,计算精度越高 |
| 主频;CPU的时钟周期 | CPU内数字脉冲信号震荡的速度;主频的倒数 | 主频越高,计算速度越快 |
| CPI;CPU执行时间;MIPS;MFLOPS | 执行一条指令所需的平均时钟周期数(CPI = 总时钟周期 / 指令条数);CPU执行一般程序所占用的CPU时间(CPU执行时间 = 程序指令数 * CPI / 时钟频率); MIPS:每秒执行几百万指令数(MIPS = 时钟频率 / CPI);MFLOPS:每秒百万浮点操作数 | CPU速度 |
| 吞吐量 | 计算机一秒内能处理的信息 | 吞吐量越大,计算机性能越好 |
| 响应时间 | 响应时间越短,计算机性能越好 | |
| 主存容量 | 主存储器所能存储二进制数据的位数 | 主存容量越大,记忆的二进制位数越多 |
| 主存带宽 | 单位时间内从主存储器读出的二进制信息量 | 主存带宽越大,读出的速度越快 |
其中,主存容量的换算如下:
B = 8位(1字节)
K = 2^10(10^3)= 1024
M = 2^20
G = 2^30
T = 2^40
数据的表示与运算
有符号数的编码方法
有符号数
- 原码:最高符号位0正1负,其余是二进制数的绝对值的大小
- 反码:
- 正数的表示与原码相同
- 负数的符号位为1,数值位将原码的数值按位取反
- 补码:
- 正数的表示与原码和反码相同
- 负数的符号位为1,数值位将原码的数值按位取反加1
- 移码:移码和补码符号位取反,其他位相同
0的编码表示
程序中所有的整数都是用补码规则表示的2进制存储在内存中的。这是因为:
- 用补码规则解决了两个零的问题,即
+0和-0。 - 统一了加减法运算。
定点数与浮点数
- 数值数据的表示格式:
| 定点格式 | 浮点格式 | |
|---|---|---|
| 所有小数点位置 | 固定不变 | 不固定 |
| 数据范围 | 有限 | 很大 |
| 处理硬件 | 简单 | 复杂 |
- 定点表示法:所有数据的小数点位置固定不变
- 浮点表示法:小数点的位置不固定,可以在一定范围内自由浮动
- 规格化浮点数:能够使得计算机进行浮点运算时有固定统一的标准格式(真值
0.1xxxx)
- 正数补码尾数:
0.1xxxx - 负数补码尾数:
1.0xxxx
- 浮点数规格化处理:
- 右规
- 左规
- IEEE754标准浮点数
- 规则规定了单精度(32)和双精度(64)的基本格式
- 规则中,尾数M用原码,指数E用移码
- 基数R=2,基数固定,采用隐含方式表示
定点运算与浮点运算
- 定点数的补码加减法
- 定点数的溢出检测:双符号位法(变形补码)
溢出就是指两正数相加变为负数,两负数相减变正数的情况。
双符号位法就是为了解决这种情况而诞生的:
- 正数:00
- 负数:11
- 正溢:01
- 负溢:10
- 定点数的乘法:
- 浮点数的加减法:
存储器系统
存储器的层次结构
存储器分层次目的:解决存储容量、价格和存储速度之间的矛盾
二级存储系统
- 内存:CPU能直接访问的存储器
- 外存:CPU不能直接访问的存储器,解决存储容量问题,以满足计算机的大容量需求。
三级存储系统
- cache 高速缓存:速度更快容量更小的存储器。目的是提升访问速度,使主存存取速度和CPU运算速度相匹配。
- 主存:用来存放系统运行期间的大量程序和数据。
- 辅存
三级存储系统的两个层次:
- 缓存-主存 层次:内存。
- 主存-辅存 层次:虚存。
主存
- 存储器地址分配
- 字节存储单元:存放一个字节的单元,相应的地址称为字节地址
- 字存储单元:存放一个机器字的存储单元,相应的单元地址叫字地址
- 主存的性能指标
- 存储容量:指一个存储器中可以容纳的信息比特数,如KB、MB、GB、TB。存储容量 = 存储字数 * 存储字长
- 存取时间(存储器访问时间):指一次读/写操作命令发出到该操作完成
- 存储周期:指存储器连续读写过程中一次完整的存取操作所需的时间,CPU连续两次访问存储器的最小时间间隔。(存储周期 = 存取时间 + 恢复时间)
- 存储器带宽:单位时间里存储器所存取的信息量
- 半导体存储芯片
- RAM:掉电会丢失数据,随机读写,速度比ROM快 64K(存储地址数量) x 16(每个单元的存储位数)
- SRAM 静态RAM:存储位元是多个门电路组成的的锁存器(触发器)
- DRAM 动态RAM:存储位元是一个MOS管和一个电容,增加了行地址锁存器和列地址锁存器实现地址线复用从而分时传送行列地址码,增加了刷新计数器实现读出后再生和定时刷新
| SRAM | DRAM | |
|---|---|---|
| 结构 | 复杂 | 简单 |
| 体积 | 大 | 小 |
| 速度 | 快 | 慢 |
| 价格 | 高 | 低 |
| 应用 | Cache | 主存 |
- ROM:掉电不丢失数据,只能读不能写,速度比RAM慢
- 存储容量的扩展
- 位扩展:给定的芯片字长位数较短,需要在位数方向扩展,而芯片的字数和存储器的字数一致
- 字扩展:给定的芯片字数少,仅需要再字数方向扩展,而位数不变
- 字位扩展:给定的芯片字数和行数都不够,需要先进行位扩展,再进行字扩展
- 提高访存速度的措施
- 芯片技术:提高单个芯片的访问速度。如突发传输技术,SDRAM技术,CDRAM技术
- 结构技术:改进存储器与CPU之间的连接方式。如采用并行技术的双端口存储器,多体交叉存储器
- 系统结构技术:采用分层存储结构。如增加Cache,采用虚拟存储器
cache与虚存
cache
访存局部性:CPU访问内存时,短时间内只会集中访问一小片内存区域。
cache的基本原理:CPU读取内存时,发出要读的字的内存地址到cache和主存。若cache命中,则直接从cache读出该字传送给CPU;若cache未命中,则把该字从主存读出送到CPU并同时送往cache。由于程序局部性原理,cache的命中率可接近于1,使得在性能上,内存的平均读出时间可接近cache的读出时间。
相关公式:
- 主存和cache的映射
- 全相联映射:主存的数据块可以复制到cache的任意一行
- 直接相联映射:主存的数据块可复制到cache的固定某一行
- 组相联映射:主存的数据块可复制到cache的固定某一组的任意一行
虚存
- 虚存:在主存和辅存之外附加一些硬件和软件实现,属于三级存储体系中主存-辅存层次。他能满足程序需要大一点的运行空间。
- 分类:页式虚存、段式虚存、段页式虚存
指令系统
机器指令
- 操作码:表示该指令应进行什么性质的操作,如加减乘除取数存数等等。操作码的位数可以是固定长度也可以是可变长度。
扩展操作码:操作码的位数随地址数减少而增加
- 地址码:可表示操作数,操作数的地址,运算结果的地址,或下一条指令的地址
- 零地址指令:停机
- 一地址指令
- 单操作数指令:+1,-1,求反
- 隐含另一个操作数地址的双操作数指令
- 二地址指令:将两个操作数做运算后覆盖原来的某一个操作数
- 三地址指令:对A1和A2的操作数进行操作后把结果放在A3
- 四地址指令:对A1和A2的操作数进行操作后把结果放在A3,A4给出下一条指令地址
其中,二进制地址根据物理位置可以分为:
| 类型 | 中文名称 | 特点 |
|---|---|---|
| SS型 | 存储器-存储器类型 | 只访问内存的指令格式(最慢) |
| RS型 | 寄存器-存储器类型 | 既访问内存又访问寄存器的指令格式 |
| RR型 | 寄存器-寄存器类型 | 只访问寄存器的指令格式(最快) |
- 指令字长:一个指令字包含二进制代码的位数,取决于:操作码的长度,操作数地址的长度,操作数地址的个数
- 单字长指令:指令字长=机器字长的指令
- 半字长指令:指令字长=半个机器字长的指令
- 双字长指令:指令字长=两个机器字长的指令
多字长指令的优缺点:
- 优点:提供足够的地址位来解决访问内存任何单元的寻址问题
- 缺点:必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间
操作数类型和操作类型
操作数类型
- 地址数据:无符号整数
- 数值数据:定点数、浮点数、压缩十进制数
- 字符数据:文本数据或字符串,目前广泛使用ASCII码
- 逻辑数据:逻辑运算
操作类型
- 数据传送指令:数据 & CPU
- 算术运算指令
- 逻辑运算指令
- 程序控制指令:改变程序执行的顺序
- 串处理类指令:对连续存储单元的内容进行处理串传送、串比较、串查找等
- 输入输出类指令:CPU & IO设备
寻址方式
- 指令寻址方式
- 顺序方式
- 跳跃方式
- 数据寻址方式
- 直接寻址、间接寻址、寄存器间接寻址、偏移寻址(基址、变址、相对):存在内存中
- 寄存器寻址:通用寄存器
- 堆栈寻址:堆栈
中央处理器CPU
CPU的结构和功能
CPU的基本功能与组成
CPU是用于告诉计算机什么时候该干什么事的部件。
它的基本功能有这些:
- 程序控制功能
- 指令控制:程序的顺序控制
- 操作控制:将一条指令的若干操作信号送往相应部件
- 操作定序功能:时间控制
- 数据处理功能
- 中断处理功能
CPU = 运算器 + 控制器
- 运算器
- ALU:算术逻辑运算单元
- 通用寄存器
- 专用寄存器
- 控制器
- PC:程序计数器
- IR:指令寄存器
- CU:指令译码器(操作控制单元)
- 硬布线控制器
- 微程序控制器
- TS:时序产生器
指令周期
指令周期:从主存中取出一条指令,并执行完该指令的时间。
CPU周期(机器周期、工作周期):指令周期的子周期。
时钟周期:CPU最小时间单位,处理操作的最基本单位。
指令流水线
- 并发:两个或两个以上事件在同一时间段发生
- 并行:两个或两个以上事件在同一时刻发生
- 影响流水线性能主要问题:
- 资源相关:争用同一部件
- 数据相关
- RAW:写后读
- WAW:写后写
- WAR:读后写
- 控制相关
中断系统
总线系统
总线概述
总线系统 = 一套共享的公共传输线路 + 配套控制电路,把 CPU、内存、硬盘、显卡、外设全部连在一起,统一传输数据、地址、控制信号。连接计算机各功能部件并传送信息的一组公共信号线。
总线的特性:
- 机械特性\物理特性:根数、插头、引脚
- 功能特性:传输地址、数据、控制信号
- 电气特性:传输方向和有效的电平范围
- 时间特性:信号的时序关系
总线的分类:
- 片内总线:CPU芯片内部连接寄存器和运算器等的总线
- 系统总线:连接计算机内部CPU、主存和I/O接口等功能部件的总线
- 数据总线
- 地址总线
- 控制总线
- 通信总线:连接计算机之间或其他设备的总线
【区别】总线宽度 & 总线带宽
- 总线宽度:数据线的根数。总线能够一次并行传送32bit数据
- 总线带宽(总线数据传输率):总线每秒传输的字节数
- 总线带宽(MB/s) = 数据总线宽度(B) / 完成一次数据传输所用时钟周期数 * 总线时钟周期
总线结构:
- 单总线结构
- 双总线结构
- 三总线结构
总线仲裁
总线仲裁就是判定哪个主设备获得总线控制权的过程。分为集中式和分布式两种仲裁方式。
集中式仲裁
- 链式查询方式
特点:离中央仲裁器最近的设备有最高优先权,离总线控制器越远,优先权越低
优点:实现总线控制的线数量少;容易扩充设备
缺点:对电路故障很敏感;优先级固定
- 计数器定时查询方式
优点:可灵活改变优先次序
缺点:以增加控制线数为代价
- 独立请求方式
优点:响应时间快,即确定优先响应的设备所花费的时间少;对优先次序的控制相当灵活
缺点:以增加硬件电路和控制线数为代价
分布式仲裁
分布式仲裁控制逻辑分散在总线各部件中,不需要中央仲裁器
总线定时(通信)控制
总线通信控制是为了解决主机与外设通过总线进行信息交换时,在时间上的配合和动作协调问题。
同步方式
事件出现在总线上的时刻由总线时钟信号确定,总线周期长度固定。
异步方式
不需要统一的公共时钟信号,依靠双方相互制约的应答信号或互锁协议实现通信定时,周期长度可变。
异步方式的握手原则:主设备发出交换信息的“请求”信号和从设备接到申请后发出的“回答”信号的撤销是否互锁分为三种情况,分别是不互锁、半互锁、全互锁。
- 不互锁:请求不回就撤回,回了请求自己撤
- 半互锁:请求回了才撤回,回了请求自己撤
- 全互锁:请求回了才撤回,回在确认之后撤
半同步方式
同步异步结合。总体采用同步方式,不同之处在于增加一根wait等待响应信号线用于握手联络,从设备处理速度较慢时,增加时钟周期。
I/O输入输出系统
外部设备
外设包含除了主机外的每一个部分。能够让计算机和其他设备、计算机和用户之间提供联系。
I/O接口:为了保证告诉的主机和不同速度的外设之间高效传输信息的转换器。
I/O接口的作用:
- 实现设备的选择
- 实现数据缓冲
- 实现数据串并格式转换
- 反映设备的状态
- I/O接口与外设间的数据传送方式
- 无条件收发数据:针对速度极慢或简单的外设
- 异步定时:针对慢速或中速的设备
- 同步定时:高速外设
- I/O接口与主机间的数据传送方式
DMA(直接存储器访问)方式
DMA方式是完全由硬件I/O交换,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,直接在内存与I/O设备之间进行。适用于简单大批量数据传送。
DMA传送方式:
- 成组连续传送(停止CPU访存)方式
- 周期挪用(周期窃取)方式
- 透明DMA方式
通道方式
- 选择通道
- 数组多路通道
- 字节多路通道



























