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