我正在读一本教科书,上面写着:
RISC 处理器在嵌入式处理器市场上的表现非常出色,可以控制诸如蜂窝电话、汽车刹车和互联网设备等系统。在这些应用中,节省成本和功耗比保持向后兼容性更重要。
这是否意味着 RISC 处理器(例如 ARM)不能向后兼容旧版本?
我正在读一本教科书,上面写着:
RISC 处理器在嵌入式处理器市场上的表现非常出色,可以控制诸如蜂窝电话、汽车刹车和互联网设备等系统。在这些应用中,节省成本和功耗比保持向后兼容性更重要。
这是否意味着 RISC 处理器(例如 ARM)不能向后兼容旧版本?
没错;例如,在非常旧的 ARM 上,具有非零低位的字加载意味着旋转对齐的字。在现代 ARM 上,这些位只是地址的一部分,给你一个未对齐的负载。
因此 ARM 在某一时刻巧妙地打破了与依赖该功能的稀有代码的兼容性,使得这些旧的二进制文件在现代 ARM 上无法使用。大多数 ARM 二进制文件仍然很好,因为它们完全避免了未对齐的字加载/存储。
另一个例子是MIPS
通常,当引入新的 ISA 版本时,会添加指令,但旧指令仍保持原样以实现向后兼容性。例如,在 x86 中,许多几十年来无人使用的指令直到现在仍然有效并受到支持。然而,在 MIPS III 中,一些指令被删除以释放一些操作码。然后在 MIPS 技术从 SGI 分离出来的 MIPS V 之后,引入了一次大修:MIPS32/MIPS64。命名方案已更改,并删除了更多说明
- 一些有条件的动作
- 分支可能的指令(在以前的版本中已弃用)。
- 具有 16 位立即数的整数溢出捕获指令
- 整数累加器指令(连同 HI/LO 寄存器,移至 DSP Application-Specific Extension)
- 未对齐加载指令(LWL 和 LWR),(要求大多数普通加载和存储支持未对齐访问,可能通过陷阱和添加新指令 (BALIGN))
它还“重新组织了指令编码,为未来的扩展腾出了空间”。
造成这种情况的原因之一可能是因为 MIPS 将关注点从高性能系统转移到了嵌入式系统