The official repository for the gem5 computer-system architecture simulator.
gem5 Version 23.1 is our first release where the development has been on GitHub. During this release, there have been 362 pull requests merged which comprise 416 commits with 51 unique contributors.
kconfig
build_opts
are unchanged and still available.scons PROTOCOL=<PROTOCAL_NAME> build/ALL/gem5.opt
will not work anymore. you now have to use scons <kconfig command>
to update the ruby protocol as example. The double dash options (--without-tcmalloc
, --with-asan
and so on) are still continue to work as normal.WorkloadResource
added to resource specializationWorkload
and CustomWorkload
classes are now deprecated. They have been transformed into wrappers for the obtain_resource
and WorkloadResource
classes in resource.py
, respectively.Workload
class, change the call from Workload(id='resource_id', resource_version='1.0.0')
to obtain_resource(id='resource_id', resource_version='1.0.0')
. Similarly, to update code using the CustomWorkload
class, change the call from CustomWorkload(function=func, parameters=params)
to WorkloadResource(function=func, parameters=params)
.obtain_resource
function, just like other resources.Suites is a new category of resource being introduced in gem5. Documentation of suites can be found here: suite documentation.
id
and category
. Each resource class has its own __str__()
function which return its information in the form of category(id, version) like BinaryResource(id='riscv-hello', resource_version='1.0.0').DRAMInterface
stats have changed names (bytesRead
and bytesWritten
). For instance, board.memory.mem_ctrl.dram.bytesRead
and board.memory.mem_ctrl.dram.bytesWritten
. These are changed to dramBytesRead
and dramBytesWritten
so they don't collide with the stat with the same name in AbstractMemory
.NVMInterface
(bytesRead
and bytesWritten
) have been change to nvmBytesRead
and nvmBytesWritten
as well.This was a huge undertaking by a large number of people! Some of these people include Adrià Armejach who pushed it over the finish line, Xuan Hu who pushed the most recent version to gerrit that Adrià picked up, Jerin Joy who did much of the initial work, and many others who contributed to the implementation including Roger Chang, Hoa Nguyen who put significant effort into testing and reviewing the code.
Welcome to our first "official" gem5 release! gem5 v19.0.0.0 was a "test" release, but this one has release notes, so it must be official!
Thank you to everyone that made this release possible! This has been a very productive release with over 70 issues closed, over 500 commits, and 31 unique contributors. Below are some of the highlights, though I'm sure I've missed some important changes.
scons build/<arch>/out/m5
, not make
.LinuxX86System
or similar SimObject).System
are now parameters of the Workload
(see src/sim/Workload.py
).
LinuxX86System
are now part of X86FsLinux
which is now the workload
parameter of the System
SimObject.tests/main.py
, except for the unittests.--disk-image
argument to fs.py
is now optional.
M5_PATH
, but the name of the disk image must be specified.queueMemory
is now enqueue
.
queueMemoryRead
and queueMemoryWrite
with enqueue
to another "special" message buffer named memQueue
.*Prefetcher
to Prefetcher::*
[HOTFIX] A fix was applied to stop incorrect clock frequences being reported due to rounding errors.
[HOTFIX] A patch was applied to fix the RubyPrefetcher with MESI_Three_Level. Prior to this fix a segfault occurred.
[HOTFIX] When using the ARM ISA, gem5 could crash when a guest tried to call m5ops. This was due to m5ops_base
being incorrectly declared in src/arch/arm/ArmSystem.py
. A fix was applied to remove this declaration.
Thank you to everyone that made this release possible! This has been a very productive release with 150 issues, over 650 commits (a 25% increase from the 20.0 release), and 58 unique contributors (a 100% increase!).
We are no longer using the "master" branch. Instead, we will have two branches:
We suggest all users use the stable (default) branch. However, to contribute your fixes and new changes to gem5, it should be contributed to the develop branch. See CONTRIBUTING.md for more details.
gem5 has also implemented a project code of conduct. See the CODE-OF-CONDUCT.md file for details. In the code of conduct "we pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community."
You can find details about this on the gem5 blog or Wendy's talks on YouTube: Talk on new interface and NVM and the talk on LPDDR5
SimpleMemory
is no longer a drop-in replacement for a DRAM-based memory controller.You can find details about this on the gem5 blog and Srikant's talk on YouTube.
You can find details on the Jira issue
MESI_Three_Level_HTM
Ruby protocol, and it is only implemented in Ruby.See http://www.gem5.org/documentation/general_docs/building for gem5's current dependencies.
MasterPort -> RequestorPort
SlavePort -> ResponsePort
xbar.slave -> xbar.cpu_side
xbar.master -> xbar.mem_side
MasterId -> RequestorId
tests/
directory in mainline gem5.setCPU
to setThreadContext
in InterruptsCompressor
namespace.Callback
class was removed and replaced with C++ lambdas.[HOTFIX] A patch was applied to fix the Garnet network interface stats. Previously, the flit source delay was computed using both tick and cycles. This bug affected the overall behavior of the Garnet Network Model.
[HOTFIX] This hotfix release fixes known two bugs:
[HOTFIX] A patch was apply to fix an error where booting Linux stalled when using the ARM ISA.
This fix adds the parameter have_vhe
to enable FEAT_VHE on demand, and is disabled by default to resolve this issue.