【发布时间】:2020-09-19 09:11:01
【问题描述】:
除了正常加载之外,某些架构还具有“可忽略的加载”:当加载被拒绝时,不会发出异常(导致分段错误),而是将默认值(例如,零)写入目标寄存器。这允许编译器在条件分支之前移动负载,这对于非推测性内核的性能可能很重要。
我想知道是否有针对此的 Risc-V 扩展。我没有找到。
【问题讨论】:
除了正常加载之外,某些架构还具有“可忽略的加载”:当加载被拒绝时,不会发出异常(导致分段错误),而是将默认值(例如,零)写入目标寄存器。这允许编译器在条件分支之前移动负载,这对于非推测性内核的性能可能很重要。
我想知道是否有针对此的 Risc-V 扩展。我没有找到。
【问题讨论】:
在当前完整的标准 RISC 集合中,不支持可解除加载(即加载指令不会基于内存位置的内存保护进行陷阱,当标准 lw、lh、lb 等会陷阱时) V 扩展。它们也不适合任何计划中的标准扩展。您可以找到当前版本的 ISA 规范 here。 (标准扩展由 RISC-V 基金会设计和批准,保证不会相互冲突,并且会出现在 ISA 规范中)。
话虽如此,RISC-V 旨在简化为自定义加速器设计和实施非标准扩展的过程。为自定义扩展的实现保留了某些位,以保证当前和未来的标准扩展不会发生冲突。因此,也没有什么可以阻止向 RISC-V 添加可忽略的加载指令作为非标准扩展的一部分。
【讨论】: