Hello. I was going over the files for sector tags and trying to figure out how 
they are supposed to be working.
What I can understand is, compared with a set associative cache, the "sets" are 
sets of "sectors" instead of "ways", each sector having one or more subsectors 
(which are the actual cache block).
I have 2 questions:
1. in sector_tags.cc, the invalidate() does not invalidate all blocks of a 
sector, as other blocks might be using the tag. Same in the moveblocks(). 
However in findvictim(), all blocks of a sector are evicted. So, in terms of 
replacement, all blocks of a sector is read from the downstream cache ? In ther 
words, the granularity of data movement is "sector" ?
But in insertBlock(), only single blocks are inserted. Does this mean, after an 
eviction,  the timing for a "sector" to be "filled" is the sum of the timing of 
all individual cache blocks in that sector ?
2. In the regenerateBlkAddr(), I got how sector address was calculated. But 
generate the location within sector, "sector offset" was shifted by 
"sectorShift". I was assuming this "sectorShift" will reflect the "number of 
bits required to represent number of blocks in a sector".
However, "sectorShift" was initialized as "sectorShift(floorLog2(blkSize))". 
Now, from Tags.py, I can see that blkSize is the cacheline size. How does 
cacheline size relates to "number of bits required to represent number of 
blocks in a sector ?
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to