2-2-1 ISA
“数据”和“指令”是否混合使⽤的争论导致两种常见的计算机体系结构
哈弗结构是指令和数据分开存储(单周期数据通路和流水线用的是哈弗结构)
冯诺伊曼结构式指令和数据一起存储(多周期数据通路用的是冯诺依曼结构)
- Central Processing Unit 中央处理单元 (CPU): 取指、 解释和执⾏⼀组指定的操作, 称为指令。
- Memory 内存: 存储N个字, 每个W位, 其中W是⼀个固定的架构参数, N可以扩展以满⾜需要。
- Input/Output I/O: 与外界通信的设备。
寄存器一般是在CPU中,存取快速
冯诺伊曼体系结构
存储程序
- 指令在内存中以线性阵列存储
- 指令和数据统⼀编址
指令顺序执⾏
- ⼀次执⾏⼀条指令 (取指, 执⾏, 完成)
- 程序计数器PC(指令指针) 指向当前指令
- 程序计数器顺序递增, 除非遇到转移指令
程序计数器/PC:下⼀条指令执行地址
冯诺依曼结构和哈弗结构不同
冯诺依曼架构模型
- 指令和数据存于统⼀的存储器中(“main memory”) 即内存不仅保存有数据,还有组成程序的指令
- 所有指令顺序执⾏(或⾄少对程序员来说是顺序执⾏的)
指令集系统结构(Instruction Set Architecture, ISA)
概念
- 指令(Instruction): 计算机硬件可以执⾏的表示⼀种基本操作的⼆进制代码
- 指令集(Instruction Set): 计算机中所有指令的集合
- 指令集系统结构(InstructionSet Architecture, ISA):计算机硬件与底层软件之间的界⾯, 是机器语⾔程序员所需了解的计算机的属性, 如: 指令集、数据类型及表示、 寄存器组织、存储器的组织和寻址⽅式、 I/O结构、 中断机制、 保护机制等
指令系统概述
机器指令的要素
- 操作码(Operation Code): 指明进⾏的何种操作(如 ADD, MOV, I/O)
- 源操作数地址(Source Operand Reference): 参加操作的操作数的地址, 可能有多个 rs rt
- 目的操作数地址(Destination Operand Reference):保存操作结果的地址 rd
- 下条指令的地址(Next Instruction Reference):指明下⼀条要运⾏的指令的位置, ⼀般指令是按顺序依次执⾏的, 所以绝⼤多数指令中并不显式的指明下⼀条指令的地址, 也就是说, 指令格式中并不包含这部分信息。 只有少数指令需要显式指明下⼀条指令的地址 (一般跳转指令才会需要,因为需要从子程序回到主程序)
指令类型
数据传送指令: 寄存器与存储器之间, 寄存器之间传递数据
- 取数、 存数、 传送、 交换、 设置/清除指令(Mov, Store, Load, Set等)
- 串操作指令(MOVSB, MOVSW)
- I/O指令: IN, OUT
- 堆栈指令: PUSH, POP
算术/逻辑运算指令(算数指令符号扩展,逻辑指令零扩展)
- 算术运算指令: 定点数、 浮点数、 ⼗进制数的加减乘除运算
- 逻辑运算指令: 与/或/非/异或等逻辑运算(And, Or, Not, Xor等)
- 移位指令: 算术移位, 逻辑移位, 循环移位
- 向量运算指令: 对整个向量或矩阵求和、 求积等运算
程序控制类指令
- 转移指令: ⽆条件转移指令, 有条件转移指令
- 循环控制指令(LOOP)
- 子程序调⽤与返回指令(CALL, RET)
- 程序中断指令及返回(INT, IRET)
其它指令:
多⽤户多任务系统中的特权指令; 复位/暂停/空操作等指令等等
操作数
ISA种类
根据操作数的存储位置和⽅法, ISA可分为:
- 堆栈类(Stack)
- 累加器类(Accumulator)
- 通⽤寄存器类(General Purpose Register)
CISC 和 RISC
CISC指令系统的特点
➢ 指令系统复杂庞⼤(⼀般数百条指令) ; ➢寻址⽅式多, 指令格式多, 指令字长不固定; ➢可访存指令不受限制; ➢各种指令使⽤频率相差很⼤; ➢各种指令执⾏时间相差也很⼤; ➢⼤多数采⽤微程序控制器。
RISC技术
➢ 把使⽤频率为80%的、 在指令系统中仅占20%的简单指令保留下来, 消除剩下80%的复杂指令, 复杂功能⽤⼦程序实现 ➢ 不⽤微程序控制, 采⽤简单的硬连线控制, 控制器极⼤简化,加上优化编译配合硬件的改进, 使系统的速度⼤⼤提⾼ ➢ 短周期时间、 单周期执⾏指令(指令执⾏在⼀个机器周期内完成) ➢ Load(取) /Store(存) 结构, 取数(存储器—>寄存器) 、 存数(寄存器—>存储器) ➢ ⼤寄存器堆, 寄存器数量较多 ➢ 哈佛(Harvard) 总线结构, 指令Cache、 数据Cache, 双总线动态访问机构 ➢ ⾼效的流⽔线结构、 延迟转移、 重叠寄存器窗⼝技术等
RISC的指令系统的特点
➢ 处理器通⽤寄存器数量较多; ➢ 由使⽤频率较⾼的简单指令构成; ➢ 简单固定格式的指令系统; ➢ 指令格式种类少, 寻址⽅式种类少; ➢ 访问内存仅限Load/Store指令, 其他操作针对寄存器; ➢ 指令采⽤流⽔技术。