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

RISC-V Datapath: Part2

[复制链接]

  离线 

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

    [LV.3]

    发表于 2020-10-21 00:00:36 | 显示全部楼层 |阅读模式

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

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

    x
    本帖最后由 皋陶 于 2020-10-21 00:00 编辑

    RV32I 需要的状态有:

    • x0 - x31 的寄存器
      • 每一个是 32bits, 32 个寄存器
      • 由 rs1rs2 和 rd 确定
      • 对 x0 的写会被忽略
    • PC
    • 内存
      • 在一个32bits的地址空间里,存有指令和数据

    下面内容全是图,没有什么原因,因为真的全是图...

    One-Instruction-Per-Cycle RISC-V Machine
    • 现有的状态输出和输入走到 combinational logic, 在下个 clock edge 之前设置好下一个状态的值
    • clock edge 到来时,所有的状态都会被输出更新,然后执行状态转移到
    • 指令和数据的内存是分开的,为了简化,内存是异步读取的,写入是同步的

    抽象的逻辑图如下:

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(1)



    Instruction phase


    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(2)


    我们处理一条指令,可以划分为下面这些阶段:

    • 取指
    • Decode/Register Read
    • Execute
    • Memory
    • Register Write

    现在,我们来实现 add, 上一节我们介绍了 add ALU 对应的逻辑,现在需要看看 add 全流程了:

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(3)


    这个地方不涉及 memory, 需要做的事情是:

    • rd = rs1 + rs2
    • PC = PC + 4

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(4)


    RegWEn 控制是否写寄存器,这是根据指令决定的。

    • Clock edge 触发 PC 变化
    • IMEM 变化,取地址
    • Reg[] 变化,Clock 触发后输出到 ALU
    • 写会 rd

    那么,要实现 sub, 需要给 ALU 的控制逻辑加料:


    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(5)


    其他 R-Format Instructions 也可以用这套逻辑来实现

    引入立即数

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(6)


    所以引入了 imm gen

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(7)



    load words

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(8)


    现在,我们需要访问 dmem, 根据地址来输出值:

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(9)


    这个时候加上了 WbSel 和 MemRw, 需要读取 memory。我们现在能读取内存。

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(10)


    这个时候我们需要增加写内存的 Path:

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(11)


    这个时候需要一个 DataW 做输出到 AddR 的值。

    一值多用


    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(12)


    我们知道,RISC-V 的 rs1 rs2 rd 都是出现在同一个地方的,所以所有的路径都会被用到,只是根据控制逻辑来判断这个值具体是什么语义,是立即数还是寄存器。

    branchesConditional branch

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(13)


    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(14)


    这里加入了一个 Branch Comp 的重要组件,然后把 PC conditional 的送到 ALU,结果再 conditional 的送回 PC

    unconditional branch

    国内芯片技术交流-RISC-V Datapath: Part2risc-v单片机中文社区(15)


    这里就是直接跳转了,比之前还简单呢!

    Conclusion
    • Universal datapath
      • Capable of executing all RISC-V instructions in one cycle each
      • Not all units (hardware) used by all instructions
    • 5 Phases of execution
    • IF, ID, EX, MEM, WB
      • Not all instructions are active in all phases
    • Controller specifies how to execute instructions
      • what new instructions can be added with just most control?






    上一篇:RISC-V Part5.1: Datapath 硬件基础
    下一篇:RISC-V Datapath Part3: Control Logic, metric, opt
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

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



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

    GMT+8, 2024-4-24 11:03 , Processed in 0.823695 second(s), 48 queries .

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