查看: 846|回复: 0
收起左侧

Design of the RISC-V Instruction Set Architecture笔记(chapter3)

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-8-23 11:27:50 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-8-27 15:41 编辑

    Design of the RISC-V Instruction Set Architecture笔记(chapter1-2)
    Design of the RISC-V Instruction Set Architecture笔记(chapter3)
    Design of the RISC-V Instruction Set Architecture笔记(chapter4)
    Design of the RISC-V Instruction Set Architecture笔记(chapter5)

    Design of the RISC-V Instruction Set Architecture笔记(chapter3)
    • The guiding principle in defining RISC-V was to make an ISA suitable for nearly any computing device

      • RISC-V不应该针对于任何特定的微体系结构模式,结构实现进行over-architected(过度的结构设计)
      • RISC-V应该开放,可以免费实现,从而使得它无处不在,更加广泛。如果学术界和工业界共享共同的标准和实现,那么学术与工业互动的障碍就会降低。

    • 为了使得RISC-V有更广的可用性,在设计ISA之前,需要设定一些目标:

      • 将ISA分为一个小的基本集和可选的扩展集
      • 同时支持32和64地址空间,同时也定义了128位的地址空间
      • 促进自定义ISA扩展,包括紧密耦合的功能单元和松散耦合的协处理器
      • 支持变长指令集扩展
      • 为现代标准提供高效的硬件支持,包括IEEE-754浮点标准,和C11,C++11
      • 用户ISA和特权架构完全不相关,正交。支持全虚拟化,

    • RV32I is the base 32-bit integer ISA。

      • 包含47条指令,但它足以形成编译器目标并满足现代操作系统和运行时的基本要求
      • 其中8条指令是系统指令,包括系统调用和性能计数器
      • 编码特征:寄存器区分符通常在指令中占用着同样的位置。该属性允许寄存器提取与指令解码并行进行,从而改善了许多实现中的关键路径。同时这种编码格式可以非常容易从指令中提取立即数。

    • RV32I:

      • 21条计算指令,包括有符号数运算和无符号数运算
      • 所有立即数都是符号扩展,尽管有些上下文中,这应该是无符号(减少ISA描述的复杂性)
      • RISC-V使用XORI进行符号扩展,而为了实现零扩展,MIPS增加了NOR指令,但是NOR很少用
      • AUIPC指令是RISC-V基本的PC相关索引策略:在与位置无关的代码中,它对于合理的代码大小和性能至关重要
      • 五条load指令和三条store指令。明确允许未对齐的加载和存储,但不保证它们以原子方式或高性能执行。这个附加说明允许简单的实现捕获这些指令,并通过非原子操作相邻的单词来模拟低级系统软件中的未对齐访问,但为高性能系统留下了灵活性,以便在硬件中本地实现它们。非对齐访问keen那个产生的问题太多
      • a relaxed memory model。提供了FENCE指令保证存储操作之前的顺序,针对指令流和数据流之前的同步,提供了FENCE.I指令
      • 六条条件转移指令。RISC-V没有使用延迟槽,而是使用了其他的技术结果分支问题。同时相对于其他指令系统为了更快的解决分支而提供的简单分支,RISC-V提供了较为复杂的分支比较,保证了更好的代码密度和动态指令数。(精确的BHT和BTB带来的性能保证)
      • 不支持条件move指令和predication(分支断定)指令(两个分支都执行,根据条件选择接受哪个分支的结果,就叫Branch Predication分支断定)。这两种指令都可能使得控制冒险变换成数据冒险。这两种技术都会使得寄存器重命名的实现更加复杂
      • 增加JAL指令,jump-and-link,可以将pc设置到任何位置。JAL指令是pc相关的,因此可以在与位置无关的代码中自由使用。JALR指令常用于table jump(C的switch语句)。MIPS的J和JAL指令是将立即数作为PC的低28进行跳转。SPARC提供了pc相关的call指令,但是没有提供相应的JMP指令
      • 八条系统指令。RV32I确实要求提供一些用户级CSR,以提供基本的性能诊断工具,但是都是read-only。同时提供cycle计数器和time寄存器,这两者都是衡量性能的因子,但是不一定是线性关系。

    • RV32E:为了某些嵌入式系统削减寄存器的数量,减少功耗和硬件开销

      • 15个寄存器,其他所有指令基本一致,但是如果指令试图访问16-31号寄存器,就会产生异常。CSR寄存器成为可选项。RV32E is not ABI-compatible

    • RV64I:扩展了RV32I的地址空间,增加可用性。

      • 用户可见状态和RV32I非常相似,不同在于定点寄存器宽度和PC都是64位。
      • 相较于RV32I,64I有12条新指令。为了支持64位系统中的32位计算,增加了一些针对低32位的指令。这些计算结果会符号扩展到64位。(在寄存器中保持32位数据符号扩展可以保持C类型int和unsigned int之间,以及int和long的无成本转换)

    • RV128I:定点寄存器宽度变为128位,新的load/store,基本的运算变为64位运算,同时包含处理低64位的指令





    上一篇:RISC-V Debug Introduction
    下一篇:RISC-V编译环境搭建,踩坑记录
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-29 02:39 , Processed in 0.856762 second(s), 45 queries .

    快速回复 返回顶部 返回列表