Giter Club home page Giter Club logo

Comments (2)

siavashzk avatar siavashzk commented on July 21, 2024

I'm not particularly familiar with the prefetcher codebase, but I took a look and can answer your questions at a high level and point you towards the right direction.

A prefetcher in Scarab is defined using the HWP struct (or HWP_struct). HWP contains all relevant data/metadata for a prefetcher and a bunch of function pointers. HWP is essentially a class interface implemented in C using function pointers. To add a new prefetcher, you need to define all the relevant functions for a new HWP struct. These functions are then called for all prefetchers at the corresponding event. Then, you'll add an entry to the array of HWPs as defined in src/prefetcher/pref_table.def. Note that you do not have have to define all the functions, if you look at the currently implemented prefetchers in, you can see that many of the function pointers are NULL for various prefetchers.

pref_stream_ul1_miss is the function corresponding to ul1_miss_func in the HWP of the stream prefetcher. To be able to figure out what it does, you can look up where ul1_miss_func is called in the code. It is called by pref_ul1_miss() in pref_common.c, which is called from mem_complete_l1_access() in memory.c when an access misses in the L1 cache.

Side note: in Scarab, for historical reasons, L1 cache refers to the LLC.

It seems like pref_stream_throttle and pref_stream_train_stream_filter implement a mechanism for throttling how much the stream prefetcher consumes bandwidth. You need to dig into the code to understand how it works. Note that there is some amount of dead code in Scarab, so if you want to go through some code, I recommend assuming Scarab is configured using src/PARAMS.kaby_lake on top of the defaut parameters.

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.