Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

May 2023 Release Candidate #353

Merged
merged 1,026 commits into from
Aug 9, 2023
Merged

May 2023 Release Candidate #353

merged 1,026 commits into from
Aug 9, 2023

Conversation

ngober
Copy link
Collaborator

@ngober ngober commented Jun 2, 2023

The next release of ChampSim is here. This is the result of months of work from multiple contributors to improve the simulator. Please migrate your work to this release candidate and provide feedback here. I expect this release candidate will be merged in a month or so.

Features

  • (Allowed for multiple configuration files to be specified #143) Configurations can now be specified as multiple files: For example, specifying ./config.sh A.json B.json will work the same as if you had specified their union. In this way, you can keep common parts of a configuration in a file that doesn't change and replace only the parts that do change.
  • (Added support for making multiple executables #259) Configurations can now be specified as a list. In this configuration, multiple executables will be built with make.
  • (Added support for hybrid modules #187) Configurations can now specify a list of modules rather than just one. For most modules, this is not extremely useful, since the last module in the list will have priority in victim selection (in the case of replacement policies) or branch prediction, but it can be quite useful for prefetchers, which can issue prefetches independently.
  • (Added option to output statistics to a JSON file #250) ChampSim can now output quantities of interest in a JSON format. This allows much easier automated processing of data.
  • (First draft of Module Support Library #292) The first iteration of ChampSim's Module Support Library is released. Included are the following classes and functions (all in the champsim::msl namespace):
    • fwcounter and sfwcounter: (signed) fixed-width saturating counters. These can transparently perform arithmetic, saturating their values at their maximum and minimum according to the number of bits supplied in the template parameter. These are famously used in the bimodal branch predictor, but show up in a variety of other contexts as well.
    • lru_table: A simple table with LRU replacement, useable with any value type.
    • lg2(): a constexpr function to calculate the base-2 logarithm
    • bitmask(): a function to create a bitmask for selecting certain bits out of a value
    • splice_bits(): a function to select the upper bits from one value and the lower bits from another

Improvements

Breaking Changes

  • Interfaces to nearly all modules have changed. This includes the removal of members from the branch predictor and BTB hooks, and the addition of a member to the prefetcher cache_operate hook. Support for these interfaces will be re-enabled in the next release.
  • The vcpkg package manager is now used to manage dependencies. Please follow instructions in the README to avoid compilation errors.

@alberto-ros
Copy link
Collaborator

Hi, just when downloading it and doing: ./config.sh champsim_config.json

Some warnings appear:

WARNING: key "ptw_mshr_size" in PTW cpu0_PTW is deprecated. Use "mshr_size" instead.
WARNING: key "ptw_max_read" in PTW cpu0_PTW is deprecated. Use "max_read" instead.
WARNING: key "ptw_max_write" in PTW cpu0_PTW is deprecated. Use "max_write" instead.
WARNING: key "ptw_rq_size" in PTW cpu0_PTW is deprecated. Use "rq_size" instead.

Should champsim_config.json be updated with the WARNING suggestion?

@ngober
Copy link
Collaborator Author

ngober commented Jun 8, 2023

Hi, just when downloading it and doing: ./config.sh champsim_config.json

Some warnings appear:

WARNING: key "ptw_mshr_size" in PTW cpu0_PTW is deprecated. Use "mshr_size" instead. WARNING: key "ptw_max_read" in PTW cpu0_PTW is deprecated. Use "max_read" instead. WARNING: key "ptw_max_write" in PTW cpu0_PTW is deprecated. Use "max_write" instead. WARNING: key "ptw_rq_size" in PTW cpu0_PTW is deprecated. Use "rq_size" instead.

Should champsim_config.json be updated with the WARNING suggestion?

Fixed.

alberto-ros and others added 6 commits June 8, 2023 16:43
This pull request includes two fixes:

The first one is that BRANCH_OTHER considered conditional branches in
ChampSim. Among other effects, the most important current "bug" is that
the BTB considers them as "always_taken" which is not right.

The second ones is considering that conditional branches can also read
from other registers, and not just from flag registers.

In general, I think we should avoid to have a BRANCH_OTHER type as it
may be confusing. But for now, this patch fixes some current problems.
Fixed cache miss count in case of an MSHR full. The miss should only be
counted once rather than in every cycle until an MSHR becomes available.

---------

Co-authored-by: Nathan Gober <ngober@protonmail.com>
Fixes #359.

There was a bug in the tag lookup where cascading misses in the PTW
might cause the L1D to deadlock. This patch allows the
`inflight_tag_check` member to drain to the `translation_stash`,
allowing bandwidth for translated packets (from the PTW) to be looked
up.
This patch fixes a bug where a MSHR merge in the TLB would discard the
translation, resulting in occasionally failed `packet.address != 0`
assertions.
Resolves #364 

This patch fixes a bug where an MSHR merge could destroy the event
cycle, causing a deadlock.
@ngober ngober merged commit 2bba2bd into master Aug 9, 2023
31 checks passed
@ngober ngober deleted the release/2023-06 branch August 21, 2023 15:27
JeongWon-Oh pushed a commit to JeongWon-Oh/ChampSim-InvincibleCache that referenced this pull request Jan 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants