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

RISC-V Datapath Part3: Control Logic, metric, opt

[复制链接]

  离线 

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

    [LV.3]

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

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

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

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

    之前的 part2 我们忽略了控制逻辑是怎么实现的,把它当成一件理所当然的事情。我们可以看看 control logic 在处理器中对应的位置:

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(1)

    上面的 control 对应的就是下图中产生必要电信号的逻辑:

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(2)


    其中, Control Logic 有对应的逻辑表:

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(3)


    它会根据指令的类型来判断,而指令的类型有指令中固定的字段来决定。

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(4)


    那么,实际上对应的如上所示,交给 Inst BrEq BrLT 之后,不同的电路会处理以上内容,产生不同的信号,供给 ALU 等使用。

    时间度量

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(5)


    在一个 clock 中,对应的指令执行逻辑大概如上所示,那么,实际上

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(6)


    最大的时钟周期,即走 lw 的,为:

    f_max = 1/800ps = 1.25GHz

    实际上,指令执行的速度比这还快,会到每秒完成 5billion 的 add 。这归功于流水线。

    那么对于 CPU 来说,什么算衡量标准呢?我的 3800X 为啥单核那么牛逼呢(误)?标准主要有:

    • Latency: 程序需要执行的时间
    • Throughput: 程序一小时能够处理的请求数量

    即:

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(7)


    那么,具体到 CPU 层次而言,性能、Clock cycles per Instruction(即 CPI) 这些会有:

    • ISA
    • 处理器的实现(这里介绍的 RISC-V 的 CPI 为1)
    • Superscalar processors, CPI < 1

    这些决定本身影响了 CPi。而 Time per Cycle 本身会被下列内容影响:

    • 处理器的 microarchitecture
    • 技术,14nm 或者 28nm
    • 耗电


    Pipeline


    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(8)


    把所有指令的耗时当成一致的,然后用流水线的方式执行。因为每个原件只输出上一个state的状态,这些 state 是可以隔离的。

    流水线并不降低 Latency, 而是增大吞吐量。

    但是,流水线并不是有几阶段就会变快几倍,实际上,填充流水线的时间和 branch,降低了流水线的可能提升。

    Pipeline is not free
    • pipeline stage 如果是不平衡的,可能会比较慢
    • 寄存器的 setup time 和 clk->q 的时间可能会拖慢

    pipeline 的 task 如果有 dependency, 比如之前某个指令依赖某个寄存器,寄存器上的值又被后续指令修改,那么会有 dependency, 这个会造成流水线的 stall。

    针对时间不平衡,例如 ALU 100ps, memory load 200ps,这个需要抹平这种时间,例如之前的 t_cycle, 都整成 200ps 就行了:

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(9)


    我们会在下一节讨论 Pipeline 的具体实现细节,现在先跳过不表。

    Superscalar Processor
    CPU 的 clock rate 由技术和电源限制,流水线可以增加阶段,但是有如下 trade-off:

    • 每个阶段做的事情少,clock cycle 会减小
    • 但是潜在的 hazard 会增加

    所以可以考虑用 superscalar 处理器:

    • 把 pipeline stage 变成多个流水线
    • 每个时钟周期执行多个指令
    • CPI < 1, so use Instructions Per Cycle (IPC)
    • 因为多个流水线,所以可能的 dependency 减小了

    此外,还可以乱序(Out-of-Order) 的执行:

    Reorder instructions dynamically in hardware to reduce impact of hazards:
 EG, memory/cache misses

    x86 只有 StoreLoad 乱序,不过 RISC-V 这种 memory model 可以执行的乱序想必更多?

    国内芯片技术交流-RISC-V Datapath Part3: Control Logic, metric, optrisc-v单片机中文社区(10)








    上一篇:RISC-V Datapath: Part2
    下一篇:NVIDIA(一家美国企业)已基本确定收购ARM
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

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



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

    GMT+8, 2024-11-6 08:02 , Processed in 1.629605 second(s), 48 queries .

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