Hi Farhad,

The short answer is "no". You're modifying the cache behavior, which is
going to have implications on the coherence protocol. This is both the good
thing and the bad thing about using Ruby... it forces you to think through
many of the actual implementation details.

Cheers,
Jason

On Thu, Sep 10, 2020 at 11:11 AM Farhad Yusufali via gem5-users <
[email protected]> wrote:

> Hi all,
>
> I didn't get a response on this so just following up - any feedback or
> insight would be appreciated!
>
> Thanks,
> Farhad
> ------------------------------
> *From:* Farhad Yusufali
> *Sent:* September 8, 2020 6:13 PM
> *To:* [email protected] <[email protected]>
> *Subject:* Approximating the value of L1 misses
>
> Hi all,
>
> I'm trying to reduce the latency of L1 misses - to do so, upon an L1 miss,
> instead of fetching from the L2, I would like to use a predictor to predict
> the value of the load and return this to the core (the details of the
> predictor are irrelevant). This way the processor is not stalled waiting
> for the block to be retrieved from the L2/memory. After every N misses to
> an address, in addition to generating a prediction, the L1 would also
> retrieve the data from the L2 and use this to train the predictor (the
> retrieved block would also be inserted into the L1). This is effectively
> an implementation of *Load Value Approximation *by San Miguel et al.
>
> I'm using the Ruby cache system because I need access to Garnet. To
> implement this, I'm currently modifying the Ruby implementation of the L1
> cache in gem5/src/mem/ruby/protocol*/*MESI_Two_Level-L1cache.sm.
>
> However, despite my technique not having to do anything with cache
> coherence, I'm having to essentially modify the details of the MESI
> protocol to get my stuff to work. For example, say I decide to need to
> fetch data for training after predicting a load that is not currently in
> the L1. If the block is in the *I* state, I need to take the action of
> sending a request to the L2 to retrieve the data. However, if I'm in the
> *I_S* state, I don't need to send a request to the L2 since the data is
> already on its way. This is just one of *many* ways I need to modify the
> coherence protocol.
>
> Is there an easier way to implement this without having to deal with all
> the intricacies and headaches of modifying/verifying coherence protocols?
> (I cannot switch to the classical cache system)
>
> Thanks,
> Farhad
> _______________________________________________
> gem5-users mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to