Hi Jason,

Thank you for your suggestions. Checking the output for smaller programs
helped and the benchmarks are working fine now.

And regarding tracking the referred blocks in the cache, I tracked the
blocks that are referred in the recvTimingReq function. When I dug through
the code, I could only find block access references in this function alone.
If this is correct, then I think I solved my problem.

Thank you
Varun

On Tue, Mar 6, 2018 at 11:29 PM, Jason Lowe-Power <ja...@lowepower.com>
wrote:

> Hi Varun,
>
> > How do I know if the benchmarks ran correctly?
> This isn't straightforward. One way to do it is to check the output of the
> benchmark. However, sometimes the run time is too long to do this. Another
> option is to run a smaller input size and check the output. If it is
> correct on the smaller size, you might be able to assume it will be correct
> on the larger input.
>
> > Any way to track dirty blocks in the caches?
> Not without modifying the code. You'll have to dig into the cache code to
> do this. The blocks have a "dirty" field that is likely tracked correctly,
> but you'll have to add a new interface to access that information outside
> of the cache. Which, by the way, you should consider how this is done in
> hardware :).
>
> If there are zero writes to the DRAM something is wrong. Either your
> benchmark isn't working, the statistics you're looking at are wrong, or
> you're not actually using the memory controllers you think you are, or
> something else :). It's impossible for me to debug this remotely, but these
> are some ideas.
>
> If I were you, I would start with a much simpler, smaller, program. Then I
> would check to make sure gem5 is behaving the way I expect before trying to
> run full-sized SPEC workloads.
>
> Cheers,
> Jason
>
> On Wed, Feb 28, 2018 at 8:40 PM Saivarun R <rsvaru...@gmail.com> wrote:
>
>> Hi jason,
>>
>> I'm using a timing simulation and I checked the writes to the dram
>> controller after the simulation of leslie3d benchmark suite. I'm still not
>> sure if the benchmarks were running properly, *How do I know if the
>> benchmarks ran correctly, *and there are zero writes to mem_ctrls in the
>> stats file.
>>
>> This is the command that I used and I got some warning statements like
>> below
>>
>> build/ALPHA/gem5.opt --outdir=/home/aaron/dramcache/leslie3d_idea
>> configs/example/se.py --cpu-type=TimingSimpleCPU --caches --l1i_assoc=4
>> --l1d_assoc=4 --l2cache --l2_size=256kB --l2_assoc=8 --l3cache
>> --l3_size=16MB --l3_assoc=32 --mem-size=8192MB --bench leslie3d
>> --maxinst=250000000
>>
>> warn: subt/sud   f12,f22,f11: non-standard trapping mode not supported
>> warn: mult/sud   f12,f12,f13: non-standard trapping mode not supported
>> warn: addt/sud   f12,f10,f14: non-standard trapping mode not supported
>>
>> Sorry not stating the context in which I want to track the dirty pages in
>> the cache in my earlier mail. I'm trying to implement footprint caching in
>> DRAM caches, I have a running model of a DRAM cache integrated with
>> DRAMSim2. And according to the paper [1] , blocks are classified as
>> referred if they are dirty. This information I need to use when encountered
>> with further fetching requests to this page. I've implemented all the
>> required logic for the footprint caching but unable to track the dirty
>> blocks in the cache. *Any way to track dirty blocks in the caches?*
>>
>> I will be helpful if you can answer any of the *questions raised*.
>>
>> [1]: "Die-Stacked DRAM Caches for Servers: Hit Ratio, Latency, or
>> Bandwidth? Have It All with Footprint Cache"
>>
>> Thank you
>> Varun
>>
>> On Wed, Feb 28, 2018 at 10:44 PM, Jason Lowe-Power <ja...@lowepower.com>
>> wrote:
>>
>>> Hi Varun,
>>>
>>> I imagine there are other code paths that writeback dirty data. The
>>> cache code is pretty complicated so I can't tell you exactly where to look
>>> off the top of my head. One thing you could do is put an inform (or use
>>> debug flags) at the memory controller. Here, you can see when there are
>>> writes to memory (which are cache writebacks).
>>>
>>> Another thing to check is to make sure you're using timing (not atomic)
>>> simulation.
>>>
>>> Cheers,
>>> Jason
>>>
>>> On Tue, Feb 27, 2018 at 9:20 PM Saivarun R <rsvaru...@gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> I want to track the number of dirty blocks during the simulation. And
>>>> after running a spec cpu2006 benchmark, calculix, I found that the number
>>>> of dirty blocks is zero.
>>>>
>>>> So I put an inform statement in the function allocateBlock as follows:
>>>>
>>>>              if (blk->isDirty() || writebackClean) {
>>>>              // Save writeback packet for handling by caller
>>>> // correlate[sector_index]++;
>>>> // predicted[i] = 1;
>>>> inform("Block is Dirty");
>>>>              writebacks.push_back(writebackBlk(blk));
>>>>             } else {
>>>>              writebacks.push_back(cleanEvictBlk(blk));
>>>>             }
>>>>
>>>> And through out the simulation not even one block was declared as
>>>> dirty. What could be reason or is it that blocks are not dirty at all??
>>>>
>>>> Can any one help me out with a reason for such an observation?
>>>>
>>>> Thank you
>>>> Varun
>>>> _______________________________________________
>>>> gem5-users mailing list
>>>> gem5-users@gem5.org
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>
>>>
>>> _______________________________________________
>>> gem5-users mailing list
>>> gem5-users@gem5.org
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>
>>
>> _______________________________________________
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
>
> _______________________________________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to