体系复习
- 体系复习
- 硬布线控制器的优缺点
- 微指令寄存器μIR
- 微地址形成电路
- 微程序实例
- 微程序控制器的优缺点
- I/O接口的产生原因
- I/O接口的基本功能
- 统一编址的特点
- 串/并行通信的比较
- 差分信号传输技术
- 8255A
- XLAT指令
- 方式选择控制字
- 总线的分类
- 总线模块
- 总线逻辑电路示意图
- PCI Express
- 总线标准的两种产生途径
- 总线标准的内容
- AHB Advanced High-performance Bus
- HTRANS和HBURST
- MIPS CPU的异常处理
- 软件查询确定中断优先级
- 硬件中断优先级编码电路
- 当前PC机中的中断控制器
- 定时器 8253
- 计数方式
- 中断控制器和定时器在IBM PC/AT中的连接结构
- 南北桥架构的演变
- Pentium Pro的超标量流水线
- 转移开销
- 转移开销的构成
- 延迟转移(Delayed Branching)技术
- 转移预测(Branch Prediction)技术
- 转移条件判定的预测
- 转移目标地址的预测
- 进行BTB表项比较的时机
- Pentium BTB
- “过程返回”指令的特点
- 返回地址栈RAS
- 片上总线的缺点
- DDR4 bank grouping技术
- MSI
- ARM指令格式
- x86的理念
- SIMD
- MMX registers
- 饱和运算(Saturation Arithmetic)
- CPU vs GPU
体系复习
硬布线控制器的优缺点
优点:指令执行速度很快
缺点:控制逻辑的电路复杂,设计和验证难度大;扩充 和修改也很困难
微指令寄存器μIR
用来存放从CM中读 出的微指令
包括“微操作控制字 段”和“顺序控制字段”两个部分(如下址字段)
微地址形成电路
形成依据包括:
- 微地址给定部分
- 现行微指令中的顺序控制方式(如是否发生转移)
- 机器指令的有关代码(如操作码)
- 机器运行状态等
微程序实例
0 0001 表示不发生分支
1 xx10,最高位的1表 示要发生分支,xx为该指令的操作码
微程序控制器的优缺点
缺点:速度较慢
优点1:规整性 用程序的方法来产生和组织微命令信号
优点2:灵活性 可以较方便地增加和修改指令,只要增加或修改一部分微程序 即可
I/O接口的产生原因
- CPU和外设之间的速度差距
- 外设处理的信息格式和接口信号形式多样 ◦ 串行、并行 ◦ 数字、模拟 ◦ 标准逻辑电平、非标准逻辑电平
I/O接口的基本功能
- 数据缓冲 ◦ 解决CPU和外设之间的速度差距
- 提供联络信息 ◦ 协调与同步数据交换过程
- 信号与信息格式的转换 ◦ 模/数、数/模转换,串/并、并/串转换,电平转换
- 设备选择
- 中断管理
- 可编程功能
统一编址的特点
优点
- 可以用访向存储器的指令来访问I/O端口,访问存储器的指令功能比较齐全,可以实现直接对I/O端口内的数据进行处理 ◦
- 可以将CPU中的I/O操作与访问存储器操作统一设计为一套控制逻辑,简化内部结构,同时减少CPU的引脚数目
缺点
- 由于I/O端口占用了一部分存储器地址空间,因而使用户的存储地址空间相对减小
- 由于利用访问存储器的指令来进行I/O操作,指令的长度通常比单独I/O 指令要长,因而指令的执行时间也较长
串/并行通信的比较
串行通信:
- 传输线数量少,数据传输率较低
- 需要经过复杂的串/并转换
- 避免了信号线之间的串扰
RS-232(亦称COM接口)
并行:
传输线数量多 同频率下,数据传输率较高 无需串/并转换 存在信号线之间的串扰
IEEE-1284(亦称LPT接口)
差分信号传输技术
发送端在两根线上发送振幅相等、相位相反的信号(即差分信号) ◦ 信号接收端比较两个电压的差值,判断发送端发送的是逻辑0还是逻辑1
优点:◦ 抗干扰能力强 ◦ 时序定位准确
缺点:布线难度高
8255A
端口A:PA7~PA0;
端口B:PB7~PB0 ◦
均为8位的端口,但端口A的功能更为丰富 ◦ 可分别设定为输入端口或输出端口
端口C:PC7~PC0 ◦ 分成两个4位的端口,可分别设定为输入端口或输出端口
通常不用于普通的数据传送,而是作为端口A和端口B的“握手”信号
地址:A1、A0 (又称端口选择信号)
00:A
01:B
10:C
11 控制端口
XLAT指令
AL←(BX+AL)
AL= AL[BX]
方式选择控制字
写控制端口来设置方式选择控制字,
最高位为0,设置端口C按位置1/置0控制字
最高位为1,设置方式选择控制字
总线的分类
① 片总线,又称器件级总线 → “片上总线” ◦ 中央处理器芯片内部的总线
② 内总线,又称系统总线或板级总线 ◦ 计算机系统中各插件板之间信息传输的通路 ◦ 通常称为微型计算机总线的即指内总线
③ 外总线,又称通信总线 ◦ 计算机系统之间、或是计算机系统与其他系统(仪器、仪表、控制装置 等)之间信息传输的通路
总线模块
总线主模块(Bus Master) ◦ 具有总线控制能力 ◦ 示例:CPU、DMA控制器
总线从模块(Bus Slave) ◦ 能够对总线传输作出响应,但本身不具备总线控制能力 ◦ 示例:存储器
总线逻辑电路示意图
主模块给仲裁器申请,仲裁器授权
仲裁器控制 地址和控制、写数据
地址和控制、写数据连到各个从模块
各个从模块->读数据和响应->主模块
译码器控制读数据和响应,选中各个从模块
PCI Express
串行方式传输数据,依靠高频率获得高性能
全双工运作模式,同时进行数据发送和接收
点对点连接结构,而非传统的共享结构
采用差分信号传输
峰值带宽的计算公式:总线频率×2
PCIe链路可以由多个通道(Lane)组成 ◦ 目前PCIe链路可以支持1、2、4、8、12、16和32个Lane ◦ 即×1、×2、×4、×8、×12、×16和×32宽度的PCIe链路
总线标准的两种产生途径
事实标准 ◦ 计算机系统厂家所采用的一种总线,由于其性能优越,逐渐形 成一种被业界广泛支持和承认的事实总线标准
国际标准 ◦ 在国际标准组织或机构主持下开发和制定的总线标准,公布后 由厂家和用户使用
总线标准的内容
1、机械特性 • 规定模块插件的机械尺寸,总线插头、插座的规格及位置等
2、电气特性 • 规定总线信号的逻辑电平、噪声容限及负载能力等
3、功能特性 • 给出各总线信号的名称及功能定义
4、规程特性 对各总线信号的动作过程及时序关系进行说明
AHB Advanced High-performance Bus
先发控制和地址,再发数据
在第二个时钟上升沿,从模块采样HADDR和Control信号
在第二个时钟上升沿之后 ◦ 写传输:主模块驱动HWDATA信号 ◦ 读传输:从模块驱动HRDATA信号
在第三个时钟上升沿 ◦ 写传输:从模块采样HWDATA信号,完成传输 ◦ 读传输:主模块采样HRDATA信号,完成传输
未准备好,主模块所有信息扩展
时间重叠(overlap) ◦ 不同传输的地址和数据在时间上存在重叠 ◦ 充分利用地址总线和数据总线
HTRANS和HBURST
HTRANS:第一个NONSEQ,后面SEQ,空闲IDLE,BUSY主模块忙 不提供写数据,地址保持
HBURST:INCR4 +4
地址回卷的边界(假设数据宽度为4字节) ◦
WRAP4:在16的整数倍的地址处回卷(4×4) ◦
WRAP8:在32的整数倍的地址处回卷(4×8) ◦
WRAP16:在64的整数倍的地址处回卷(4×16)
ARM体系结构 中定义的“字” 为32位(4个字节),与x86体 系结构的定义不同
Halfword: 地址递增2
MIPS CPU的异常处理
在EPC中保存出现异常的指令的地址 ◦ 清空流水线中之后的指令 记录产生异常的原因 ◦ 转移到特定地址执行下一条指令
软件查询确定中断优先级
在中断服务程序的开始部分,需安排一段查询程序
查询的先后顺序体现不同设备的中断优先级 ◦ 先查的设备具有较高优先级 ◦ 后查的设备具有较低优先级
一般来说,总是先查询速度较快或是实时性较高的设备
硬件中断优先级编码电路
菊花链
当前PC机中的中断控制器
IO连南桥,IOAPIC连CPU APIC
定时器 8253
WR 输入CW控制信号后OUT端进入已知初始状态
N=4的后第一个CLK 下降沿开始计数,第二个CLK下降沿 -1,变0后OUT恢复
当GATE变低时,暂停计数
当GATE变高时,继续计数
计数方式
方式0:计数过程中的暂停和继续
方式2:分频器 每输入N个CLK脉冲,输出宽度为1个CLK周期的负脉冲,用于DRAM的定时刷新
- 计算计数初值 1.19318MHz/(500*128) =18
方式3:方波发生器 对称方波或基本对称的矩形波,产生定时中断
- 计算输出方波频率 1.19318MHz÷65536=18.2Hz
中断控制器和定时器在IBM PC/AT中的连接结构
Timer-OUT0(方式3)产生定时中断-连PIC
OUT1(方式2)-存储控制器-DRAM主存 定时刷新
OUT2(方式3)-连扬声器
南北桥架构的演变
主存控制器、PCIe先后移到CPU
Pentium Pro的超标量流水线
将复杂的x86指令 拆分成简单的微指 令(微操作,μop)
转移开销
- 排空流水线
- 从转移目标地址重新取指令
转移开销的构成
- “要不要转移?”:转移条件判定引起的开销
- “转移到哪里?”:生成目标地址引起的开销
延迟转移(Delayed Branching)技术
在编译过程中,通过编译器调度,在转移指令之后插入一条或几条适当 的指令
当被调度的指令执行完成后,转移指令的目标地址和判断条件都已计算 完成
转移预测(Branch Prediction)技术
- 转移条件判定的预测:预测“要不要转移”
- 转移目标地址的预测:预测“转移到哪里”
转移条件判定的预测
-
硬件固定预测不转移
◦ 在转移条件判定之前总是顺序地取下一条指令
优点:实现简单;
缺点:预测效果不佳
-
编译制导的预测 ◦
在转移指令的编码中增加1位,来通知硬件是预测跳转还是预测不跳转
优点:软件可根据指令类型和历史信息,对不同指令进行不同的预测
缺点:需要软件支持;需要修改ISA;不适应多变的执行环境
-
基于偏移的预测
相对偏移为负值则预测转移;否则,预测不转移
-
基于历史信息的预测(当前普遍采用)
使用1位/两位
对于循环程序,两种情况下可能需要重新计算转移地址 ① 首次进入循环时,预测错误:预测不发生转移,而实际发生转移 ② 退出循环时,预测错误:预测发生转移,而实际不发生转移
假设有一段循环10次的代码被反复调用
若使用1位历史信息,每轮调用时,2次预测错误 8次正确
若使用2位历史信息,每轮调用时,1次预测错误 9次正确(开头仍预测转移)
N位历史信息的转移预测器 继续提升,但很微弱
转移目标地址的预测
转移目标缓冲器 ◦ BTB: Branch Target Buffer
保存了此前若干次转移指令执行时的目标地址
进行BTB表项比较的时机
取指的同时(Xscale)
- 优点:在流水线较早阶段获得转移目标地址
- 缺点:每条指令均需访问BTB,功耗开销较大
译码完成后(Pentium)
- 优点:转移指令才需访问BTB,功耗开销较小
- 缺点:在流水线较晚阶段获得转移目标地址
预译码完成后,取指的同时(UltraSPARC III)
将上述两种方法的优点进行结合
Pentium BTB
11-01都预测发生转移,00预测不转移
若此指令实际发生转移,则按“预测错误”处理,在BTB中建立一个新 表项,设定“历史位”为11
“过程返回”指令的特点
优点
① 无需判定转移条件(均为无条件转移)
② 执行“过程返回”指令时,转移目标地址已经生成(早在执行“过程 调用”指令的时候生成)
③ “过程返回”指令的出现是可预期的(“过程调用”指令和“过程返 回”指令必须成对出现)
缺点
① 每次执行同一条“过程返回”指令时,转移目标地址往往不同
② 转移目标地址在存储器中,访问时间较长
③ 在流水线晚期才访问存储器获得转移目标地址
返回地址栈RAS
存放过程调用指令的下一条指令地址
片上总线的缺点
当主模块1长时间等待从模块2返回读数据时,造成了大量与此无关的传输无法发起
DDR4 bank grouping技术
- 将传统Bank(如16个)划分为多个独立组(如4组,每组4 Bank)。
- 组内Bank共享数据线,但组间可并行操作(类似多车道分流)
MSI
但是当处理器收到中断信号时,并不意味着PCI设备已经将数据写入存储器中,因为PCI设备只知道发送完毕的时间,不知道到达时间
-
PCI设备在提交中断请求之前,向DMA写的数据区域发出一个读请求,当PCI设备完成这个总线传输后,再向处理器提交中断请求 ◦
该方法硬件开销大,不容易实现,还将增加中断请求的延时
-
中断服务程序使用“读刷新”方法:中断服务程序在使用“PCI设备写入存储器”的这些数据之前,对该设备进行读操作
现实情况一般 不会出现问题
原因:从提交中断到CPU开始中断服务程序,所需时间较长,基本上可以保证此时数据已经写入存储器
但是这个驱动程序依然有Bug存在,一旦出错则难以定位
MSI中断:一种特殊中断
- 设备需要中断时,向MSI目标地址写入特定数据(包含中断向量号)。
- 内存控制器检测到该写入,将其转换为中断信号发送给CPU。
优点:
- 解决了多个设备共享中断信号的问题 • INTx引脚通常是几个设备共享
- 解决了每个功能设备只支持一个中断的问题
- “异步”中断的数据完整性问题 (MSI和数据写都是对内存的写,可以保证所有数据已经到达内存)
缺点:
- 要占用总线带宽
ARM指令格式
- 寄存器编号位域只有 4-bit,只能寻址16个 通用寄存器
- 功能位域的位置不 统一,给指令译码带来不便
- 所有的ARM指令都带有4-bit的条件码,都可以条件执行(如条件码为0000,EQ时才执行)
x86的理念
- 兼容性 ◦ 每款处理器包含该系列早期处理器的全部指令 ◦ 每款处理器包含该系列早期处理器的寄存器和操作方式
- 指令系统的增强和扩充 ◦ 对已有指令进行功能上的扩展和改进 ◦ 增加新指令
SIMD
S/M I:单个/多个指令
S/M D:单个/多个数据
MMX registers
MMX(MultiMedia eXtensions)是Intel在1996年(Pentium时代)引入的SIMD(单指令多数据)指令集扩展,主要用于加速多媒体处理(如音视频编解码、图像处理)。
与FPU共享寄存器,导致MMX和浮点运算不能混
饱和运算(Saturation Arithmetic)
1. 什么是饱和运算?
- 一种处理数值溢出的方式:当计算结果超出数据类型范围时,结果会被截断到该类型的最大值/最小值,而非像普通运算那样回绕(wrap around)。
2. MMX中的饱和运算
- 应用场景:图像/音频处理中,避免溢出导致的失真(如像素值超过255时直接保持255)。
- MMX指令示例:
PADDSB
(饱和加法,8-bit有符号):127 + 1 = 127
(而非-128
)PSUBUSB
(饱和减法,8-bit无符号):0 - 1 = 0
(而非255
)
CPU vs GPU
CPU
- 强大的低延迟的ALU
- 大cache
- 复杂的control
GPU
- 高延迟的ALU,需要线程数更多,流水线节数更多
- 小cache
- 简单的control