Victor,

It depends on how you want the latency to be added. recvTimingResp() will 
receive the packet at tick X, and will start the filling process, which is done 
off the critical path, and thus we only need to care about this latency to 
schedule the evictions caused by this fill. In any case, it is assumed that 
filling itself takes some time, and in the meantime the block will not be 
accessible (check setWhenReady in handleFill). Therefore, any reads to the 
block in the meantime will take this extra ready time into account for their 
latency calculations. If I understand your situation correctly, you likely want 
to add your delay to that call to setWhenReady, in handleFill.


I have never tried to multiply Cycles, but I'd assume it is straightforward; if 
not, you may have to use some casts.


Regards,
Daniel
    Em quarta-feira, 16 de outubro de 2019 23:38:46 GMT+2, Victor Kariofillis 
<[email protected]> escreveu:  
 
 Hi Daniel,
First of all thanks for answering. I have some more questions. In my case, 
latencies are added every time data is written to the cache. So for example, 
theoretically latency should be added in handleFill() as well. I see that 
handleFill() doesn't have any latency computation in it. It is also absent from 
recvTimingResp() that calls it. Is this because it is off the critical path?
Also, it there any way to multiply a Cycles type variable? What I want to do is 
indicate that a because some things happen serially, a particular latency 
happens n times.
Thanks,Victor

On Sun, 13 Oct 2019 at 22:40, Victor Kariofillis <[email protected]> 
wrote:

Hi,
I am interested in adding additional latencies during a cache access. I have 
implemented some extra functionality that happens in the cache and I am 
wondering about how to model the extra time it will take for that to happen.

Where would I add the extra latency? For example, inside the access() function 
there is this line of code:
        // Calculate access latency on top of when the packet arrives. This
        // takes into account the bus delay.
        lat = calculateTagOnlyLatency(pkt->headerDelay, tag_latency);
Right below that, there is a "return false;" line. How is that latency being 
used? Also, how can I make sure whether the execution stalls until something 
else has finished or things that can happen concurrently?
Thank you,Victor

_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users  
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to