计算机组成原理
计算机的发展
系统软件: 用来管理整个计算机系统
- 操作系统
- 数据库管理系统(DBMS)
- 标准程序库
- 网络软件
- 语言处理程序
- 服务程序
应用软件: 按任务需要编制的各种程序
硬件的发展
ENIAC: 第一台电子数字计算机(1946)
发展阶段 | 时间 | 逻辑元件 | 速度(次/秒) | 内存 | 外存 |
---|---|---|---|---|---|
第一代 | 1946-1957 | 电子管 | 几千-几万 | 汞延迟线,磁鼓 | 穿孔卡片,纸带 |
第二代 | 1958-1964 | 晶体管 | 几万-几十万 | 磁芯存储器 | 磁带 |
第三代 | 1964-1971 | 中小规模集成电路 | 几十万-几百万 | 半导体存储器 | 磁带,磁盘 |
第四代 | 1972-现在 | 大规模,超大规模集成电路 | 千万-万亿 | 半导体存储器 | 磁盘,磁带,光盘,半导体存储器 |
软件的发展
机器语言
汇编语言
高级语言
发展趋势
一级是微型计算机向更微型化,网络化,高性能,多用途方向发展
另一极是更巨型,超高速的计算机
计算机硬件的基本组成
早期的冯诺依曼结构
存储程序的概念是将指令以二进制代码的形式事先输入到计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他的指令,直到程序的执行结束.

在计算机系统中,软件和硬件在逻辑上是等效的
冯诺依曼计算机的特点
- 计算机由五大部件组成,存储器,控制器,运算器,输入,输出
- 指令和数据以同等低位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心,输入/输出设备与存储器之间的数据传送通过运算器完成.
现代的结构


各个硬件的工作原理
主存储器
存储地址寄存器(Memory Address Register)
存储数据寄存器(Memory Data Register)

存储单元:每个存储单元存放一串二进制代码
存储字(word):存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
存储元:即存储二进制的电子元件,每个存储元可存储1bit

运算器
运算器: 用于实现算术运算,逻辑运算
ACC: 累加器,用于存放操作数或运算结果
MQ: 乘商寄存器,在乘,除运算时,用于存放操作数或运算结果
X: 通用的操作数寄存器,用于存放操作数
ALU: 算术逻辑单元, 通过内部复杂的电路实现算术运算,逻辑运算

控制器
CU: 控制单元,分析指令,给出控制信号
IR: 指令寄存器,存放当前执行的指令
PC: 程序计数器,存放下一条指令地址,有自动加”1”功能

计算机的工作过程







计算机系统的层次结构

三种级别的语言
高级语言
汇编语言
机器语言

计算机性能指标
存储器
总容量 = 存储单元个数 * 存储字长
MAR的位数反映存储单元的个数,最多支持多少个
MDR的位数=存储字长=每个存储单元的大小
CPU
CPU主频: CPU内数字脉冲信号振荡的频率

CPI(Cycle Per Instruction): 执行一条指令所需的时钟周期数
执行一条指令的耗时= CPI * CPU时钟周期
IPS(Instructions Per Second): 每秒执行多少条指令
FLOPS(Floating-point Operations Per Second): 每秒执行多少次浮点运算
类似的还有
- KFLOPS
- MFLOPS
- GFLOPS
- TFLOPS
注意:这里的K,M,G,T为数量单位
$K = 10^3 \space M = 10^6 \space G = 10^9 \space T = 10^{12}$
系统整体的性能指标
数据通路带宽: 数组总线一次能并行传送的信息位数(各硬件部件都通过数据总线传输数据)
吞吐量: 系统在单位时间内处理请求的数量
响应时间: 用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间
基准程序是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其他计算机性能相比较.
进位计数制
无符号数整数的表示和运算


带符号整数的表示和运算原反补
- 符号位”0/1”对应”正/负”,剩余的数值位表示真值的绝对值
- 若机器字长
n+1
位,带符号整数的原码表示范围: $-(2^n - 1) \leq x \leq 2^n - 1$ - 真值0有两种形式,
+0
和-0
缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理

计算机如何做补码的加法: 从最低位开始,按位相加(符号位参与运算
),并往更高位进位



原反补码特性对比

移码
移码: 补码的基础上将符号位取反.
注意: 移码只能用于表示整数
存储系统的基本概念
存储器的层次结构

存储器的分类(从不同的角度)




存储器的性能指标
存储容量: 存储字数字长(如 1M 8bit)
单位成本: 每位价格 = 总成本/总容量
存储速度: 数据传输率 = 数据的宽度/存储周期

主存储器的基本组成
半导体元件及原理




SRAM和DRAM
Dynamic Random Access Memory,即动态RAM,使用栅极电容存储信息
Static Random Access Memory, 即静态RAM,使用双稳态触发器存储信息
DRAM用于主存,SRAM用于Cache
存储元件不同导致的特性差异


类型特点 | SRAM(静态RAM) | DRAM(动态RAM) |
---|---|---|
存储信息 | 触发器 | 电容 |
破坏性读出 | 非 | 是 |
读出后需要重写?(再生) | 不用 | 需要 |
运行速度 | 快 | 慢 |
集成度 | 低 | 高 |
发热量 | 大 | 小 |
存储成本 | 高 | 低 |
易失(断电后信息消失) | 易失 | 易失 |
需要”刷新” | 不需要 | 需要(分散,集中,异步),独立完成,不需要CPU |
送行列地址 | 同时送 | 分两次送(地址线复用技术) |
适用 | 常用于Cache | 常用于主存 |
现在的主存通常采用SDRAM芯片
DRAM的刷新
- 多久需要刷新一次
刷新周期: 一般为2ms
- 每次刷新多少存储单元
以行为单位,每次刷新一行存储单元
- 为什么要用行列地址
减少选通线数量
- 如何刷新
有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
- 在什么时刻刷新
假设DRAM内部结构排列成128*128的形式,读/写周期(存取周期/存储周期)0.5us,2ms共2ms/0.5us=4000个周期

DRAM的地址复用技术

只读存储器ROM
MROM(Mask Read-Only Memory): 掩模式只读存储器
厂家按照客户需求,在芯片生产过程中直接写入信息,之后任何人不可重写(只能读出)
可靠性高,灵活性差,生产周期长,只适合批量定制.
PROM(Programmable Read-Only Memory):可编程只读存储器
用户可用专门的PROM写入器写入信息,写一次之后就不可更改
EPROM(Erasable Programmable Read-Only Memory): 可擦除可编程只读存储器
允许用户写入信息,之后用某种方法擦除数据,可进行多次重写
UVEPROM(ultraviolet rays): 用紫外线照射8-20分钟,擦除所有信息
EEPROM(也常记为$E^2PROM$,第一个E是Electrically): 可用”电擦除”的方式,擦除特定的字
Flash Memory:闪速存储器(注: U盘, SD卡就是闪存)
在EEPROM的基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写
注意: 由于闪存需要先擦除再写入,因此闪存的”写”的速度要比”读”速度更慢
SSD(Solid State Drives): 固态硬盘
由控制单元+存储单元(Flash芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写.SSD速度快,功耗低,价格高.目前个人电脑上常用SSD取代传统的机械硬盘.
计算机内的重要ROM

主存储器与CPU的连接
单块存储芯片与CPU的连接








磁盘存储器
计算机的外存储器又称为辅助存储器,目前主要使用磁表面存储器.
所谓”磁表面存储器”,是指把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息.磁盘存储器,磁带存储器和磁鼓存储器均属于磁表面存储器.
优点:
- 存储容量大,价格低
- 记录介质可以重复使用
- 记录信息可以长期保存而不丢失,甚至可以脱机存档
- 非破坏性读出,读出时不需要再生
缺点:
- 存取速度慢
- 机械机构复杂
- 对工作环境要求较高
固态硬盘SSD


Cache的基本概念和原理

命中率H:CPU想要访问的信息已经在Cache中的比率
缺失率: M = 1 - H
Cache-主存系统的平均访问时间t为
先访问Cache,若Cache未命中再访问主存

- 如何区分Cache与主存的数据块对应关系 — Cache和主存的映射方式
- Cache很小, 主存很大. 如果Cache满了怎么办? — 替换算法
- CPU修改了Cache中的数据副本,如何确保主存中数据母本的一致性 — Cache写策略
Cache和主存的映射方式
- 全相联映射
- 直接映射
- 组相联映射



Cache替换算法
全相连映射
Cache完全满了才需要替换,需要在全局选择替换哪一块
直接映射
如果对应的位置非空,则必须替换,没有选择
组相连映射
分组内满了才需要替换,需要在分组内选择替换哪一块
算法
- 随机算法(RAND): 若Cache已满,则随机选择一块替换.

- 先进先出算法(FIFO)

- 近期最少使用(LRU): 时间局部性

- 最不经常使用(LFU)

Cache写策略
写命中
写回法: 当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时,才写回主存.减少了写回时间,但存在数据不一致的隐患
全写法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)
写不命中
写分配法
把主存的块调入Cache,在Cache中修改. 搭配写回法使用
非写分配法
只写入主存,不调入Cache.搭配全写法使用
页式存储器
一个进程在逻辑上被分为若干大小相等的页面,页面大小与块大小相同.每个页面可以离散地放入不同的主存块中.

逻辑地址(虚地址): 程序员视角看到的地址
物理地址(实地址): 实际在主存中的地址



虚拟存储器
页式虚拟存储器



段式虚拟存储器


段页式虚拟存储器
把程序按逻辑结构分段,每段再划分为固定大小的页.
指令格式
扩展操作码指令格式
指令寻址
数据寻址
偏移寻址
堆栈寻址
高级语言与机器级代码之间的对应
常用的x86汇编指令
AT&T格式和Intel格式
选择语句的机器级表示
循环语句的机器级表示
Call和ret指令
如何访问栈帧
如何切换栈帧
如何传递参数和返回值
CISC和RISC
CPU的功能和基本结构
指令周期的数据流
数据通路-单总线结构
数据通路-专用通路结构
硬布线控制器的设计
微程序控制器的基本原理
微指令的设计
微程序控制单元的设计
指令流水线的概念
指令流水线的影响因素和分类
五段式指令流水线
多处理器系统的基本概念
硬件多线程的基本概念
总线概述
总线简图

每个总线可能会包含多根数据线

可并行发送4bit的数据,同一时刻只能有一个部件发送数据,但是可以有多个部件接受数据
总线: 一组能为多个部件分时共享的公共信息传送路线.

为什么要使用总线?
更好地解决I/O设备与主机之间连接的灵活性的问题.
总线的特性
- 机械特性:尺寸,形状,管脚数, 排列顺序
- 电气特性: 传输方向和有效的电平范围
- 功能特性: 每根传输线的功能(地址,数据,控制)
- 时间特性: 信号的时序关系.
总线的分类
按数据传输格式
串行总线
- 优点: 只需要一根传输线,成本低廉,广泛应用于长距离传输;应用于计算机内部时,可以节省布线空间
- 缺点: 在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换的问题
并行总线
- 优点: 总线的逻辑时序比较简单,电路实现起来比较容易
- 缺点: 信号线数量多,占用更多的布线空间;远距离传输成本高昂,由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率.
按总线功能(连接部件)
- 片内总线
芯片内部的总线
CPU芯片内部寄存器与寄存器之间,寄存器与ALU之间的公共连接线
- 系统总线
计算机系统各个功能部件(CPU,主存,I/O接口)之间相互连接的总线
根据系统总线传输信息内容的不同,又可分为3类,数据总线,地址总线和控制总线
- 数据总线用来传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器字长,存储字长有关
- 地址总线哟哪里指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址,它是单向传输总线,地址总线的位数与主存地址空间的大小有关
- 控制总线传输的是控制信息,包括CPU送出的控制命令和主存(或外设)返回CPU的反馈信号
系统总线的结构
单总线结构
双总线结构
三总线结构
四总线结构
- 通信总线
按时序控制方式
- 同步总线
- 异步总线
总线的性能指标
总线的传输周期(总线周期)
一次总线操作所需的时间(包括申请阶段,寻址阶段,传输阶段和结束阶段),通常由若干个总线时钟周期构成.
总线的时钟周期
即机器的时钟周期.计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制.
现代计算机系统中的时钟周期也可能是由桥接器提供的.
总线的工作频率
总线上各种操作的频率,为总线周期的倒数
实际上指的是一秒内传送几次数据
总线的时钟频率
即机器的时钟频率,为时钟周期的倒数
实际上指的是一秒内有多少个时钟周期
总线宽度
又称为总线位宽,它是总线上一次能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线.
总线带宽
可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)表示
总线带宽是指总线本身所能达到的最高传输速率
在计算实际的有效数据传输率时,要用实际传输的数据量除以耗时
总线复用
总线复用是指一种信号线在不同的时间传输不同的信息.
可以使用较少的线传输更多的信息,从而节省了空间和成本.
信号线数
地址总线,数据总线,控制总线3种总线数的总和称为信号线数.
总线仲裁
将总线上所连接的各类设备按其对总线有无控制功能分为
- 主设备:获得总线控制权的设备
- 从设备: 被主设备访问的设备,只能响应从主设备发来的各种总线命令.
分类
- 集中式仲裁
- 链式查询方式
- 计时器定时查询方式
- 独立请求方式
- 分布式仲裁
集中仲裁方式
工作流程
- 主设备发出请求信号
- 若多个主设备同时要使用总线,则由总线控制器的判优,仲裁逻辑按照一定的优先级顺序确定哪个主设备能使用总线.
- 获得总线使用权的主设备开始传送数据
链式查询

优点: 链式查询方式优先级固定.只需要很少的几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易
缺点: 对硬件电路的故障敏感,并且优先级不能改变. 当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线.