Version 24.1.0.0 #1846
BobbyRBruce
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
We are pleased to announce the release of gem5 version 24.1. To obtain v24.1 please pull the latest version of the stable branch.
Note: please delete your
build
directory before rebuilding to v24.1. Doing otherwise may cause errors in compilation.User facing changes
The behavior of the statistics
simInsts
andsimOps
has been changed.hostInstRate
andhostOpRate
are also affected by this change, as they are calculated using simInsts and simOps respectively.Instances of kB, MB, and GB have been changed to KiB, MiB, and GiB for memory and cache sizes stdlib, python: Add warning message and clarify binary vs metric units #1479
Random number generator is no longer shared across components. This may modify simulation results. misc: Do not share the random number generator across components #1534
gem5 Standard Library
Prefetchers
StridePrefetcher
has been altered as follows:Configuration scripts
Multisim
Compiler and OS support
As of this release, gem5 supports Clang versions 14 through 18 and GCC versions 10 through 14.
Other versions may work, but they are not regularly tested.
Multiple Ruby Protocols in a Single Build
There are many developer facing / API changes to enable Ruby multiple protocols in a single build.
The most notable changes are:
every protocol.
include "RubySlicc_interfaces.slicc"
from your .slicc file.scons menuconfig <build dir>
and selecting the right ruby options. Alternatively, if you're using abuild_opts
file, you can runscons defconfig build/<ISA> build_opts/<ISA>
which should update your config correctly.Multiple RubySystem objects in a simulation
Simulation configurations can now create multiple
RubySystem
s in the same simulation.Previously this was not possible due to
RubySystem
sharing variables across allRubySystems
(e.g., cache line size).Allowing this feature requires developer facing changes for custom Ruby protocols.
The most common changes will be:
RubySystem::foo()
withm_ruby_system->foo()
, and recompile.m_ruby_system
is automatically set by SLICC generated code.WriteMask
declarations (e.g.,WriteMask tmp_mask;
), modify the protocol so thattmp_mask.setBlockSize(...)
is called. Use the block size of theRubySystem
here (e.g., you can useother_mask.getBlockSize()
or get block size from another object).ruby_system
for the python classesRubySequencer
,RubyDirectoryMemory
, andRubyPortProxy
or any derived classes. You will receive an error at the start of gem5 if this is not done.RubyPrefetcher
, modify the configuration to assign theblock_size
parameter to the cache line size of theRubySystem
the prefetcher is part of.The complete list of changes are:
AbstractCacheEntry
,ALUFreeListArray
,DataBlock
,Message
,PerfectCacheMemory
,PersistentTable
,TBETable
,TimerTable
, andWriteMask
classes now require the cache line size to be explicitly set. This is handled automatically by the SLICC parser but must be done explicitly in C++ code by callingsetBlockSize()
.RubyPrefetcher
now requiresblock_size
be assigned in python configurations.CacheMemory
now requires a pointer to theRubySystem
to be set. This is handled automatically by the SLICC parser but must be done explicitly in C++ code by callingsetRubySystem()
.RubyDirectoryMemory
,RubyPortProxy
, andRubySequencer
now require a pointer to theRubySystem
to be set by python configurations. If you have custom protocols usingDirectoryMemory
or derived classes from it, theruby_system
parameter must be set in the python configuration.ALUFreeListArray
andBankedArray
now require a clock period to be set in C++ usingsetClockPeriod()
and no longer require a pointer to theRubySystem
.RubySystem::getBlockSizeBytes()
,RubySystem::getBlockSizeBits()
, etc. You must have a pointer to theRubySystem
you are a part of and call, for example,ruby_system->getBlockSizeBytes()
.MessageBuffer::enqueue()
has two new parameters indicating if theRubySystem
has randomization and warmup enabled. You must explicitly specify these values now.ArmISA changes/improvements
Architectural extensions
Architectural support for the following extensions:
Bugfixes
CPU changes
Before this release the Arm TLBs were using an hardcoded fully associative model with LRU replacement policy.
The associativity and replacement policy of the Arm TLBs are now configurable with the IndexingPolicy and ReplacementPolicy classes by setting the indexing_policy and replacement_policy params.
While default behaviour is still LRU + FA, the L2 TLB in the ArmMMU (l2_shared) has been converted from being a fully associative structure into being a 5-way set associative.
The default ArmMMU is therefore:
AMBA CHI changes/improvements
PR 1084 introduced two new CHI relevant classes.
It is meant to bypass SLICC and removes the limitation of using the gem5 Sequencer and associated data structures.
In other words it translates AMBA CHI transactions into ruby messages (which are then forwarded to the MessageQueues)
and vice versa.
In this way it will be possible to connect external RNF models to the ruby interconnect via the CHI-TLM library
RISC-V ISA improvements
GPU model improvements
The GPUFS model is now available in the standard library!
There is a new
ViperBoard
ingem5.prebuilt.viper
.This board is an initial implementation and will be improved in the next versions of gem5.
There is an example script in
configs/example/gem5_library/x86-mi300x-gpu.py
that shows how to use theViperBoard
.See #1636.
Other GPU changes
Other Miscellaneous Changes
Other Ruby Related Changes
Other
Development
This discussion was created from the release Version 24.1.0.0.
Beta Was this translation helpful? Give feedback.
All reactions