Hi, The default value for the snoop directory is 8MiB. I am trying to find the minimum size for my configuration. I ran a dual-core system (-n 2) with 2 levels of caches with one L1D prefetcher (DCPT), with small L1 and L2 caches: build/X86/gem5.fast ./configs/example/se.py --caches --l2cache -n 2 -c ~/borrower/borrower/micro/stream -I 40000000 --cpu-type=X86O3CPU --l2_size=512 --l1d_size=128 --l1i_size=128 --l1d-hwp-type=DCPTPrefetcher
Given that L1I and L1D are 128 bytes (128/64=2 blocks), and L2 is 512 bytes (512/64=8 blocks), I expected that "system.tol2bus.snoop_filter" to need a maximum of 2cores*(2+2)+8=16 entries or size of 1024bytes to be able to track everything on the chip. Note that "system.tol2bus.snoop_filter" is only connected to L1I, L1D, and L2. However, with this size, the simulation breaks: build/X86/mem/snoop_filter.cc:200: panic: panic condition !is_hit && (cachedLocations.size() >= maxEntryCount) occurred: snoop filter exceeded capacity of 16 cache blocks Memory Usage: 643508 KBytes I have two questions: (1) Why in the current code, the snoop size is checked only once? https://github.com/gem5/gem5/blob/f554b1a7b56b5889bd5daec6e09eda8c3fbd93d1/src/mem/snoop_filter.cc#L199 Should not we check if right after pushing a new address to the cachedLocations at here: https://github.com/gem5/gem5/blob/f554b1a7b56b5889bd5daec6e09eda8c3fbd93d1/src/mem/snoop_filter.cc#L93 (2) Why do we need more spaces than the number of blocks that can theoretically be on the chip? Thanks, Majid
_______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s