计算机体系结构---指令系统1
1. 基本概念与分类
1.1 概念
指令系统(Instruction Set Architecture, ISA)是一台计算机能够直接识别并执行的机器指令的集合。
ISA是软、硬件的分界面与接口:定义了软、硬件交互的协约;提供了一种软件告诉硬件该执行什么操作的机制。
1.2 分类
CISC、RISC
计算机系统结构可根据ISA的不同进行分类,x86指令系统、MIPS指令系统等。但是使用同一指令系统的计算机硬件实现可以不同。使用相同指令系统的机器,软件是兼容的。
根据操作数的存储位置对指令进行分类:主存型结构、累加器型结构、堆栈型结构、通用寄存器结构 (寄存器-存储器,寄存器-寄存器)
1.3 指令系统设计
-
设计原则
(1)可编程性(Programmability)——软件
简单、高效的编程
(2)可实现性(Implementability)——硬件
容易设计出高性能、低功耗、高可靠、低成本的计算机
(3)兼容性(Compatibility)——用户
兼容性包括向上(向前)兼容与向下(向后)兼容 -
设计要素
(1)指令格式 (指令长度、编码): 定长的指令规整,控制操作简单,但可能浪费一定的指令存储空间,变长指令节省空间,但控制复杂。
(2)操作数存储位置 (寄存器、主存、累加器、堆栈等)、类型 (整形、浮点)、长度 (字节、字、双字等)、个数。
(3)寻址方式:寄存器寻址,立即数寻址,偏移寻址,寄存器间接寻址,索引寻址
(4)操作类型:add、sub、mul、move、compare
2. MIPS指令系统
load-store结构 (寄存器-寄存器)
2.1 寄存器
- 32个64位通用寄存器 (整数寄存器)(R0, R1, …R31)R0的值永远是0。
- 32个64位浮点数寄存器 (F0, F1,…F31),用来存放32个单精度浮点数 (32位),也可以用来存放32个双精度浮点数 (64位)。存储单精度浮点数时,只用到寄存器的一半。
2.2 数据表示
- 整数:字节 (8位), 半字 (16位),字 (32位),双字 (64位)。
- 浮点数: 单精度浮点数 (32位),双精度浮点数 (64位)。
- 字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。
2.3 数据寻址方式
- 立即数寻址与偏移量寻址:立即数字段和偏移量字段都是16位的。
- 寄存器间接寻址是通过把0作为偏移量来实现的。
- 16位绝对寻址是通过把R0(其值永远为0)作为基址寄存器来完成的。
- MIPS的存储器是按字节寻址的,地址为64位。
2.4 指令格式
寻址方式编码到操作码中,所有指令都是32位的,操作码占6位
3种指令格式:R、I、J,同名字段的位置不变。
- R型指令
(1)ALU指令
(2)专用寄存器读/写指令
(3)MOVE指令等 - J类指令
(1)跳转指令
(2)跳转并链接指令
(3)自陷指令
(4)异常返回指令
在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址 - I型指令
(1)load和store指令
(2)立即数指令
(3)分支指令
(4)寄存器跳转指令
(5)寄存器链接跳转指令。
立即数字段为16位,用于提供立即数或偏移量。