Giter Club home page Giter Club logo

Comments (4)

hlitz avatar hlitz commented on July 21, 2024

This is Heiner who had the original question. subscribing to this thread.

from scarab.

bencplin avatar bencplin commented on July 21, 2024

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.

hlitz avatar hlitz commented on July 21, 2024

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.

spruett avatar spruett commented on July 21, 2024

Closing issue as it has been inactive for a while.

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.