概念⭐
- 一组指令集和,每个指令都可以被硬件直接执行(这里体现出了一个贯穿全篇的问题:在设计计算机系统结构时,哪些用硬件实现,哪些用软件实现,在成本和效率之间应该如何平衡)
- 由二进制码表示,因为硬件只能理解二进制
- 定长或者变长
- 长度单位:e bits, bytes, words, n-words
分类⭐⭐
- CPU中存放操作数的存储单元有三种:堆栈、累加器、通用寄存器;由此把指令系统的结构分为:堆栈型结构、累加器型结构、通用寄存器型结构。其中,通用寄存器型结构又可以分为寄存器存储器型结构(RM)和寄存器寄存器型结构(RR 或 load-store结构)
- 优缺点
- 寄存器型操作数中,又可以根据操作数的两个特征再分类
- 特征一:ALU指令的操作数个数。
3——两个源操作数一个目的操作数
2——一个源操作数既可以做源操作数,也可以做目的操作数。有一个操作数会被破坏,导致了两个操作数不对称 - 特征二:ALU指令中存储器操作数的个数:0~3
- 下面是分类:
- 历史的选择:
RISC v.s CISC ⭐
这里组成原理有提到,不做赘述
指令集特征
- 分类
- 采用多种寻址方式可以显著减少程序的指令条数,但同时也可能增加计算机的实现复杂度(编译器难设计等)以及CPI。
- 立即数寻址方式和偏移寻址方式、寄存器间接寻址的使用频度最高
- 操作数的类型和大小
两种表示操作数类型的方法:1.由指令中的操作码指定操作数的类型(最常用);2.给数据加上tag标识,由数据本身给出操作数类型 - 给出的指令类型:
由此展开上文RISC和CISC - 控制指令:跳跃、分支、进入子程序、返回主程序
- 编码方式:定长、变长、混合
编译器多层扫描结构
- Easy to write bug-free compilers
- 假定后面的步骤有能力处理某些问题:各司其职
编译器能做的只是静态优化,其实是很有限的,在后面的章节我们会介绍到动态优化,他们的作用更大。
指令集设计基本原则——指令集的设计与优化
- 完整性:指令系统功能完全、使用方便。见上文指令集给出的不同功能
- 规整性:包括对称性和均匀性
- 正交性:由上文的多层扫描结构。指令中不同含义的字段,如操作类型、数据类型、寻址方式字段等,在编码时应互不相关、互相独立
- 高效率
- 兼容性:向后兼容,指令系统可以增加新指令,但不能删除指令和更改指令功能
MIPS指令系统结构
- Register for MIPS
- Data Types for MIPS
- Addressing Modes for MIPS Data Transfers
- MIPS Instruction Format
以上内容复习所用,侵删