CPU
机器指令
指令的一般格式:
|操作码字段|地址码字段|
指令的格式
- 操作码
- 长度固定:用于指令字长较长的情况,RISC eg:IBM 370
- 长度可变:操作码分散在指令字的不同字段中
- 地址码
- 四地址 (4次访存)
- A1 第一操作数地址 A2 第二操作数地址 A3 结果的地址 A4 下一条指令地址 (A1)OP(A2)->A3
- 寻址范围 2^6=64次
- 操作码固定为8位
- 三地址 (4次访存)
- PC代替A4 :(A1)OP(A2)->A3
- 寻址范围 2^8=256
- 二地址 (4次访存)
- A3用A1或A2代替: (A1)OP(A2)->A1或(A1)OP(A2)->A2
- 寻址范围 2^12=4096=4K
- 一地址(2次访存)
- ACC(累加器)代替A1(或A2) (ACC)OP(A1)->ACC
- 寻址范围:2^24=16777216=16M
- 零地址
- 无地址码
- 四地址 (4次访存)
- 寻址方式
扩展操作码技术
- 操作码的位数随地址数的减少而增加
- 三地址指令操作码每减少一种最多可多构成2^4种二地址指令
- 二地址指令操作码每减少一种最多可多构成2^4种一地址指令
指令的字长
-
固定字长、可变字长
-
指令字长取决于
- 操作码的长度
- 操作数地址的长度
- 操作数地址的个数
-
指令字长固定
- 指令字长=存储字长
-
指令字长可变
- 按字节的倍数变化
-
当用一些硬件资源代替指令字中的地址码字段后
- 可扩大指令的寻址范围
- 可缩短指令字长
- 可减少访存次数
-
当指令的地址字段为寄存器时
- 三地址 OP R1,R2,R3
- 二地址 OP R1,R2
- 一地址 OP R1
- 可缩短指令字长
- 指令执行阶段不访存
操作数类型和操作种类
操作数类型
- 地址 无符号整数
- 数字 定点数、浮点数、十进制数
- 字符 ASCII
- 逻辑数 逻辑运算
数据在存储器中的存放方式:
字节编址,数据在存储器中的存放方式(存储字长64位,机器字长32位)
- 从任意位置开始存储
- 优点:不浪费存储资源
- 缺点:读写控制比较复杂
- 从一个存储字的起始位置开始访问
- 优点:在一个周期内均可完成,读写控制简单
- 缺点:浪费存储资源
- 边界对准方式:从地址的整数倍位置开始访问
- 前两种方法的折中
- 在一个周期内均可完成,空间浪费也不太严重
操作类型
- 数据传送
源 | 寄存器 | 寄存器 | 存储器 | 存储器 |
目的 | 寄存器 | 存储器 | 寄存器 | 存储器 |
eg: | MOVE | STORE、MOVE、PUSH | LOAD、MOVE、POP | MOVE |
-
算术逻辑操作:加减乘除、增1、减1、求补…
-
移位操作
- 算术移位
- 逻辑移位
- 循环移位(带进位和不带进位)
- 转移
- 无条件转移 JMP
- 条件转移
- 结果为零 转 (Z=1)JZ
- 结果溢出 转 (O=1)JO
- 结果有进位 转 (C=1)JC
- 跳过一条指令 SKP
- 调用和返回
- 陷阱(Trap)与陷阱指令 意外事故的中断
- 出现事故时,由CPU自动产生并执行(隐指令)
- 设置共用户使用的陷阱指令
- 输入输出
寻址方式
确定本条指令的操作数地址以及下一条要执行指令的指令地址
- 指令寻址
- 顺序寻址 (PC)+1->PC
- 跳跃寻址 由转移指令指出
|操作码|寻址特征|形式地址|
- 形式地址:指令字中的地址
- 有效地址:操作数的真实地址
- 约定 指令字长=存储字长=机器字长
- 数据寻址
-
立即寻址:形式地址A就是操作数
-
直接寻址:EA=A 有效地址等于形式地址(有效地址由形式地址直接给出)
-
隐含寻址:操作数地址隐含在操作码中
-
间接寻址:EA=(A) 有效地址由形式地址间接提供
-
寄存器寻址:EA=Ri 有效地址即为寄存器编号
-
寄存器间接寻址:EA=(Ri) 有效地址在寄存器中
- 执行阶段需要缓存
- 执行阶段需要缓存
-
基址寻址
-
采用专用寄存器作基址寄存器:EA=(BR)+1 BR为基址寄存器
-
采用通用寄存器作基址寄存器
-
-
变址寻址:EA=(IX)+A IX为变址寄存器(专用),通用寄存器也可以作为变址寄存器
-
相对寻址:EA=(PC)+A A是相对于当前指令的位移量(可正可负,补码)
-
堆栈寻址 先进后出(一个出入口)栈顶地址由SP指出
-
硬堆栈 多个寄存器
-
软堆栈 指定的存储空间
-
SP 的修改与主存编址方法有关
- 按字编址:进栈 (SP)-1->SP,出栈(SP)+1->SP
- 按字节编址:
- 存储字长16位:进栈 (SP)-2->SP,出栈(SP)+2->SP
- 存储字长32位:进栈 (SP)-4->SP,出栈(SP)+4->SP
-
RISC技术与CISC技术
RISC特征
- 选用使用频度较高的一些,复杂指令的功能由简单指令来组合
- 指令长度固定、指令格式种类少、寻址方式少
- 只有LOAD/STORE指令访存
- CPU中有多个通用寄存器
- 采用流水技术 一个时钟周期内完成一条指令
- 采用组合逻辑实现控制器
CISC特征
- 系统指令复杂庞大,各种指令使用频度相差大
- 指令长度不固定、指令格式种类多、寻址方式多
- 访存指令不受限制
- CPU中设有专用寄存器
- 大多数指令需要多个时钟周期执行完毕
- 采用微程序控制器
RISC与CISC比较
- RISC更能充分利用VLSI芯片的面积
- RISC更能提高计算机运算速度
- 指令数、指令格式、寻址方式少,通用寄存器多,采用组合逻辑,便于实现指令流水
- RISC便于设计,可降低成本,提高可靠性
- RISC不易实现指令系统兼容
CPU的结果和功能
CPU的结构
- 控制器的功能:指令控制、操作控制、时间控制、处理中断
- 取指令
- 分析指令
- 执行指令,发出各种操作命令
- 控制程序输入以及结果输出
- 总线管理(控制权,使用权)
- 处理异常情况和特殊请求
- 运算器的功能:数据加工
- 实现算术运算和逻辑运算
CPU的结构框图
CPU中的寄存器
- 用户可见寄存器
- 通用寄存器
- 存放操作数
- 可作某种寻址方式所需的专用寄存器
- 数据寄存器
- 存放操作数(满足各种数据类型)
- 两个寄存器拼接存放双倍字长数据
- 地址寄存器
- 存放地址,七位数应满足最大的地址范围
- 用于特殊的寻址方式 如段基址、栈指针
- 条件吗寄存器
- 存放条件码,可做程序分支的依据
- 如正、负、零、溢出、进位等
- 通用寄存器
- 控制和状态寄存器
- 控制寄存器 PC->MAR(主存地址寄存器)->M(主存储器)->MDR(主存数据寄存器)->IR,其中MAR、MDR、IR用户不可见寄存器
- 状态寄存器
- 状态寄存器 存放条件码
- PSW寄存器 存放程序状态字
CPU中的控制单元CU和终端系统
- CU 产生全部指令的微操作命令序列
- 组合逻辑设计 硬连线逻辑
- 微程序设计 存储逻辑
- 中断系统
CPU中的ALU
指令周期:取出并执行一条指令所需的全部时间
完成一条指令需要的操作:
- 取值、分析 取指周期
- 执行 执行周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VYMzpqFB-1634723231657)(assets/指令周期.jpg)]
每条指令的指令周期不同
指令周期流程
CPU工作周期的标志
- CPU访存的四种性质
- 取指令 -取值周期
- 取地址 -间址周期
- 存取操作数或结果 -执行周期
- 存程序断点 -中断周期
指令流水
流水线性能指标:
-
吞吐率:单位时间内流水线所完成指令或输出结果的数量——最大吞吐量、实际吞吐率为重要指标
-
加速比:m段的流水线的速度与等功能的非流水线的速度之比(即采用流水线的时间除以没有采用流水线的时间)
-
效率:流水线中各功能段的利用率,由于流水线有建立时间和排空时间,因此各功能段的设备不可能一直在工作
流水线的多发技术
- 超标量技术:每个时钟周期内可并发多条独立指令
- 不能调整指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来
- 超流水线技术(MAC采用):在一个时钟周期内再分段,在一个是时钟周期内一个功能部件使用多次
- 不在调整指令的执行顺序,靠编译程序解决优化问题
- 超长指令字技术 减少取指令时间
- 由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字
流水线结构
-
指令流水线结构
-
运算流水线
提高机器速度
- 提高访存速度
- 采用高速芯片、Cache、多体并行方式
- 提高I/O和主机之间的传送速度
- 采用中断方式、DMA控制器、通道方式、I/O处理机方式、多总线方式
- 提高运算器速度
- 高速芯片、改进算法、快速进位链
- 提高整机处理能力
- 采用高速器件、改进系统结构,开发系统的并行性
系统的并行性
-
并行:
- 并发性:两个或两个以上事件在同一时间段发生
- 同时性:两个或两个以上事件在同一时间发生
-
并行性的等级
- 过程级(程序、进程) 粗粒度由软件实现
- 指令级(指令之间、内部)细粒度由硬件实现
-
指令流水原理
-
指令的串行执行
-
指令的二级流水
-
-
影响指令流水效率加倍的因素
中断系统
引起中断的因素
- 人为设置的中断 eg转管指令
- 程序性事故 溢出、操作码不能识别、除法非法
- 硬件故障
- I/O设备输入输出时需要中断
- 外部事件 用键盘中断现行程序
中断请求标记和中断判优逻辑
- 中断请求标记 INTR
- 一个请求源 一个INTR中断请求标记触发器
- 多个INTR 组成中断请求标记寄存器
- INTR 分散在各个中断源的接口电路中
- INTR 集中在CPU的中断系统内
- 中断判优逻辑
-
硬件实现(排队器
- 1、分散在各个中断源的接口电路中 为链式排队器
- 2、集中在CPU内
-
软件实现(程序查询
-
中断响应
- 响应中断请求的条件
- 允许中断触发器 EINT=1
- 响应中断的时间
- 指令执行周期结束时刻由CPU发查询信号
中断隐指令(由计算机硬件完成)
- 保护程序断点
- 断点存于特定地址(0号地址)内/断点进栈
- 寻找服务程序入口地址
- 向量地址->PC(硬件向量法)
- 中断识别程序入口地址M->PC(软件查询法)
- 硬件关中断
- 使中断允许触发器的值置成0
保护现场和恢复现场
- 保护现场
- 保护断点(中断隐指令来执行:保存断点、形成中断服务程序的入口地址、硬件关中断)
- 保护寄存器内容
- 恢复现场(中断服务程序完成)
- 使用出栈指令
中断服务程序
- 保护现场 PUSH
- 其他服务程序
- 恢复现场 POP
- 中断返回 IRET
多重中断
- 实现条件
- 提前设置开中断指令
- 优先级别高的中断源才有权中断优先级别低的中断源
中断屏蔽技术
- 屏蔽触发器
- 屏蔽字
屏蔽技术可改变处理优先等级
- 响应优先级 不可改变
- 处理优先级 可通过重新设置屏蔽字改变
多重中断的断电保护
- 断电进栈 中断隐指令完成
- 断点存入"0"地址 中断隐指令完成 (三次中断,三个断点都存入"0"地址)
- 中断周期0->MAR 命令存储器写操作
- PC->MDR(断点->MDR)
- (MDR)->存入存储器