计组前半部分可看计组期中复习笔记。
存储系统
常用半导体存储器
- RAM
- SRAM (速度最快)
- DRAM → SDRAM → DDR SDRAM(DDR2、DDR3、DDR4、DDR5)
- ROM(虽然叫 Read-Only Memory,但是有的可以写)
- EPROM
- E²PROM → Flash(NOR、NAND)
相联存储器
其中任一存储项内容作为地址来存取的存储器。
用途:快速查找、地址变换
如:Cache 的地址映射表,页表中的快表(TB)、变换旁路缓冲器(TLB)
主存储器
存储芯片的连接方式 ⭐️
- 字扩展(字数的扩展,即地址的扩展)
- 扩展的芯片不能同时选中
- 位扩展(位数的扩展)
- 扩展的芯片可以同时选中
- 位数和字数同时扩展
用存储器芯片构成主存模块
- SRAM(主存与 CPU 速度协调)
- EPROM
- E²PROM
- SDRAM — 内存条
多体交叉存储器
- 多体并行访问
- 多体交叉访问(和流水线类似)
高速缓冲存储器
主存与 Cache 的地址映射 ⭐️
以块为单位。
-
全相联:主存的任意一块可以映像到 Cache 的任意一块。
- Cache 地址:| Cache 块号 | 块内地址 |
- 主存地址:| 主存块号 Tag | 块内地址 |
- 变换:Cache 块号 主存块号
-
直接映射:主存的每一块只能映像到 Cache 的一个特定块。
- Cache 地址:| 块号 | 块内地址 |
- 主存地址:| 区号 Tag | 区内块号 Index | 块内地址 |
- 无需变换:所访问的主存区号与目录表中记录的主存区号相比较
-
组相联:组间直接映射,组内全相联。
-
Cache 组数 = 区内块数
-
Cache 地址:| 组号 | 组内块号 | 块内地址 |
-
主存地址(两种划分方法,看题目要求选择,一般用第二种)
-
| 区号 | 区内组号 | 组内块号 | 块内地址 | -
| 区号 Tag | 区内块号 Index | 块内地址 |
-
相联存储器容量 = 8 × (Tag 位数 + 1 位有效位)
-
-
替换算法
直接映射无需替换算法(因为一次就替换全部)
- 随机替换算法(RAND)
- 先进先出替换算法(FIFO)
- 最不经常使用(最少使用)替换算法(LFU):计数器位数多,实现困难
- 近期最少使用(最久未用)替换算法(LRU)
- 最佳替换算法(OPT)
更新策略
- 写回法
- 写直达法(全写法)
Cache 性能测量
- 命中率
- :CPU 访问主存次数
- :CPU 访问命中 Cache 的次数
- 缺失率
- 平均访问时间
- :Cache 访问时间
- :数据块装入 Cache 的时间
- :主存访问时间,等于 ,而由于 ,。
- 推导:
- 加速比
- 可见随着命中率 的增大,加速比 提高。
- 成本
- :价格,1 为主存,2 为 Cache
- :容量,1 为主存,2 为 Cache
Cache 性能提升
- 多级 Cache 结构
- 降低 Cache 的缺失率
- 缺失类型
- 强制缺失:第一次访问
- 容量缺失:容量有限,不包含所需的所有主存块(增大 Cache 容量可减少)
- 冲突缺失:主要发生在直接映射
- 合理设计 Cache 块尺寸
- 合理增加 Cache 容量
- 合理设置相联度
- 硬件预取(可解决强制缺失)
- 编译优化
- 缺失类型
- 减少 Cache 开销
虚拟存储器
其实和 Cache 那块内容很相似。
- 地址映射:全相连
- 地址变换:MMU
- 页式虚拟存储器 ⭐️
- 多级页表
- 虚地址:| 虚页号 (V 位) | 页面偏移 (P 位) |
- 页表级数
- :页面偏移的位数
- :虚页号的位数
- :页表项编址单元位数
- 快慢表
- 快表:CPU 内部的 TLB
- 慢表:主存中的页表
- 实存空间、虚存空间、页面大小(决定页面偏移位数)
- 多级页表
外部存储器(辅助存储器)
磁表面存储原理及记录方式
磁盘存储器
- 磁盘结构
- 磁道(记录面的同心圆)
- 扇区(磁道的段)
- 柱面(相同序号的磁道构成的圆柱面)
- 数据应尽可能放在同一柱面或者相邻柱面,缩短寻道时间
- 技术指标 ⭐️
- 道密度:道 / mm
- 位密度:bit / mm(最靠近中心的磁道)
- 非格式化容量 = 位密度 × 内圈磁道周长 × 每个记录面磁道数 × 记录面数
- 格式化容量 = 每个扇区的字节数 × 每道道扇区数 × 每个记录面磁道数 × 记录面数
- 平均访问时间 = 平均寻道时间 + 平均等待时间 + 数据传输时间
- 平均等待时间:磁盘旋转一周所用时间的一半
- 转速:RPM(转 / 分钟)
- 数据传输速率 = 每个扇区的字节数 × 每道扇区数 × 磁盘转速
- 与计算机主机的连接
磁盘阵列 RAID
由独立的磁盘组成的具有冗余特性的阵列。
指令系统
存储模式
- 数据存储顺序
- 大端存储:最低有效字节存储在最高地址位置
- 小端存储:最低有效字节存储在最低地址位置
- 边界对齐
- 16 位字长的数据:起始地址为 2 的整数倍。
- 32 位字长的数据:起始地址为 4 的整数倍。
- 64 位字长的数据:起始地址为 8 的整数倍。
- 堆栈
- PUSH 操作:
- POP 操作:
- 冯诺伊曼结构和哈佛结构
- 前者数据和指令存一起,后者数据指令分开存
指令类型
- 数据传送类(MOV)
- 运算类
- 算术运算类
- 逻辑运算类
- 输入/输出类
- 统一编址的情况
- 独立编址的情况
- 程序控制类
- 转移指令
- 循环控制指令
- 过程调用和返回指令
- 程序自中断指令
- 系统控制类(通常是特权指令,虚存管理、任务切换、改变处理器工作模式)
指令设计
指令格式
二地址指令:| 操作码 | 地址码 1 | 地址码 2 |
还有一地址指令、零地址指令……
- 定长操作码
- 变长操作码(扩展操作码)
操作码设计
- 定长操作码
- 条指令,所有指令均用 位编码:。
- 变长操作码 ⭐️
- 原则:短码不能是长码的前缀
- 扩展操作码设计
- 平均码长:
- 设计
- 霍夫曼编码
- 特定规则
- 地址码数量
寻址方式
-
隐含寻址:操作数的位置默认,无需给出。
-
立即寻址:操作数在指令中。
-
寄存器寻址:操作数在指令指定的寄存器中。
-
直接寻址:操作数在主存中,主存地址在指令中。
-
寄存器间接寻址:操作数在主存中,主存地址在指令指定的寄存器中。
-
相对寻址:跳转目标地址
-
基址寻址:操作数在主存中,
指令系统结构的发展
复杂指令集计算机 CISC
- 用一条指令代替一串指令
- 增加新的指令
- 增强指令功能
- 设置功能复杂的指令
- 增加寻址方式增加数据表示方式
精简指令集计算机 RISC
-
指令系统简单
- 指令条数少、格式少、长度固定、功能简单
- 寻址方式少
- 采用硬布线控制逻辑(不用或少用微程序控制)
-
Load/Store结构
- 只有LOAD和STORE指令可以访问存储器
- 寄存器多
- 寄存器窗口技术
-
十分重视提高流水线的执行效率
- 大部分指令可以单周期执行完成
- 延迟转移技术
- 指令流调整技术
-
十分强调优化编译技术的作用
中央处理器(CPU)
CPU 的内部结构
微操作与微命令
微操作:CPU 的原子操作,以含有一个寄存器的传递操作为标志。如:
微命令:控制微操作完成的控制信号,由控制器产生。如:
微操作流程
- 时序信号产生
- 指令周期:完成一条指令
- CPU 周期:完成一个子周期
- 节拍周期:完成一个微操作
- 取址周期
- 一个简单的取址周期可由 3 个步骤、4 个微操作组成
- T1:
- T2:
- T3: ( 为指令长度 byte)
- 一个简单的取址周期可由 3 个步骤、4 个微操作组成
微程序控制器设计
微指令
微指令:一个节拍内出现的一组微操作进行描述的语句。
微程序 / 固件:一个微指令序列。
微指令设计
- 微指令地址的生成
- 两地址方式(断定方式)
- 单地址方式(计数方式,增量方式)
- 可变格式
- 编码
- 水平型:多个微操作同时发生
- 垂直型:类似于机器指令
- 相容性:可在同一时间有效的控制信号。
- 互斥性:不能在同一时间有效的控制信号。
微程序设计 ⭐️
看例题。
CPU 性能测量与提高
CPU 性能测量 ⭐️
-
CPU 时间
- :CPU 时钟周期数
- :时钟周期时间
- :时钟频率
-
CPI:每条指令执行所用时钟数。
- :指令数
-
IPC:每时钟周期执行的指令数
-
MIPS:每秒钟执行的百万指令数
-
:执行时间
-
-
-
FLOPS:每秒钟完成的浮点运算次数
-
:浮点运算次数
-
-
度量单位:MFLOPS、GFLOPS、TFLOPS…
-
提高 CPU 速度的策略
- 多核技术
- 多线程技术
流水线技术与指令级并行
流水线处理的概念
若将一重复的处理过程分解为若干子过程,每个子过程都可在专用设备构成的流水线功能段上实现,并可与其它子过程同时执行,这种技术称为流水技术。
流水线的类型
- 按流水线位于计算机系统的层次划分
- 系统级流水线 / 宏流水线(多计算机系统串行)
- 处理器级流水线
- 部件级流水线
- 按流水线功能的强弱划分
- 单功能流水线
- 多功能流水线
- 静态流水线
- 动态流水线
- 按流水线是否有反馈回路划分
- 线性流水线
- 非线性流水线(需要流水线调度)
- 按流水线输出端任务流出顺序与输入端任务流入顺序是否相同划分
- 顺序流动流水线(入出顺序相同)
- 异步流动流水线(入出顺序不同)
- 无序流水线
- 错序流水线
- 乱序流水线
- 按流水线一次处理对象的数量划分
- 标量流水线
- 超标量流水线
- 向量流水线
- 超长指令字流水线
浮点运算流水线
浮点加减 / 乘除流水线
- 阶码比较
- 尾数对齐
- 尾数加 / 减
- 规格化
指令流水线
指令流水线策略
- 增加指令流水线深度
- 局限性
- 指令执行过程的细化有限度
- 随着深度增加,缓冲器增多,延迟加大,性能提高受阻碍
- 局限性
- 增加指令流水线条数
RISC-V 基本指令流水线
- 设计指令获取、执行的硬件逻辑电路
- 对硬件逻辑分段
- 尽量使每段处理功能相对独立,处理时间基本均衡。
- 保证当前指令在执行期间,指令流和数据流始终一个流向。
- 分段结果己是最细的划分:每段中仅有一个用于指令处理的功能部件。
- 段间加入流水线寄存器
- 设计流水线控制器
流水线性能度量 ⭐️
时空图
吞吐率
-
单位时间内,流水线所完成的任务数或输出结果的数量。
-
最大吞吐率 :流水线在达到稳定状态后所得到的吞吐率。
- 各段运行时间相等:
- 各段运行时间不等:
-
实际吞吐率 :流水线 段组成,完成 个的任务吞吐率为实际吞吐率。
- 段流水线,各段运行时间相等,为一个时钟周期
- 完成 个任务所用时间:
- 实际吞吐率:
- 各段运行时间不等
- 完成 个任务所用时间:
- 实际吞吐率:
- 段流水线,各段运行时间相等,为一个时钟周期
-
使用 表示:
- 单流水线计算机系统:由于 ,故
加速比
加速比 定义为等功能非流水线执行时间 与流水线执行时间 之比。
- 段流水线, 个任务,若每段运行时间均为 。
- 可见,增大指令流水线的级数和送入流水线的指令数均可提高运行速度。
效率
效率即流水线的设备利用率。流水线有通过(填充)时间和排空时间,效率 。
各段运行时间相等
个功能段, 个任务,各段运行时间为 ,各段效率 相等,即
总效率
可见当 时,。
各段运行时间不等
指令流水线的性能提高
结构相关 / 冒险
- 部分功能单元没有充分流水
- 解决:将流水线设计得更合理
- 资源冲突:两个以上需要同时使用硬件资源
- 解决
- 增加资源副本
- 改变资源以能够并发使用
- 主存访问冲突:哈佛结构(指令和数据分离)
- 两个加法器:ALU、地址加法器
- 延迟(或暂停)冲突段 / 在冲突段插入流水线气泡
- 解决
数据相关 / 冒险
- 操作数未有效生成,就被作为后续指令的操作数
- 类型
- 先写后读(RAW,Read After Write)
- 先读后写(WAR)
- 写后写(WAW)
- 解决
- 采用转发/直通/相关直接通路技术
- 增加专用硬件(推后法)
- 利用编译器
- 对寄存器读写做特别设计(RISC-V)
控制相关 / 冒险
- 对条件分支指令的处理方法
- 冻结流水线:检测到分支指令就清除紧随分支并插入气泡。
- 静态分支预测
- 不会发生
- 总会发生
- 编译器预测
- 测试法
- 动态分支预测
- 分支历史表(分支预测缓存)
- 分支历史移位寄存器
- 延迟分支:在转移指令之后插入没有数据相关或控制相关的有效指令
- 带转移开销的流水线性能
- 控制相关对流水线性能造成的损失远比数据相关要大得多。
提高指令级并行的技术
-
乱序执行
-
推测执行
多发射处理器
-
超标量
-
超长指令字处理器(VLIW)
总线与输入 / 输出系统
总线类型
- 按连接层次
- 片内总线
- 系统总线
- 通信总线
- 按数据位数
- 并行总线
- 串行总线
- 按用法
- 专用总线
- 公用(共享)总线
总线的信息传输方式
-
过程
-
传输请求
-
总线仲裁
-
部件 / 设备寻址
-
数据传输
-
并行传送方式
-
串行传送方式
-
分时传送方式
-
消息传送方式
-
-
总线释放
-
-
通信方式
- 同步通信方式
- 速度快,逻辑简单
- 缺点:时钟速率受慢速设备限制
- 异步通信方式
- 无时钟信号线
- 使用握手协议
- 同步通信方式
总线仲裁
- 集中式仲裁
- 链式查询方式(菊花链):离总线控制器越近优先级越高
- 计数器定时查询方式(轮询)
- 独立请求方式
菊花链 | 轮询 | 独立请求 | |
---|---|---|---|
线数 | |||
可扩充性 | 好 | 差 | 差 |
可靠性 | 低 | 高 | 高 |
优先级 | 固定 | 可变 | 可变 |
总线分配速度 | 慢 | 慢 | 快 |
- 分布式仲裁
典型的总线
- 系统总线(内总线)
- ISA 总线
- PCI 总线
- PCIe 总线
- 通信总线(外总线)
- RS-232C
- USB
- SCSI
- SAS
- ATA
- SATA
输入输出技术
- 程序查询方式
- 中断方式
- 直接存储器存取(DMA)
- I/O 通道
并行体系结构
-
SISD: 单指令流单数据流(串行计算机)
-
SIMD: 单指令流多数据流
- 阵列处理机
- 向量处理机
-
MIMD: 多指令流多数据流
- 多处理器系统(共享内存)
- UMA:每个处理器 / 内核访问内存的时间一样
- NUMA:……不一样
- 多计算机系统(不共享内存,通信采用消息机制)
- MPP:大规模并行处理机(高性能)
- Cluster:集群(性价比
- 网格(客户端 — 服务器,计算任务只在客户端节点进行,服务器进行任务分发和结果汇总)
- 多处理器系统(共享内存)