第十章-指令集:特征和功能
机器指令特征
机器指令:CPU的操作由它所执行的指令确定。
机器指令要素
- 操作码
- 源操作数引用
- 结果操作数引用
- 下一条指令引用
源操作数和结果操作数可能位于下面4个范围:
- 主存或者虚存
- 处理器寄存器
- 立即数
- I/O设备
指令表达
指令类型
- 数据处理:算术和逻辑指令
- 数据存储:存储器指令
- 数据传达:I/O指令
- 控制:测试和分支指令
地址数目(略)
指令集设计(重点)
设计的出发点主要考虑:
- 操作指令表:提供多少和什么样的操作,操作何等复杂
- 数据类型:对哪几种数据类型完成操作
- 指令格式:指令的长度、地址数目、各个字段的大小
- 寄存器
- 寻址
操作数类型
- 地址
- 数值
- 字符
- 逻辑数据
操作类型
主要包括:数据传送、算术、逻辑、转换、输入/输出、系统控制、控制转移
数据传送:将存储器、寄存器或者栈等里的数据转移至另一存储器、寄存器、栈。
算术:加减乘除
逻辑:位操作(布尔运算),逻辑移位、算术移位、旋转、循环移位。
转换:改变数据格式或者对数据格式进行操作。
输入/输出(略)
系统控制:通常为特权指令
控制转移:分支指令、跳步指令、过程调用指令。
MMX
一组用于多媒体任务的优化指令,一共有57条新指令(新指令的特点是引入了饱和算术)。
能够加速并行操作!
MMX主要是为多媒体程序设计而设置的,定义了三种新数据类型:
- 压缩字节型
- 压缩字型
- 压缩双字型
第十一章-指令集:寻址方式和指令格式
寻址方式
为什么
希望能大范围地访问主存或者虚拟存储器,因此需要多种寻址方式。
类型
表格汇总
指令格式
指令格式:指令格式通过它的各个构成部分来定义指令的位安排,大多数的指令集使用不止一种指令格式。一个指令格式必须包括一个操作码,以及隐式或显式的、零个或多个操作数。指令格式必须隐式或显式地为每一个操作数指定其寻址空间。
指令长度
即指令格式的长度。决定了机器指令的丰富性和灵活程度。
指令长度的影响因素多种多样,但主要在指令的强有力性和存储时节省空间之间进行权衡考虑。
位的分配
对于一个给定的指令长度,显然要在操作码数目和寻址能力之间进行权衡
使用寻址位需要考虑:寻址方式的数目,操作数数目,寄存器与存储器比较,寄存器组的数目,地址范围,地址粒度。
变长指令
即不同长度的各种指令格式。
优点:
- 提供大的操作码清单
- 操作码拥有不同长度使得寻址方式更加灵活
- 使用变长指令,能有效和紧凑地提供众多变化
缺点:
- 增加了CPU的复杂程度
- 没有消除所有指令相对于机器字长,其长度整齐的期望。常见的解决办法位取至少等于最长指令长度的几个字节/字。
第十二章-CPU结构和功能
CPU概述
CPU必须完成以下任务:
- 取指令
- 解释指令
- 取数据
- 处理数据
- 写数据
CPU的内部结构:
寄存器组成
用户可见寄存器
为下面寄存器:
- 通用寄存器
- 数据寄存器
- 地址寄存器
- 条件码
控制和状态的寄存器(重点)
- 程序计数器(PC):存有待取指令的地址
- 指令寄存器(IR):存有最近取来的指令
- 存储器地址寄存器(MAR):存有存储器位置的地址
- 存储器缓冲寄存器(MBR):存有将被写入存储器的数据字或最近从存储器读出的字。
PSW:程序状态字,一般含有条件吗加上其他状态信息。
指令周期
- 取指
- 间接
- 执行
- 中断
各周期的具体操作
这个后面微指令会详细展开,简要了解即可。
看书或者PPT,搞懂下面几幅图片:
指令流水线
是什么
简要了解即可,后面RISC的流水线策略会详细讲解。
指令处理可以得到以下分解:
- 取指令(FI)
- 译码指令(DI)
- 计算操作数(CO)
- 取操作数(FO)
- 执行指令(EI)
- 写操作数(WO)
时序图如下:
如果考虑到分支的话:
为什么不是流水线阶段越多越好?
1.流水线的每一个阶段都需要开销。
2.流水线的阶段越多,处理逻辑负担越大。
流水线性能
学会计算加速比和吞吐量。
流水线冒险
- 资源冒险
- 数据冒险:真相关,反相关,输出相关。
- 控制冒险
处理分支指令
- 多个指令流
- 预取分支目标
- 循环缓冲器
- 分支预测:预测绝发生/不发生,依操作码预测,发生/不发生切换,转移历史表
- 延迟分支
第十三章-精简指令集计算机
指令执行特征
了解高级语言(HHL)与指令集之间的关系。
操作,操作数,过程调用三个方面进行了阐述,大概看看就好。
大寄存器组的方案使用
是什么?
还可以做成循环的寄存器窗口
全局变量
搞清楚全局变量存在哪里? -- 全局寄存器
搞清楚全局寄存器的存储空间不够了,该怎么办? -- 编译器决定哪些指派到全局寄存器,哪些放到内存中。
与高速缓存的对比
基于编译器的寄存器优化
掌握图着色技术即可
RISC体系结构
CISC的优缺点
看一遍了解即可
RISC体系结构特征
掌握以下特征即可:
- 每机器周期一条机器指令
- 大多数操作是寄存器到寄存器的
- 使用简单的寻址方式
- 使用简单的指令格式
RISC vs CISC
简单看一遍即可。
RISC流水线
使用规整指令的流水线技术
流水线优化
- 延迟分支:加入NOOP
- 循环展开:把增大循环步长,拓展循环语句内的操作
第十四章-指令级并行性和超标量处理器
概述
超标量(superscalar):在不同流水线中独立执行指令的能力,允许指令以不同于原程序的顺序的次序来执行。
超标量与超级流水线对比
限制
指令级并行性是指程序指令能并行执行的长度。
其包含5种限制(注意与流水线的限制区分):
- 真实数据相关性:写后读
- 过程相关性:分支指令,变长指令
- 资源相关性:同一资源
- 输出相关性:写后写
- 反相关性:读后写
设计策略
指令发射策略
- 按序发射按序完成
- 按序发射乱序完成
- 乱序发射乱序完成:将译码阶段和执行阶段解耦,引入发射窗口
寄存器重命名
使用带下标的寄存器,避免了反相关性和输出相关性。
分支预测
前面讲过
超标量执行
简单描述一下:
寄存器重命名---发射窗口+分支预测---执行---指令重排---提交
第十五章-控制器操作
微操作
微操作就是CPU的基本的或者原子的操作。
用一下之前的图片说明不同周期的微操作顺序。
要自己看懂缩写是什么,然后括号的含义也要搞明白。再搞明白地址,高位,低位的概念....
取指周期
t1:(PC)->MAR
t2:内存->MBR
t3:(MBR)->IR
(PC)+1->PC
间接周期
t1:(IR(地址))->MAR
t2:内存->MBR
t3:(MBR(地址))->IR(地址)
中断周期
t1:(PC)->MBR
t2:(MBR)->内存
t3:保存地址->MAR
子程序地址->PC
执行周期
考虑ADD R1,X
操作如下:
t1:(IR(地址))->MAR
t2:内存->MBR
t3:(MBR) + (R1) -> R1
ISZ X
操作如下:
t1:(IR(地址))->MAR
t2:内存->MBR
t3:(MBR) + 1 -> MBR
t4:(MBR) -> 内存
IF (MBR)==0 (PC)+1->PC
其他的不再给出,只要了解各个寄存器和部件的应用即可。
指令周期
处理器控制
看懂这两副图和作业题即可。
硬布线实现
第十六章-微程序控制
微程序式控制的基本概念
微指令:每行描述一个时间内出现的一组微操作。
微程序/固件:微指令序列。介于硬件与软件之间的。
微指令分类
- 水平微指令:宽度较宽,不需要译码,对于CPU内部控制线和系统总线控制线。并行度高。
- 垂直微指令:宽度较窄,n个控制信号编码成logn位,需要译码才能发出。并行度低。
微程序式控制器的组成
这里是垂直微指令的设计!!
微指令排序
一般而言,接下来执行的地址有三种情况:
- 有指令寄存器确定
- 下一顺序地址
- 转移
定序技术有双地址字段,单地址字段,可变格式。
双地址字段
单地址字段:省了一个地址
一般而言,下一个地址的选择项为:
- 地址字段
- 指令寄存器代码
- 下一顺序地址
可变格式
第十七章-并行处理
对称多处理机系统SMP
如下特征:
- 寻址:必须能区别总线上的各个模块,以确定数据的源和目标
- 仲裁:任何I/O模块都能临时行使主控器功能。因此需要提供一种机制来对总线控制的竞争请求进行仲裁。
- 分时复用:当一个模块正在控制总线时,其他模块都是被锁住的。而且如果需要的话,应该能挂起它的操作直到当前的总线访问被完成。
Cache一致性问题及解决方案
软件解决方案
硬件解决方案
- 目录协议
- 监听协议
MESI协议
- M(modified):修改态
- E(exclusive):专有态
- S(shared):共享态
- I(invalid):无效态
集群系统
集群:一组完整的计算机相互连接,作为同一的计算资源一起工作。
四个好处:
- 绝对的可拓展性
- 增量的可拓展性
- 高可用性
- 优异的价格/性能比
配置
- 被动式备份
- 主动式辅助
- ...
非均匀存储访问系统NUMA
第十八章-多核计算机
硬件性能问题
增加并行
- 流水线
- 超标量
- 并行多线程
功耗
软件性能问题
多核软件
加速比,还是阿姆达尔定律。
常见多核组织结构