我想修改系统画布中的缓存延迟参数,并使用 FVP_Base_Neoverse-N1来构建系统,因此像这样修改缓存参数是否正确?
默认情况下,快速模型/ FVP中禁用缓存建模。在大多数情况下,缓存的存在或不影响软件的功能,并且在程序员的视图模型(如快速模型)中对缓存进行建模会对模拟性能产生影响。但是,您确实需要打开高速缓存建模才能模拟高速缓存访问并具有计时参数以提高效率。
在诸如Neoverse-N1之类的基本FVP中,有一个称为“ cache_state_modelled”的顶级参数可以打开(或关闭)所有缓存的建模。可以分别启用或禁用平台中的每个缓存,但是通常您希望全部启用或全部禁用。有几种设置此参数的方法。运行FVP时,我通常使用命令行开关:“-C cache_state_modelled = 1”。
另一个选项是在“系统画布”中设置它并重建平台。去做这个:
打开项目
打开顶级LISA文件(FVP_Base_Neoverse-N1.lisa),然后单击“属性”
选择“参数”标签
将cache_state_modelled的默认值更改为1
保存
建立
现在,当您运行FVP缓存时,默认情况下将启用建模。然后,您可以根据需要通过在命令行中添加“ -C cache_state_modelled = 0”将其关闭。
向模型中的缓存事务添加延迟的第二阶段。Neoverse-N1具有:
l1 dcache,l1 icache,每个核心l2缓存
所有内核之间共享的l3缓存
其中每个参数都有一组命中/未命中,读/写,监听和维护延迟的参数。设置它们的方法与用于全局缓存状态建模参数的方法相同。
在命令行上,添加(例如)“-C cluster0.dcache-hit_latency = <值>”
通过以下方式编辑LISA中的值:
右键单击Neoverse模型(称为“ cluster0”)
选择“对象属性”
选择“参数”标签
编辑要分配延迟的所有缓存操作的值
(或者,您可以双击“ cluster0”模型以打开该模型的LISA并在源代码中编辑参数)
保存
重建
最后一步是运行FVP时识别这些值。默认情况下,运行快速模型时将忽略所有延迟。要启用它们,您需要设置一个名为FASTSIM_DISABLE_TA的环境变量。将其设置为“ 0”,以在运行FVP之前将其应用到仿真中。
快速模型时序注释的文档可在以下位置找到:developer.arm.com /.../timing-annotation 。