CA-操作类型和大小

Molaters Lv5
[[../../计算机体系结构课程总括|计算机体系结构课程总括]]

操作类型和大小

确定操作数表示实际上也是软硬件取舍折中的问题

操作数类型

整数:二进制的补码表示;大小可以是字节,半字和单字

十进制:压缩十进制二进制编码十进制,压缩十进制数据表示用四位编码数字0~9,然后将两个十进制数字压缩在一个字节中

存储。

操作数类型的表示主要有如下的两种方法:

  • 操作数的类型可以以操作码的编码指定,这也是最常见的一种方法
  • 数据可以附上由硬件解释的标记(tag),由这些标记指定操作数的类型,从而选择适当的运算。然而有标记数据的机器非常少见

操作数的表示是所有类型的子集,是一种折衷。

操作数的大小

image-20230911111339574

指令系统设计的基本原则

指令系统的设计

  • 首先考虑应该事先的基本功能,确定哪些功能应该用硬件实现,哪些功能用软件实现
  • 包括
    • 指令的功能设计
    • 指令格式的设计

指令系统设计的基本原则

指令系统的设计

在确定这些基础功能之后要考虑三个因素:速度、成本、灵活性

硬件实现的特点:速度快成本高灵活性差

软件实现的特点:速度慢价格便宜灵活性高

完整性

在一个有限可用的存储空间内,对于任何可解的问题,在编制计算程序时,指令系统所提供的指令足够使用。完整性要求指令系统功能全、使用方便。

image-20230911112139867

规整性

规整性主要包括对称性和均匀性。

  • 对称性:对称性是指所有与指令系统相关的存储单元的使用、操作码的设置等都是对称的。例如,在存储单元的使用上,所有通用寄存器都要同等对待。

  • 均匀性:指对于各种不同的操作数类型、字长和数据存储单元,指令的设置都要同等对待。**例如,如果某机器有 5 种数据表示,4 种字长,两种存储单元,则要设置 5x4x2=40 种同一操作的指令(如加法指令)**。不过,这样做太复杂,也不太现实。所以一般是实现有限的规整性。例如,把上述加法指令的种类减少到 10 种以内。

其他性质

  • 正交性:是指在指令中各个不同含义的字段,如操作数类型、数据类型、寻址方式字段等,在编码时应互不相关、相互独立。高效率是指指令的执行速度快、使用频度高。在 RISC 结构中,大多数指令都能在一个节拍内完成(流水),而且只设置使用频度高的指令。
  • 高效率:求指令的向后兼容。
  • 兼容性主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。

在设计系统时,有两种截然不同的设计策略,因而产生了两类不同的计算机系统,CISC 和 RISC。CISC 是增强指令功能,把越来越多的功能交由硬件来实现,指令的数量也是越来越多。RISC 是尽可能地把指令系统简化,不仅指令的条数少,而且指令的功能也比较简单

控制指令

能够改变控制流的指令有4种:分支 (branch)、跳转(jump)、过程调用 (call)和过程返回(return)。

image-20230911113245581

条件分支

条件分支的分支条件表示:

分支条件表示 优点 缺点
条件码:在程序的控制下,由ALU的操作设置特殊的位 可以设置自由设置分支条件 必须从一条指令将分支条件信息传送到分支指令,所以CC是额外状态,条件码限制了执行顺序。
条件寄存器:比较指令把比较结果放进任何一个寄存器,检测的时候就检测这个寄存器 简单 占用了一个寄存器
比较分支:受到一定限制 一条指令完成两条指令的功能 分支指令的操作增多

小于或者等于分支占主导地位

因为大多数时候写的是

1
for(int i=0 ; i<length;i++);

所以才会导致$\leq$的数目增多

分支地址转移目标的表示:采用4~8位的偏移量字段(以指令字为单位)就能表

示大多数控制指令的转移目标地址

过程调用和返回的状态保存

“调用者保存”方法 vs “被调用者保存”方法

调用者保存不知道需要用到什么寄存器,而被调用者知道使用什么寄存器来保存断点。

所以被调用者保存是更加普遍的方法

指令操作码的优化

  1. 等长扩展码

1694564098310

不是说只有一种方法,按照扩展标识的不同,还有其他的许多种扩展方法。

👩🏻‍🏫扩展操作码必须遵守短码不能是长码的前缀的规则。扩展操作码的编码不唯一,平均码也不唯一。

  1. 定长操作码

固定长度的操作码:所有指令的操作码都是同一个长度。

保证操作码的译码速度、减少译码的复杂度。

按照程序的存储空间为代价去换取硬件上的简单实现

  • 标题: 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 进行许可。
 评论