Giter Club home page Giter Club logo

Comments (5)

siavashzk avatar siavashzk commented on July 21, 2024

The cache level is specified manually in the implementation of each prefetcher. For example, in pref_stream.c, search for pref_addto_ul1req_queue_set() and you can see where that is called. It is inserting a new request to prefetch in the LLC (i.e, L1 in Scarab source).

In pref_common.c, there's also a function called pref_addto_dl0req_queue for inserting a prefetch for the d-cache and pref_addto_umlc_req_queue() for inserting into MLC (the optional mid-level cache between D-cache and LLC). However, as far as I know there aren't currently any prefetchers implemented in Scarab that prefetch into D-cache. Might be useful to read this past issue, when someone was trying prefetching into D-cache #103

from scarab.

sanjana879 avatar sanjana879 commented on July 21, 2024

Actually, I think pref_addto_ul1req_queue is called in the stridepc prefetcher - does that mean that's prefetching into the D-cache? Also, where is pref_addto_dl0req_queue is prefetching into?

I was looking at that issue and it mentioned disabling a L1 prefetcher - how do you disable a prefetcher from a particular level?

from scarab.

siavashzk avatar siavashzk commented on July 21, 2024

Sorry, I had a typo in my previous answer (now fixed).

In Scarab, L1 refers to the LLC, not the d-cache. The cache hierarchy is like this:

1- Scarab d-cache === L1 d-cache
1- Scarab mlc (optional, could be disabled) === L-2 cache
1- Scarab L1 === LLC (L-2 or L-3 depending on whether scarab mlc is enabled)

So, pref_addto_ul1req_queue is prefetching into Scarab L1, which is the same as LLC.

from scarab.

siavashzk avatar siavashzk commented on July 21, 2024

In terms of what it means to disable a prefetcher, as mentioned in #103:

I can't speak on behalf of the person who created the issue, but in general Scarab does not have a build-in mechanism for disabling prefetching from a particular level. So I imagine the author added their own knobs for achieving this.

For example, you could write your own prefetcher (or modify one of the existing ones) and then add a knob for that prefetcher, and based on the value of that knob call one of the three functions: pref_addto_dl0req_queue pref_addto_umlc_req_queue pref_addto_ul1req_queue

from scarab.

siavashzk avatar siavashzk commented on July 21, 2024

Closing this due to inactivity. Feel free to reopen if there are followup questions.

from scarab.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.