SMP L1 Level Spm Cache Protocol - BIT-SYS/gem5-spm-module GitHub Wiki

Unresovled Questions

  • 核间路由实现原理? out_msg.Destination: 如何指定? mapAddressToRange
  • 可能的处理核争用问题 不同处理核对同一_块_判定为热数据

TODO 可能的处理核争用问题

  • 一个spm块中不同的2行(cache line size)分别在2个处理核上有热数据特征
    • 正确但有性能问题的解决:将该块spm行数据放到首先发出spm移入请求的核中,其他核采取远程访问。
  • 一个spm块中的相同的1行分别在多于1个处理核上有热数据特征

原有协议

http://gem5.org/MESI_CMP_directory

网络

  • 每个L1, L2都有一个machineID,同时__L1节点, L2节点__都连入了一个网络。

SPM

Actions

直接操作的指令都是trigger event时传入的

Events

  • CPU <--> Spm
    • LOAD: load from local cpu
    • STORE: store from local cpu
  • 内部状态转换
    • SPM_Eviction: 换出
    • SPM_Movein:换入
  • SpmNetwork <--> Spm,使用L2Network
    • Remote_LOAD: request, 远程读, remote发来的
    • Remote_STORE: request, 远程写,remote发来的
    • Ack_all?: response, 对控制指令的相应。
    • Data_all_ack? 收完所有的数据了,对数据传输指令的相应。
    • Data: response,网络--> local
    • Data_Ack: local --> 网络
    • Data_NotExist
  • L2Network <--> Spm
    • WB_Ack: write back ack, 当spm->L2 cache时,L2发回的Ack
    • CoherenceResponseType:ACK 这是什么?
    • SPM写L2时需要f_sendDataToL2

Replacement

  • 目前设置写在所有的XXXX_hit action中,即在sequencer.xxxCallback()之前,可以优化。
  • 替换操作触发的条件:cache中某一块数据达到了热数据特征。
  • 该cache line一定是在cache中,同时要确定没有在其他spm块的迁移过程中

Replacement Events

  • replacement分为2个阶段
    1. 在xxx_hit后发送moveinRequest给L2
    2. 在responseNetwork里面接受L2的请求,Yes or No
    3. 如果是yes,则触发_Event:SpmReplacement_
    4. _SpmReplacement_进一步地可能会需要先eviction操作,还会触发其他时间,比如eviction结束等

Misc

  • Cache和Spm之间的entry 要么兼容要么要有互相转换的方式

Coherence消息的类型

  • CoherenceResponseType, 对应着发送的消息
    • SPM_Data:响应数据
  • CoherenceResquestType
    • SPM_Load/ SPM_Store:请求数据
    • SPM_WB: spm中数据迁出

一些限制

  • 暂定Spm中的映射块大小与L1, L2一行一样

Gem5 Misc

  • 协议定义中包含的一些路由mapping函数: src/mem/protocol/RubySlicc_ComponentMapping.sm
  • 需要看的代码: src/mem/protocol/RubySlicc_XXXX