• Rocket


    https://mp.weixin.qq.com/s/cTuVq9xnj1Rcb7hrANDmcg

     

    简单介绍MemoryBus的实现。

     

     

    1. CacheBlockBytes

     

    用于定义和查找参数配置的key:

    对应的参数为缓存块的大小(字节数)。

     

    2. BroadcastParams

     

    BroadcastParams定义TLBroadcast所需要的参数:

    TLBroadcast的定义如下:

     

    3. BroadcastKey

     

    用于定义和查找BroadcastParams的Key:

     

    4. BankedL2Params

     

    定义两个参数:

    其中:

    a. nBanks:bank的个数;

    b. coherenceManager:生成内存一致性管理器的函数;默认实现里面使用TLBroadcast提供缓存一致性逻辑。

     

    coherenceManager在ExampleRocketSystem中使用:

     

    假设这里获取到的是默认的coherenceManager,这里的连接结构图如下:

     

    5. MemoryBusParams

     

    定义存储总线的参数:

    其中:

    a. MemoryBusParams继承自HasTLBusParams/HasBuiltInDeviceParams/HasRegionReplicatorParams;

    b. beatBytes/blockBytes:用于实现HasTLBusParams中的抽象成员:

    c. zeroDevice/errorDevice:用于实现HasBuiltInDeviceParams中的抽象成员:

    d. replicatorMask:用于实现HasRegionReplicatorParams中的抽象成员:

     

    6. MemoryBus

     

    MemoryBus用于实现一个内存总线。

     

    1) TLBusWrapper

     

    MemoryBus继承自TLBusWrapper,实现了其中的抽象成员:

    A. inwardNode

     

    inwardNode是总线的上游节点连接的位置。其实现为:

    其中:

    a. 如果不需要复制下游节点,即params.replicatorMask == 0,直接使用xbar.node;

    b. 如果需要复制下游节点内存区域,即params.replicatorMask != 0,就在xbar.node上游增加一个RegionReplicator节点。

    c. RegionReplicator节点,根据replicatorMask的值,把下游节点的地址区间复制成多份:

     

    B. outwardNode

     

    outwardNode是总线下游节点连接的位置。其实现为:

    其中:

    a. ProbePicker用于合并上游的cache clients:

     

    C. busView

     

    busView使用的是第一个输入边:

     

    2) CanHaveBuiltInDevices

     

    用于提供attachBuiltInDevices方法,向memory_bus中引入zero/error设备:

     

    3) CanAttachTLSlaves

     

    MemoryBus下挂内存设备,内存设备作为下游节点,也就是slave存在。所以混入CanAttachTLSlaves以提供方法方便挂接下游节点:

     

    4) toDRAMController

     

    用于连接到下游DRAM控制器节点:

     

    使用如下:

     

    其结构大致如下:

                 

     

     

  • 相关阅读:
    【五一qbxt】day7-1 引水入城
    【五一qbxt】day6 OI中的stl
    【五一qbxt】test2
    ASCII码
    深入浅出Redis04使用Redis数据库(lists类型)
    深入浅出Redis03 使用Redis数据库(hashes类型)
    深入浅出Redis01安装
    FireFox & Chrome 使用技巧
    Android学习笔记03-搭建Win8下的Android开发环境
    java + jquery + ajax + json 交互
  • 原文地址:https://www.cnblogs.com/wjcdx/p/13068421.html
Copyright © 2020-2023  润新知