RISC-V用户级指令集体系结构2.1版更新说明

需积分: 22 84 下载量 91 浏览量 更新于2024-08-08 收藏 3.65MB PDF 举报
"本文档是关于RISC-V指令集的详细说明,特别是针对中移4G.cat1模组ML302产品规格。文档主要介绍了2.1版用户级指令集体系结构(User-Level ISA)的变化和更新,强调了基本用户ISA及通用扩展(IMA FD)的稳定性。" RISC-V是一种开放源码的指令集架构(ISA),其设计目标是简单、高效且可扩展。在2.1版的更新中,RISC-V指令集经历了多项改进,旨在提升性能、简化编程模型并增强兼容性。 1. **ISA的划分与扩展**: - ISA现在分为一个整数基本内核和多个标准扩展,这种分离有助于模块化设计和优化。 2. **指令格式优化**: - 指令格式重新组织,使得立即数编码更高效,有利于提升处理器对指令的解码速度。 3. **存储器系统**: - 基本ISA定义为小端存储系统,同时支持大端和双端作为非标准选项,增加了系统的灵活性。 4. **原子操作指令**: - 添加了Load-Reserved/Store-Conditional(LR/SC)指令,增强了原子操作的原子性,适用于多线程环境。 5. **一致性模型**: - AMO(Atomic Memory Operations)和LR/SC指令支持释放一致性模型,提高了并发编程的正确性。 6. **FENCE指令**: - 提供细粒度的内存和I/O序列化,确保指令执行的顺序,对于多核和异步编程至关重要。 7. **AMO指令扩展**: - 新增了fetch-and-XOR的AMO(AMOXOR),同时修改了AMOSWAP的编码,以增加可用指令。 8. **AUIPC和JAL指令**: - AUIPC指令现在使用20位立即数加到程序计数器,替代了RDNPC,简化了位置无关代码的实现。 - JAL指令移到U类型格式,具有显式目标寄存器,J指令由rd=x0的JAL指令替换,降低了ISA的复杂性。 9. **JALR指令的改进**: - 去除了JALR指令的静态提示,减少冗余,提高代码效率。 10. **软件约定变更**: - 对注释部分进行了大量更新和改进,每章都有单独的版本号。 - CSR(Control and Status Registers)指令现在用基本整数格式描述,增加了计数器寄存器。 - SCALL和SBREAK指令更名为ECALL和EBREAK,功能保持不变。 - 浮点NaN处理、浮点到整数转换溢出规则、LR/SC指令的使用条件等进行了澄清。 - 提出了新的RV32E基本ISA提案,减少了整数寄存器的数量。 - 修订了调用约定,调整了软浮点调用约定的栈对齐,特别描述了RV32E调用约定。 - C压缩扩展提案也进行了修订,版本更新为1.9。 这些更新不仅提升了RISC-V架构的效能,还增强了其在各种应用场景下的适用性,包括嵌入式、数据中心和高性能计算等。对于开发者而言,理解这些变化对于编写高效、可靠的RISC-V代码至关重要。
2021-09-12 上传