CACTI 使用
我前几天读了一篇二十多年前的论文,论文中的实验使用了 CACTI 2.0 作为缓存模型。 我查了一下这个模型,它最后一次更新是在十年前,最新版本是 7.0,而且已经在 github 开源。 看起来是个很容易上手的模型,可以在我的毕设里面使用。
基本使用
git clone
之后,先make
,会生成可执行文件cacti
。CACTI 为我们提供了一些预设,例如缓存预设cache.cfg
。要评估这个预设的性能,只需要:
./cacti -infile cache.cfg
除了这种在文件中提供参数的方式之外,CACTI 也接受命令行参数。CACTI 的README
里面是这样写的:
./cacti cache_size line_size associativity rw_ports excl_read_ports excl_write_ports
single_ended_read_ports search_ports banks tech_node output_width specific_tag tag_width
access_mode cache main_mem obj_func_delay obj_func_dynamic_power obj_func_leakage_power
obj_func_cycle_time obj_func_area dev_func_delay dev_func_dynamic_power dev_func_leakage_power
dev_func_area dev_func_cycle_time ed_ed2_none temp wt data_arr_ram_cell_tech_flavor_in
data_arr_peri_global_tech_flavor_in tag_arr_ram_cell_tech_flavor_in tag_arr_peri_global_tech_flavor_in
interconnect_projection_type_in wire_inside_mat_type_in wire_outside_mat_type_in
REPEATERS_IN_HTREE_SEGMENTS_in VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in
BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in PAGE_SIZE_BITS_in BURST_LENGTH_in
INTERNAL_PREFETCH_WIDTH_in force_wiretype wiretype force_config ndwl ndbl nspd ndcm
ndsam1 ndsam2 ecc
选项
想做实验,当然需要在cfg
文件里自行修改一些选项。由于我做的这个实验只研究缓存,且主要关注时间,因此略过功耗、面积相关的设置。
缓存容量
样例十分简明。例如 256KB 的缓存,我们可以写:
-size (bytes) 262144
CACTI 还给出了一些 DRAM 颗粒的预设,8Gb 的颗粒可以写:
-size (Gb) 8
Cache line 大小与相连度
Cache line 大小设为 64B,8 路组相联。
-block size (bytes) 64
-associativity 8
若要对全相联缓存建模,只需把associativity
设为0。
制程
CACTI 支持的制程可以参考这段代码。此外还要注意,CACTI只支持$\leq 90 \mathrm{nm}$的制程,详见这段代码。
存储类型
三种选择:
cache
:缓存ram
:scratchmain memory
:主存
这里选择cache
。
Data array 和 Tag array 类型
我对这几个选项的理解是,在确定的某个制程下选择哪种工艺库。可以看到,cell(即 Data array cell 与 Tag array cell)具有五个选项:
itrs-hp
itrs-lstp
itrs-lop
lp-dram
comm-dram
peripheral(即 Data array peripheral 和 Tag array peripheral)只能选择前三种。
这些选项是什么意思呢?ITRS 是 International Technology Roadmap for Semiconductors 的缩写,即半导体国际技术路线图。前三个选项的意思是:
itrs-hp
: high performanceitrs-lop
: low operating poweritrs-lstp
: low standby power
后两个选项显然是指低功耗 DRAM 和普通 DRAM。
Tag 大小
可以自己设置。
-tag size (b) 22
也可以让 CACTI 计算。
-tag size (b) "default"