accelergy+timeloop底层优化

目前想到的改进点

accelergy

目前支持三种能量评估插件:CACTI(DRAM/SRAM/cache);Aladdin(datapath,例如intadder/FIFO);table-based(用户自己输入的能量表格)。

  1. CACTI插件直接调用了惠普实验室的CACTI7.0(2017年的最新版,第一版在1993年)。

    这部分做不了优化。

  2. Aladdin插件目前仅支持40nm和部分45nm,内部是表格(采集自Aladdin的输出,而不是直接调用Aladdin)然后根据传入的位宽等参数将表格数据缩放。也可以评估SRAM(基于CACTI5.3版本)。对微架构能量建模不准确,会导致最后选择的优化映射方案非最优(但是由于加速器主要开销在访问存储器,而这部分由CACTI负责,因此对总体评估的影响较小)。

    这部分可以考虑往插件中加入更多的表格以支持更多的基本组件,比如说稀疏格式的解码和编码单元。

  3. 可以考虑新增插件NVSim,用于评估非易失性存储组件的性能,接入方式类似CACTI。

Timeloop

  1. tile analysismicroarchitecture energy model分离,默认的能量模型是线性的(虽然加速器往往设计成计算与数据交换的高度重叠,但仍会有冲突,timeloop不考虑pipeline disruption),可否改成非线性(例如,随机网络冲突和拥塞)。

  2. 目前仅支持单层评估,可以考虑为全网络找到全局最优方案。简单的做法是直接线性合并多层网络;复杂的需要考虑跨层数据的重用,但是eyeriss又不支持该功能。

Eyeriss

  1. 考虑不同的稀疏编码格式
  2. 以整个网络而非单层为优化目标,探索各级存储空间的最佳设置。
  3. 可以考虑将MAC换成存内计算组件(memristor/ReRAM),然后用table-based/NVSim估算能量???