Comments (2)
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.
Closing this due to inactivity. Feel free to reopen if there are followup questions.
from scarab.
Related Issues (20)
- [Question] How do you access metadata about the Cache from a prefetcher function? HOT 2
- [Question] !ENABLE_ICACHE_PACKET_BREAKING && !PERFECT_BP HOT 8
- [Question] Runahead Execution in Scarab HOT 6
- [Question] Decoder: Redirect on btb_miss and !taken HOT 2
- recipe for target 'pin_exec' failed HOT 19
- [BUG] Running SPEC2006 Checkpoints with PIN tool HOT 1
- Tests cannot access github secret values when pull request created by fork
- [Question]About wrong path execution HOT 1
- [Question]About Wrong Path Execution HOT 2
- [Question] mem_req buffer and queues HOT 1
- [Question] Assertion failure when running gcc in SPEC2017 IntSpeed HOT 3
- [Question] Proper documentation for running SPEC 17 HOT 2
- [BUG] Link to auto-generated software documentation is broken HOT 1
- [Question] make -C docs fails HOT 1
- [Question] Running make in src/ fails HOT 8
- Running make in scarab/src fails HOT 1
- [BUG] "scarab --help" info is out of date?
- [Question and Bug] "Invalid header for input file #0" HOT 1
- Having issue in building src in scarab
- [BUG] Multiple compilation errors HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scarab.