《手把手教你设计cpu_RISC-V处理器》11章笔记

11章 哈佛还是比亚迪(存储器)

write by ChiHuiXuan

主要内容:处理器架构(蜂鸟处理器等)
介绍蜂鸟E200处理器核存储器子系统的微架构和源码分析

11.1 存储器架构

11.1.1 无缓存(cache)

  • 缓存
    • 缓存的一些基础知识
    • 低功耗处理器不配备缓存的原因
      • 无法保证实时性

        由于缓存的容量是有限的,因此访问缓存存在着相当大的不确定性。一旦缓存不命中,则需要从外部的存储器中存取数据,造成较长的延迟
        因此更加倾向于使用延迟确定的ITCM或者DTCM
        
      • 软件规模较小

        ITCM/DTCM便可以满足其需求
        
      • 面积功耗大

11.1.2 处理器一定要有存储器

虽然处理器不一定需要缓存,但是处理器是一定需要存储器的。

  • 冯诺依曼结构(普林斯顿结构)

  • 指令和数据合并

    • 在这里插入图片描述
  • 哈佛结构

    • 指令和数据分开存储
    • 在这里插入图片描述
  • 两种结构的界限变得模糊

    • 从软件的角度来,系统往往只有一套地址空间,因此这符合冯·诺依曼体系结构的准则。
    • 从硬件实现的角,现代处理器配备指令和数据存储器,因此符合哈佛结构。
    • 冯·诺依曼结构和哈佛结构并不是一种非此即彼的选择。

11.1.3 ITCM 和 DTCM

  • ITCM 和 DTCM比cache更适合嵌入式低功耗处理器。
    • 能够保证实时性
    • 能够满足软件需求
    • 面积功耗小

11.2 risc-v 对于访存指令的简化

1.仅支持小端格式
2.无地址自增自减模式
3.一次只读/写一个数据

11.2.1 仅支持小端格式

  • 可以简化硬件的实现,无须做特别的数据转换

11.2.2 无地址自增自减模式

  • 简化生成逻辑

11.2.3 一次只读/写一个数据

  • 硬件设计十分简单

11.3 risc-v访存指令

11.3.1 Load和Store指令

  • 除了load和store指令,其他指令都无法访存

  • 7条访存指令

LH,LHU,LB,LBU,LW,SB,SH,SW
  • 推荐使用地址对齐的操作

11.3.2 Fence指令

  • 松散存储器模型,对执行顺序不做要求

  • Fence和Fence.I两条存储器屏障指令

    • Fence

      “在Fence指令之前指令的访存结果”必须比“在Fence指令之后指令的访存结果”先被观测到。
      
    • Fence.I

      “在Fence.I指令之后指令的操作”必须能观测到“在Fence.I指令之前指令的操作”。
      

11.3.3 A扩展指令

  • 用于支持多线程情况下访存的原子或同步操作
    • AMO指令
    • Load-Reserved和Store-Conditional指令

11.4 蜂鸟E200存储系统的硬件实现

11.4.1 总体设计思路

主要包含四个组件

  • AGU

    生成读和写指令的访存地址
    
  • LSU

    控制模块
    
  • ITCM

    指令存储部件
    
  • DTCM

    数据存储部件
    

    在这里插入图片描述

11.4.2 AGU

主要用于产生读/写指令等的访存地址

11.4.3 LSU

蜂鸟E200处理器核存储器子系统的主要控制单元

  • 代码实现和BIU相似
  • LSU 有2组输入 ICB 总线接口,分别来自于 AGU 单元和 EAl 协处理器;有3组输出 ICB 总线接口,分别分发给 BIU,DTCM,ITCM 。
  • “ICB汇合”
  • "ICB分发”
  • 最终的返回数据经过操作尺寸对齐之后,经过 LSU 的写回接口写回。

11.4 4 ITCM和DTCM

蜂鸟E200配备了专用的 ITCM(数据宽度为 64 位)和 DTCM(数据宽度为 32 位)。

  • 哈佛结构和冯诺依曼结构的严格界限已经变得模糊

    • 蜂鸟E200处理器有专用的总线分别访问 ITCM和DTCM---------哈佛结构

    • ITCM所在的地址区间同样能够通过 LSU 被读和写指令访问到用,于存储数据-------冯诺依曼结构

      在这里插入图片描述

  • ITCM 的存储器主体由一块数据宽度为 64 位的单口 SRAM 组成。

  • ITCM 用数据宽度为 64 位能够取得更低的功耗消耗。

    1.比32位的SRAM面积更加紧凑
    2.64位宽的ITCM可以1次取出64位的指令流
    
  • ITCM 的相关源代码

  • 3组输入 ICB 总线“ICB 汇合”,采用的仲裁机制是优先级仲裁

    • LSU 的访问接口
    • IFU专用的 ICB 接口
    • 外部直接访问接口

  • DTCM 的微架构

在这里插入图片描述

11.4.5 “A”扩展指令处理

“A”扩展子集对于蜂鸟 E200 这样的极低功耗处理而言未必是必须要支持的部分

默认支持“A”扩展子集。

  • “A”扩展指令分为两类

    • Load-Reserved和Store-Conditional 指令的硬件实现

      在LSU单元中设置了互斥检测器
      当有Load-Reserved执行时,设置互斥检测器的有效标志
      当有Store-Conditional执行时,如果写指令访问存储器的地址和互斥检测器中存储的地址一样,则将互斥检测器的有效标志清除掉
      
    • AMO指令的硬件实现

  • 蜂鸟E200只能够在单核独自访问存储器时,才能保证程序执行的“A”扩展指令结果正确。(局限性

11.4.6 Fence与Fence.I指令

11.4.7 BIU

  • 蜂鸟 E200 处理器核还能通过 BIU 访问外部的存储器

11.4.8 ECC

  • 使用 ECC (Error Checking and Correction)算法对 SRAM 进行保护

11.4.9 小结

  • 使用了两级流水线的超低功耗架构
  • 配备了 ITCM 和 DTCM 及其专用的访问通道
  • 配备了多样的外部存储器访问接口

猜你喜欢

转载自blog.csdn.net/weixin_41650348/article/details/108515096
今日推荐