CA-操作类型和大小

操作类型和大小
确定操作数表示实际上也是软硬件取舍折中的问题
操作数类型
整数:二进制的补码表示;大小可以是字节,半字和单字
十进制:压缩十进制,二进制编码十进制,压缩十进制数据表示用四位编码数字0~9,然后将两个十进制数字压缩在一个字节中
存储。
操作数类型的表示主要有如下的两种方法:
- 操作数的类型可以以操作码的编码指定,这也是最常见的一种方法
- 数据可以附上由
硬件解释的标记(tag)
,由这些标记指定操作数的类型,从而选择适当的运算。然而有标记数据的机器非常少见
操作数的表示是所有类型的子集,是一种折衷。
操作数的大小

指令系统设计的基本原则
指令系统的设计
- 首先考虑应该事先的基本功能,确定哪些功能应该用硬件实现,哪些功能用软件实现
- 包括
- 指令的功能设计
- 指令格式的设计
指令系统设计的基本原则
指令系统的设计
在确定这些基础功能
之后要考虑三个因素
:速度、成本、灵活性
硬件实现的特点:速度快成本高灵活性差
软件实现的特点:速度慢价格便宜灵活性高
完整性
在一个有限可用的存储空间内,对于任何可解的问题,在编制计算程序时,指令系统所提供的指令足够使用。完整性要求指令系统功能全、使用方便。

规整性
规整性主要包括对称性和均匀性。
对称性:对称性是指所有与指令系统相关的
存储单元
的使用、操作码的设置
等都是对称的。例如,在存储单元的使用上,所有通用寄存器都要同等对待。均匀性:指对于各种
不同
的操作数类型、字长和数据存储单元,指令的设置都要同等对待
。**例如,如果某机器有 5 种数据表示,4 种字长,两种存储单元,则要设置 5x4x2=40 种同一操作的指令(如加法指令)**。不过,这样做太复杂,也不太现实。所以一般是实现有限的规整性。例如,把上述加法指令的种类减少到 10 种以内。
其他性质
- 正交性:是指在指令中各个不同含义的字段,如操作数类型、数据类型、寻址方式字段等,在编码时应互不相关、相互独立。高效率是指指令的执行速度快、使用频度高。在 RISC 结构中,大多数指令都能在一个节拍内完成(流水),而且只设置使用频度高的指令。
- 高效率:求指令的向后兼容。
- 兼容性主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。
在设计系统时,有两种截然不同的设计策略,因而产生了两类不同的计算机系统,CISC 和 RISC。CISC 是增强指令功能,把越来越多的功能交由硬件来实现,指令的数量也是越来越多。RISC 是尽可能地把指令系统简化,不仅指令的条数少,而且指令的功能也比较简单
控制指令
能够改变控制流的指令有4种:分支 (branch)、跳转(jump)、过程调用 (call)和过程返回(return)。
条件分支
条件分支的分支条件表示:
分支条件表示 | 优点 | 缺点 |
---|---|---|
条件码:在程序的控制下,由ALU的操作设置特殊的位 | 可以设置自由设置分支条件 | 必须从一条指令将分支条件信息传送到分支指令,所以CC是额外状态,条件码限制了执行顺序。 |
条件寄存器:比较指令把比较结果放进任何一个寄存器,检测的时候就检测这个寄存器 | 简单 | 占用了一个寄存器 。 |
比较分支:受到一定限制 | 一条指令完成两条指令的功能 | 分支指令的操作增多 。 |
小于或者等于分支占主导地位。
因为大多数时候写的是
1 | for(int i=0 ; i<length;i++); |
所以才会导致$\leq$的数目增多
分支地址转移目标的表示:采用4~8位的偏移量字段(以指令字为单位)就能表
示大多数控制指令的转移目标地址
过程调用和返回的状态保存
“调用者保存”方法 vs “被调用者保存”方法
调用者保存不知道需要用到什么寄存器,而被调用者知道使用什么寄存器来保存断点。
所以被调用者保存是更加普遍的方法
指令操作码的优化
- 等长扩展码
不是说只有一种方法,按照扩展标识的不同,还有其他的许多种扩展方法。
👩🏻🏫扩展操作码必须遵守短码不能是长码的前缀的规则。扩展操作码的编码不唯一,平均码也不唯一。
- 定长操作码
固定长度的操作码
:所有指令的操作码都是同一个长度。
保证操作码的译码速度、减少译码的复杂度。
按照程序的存储空间为代价去换取硬件上的简单实现
- 标题: CA-操作类型和大小
- 作者: Molaters
- 创建于 : 2023-11-24 11:30:49
- 更新于 : 2023-10-12 17:02:39
- 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-操作类型和大小/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。