查看: 1070|回复: 1
收起左侧

硬件软件接口 (RISC-V) Chapter 2

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-1-15 13:53
  • 签到天数: 26 天

    [LV.4]

    发表于 2020-8-18 15:42:15 | 显示全部楼层 |阅读模式

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

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

    x
    本文目录:
    • 指令集
    • RISC-V简介
    • RISC-V基本语法
    • 计算机硬件的操作数
    • 指令格式
    • 逻辑运算
    • 32个寄存器

    指令集

    The words of a computer’s language are called instructions, and its vocabulary is called an instruction set.
    ----Computer Organization and Design: The Hardware / Software Interface


    RISC-V简介

    RISC-V由UC Berkeley于2010年开发,与此相对应的,MIPS诞生于1980s,Intel x86则诞生于1970s。



    RISC-V基本语法

    • 32个寄存器标注为x0~x31,x0永远等于0。
    • 共有261个存储字,记为Memory[0], Memory[4]……

    指令类别指令名称样例翻译
    算术加法add x5. x6. x7x5 = x6 + x7
    减法sub x5. x6. x7x5 = x6 - x7
    立即数加addi x5. x6. 20x5 = x6 + 20
    数据传输加载双字ld x5. 40(x6)x5 = Memory[x6 + 40]
    加载字lw x5. 40(x6)
    加载无符号字lwu x5. 40(x6)
    加载半字lh x5. 40(x6)
    加载无符号半字lhu x5. 40(x6)
    加载比特lb x5. 40(x6)
    加载无符号比特lbu x5. 40(x6)
    --------
    存储双字sd x5. 40(x6)Memory[x6 + 40] = x5
    存储字sw x5. 40(x6)
    存储无符号字swu x5. 40(x6)
    存储半字sh x5. 40(x6)
    存储无符号半字shu x5. 40(x6)
    存储比特sb x5. 40(x6)
    存储无符号比特sbu x5. 40(x6)
    --------
    load reserved
    store conditional
    load upper immediate
    逻辑and x5. x6. x7x5 = x6 & x7
    or x5. x6. x8x5 = x6 or x8
    异或xor x5. x6. x9x5 = x6 ^x9
    立即数与andi x5. x6. 20x5 = x6 & 20
    立即数或ori x5. x6. 20x5 = x6 or 20
    立即数异或xori x5. x6. 20x5 = x6 ^ 20
    移位逻辑左移sll x5. x6. x7x5 = x6 << x7
    立即数逻辑左移slli x5. x6. 3x5 = x6 << 3
    逻辑右移srl x5. x6. x7x5 = x6 >> x7
    算术右移srax5. x6 .x7x5 = x6 >> x7
    立即数逻辑右移srli x5. x6. 3x5 = x6 >> 3
    立即数算术右移srai x5. x6. 3x5 = x6 >> 3
    条件分支相等时分支beq x5. x6. 100if (x5 == x6) go to PC + 100
    不相等时分支bne x5. x6. 100if (x5 != x6) go to PC + 100
    小于则分支blt x5. x6. 100if (x5 < x6) go to PC + 100
    大于等于则分支bge x5. x6. 100if (x5 >= x6) go to PC + 100
    无符号,小于时分支bltu x5. x6. 100if (x5 < x6) go to PC + 100
    无符号,大于等于则分支bgeu x5. x6. 100if (x5 >= x6) go to PC + 100
    无条件分支跳转并链接jal x1. 100x1 = PC + 4
    跳转并链接寄存器jalr x1. 100(x5)x1 = PC + 4

    计算机硬件的操作数

    国内芯片技术交流-硬件软件接口 (RISC-V) Chapter 2risc-v单片机中文社区(1)


    • RISC-V的单个寄存器64bits宽。
    • least significant bit用来指代右下的bit(图中的0),most significant bit指代左上的bit(图中的63)
    • 每条RISC-V指令翻译成二进制代码之后由六个"fields"组成,分别长7,5,5,3,5,7bits。其中三个5bits用来存放三个操作数所对应的寄存器编号。
    • 为了和汇编语言相区分,我们把二进制版本的命令称为机器语言或机器码。
    • Java依靠软件解释器(software interpreter)来执行。它的指令集称为Java字节码而不是类似RISC-V这样的机器语言,效率较低



    指令格式

    R(register)-type:


    funct7rs2rs1funct3rdopcode
    7 bits5 bits5 bits3 bits5 bits7 bits

    I(Immediate)-type: 12 bits用来存地址,rd表示目标寄存器,单寄存器


    immediaters1funct3rdopcode
    12 bits5 bits3 bits5 bits7 bits

    S-type:


    immediaters2rs1funct3immediateopcode
    7 bits5 bits5 bits3 bits5 bits7 bits

    opcode = 操作码,funct3和funct7是两个额外的存放操作码的空间
    rd = register destination
    rs = register source


    逻辑运算

    算术右移:把左边空出来的位用右边超出去的位来补齐







    上一篇:剑指X86/Arm,RISC-V哪来的底气?
    下一篇:看看应用RISC-V MCU的这些设计方案!
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

      离线 

  • TA的每日心情
    奋斗
    2021-1-15 13:53
  • 签到天数: 26 天

    [LV.4]

     楼主| 发表于 2020-8-18 15:42:48 | 显示全部楼层
    32个寄存器
    编号描述call时是否受保护
    x0常数0硬件编码
    x1(ra)返回地址寄存器(return address)
    x2(sp)栈指针(stack pointer)
    x3(gp)全局指针(global pointer)
    x4(tp)线程指针(thread pointer)
    x5 ~ x7临时寄存器
    x8 ~ x9保留寄存器
    x10 ~ x17传参或传递返回值
    x18 ~ x27保留寄存器
    x28 ~ x31临时寄存器



    (未完待续)



    本篇完,感谢关注:RISC-V单片机中文网


    全球首家只专注于RISC-V单片机行业应用的中文网站
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

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



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

    GMT+8, 2024-3-29 23:40 , Processed in 0.495319 second(s), 51 queries .

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