Comments (4)
This is Heiner who had the original question. subscribing to this thread.
from scarab.
Hi!
1)
In Scarab we have the ICache/Dcache, MLC(mid-level cache), and the L1. These correspond to the L1 I/D, unified L2, and unifed L3 in a typical three-level cache hierarchy.
However, recent users of Scarab have usually disabled the MLC, leaving a two-level data cache hierarchy with the Dcache and L1. Thus the MLC have not been used and tested in a long time. The MLC currently will NOT work as it is, because you will encounter an assert failure in new_mem_req() in memory.c. I have briefly looked at this assert, and it seems safe to remove. Once the assert is removed, the MLC will run without crashing. I have run some studies with the MLC enabled, and it appears to work, but I have frequently found that performance (i.e., IPC) is lower with the MLC enabled, when compared to the two-level Dcache/L1 configuration. I don't yet have a good grasp on why this is yet, but it is something I will look into.
The highest level function is update_memory() under src/memory/memory.c
You can ignore perf_pred_cycle(), pref_update(), and update_on_chip_memory_stats().
update_memory_queues() goes through the queues which hold requests to the L1 and MLC, and sort the requests in each queue based on the request priority. The "bus out" queue is no longer used after integration with Ramulator.
mem_process_mlc_fill_reqs() and mem_process_l1_fill_reqs() process requests that are filling the MLC and L1, respectively.
ramulator_tick() is called every memory cycle to simulate the workings of the main memory through Ramulator.
mem_process_bus_out_reqs() is basically empty since we no longer use the bus out queue.
mem_process_l1_reqs() and mem_process_mlc_reqs() process requests to the L1 and MLC, respectively.
mem_process_core_fill_reqs() handles filling into the Icache/Dcache, if necessary
3)
For ops that read data from the cache hierarchy, I believe the data has to propagate to the Dache, and we only set the op's done_cycle when it finishes its dcache access (in update_dcache_stage() in src/dcache_stage.c)
I've been meaning to put together a more detailed document that explains how all this works in more detail, but hopefully that'll be enough to get you started.
Thanks,
Ben
from scarab.
Thank you. I feel that disabling the MLC may be problematic, after all, modeling the memory hierarchy well has a significant impact on performance. Feel free to close.
from scarab.
Closing issue as it has been inactive for a while.
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.