跳转到主要内容

A.5 指令集中的操作

多数指令集体系结构支持的操作,可以按图 A.12 分类。对各种体系结构都适用的一条经验法则是:执行最频繁的通常是指令集中的简单操作。例如,在流行的 Intel 80x86 上运行一组整数程序时,图 A.13 中的 10 条简单指令占全部执行指令的 96%。因此,实现这些指令时应确保它们足够快,因为它们就是最常见的情形。

如前所述,图 A.13 的指令存在于面向各种应用——桌面、服务器、嵌入式——的每一种计算机中。图 A.12 中各类操作的差异,主要取决于指令集包含哪些数据类型。

操作类型示例
算术与逻辑整数算术、逻辑操作:加、减、与、或、乘、除
数据传送加载、存储;在支持存储器寻址的计算机上为 move 指令
控制分支、跳转、过程调用与返回、陷阱
系统操作系统调用、虚拟存储器管理指令
浮点浮点加法、乘法、除法、比较
十进制十进制加法、乘法、十进制数与字符转换
字符串字符串传送、比较、搜索
图形像素与顶点操作、压缩/解压缩操作
图 A.12 指令操作的类别与实例。一般而言,所有计算机都完整提供前三类操作。不同体系结构对系统功能的指令支持差异很大,但都必须为基本系统功能提供一定支持。最后四类可以完全不支持,也可以提供大量专用指令。面向大量浮点运算应用的计算机会提供浮点指令,有时作为可选指令集。十进制和字符串操作可以是原生指令,如 VAX 或 IBM 360;也可以由编译器用更简单的指令合成。图形指令通常并行处理多个小数据项,例如对两个 64 位操作数执行八次 8 位加法。
排名80x86 指令整数程序平均占比(占执行指令总数)
1加载(Load)22%
2条件分支(Conditional branch)20%
3比较(Compare)16%
4存储(Store)12%
5加法(Add)8%
6按位与(And)6%
7减法(Sub)5%
8寄存器间传送(Move register-register)4%
9调用(Call)1%
10返回(Return)1%
总计96%
图 A.13 80x86 使用最多的 10 条指令。简单指令占主导地位,合计占执行指令的 96%。百分比是五个 SPECint92 程序的平均值。

译注: 原表所列已舍入百分比相加为 95%,原表总计与图注均为 96%。

表格阅读