版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shuiliusheng/article/details/83512801
A Quantitative Approach-appendix K(2)——RISC指令系统的扩展指令比较
-
Instructions: Multimedia Extensions of the Desktop/Server RISCs
- 图形显示器是桌面不可缺少的一部分,使用8位即可表示像素。对于声音而言,则需要16位来保存更完整的信息
- 所有的微处理器都支持字节和半字的数据传输,但是却没有运算操作。一个原因是当时的晶体管集成度太低,设计单独的向量处理单元的成本太高
- HP是第一个支持多媒体的桌面RISC
- 多媒体扩展常被称为:subword parallelism(子字并行化),vector,SIMD。Intel使用SIMD描述80x86的MMX扩展,因此SIMD也被更广泛的应用
- 多媒体扩展中较为常见的操作:饱和操作。当一次计算结果溢出时,将结果设置为最大的正数/最小的负数,而不是对结果取模
- 针对于扩展的指令,Alpha和HP RA-RISC使用现有的整数寄存器保存操作数,MIPS和SUN使用浮点寄存器。数据读写使用标准的读写指令,Power PC ActiveC添加了32个128位的寄存器,MIPS添加了192位(64*3)的寄存器作为操作的累加器
- 在多媒体扩展中,不同的指令系统之间,扩展的结果不再具有一致性,相同的只有逻辑运算和4个半字的加法和减法(除了Alpha)
- 增加的指令都是用于手工优化的子程序库,编译器很难自动进行优化
B代表byte(8个bit),H代表半字(16个bit),W代表字(32个bit)。8B的意思是一条指令一次操作8个字。pack和unpack用2*2W的意思是两个操作数都是两个字大小。
-
Instructions: Digital Signal-Processing Extensions of the Embedded RISCs
- 所有DSP架构的共同特征:支持整数乘法累加。乘法更多的发生在16位数上,累加则更多的需要64位数的累加
- Thumb和MIPS 16是ARM和MIPS的子集,不支持类似扩展,但是可以直接ARM和MIPS 64中定义的扩展指令
-
MIPS扩展指令的相似指令:(至少可以在两种标准体系结构中可以找到相似的指令)
- 原子交换指令:寄存器和内存之间的数据交换,可以防止操作被打断
- 64位数据传输和操作
- 预取指令:提供数据的地址和一些其它提示信息(包括数据是否可能很快被读取/写入,被读取/写入的次数等),然后将数据提前放到更高层次的存储层次中。
- “Big/Little” 表示处理器的程序状态寄存器上有一个位用于标明处理器使用的是大端寻址还是小端寻址
- 存储同步指令,例如栅栏指令FENCE,BARRIER
-
条件分支指令的优化
-
Alpha和PowerPC使用分支预测器加速分支,其它的桌面RISCs都提供了延迟分支(分支延迟槽)
-
嵌入式RISCs除了SuperH,都不支持延迟分支,SuperH为可选项
-
SPARC的annulling delayed branch(取消延迟分支指令)只有在分支指令实际发生跳转时,延迟槽的指令才会执行。即分支跳转处的指令可以被复制到延迟槽中。但是在编译时,必须保证跳转的目的地址处不能够时分支指令。后续的MIPS 64中也支持这种方式
-
PA-RISC的取消分支指令是否执行下一条指令,取决于分支的跳转方向和是否会跳转。(考虑是为了优化循环)
-