SPARO 一ISA通过体系结构公开的延迟陷阱队列支持非精确浮点 异常,该队列向系统监控程序提供信息,以恢复此类 异常上的处理器状态 唯一的原子内存操作是 fetch-and- store,这对于实现 许多无等待的数据结构是不够的 · SPARO与其他80年代RSC结构的许多有缺陷的特性 ISA设计面向单发射、顺序、五级流水线的微体系架构; SPARC具有分支延迟插槽和许多显式的数据和控制冲突,这些冲 突使代码生成复杂化,无助于更积极的实现; 缺乏位置无关的寻址方式(相对寻址 由于 SPARO缺乏足够的自由编码空间,因此不能方便地对其进行 改进以支持压缩SA扩展 2021/2/5
SPARC – ISA通过体系结构公开的延迟陷阱队列支持非精确浮点 异常,该队列向系统监控程序提供信息,以恢复此类 异常上的处理器状态 – 唯一的原子内存操作是fetch-and-store,这对于实现 许多无等待的数据结构是不够的 • SPARC与其他80年代RISC结构的许多有缺陷的特性 – ISA设计面向单发射、顺序、五级流水线的微体系架构; – SPARC具有分支延迟插槽和许多显式的数据和控制冲突,这些冲 突使代码生成复杂化,无助于更积极的实现; – 缺乏位置无关的寻址方式(相对寻址) – 由于SPARC缺乏足够的自由编码空间,因此不能方便地对其进行 改进以支持压缩ISA扩展 2021/2/5 27
Alpha DEC ·DEC公司的架构师在20世纪90年代初定义了他们的 RISCISA,Apha 摒弃了当时非常吸引人的特性,如分支延迟、条件码、寄存器窗口等 创建了64位寻址空间、设计简洁、实现简单、高性能的ISA Apha架构师仔细地将特权体系结构和硬件平台的大部分细节隔离在抽象接口特权 体系结构库)后面( pALcode) 主要问题:尽管如此,DEC对顺序微架构的 Alpha进行了过度优化 并添加了一些不太适合现代实现的特性 为了追求高时钟频率,ISA的原始版本避免了8位和16位的加载和存储,实际上创建 了一个字寻址的内存系统。为了在广泛使用这些操作的应用程序上性能,添加了特 殊的未对齐的加载和存储指令以及一些整数指令,以加速重新组合过程。 为了方便长延迟浮点指令的乱序完成, Alpha有一个非精确的浮点陷阱模型。这个 决定可能是可以单独接受的,但是ISA还定义了异常标记和默认值(如果需要的话必 须由软件例程提供。 Alpha缺少整数除法指令,建议使用软件牛顿迭代法实现,导致浮点除法速度高于 整数除法 2021/2/5
Alpha (DEC) • DEC公司的架构师在20世纪90年代初定义了他们的RISC ISA, Alpha – 摒弃了当时非常吸引人的特性,如分支延迟、条件码、寄存器窗口等 – 创建了64位寻址空间、设计简洁、实现简单、高性能的ISA – Alpha架构师仔细地将特权体系结构和硬件平台的大部分细节隔离在抽象接口(特权 体系结构库)后面(PALcode) • 主要问题:尽管如此,DEC对顺序微架构的Alpha进行了过度优化, 并添加了一些不太适合现代实现的特性 – 为了追求高时钟频率,ISA的原始版本避免了8位和16位的加载和存储,实际上创建 了一个字寻址的内存系统。为了在广泛使用这些操作的应用程序上性能,添加了特 殊的未对齐的加载和存储指令以及一些整数指令,以加速重新组合过程。 – 为了方便长延迟浮点指令的乱序完成,Alpha 有一个非精确的浮点陷阱模型。这个 决定可能是可以单独接受的,但是ISA还定义了异常标记和默认值(如果需要的话)必 须由软件例程提供。 – Alpha缺少整数除法指令,建议使用软件牛顿迭代法实现,导致浮点除法速度高于 整数除法 2021/2/5 28
与它的前辈RISC样,没有预先考虑可能的压缩指令集扩展,因 此没有足够的操作码空间来进行更新 ISA包含有条件的移动,这使得微架构与寄存器重命名复杂化 如果移动条件不满足,指令仍然必须将旧值复制到新的物理目标寄存器 中。这实际上使条件移动成为ISA中惟读取三个源操作数的指令。 实际上,DEC的第一个乱序执行的实现使用了一些技巧来避免该指令的 额外数据路径。 Alpha21264通过将条件移动指令分解为两个微操作来 执行,第一个微操作评估移动条件,第二个微操作执行移动。这种方法 还要求物理寄存器文件加宽一位以保存中间结果 使用商业 Alpha ISAs的一个重要风险它们可能会被摒弃。康柏在 上世纪90年代末收购了摇摇欲坠的DEC后不久,他们选择逐步淘 汰 Alpha,转而采用英特尔的安腾架构。康柏将 Alpha的知识产权 出售给了英特尔,此后不久,惠普收购了康柏,并在2004年完成 了 Alpha的最终实现 2021/2/5
– 与它的前辈RISC一样,没有预先考虑可能的压缩指令集扩展,因 此没有足够的操作码空间来进行更新 – ISA包含有条件的移动,这使得微架构与寄存器重命名复杂化 • 如果移动条件不满足,指令仍然必须将旧值复制到新的物理目标寄存器 中。这实际上使条件移动成为ISA中惟一读取三个源操作数的指令。 • 实际上,DEC的第一个乱序执行的实现使用了一些技巧来避免该指令的 额外数据路径。 Alpha 21264通过将条件移动指令分解为两个微操作来 执行,第一个微操作评估移动条件,第二个微操作执行移动。这种方法 还要求物理寄存器文件加宽一位以保存中间结果 – 使用商业Alpha ISAs的一个重要风险:它们可能会被摒弃。康柏在 上世纪90年代末收购了摇摇欲坠的DEC后不久,他们选择逐步淘 汰Alpha,转而采用英特尔的安腾架构。康柏将Alpha的知识产权 出售给了英特尔,此后不久,惠普收购了康柏,并在2004年完成 了Alpha的最终实现 2021/2/5 29
ARMV7 32位 RISC ISA 目前世界上使用最广的体系结构。当我们权衡是否要 设计自己的指令集时ARM7是二个自然的选择大 动设备中无处不在。 是一个封闭的标准,剪裁或扩充是不允许的,即使是 微架构的创新也仅限于那些能够获得ARM所称的架构 许可的人 ARMM7十分庞大复杂。整型类指令600+条 即使知识产权不是问题,它仍然存在一些技术缺陷 不支持64位地址,ISA缺乏硬件支持IEE754-2008标 准(ARMv8纠正了这些缺陷) 特权体系结构的细节渗透到用户级体系结构的定义中 2021/2/5
ARMv7 • 32位 RISC ISA – 目前世界上使用最广的体系结构。当我们权衡是否要 设计自己的指令集时,ARMv7是一个自然的选择,大 量的软件已经被移植到该ISA上,而且它在嵌入式和移 动设备中无处不在。 – 是一个封闭的标准,剪裁或扩充是不允许的,即使是 微架构的创新也仅限于那些能够获得ARM所称的架构 许可的人 – ARMv7十分庞大复杂。整型类指令600+条 • 即使知识产权不是问题,它仍然存在一些技术缺陷 – 不支持64位地址, ISA缺乏硬件支持IEEE754-2008标 准( ARMv8 纠正了这些缺陷) – 特权体系结构的细节渗透到用户级体系结构的定义中 2021/2/5 30
ARMV7附带一个压缩ISA,具有固定宽度的16位指令, 称为 Thumb。 Thumbi虽然提供了有竞争力的代码尺寸,但性能较差 · Thumb-2虽然提供了较高的性能,但32位的 Thumb-2编码 方式与基本的SA编码方式不同,16位的 Thumb-2的编码方式 与基本的16位编码方式也不同。导致译码器需要理解三种编码 格式,使得能耗、延迟以及设计成本增加 ISA中包含了许多实现复杂的特性。 程序计数器是可寻址寄存器之一,这意味着几乎任何指令都可 以改变控制流。 更糟糕的是,程序计数器的最低有效位反映SA当前正在执行 (ARM或 Thumb)哪个ISA——简单的ADD指令可以更改SA当 前在处理器上执行的指令 分支使用条件码以及谓词指令进步使高性能实现复杂化。 2021/2/5
– ARMv7附带一个压缩ISA,具有固定宽度的16位指令, 称为Thumb。 • Thumb虽然提供了有竞争力的代码尺寸,但性能较差 • Thumb-2 虽然提供了较高的性能,但32位的Thumb-2编码 方式与基本的ISA编码方式不同,16位的Thumb-2的编码方式 与基本的16位编码方式也不同。导致译码器需要理解三种编码 格式,使得能耗、延迟以及设计成本增加 – ISA中包含了许多实现复杂的特性。 • 程序计数器是可寻址寄存器之一,这意味着几乎任何指令都可 以改变控制流。 • 更糟糕的是,程序计数器的最低有效位反映ISA当前正在执行 (ARM或Thumb)哪个ISA——简单的ADD指令可以更改ISA当 前在处理器上执行的指令! • 分支使用条件码以及谓词指令进一步使高性能实现复杂化。 2021/2/5 31