主要观点:作者参与多个处理器的指令集架构项目,发现良好的ISA设计无固定教学且RISC-V使设计ISA的门槛降低。ISA是编译器与微架构间的通用语言,包含应用二进制接口、架构、微架构等层次,各有其作用和规范。不存在通用的ISA,需针对不同源语言和微架构进行设计,且业务稳定性也是重要考量,架构并非不重要,它会影响微架构设计,不同规模的核心对ISA有不同需求,如小核心注重解码复杂度和代码大小,大核心注重寄存器重命名、复杂寻址模式等,同时ISA设计应避免过度追求纯粹而忽略实际效果,要通过测量来验证设计。
关键信息:
- RISC-V使设计ISA门槛降低,参与多个ISA项目但不知其设计要点。
- ISA层次及各层次作用,如ABI定义编译器使用硬件特征的约定等。
- 不存在通用ISA,不同源语言有不同抽象机,需针对不同规模核心设计。
- 业务稳定性影响ISA,如x86和Arm的例子,GPU可改变ISA而CPU需兼容旧软件。
- 架构影响微架构设计,如中断处理、微码等方面,不同ISA在不同微架构下表现不同。
- 小核心注重简单解码和小代码,大核心注重寄存器重命名和复杂寻址模式等。
- ISA设计应避免过度追求纯粹,如RISC-V的跳转链接指令案例。
- 新ISA采用高效的x86 emulation目标可加速软件生态的建立,如AArch64。
- 避免条件码对编码密度有影响,如RISC-V和Arm的对比。
- 测量验证ISA设计,如对RISC-V条件移动指令的研究。
重要细节: - 不同语言的抽象机不同,如C、Erlang、CUDA等。
- 不同层次的细节,如微架构的缓存行大小会影响性能。
- 各种ISA的特点,如Arm 32位和64位ISA的分离等。
- 不同架构在不同产品中的成本和影响,如Intel Pentium的案例。
- 不同ISA在微架构优化方面的差异,如复杂向量扩展的中断处理。
- 不同核心规模对ISA各方面的具体需求,如小核心的解码器复杂度和大核心的寄存器重命名功耗。
- 各种ISA设计决策的利弊,如RISC-V的跳转链接指令与Arm等的对比。
- 新ISA在x86 emulation方面的特点,如AArch64的优势。
- 不同ISA在编码密度等方面的具体表现,如避免条件码的影响。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。