Skip to content

Issue with Update Replacement State not tracking misses #570

Open

Description

@ChristopherThomasHill

Describe the bug
update_replacement_state() doesn't get called on fills whenever replacement_cache_fill() is not defined. From the documentation it states that update_replacement_state() should be called on both hits and misses (at fill time) whenever replacement_cache_fill() isn't defined.

To Reproduce
Steps to reproduce the behavior:

  1. Go the following assertion to srrip.cc into the update_replacement_state(): assert(hit);
  2. Update the config file to use the srrip in the LLC
  3. Compile and run your code with any functioning trace that gets LLC misses.
  4. The assertion never fails and the program completes normally

Expected behavior
The program should terminate on the assertion during the first LLC miss since update_replacement_state() should be called with hit equal to false.

Desktop:

  • OS: Ubuntu 20.04
  • Compiler GCC
  • Version 11

Additional context
This error stems from the following code segment in cache.h

if (hit || replacement::has_cache_fill<decltype(r), uint32_t, long, long, champsim::address, champsim::address, champsim::address, access_type>)

Since, this check surrounds the call to update_replacement_state(), it won't be called for misses when the replacement_cache_fill() isn't defined.

Activity

  1. added a commit that references this issue on Dec 30, 2024
  2. changed the title [-]Issue with Update Replacement State not tracking hits[/-] [+]Issue with Update Replacement State not tracking misses[/+] on Dec 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions