14038:8ba13d8b7810 |
01-May-2019 |
Matthew Poremba <matthew.poremba@amd.com> |
mem: Option to toggle DRAM low-power states
Adding an option to enable DRAM low-power states. The low power states can have a significant impact on application performance (sim_ticks) on the order of 2-3x, especially for compute-gpu apps. The options allows for it to easily be enabled/disabled to compare performance numbers. The option is disabled by default.
Change-Id: Ib9bddbb792a1a6a4afb5339003472ff8f00a5859 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18548 Reviewed-by: Wendy Elsasser <wendy.elsasser@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> Tested-by: kokoro <noreply+kokoro@google.com> |
13980:62a28c423e91 |
16-May-2019 |
Jason Lowe-Power <jason@lowepower.com> |
configs: Generalize FileSystemConfig for non se.py
This patch updates the FileSystemConfig so it works with more kinds of config scripts (e.g., the Learning gem5 scripts).
There are 4 main changes: - Added system as a parameter to the config_filesystem function so the function can search the system for the number of CPUs instead of relying on options from Options.py - Instead of calling redirect_paths everywhere config_filesystem is used, now it is implicitly called. - Cleaned up the Ruby scripts a bit to remove redundant calls to config_filesystem - Added a config_filesystem call to the Ruby Learning gem5 script (currently the only Learning gem5 script that requires it).
In the future, I think it would be better to move the config_filesystem call into simulate.py, probably into the instantiate function. I tried to use the per-CPU configuration parameters instead of options from Options.py, but that's not possible until after the SimObject params have been finalized in instantiate.
Change-Id: Ie6501a7435cfb3ac9d2b45be3722388b34063b1e Signed-off-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18848 Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Tested-by: kokoro <noreply+kokoro@google.com> |
13975:31372ed09a54 |
19-Feb-2019 |
Tiago Muck <tiago.muck@arm.com> |
mem-ruby: Cache latencies for MOESI_CMP_dir
Modified both L1 and L2 controllers to take into account the cache latency parameters. Default values in the configuration script updated as well.
Change-Id: I72bb8dd29ee0b02da06e1addf13b266fe4d1e979 Signed-off-by: Tiago Muck <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18414 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
13974:af47a3ae0f6b |
19-Feb-2019 |
Tiago Muck <tiago.muck@arm.com> |
mem-ruby: Hit latencies defined by the controllers
Removed the icache/dcache hit latency parameters from the Sequencer. They were replaced by the mandatory queue enqueue latency that is now defined by the top-level cache controller. By default, the latency is defined by the mandatory_queue_latency parameter. When the latency depends on specific protocol states or on the request type, the protocol may override the mandatoryQueueLatency function.
Change-Id: I72e57a7ea49501ef81dc7f591bef14134274647c Signed-off-by: Tiago Muck <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18413 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
13971:0201983aad69 |
14-Feb-2019 |
Tiago Muck <tiago.muck@arm.com> |
mem-ruby: Change MOESI_CMP_Dir L2 addressing
L1 controller selects the L2 to message based on the assigned address ranges instead of explicitly interleaving bits in the L1 controller. This simplifies the L1 controller implementation a bit and allows for more flexibility when changing the address->controller mapping.
Change-Id: Ie67999bb977566939432a5045f65dbd2da81816a Signed-off-by: Tiago Muck <tiago.muck@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18410 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
13951:b8ec67ca5e42 |
08-May-2019 |
Daniel R. Carvalho <odanrc@yahoo.com.br> |
configs: Fix FileSystemConfig import
Add source to FileSystemConfig import
Change-Id: I2cd70a332244cbdc58b1b7c06d589b4339f6e19a Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18709 Tested-by: kokoro <noreply+kokoro@google.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> |
13885:d10ea5e56cb0 |
18-Apr-2018 |
David Hashe <david.hashe@amd.com> |
configs: faux-filesystem fix w/ ruby in se mode
These changes are needed so that the config scripts can report cache hierarchy information to the faux filesystem.
This is useful for the ROCm runtime when it reads psuedofiles from the host filesytem from "/proc".
Change-Id: Iad3e6c088d47c9b93979f584de748367eae8259b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12121 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com> Tested-by: kokoro <noreply+kokoro@google.com> |
13774:a1be2a0c55f2 |
25-Feb-2019 |
Andreas Sandberg <andreas.sandberg@arm.com> |
configs: Use absolute import paths
Use absoluate import paths to be Python 3 compatible. This also imports absolute_import from __future__ to ensure that Python 2.7 behaves the same way as Python 3.
Change-Id: Ica06ed95814e9cd3e768b3e1785075e36f6e56d0 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16708 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> |
13731:67cd980cb20f |
26-Jan-2019 |
Andreas Sandberg <andreas.sandberg@arm.com> |
configs: Fix Python 3 iterator and exec compatibility issues
Python 2.7 used to return lists for operations such as map and range, this has changed in Python 3. To make the configs Python 3 compliant, add explicit conversions from iterators to lists where needed, replace xrange with range, and fix changes to exec syntax.
This change doesn't fix import paths since that might require us to restructure the configs slightly.
Change-Id: Idcea8482b286779fc98b4e144ca8f54069c08024 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/16002 Reviewed-by: Gabe Black <gabeblack@google.com> |
13400:cf74d21e948f |
07-Nov-2018 |
Daniel R. Carvalho <odanrc@yahoo.com.br> |
configs: Add missing path to ruby imports
Add missing addToPath to ruby files, so that import modules from previous folder are visible.
Change-Id: I912d78a2f709974f72fe768e73abac1617126f46 Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/13995 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
12976:125099a94768 |
30-Aug-2018 |
Nikos Nikoleris <nikos.nikoleris@arm.com> |
configs: Use the same address ranges for dir and mem_ctrls
In Ruby, for every directory we create one memory controller for every range in the memory ranges. Previously the memory controllers and the directories created their address ranges independently and as a result a mismatch was possible. In fact, we assinged an interleaved address range with hasing for the memory controllers while the corresponding directories would be assigned the same interleaved address range without hashing.
This change uses the address range of the memory controllers to populate the list of address ranges for the corresponding directory and avoid bugs due to code duplication.
Change-Id: I1e321c81a254199e5aaa9f3b81f4a4642c60a67a Reviewed-on: https://gem5-review.googlesource.com/12318 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
12697:cd71b966be1e |
27-Apr-2018 |
Tony Gutierrez <anthony.gutierrez@amd.com> |
style: fix amd license and style issues
Change-Id: I26136fb49f743c4a597f8021cfd27f78897267b5 Reviewed-on: https://gem5-review.googlesource.com/10463 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com> |
12647:6d7e2f321496 |
12-Apr-2018 |
Tony Gutierrez <anthony.gutierrez@amd.com> |
configs, mem-ruby: fix issues with style in AMD license
fixes line length and white space issues.
Change-Id: Ia04a91ec68cae2bcdabeb93bb1a0f74e8e5486c3 Reviewed-on: https://gem5-review.googlesource.com/9801 Reviewed-by: Bradford Beckmann <brad.beckmann@amd.com> Maintainer: Bradford Beckmann <brad.beckmann@amd.com> |
12598:b80b2d9a251b |
12-Feb-2018 |
Nikos Nikoleris <nikos.nikoleris@arm.com> |
arch-arm, configs: Treat the bootloader rom as cacheable memory
Prior to this changeset the bootloader rom (instantiated as a SimpleMemory) in ruby Arm systems was treated as an IO device and it was fronted by a DMA controller. This changeset moves the bootloader rom and adds it to the system as another memory with a dedicated directory controller.
Change-Id: I094fed031cdef7f77a939d94f948d967b349b7e0 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/8741 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
12564:2778478ca882 |
06-Mar-2018 |
Gabe Black <gabeblack@google.com> |
config: Switch from the print statement to the print function.
Change-Id: I701fa58cfcfa2767ce9ad24da314a053889878d0 Reviewed-on: https://gem5-review.googlesource.com/8762 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Maintainer: Gabe Black <gabeblack@google.com> |
12066:a4fd03c9ca5a |
04-Apr-2017 |
Nikos Nikoleris <nikos.nikoleris@arm.com> |
ruby, arm: Forward invalidations to the local exclusive monitor
ARM systems require local exclusive monitors for the implementation of synchronization primitives between processors. A ruby memory system needs to forward invalidations to the local exclusive monitors to to correctly determine their state.
Change-Id: I7bc4d0f2a5be0f4e36a25c87aa4a81a3f086fb3c Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/2904 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
12065:e3e51756dfef |
13-Mar-2017 |
Nikos Nikoleris <nikos.nikoleris@arm.com> |
ruby: Add support for address ranges in the directory
Previously the directory covered a flat address range that always started from address 0. This change adds a vector of address ranges with interleaving and hashing that each directory keeps track of and the necessary flexibility to support systems with non continuous memory ranges.
Change-Id: I6ea1c629bdf4c5137b7d9c89dbaf6c826adfd977 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/2903 Reviewed-by: Bradford Beckmann <brad.beckmann@amd.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
12014:f973caaf935d |
08-May-2017 |
Gabe Black <gabeblack@google.com> |
config: Fix up some configs to not use CPU aliases.
Support for CPU aliases were removed recently.
Change-Id: I3c1173dc34170d8639d95e52bf660f248848f77f Reviewed-on: https://gem5-review.googlesource.com/3100 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
11682:612f75cf36a0 |
14-Oct-2016 |
Andreas Hansson <andreas.hansson@arm.com> |
config: Make configs/common a Python package
Continue along the same line as the recent patch that made the Ruby-related config scripts Python packages and make also the configs/common directory a package.
All affected config scripts are updated (hopefully).
Note that this change makes it apparent that the current organisation and naming of the config directory and its subdirectories is rather chaotic. We mix scripts that are directly invoked with scripts that merely contain convenience functions. While it is not addressed in this patch we should follow up with a re-organisation of the config structure, and renaming of some of the packages. |
11670:6ce719503eae |
13-Oct-2016 |
Andreas Hansson <andreas.hansson@arm.com> |
ruby: Fix regressions and make Ruby configs Python packages
This patch moves the addition of network options into the Ruby module to avoid the regressions all having to add it explicitly. Doing this exposes an issue in our current config system though, namely the fact that addtoPath is relative to the Python script being executed. Since both example and regression scripts use the Ruby module we would end up with two different (relative) paths being added. Instead we take a first step at turning the config modules into Python packages, simply by adding a __init__.py in the configs/ruby, configs/topologies and configs/network subdirectories.
As a result, we can now add the top-level configs directory to the Python search path, and then use the package names in the various modules. The example scripts are also updated, and the messy path-deducing variations in the scripts are unified. |
11662:004d34b65092 |
06-Oct-2016 |
Tushar Krishna <tushar@ece.gatech.edu> |
config: add a separate config file for the network. This patch adds a new file configs/network/Network.py to setup the network, instead of doing that within Ruby.py. |
11660:cfa97c37117a |
06-Oct-2016 |
Tushar Krishna <tushar@ece.gatech.edu> |
ruby: rename ALPHA_Network_test protocol to Garnet_standalone. Over the past 6 years, we realized that the protocol is essentially used to run the garnet network in a standalone manner, and feed standard synthetic traffic patterns through it. |
11616:d726d0cea027 |
22-Aug-2016 |
David Hashe <david.j.hashe@gmail.com> |
config: KVM acceleration for apu_se.py
Add support for using KVM to accelerate APU simulations. The intended use case is to fast-forward through runtime initialization until the first kernel launch. |
11596:329e49c419b1 |
10-Aug-2016 |
Andreas Sandberg <andreas.sandberg@arm.com> |
ruby: Implement support for functional accesses to PIO ranges
There are cases where we want to put boot ROMs on the PIO bus. Ruby currently doesn't support functional accesses to such memories since functional accesses are always assumed to go to physical memory. Add the required support for routing functional accesses to the PIO bus.
Change-Id: Ia5b0fcbe87b9642bfd6ff98a55f71909d1a804e3 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Brad Beckmann <brad.beckmann@amd.com> Reviewed-by: Michael LeBeane <michael.lebeane@amd.com> |
11310:b4bbf540d1a7 |
22-Jan-2016 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: changed all references to numCPs to num-cp |
11308:7d8836fd043d |
19-Jan-2016 |
Tony Gutierrez <anthony.gutierrez@amd.com> |
gpu-compute: AMD's baseline GPU model |
11266:452e10b868ea |
20-Jul-2015 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: more flexible ruby tester support
This patch allows the ruby random tester to use ruby ports that may only support instr or data requests. This patch is similar to a previous changeset (8932:1b2c17565ac8) that was unfortunately broken by subsequent changesets. This current patch implements the support in a more straight-forward way. Since retries are now tested when running the ruby random tester, this patch splits up the retry and drain check behavior so that RubyPort children, such as the GPUCoalescer, can perform those operations correctly without having to duplicate code. Finally, the patch also includes better DPRINTFs for debugging the tester. |
11172:9261e98e4501 |
14-Oct-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: profiler: provide the number of vnets through ruby system
The aim is to ultimately do away with the static function Network::getNumberOfVirtualNetworks(). |
11074:2763a59c73ff |
01-Sep-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: remove random seed We no longer use the C library based random number generator: random(). Instead we use the C++ library provided rng. So setting the random seed for the RubySystem class has no effect. Hence the variable and the corresponding option are being dropped. |
11065:37e19af67f62 |
30-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: specify number of vnets for each protocol The default value for number of virtual networks is being removed. Each protocol should now specify the value it needs. |
11052:3137d34acf29 |
21-Aug-2015 |
Andreas Hansson <andreas.hansson@arm.com> |
ruby: Move Rubys cache class from Cache.py to RubyCache.py
This patch serves to avoid name clashes with the classic cache. For some reason having two 'SimObject' files with the same name creates problems. |
11049:dfb0aa3f0649 |
19-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: reverts to changeset: bf82f1f7b040 |
11046:0cd13910b063 |
14-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: profiler: provide the number of vnets through ruby system
The aim is to ultimately do away with the static function Network::getNumberOfVirtualNetworks(). |
11041:d3bae341e151 |
14-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: remove random seed
We no longer use the C library based random number generator: random(). Instead we use the C++ library provided rng. So setting the random seed for the RubySystem class has no effect. Hence the variable and the corresponding option are being dropped. |
11022:e6e3b7097810 |
14-Aug-2015 |
Joel Hestness <jthestness@gmail.com> |
ruby: Protocol changes for SimObject MessageBuffers |
11021:e8a6637afa4c |
14-Aug-2015 |
Joel Hestness <jthestness@gmail.com> |
ruby: Expose MessageBuffers as SimObjects
Expose MessageBuffers from SLICC controllers as SimObjects that can be manipulated in Python. This patch has numerous benefits: 1) First and foremost, it exposes MessageBuffers as SimObjects that can be manipulated in Python code. This allows parameters to be set and checked in Python code to avoid obfuscating parameters within protocol files. Further, now as SimObjects, MessageBuffer parameters are printed to config output files as a way to track parameters across simulations (e.g. buffer sizes)
2) Cleans up special-case code for responseFromMemory buffers, and aligns their instantiation and use with mandatoryQueue buffers. These two special buffers are the only MessageBuffers that are exposed to components outside of SLICC controllers, and they're both slave ends of these buffers. They should be exposed outside of SLICC in the same way, and this patch does it.
3) Distinguishes buffer-specific parameters from buffer-to-network parameters. Specifically, buffer size, randomization, ordering, recycle latency, and ports are all specific to a MessageBuffer, while the virtual network ID and type are intrinsics of how the buffer is connected to network ports. The former are specified in the Python object, while the latter are specified in the controller *.sm files. Unlike buffer-specific parameters, which may need to change depending on the simulated system structure, buffer-to-network parameters can be specified statically for most or all different simulated systems. |
11019:fc1e41e88fd3 |
14-Aug-2015 |
Joel Hestness <jthestness@gmail.com> |
ruby: Remove the RubyCache/CacheMemory latency
The RubyCache (CacheMemory) latency parameter is only used for top-level caches instantiated for Ruby coherence protocols. However, the top-level cache hit latency is assessed by the Sequencer as accesses flow through to the cache hierarchy. Further, protocol state machines should be enforcing these cache hit latencies, but RubyCaches do not expose their latency to any existng state machines through the SLICC/C++ interface. Thus, the RubyCache latency parameter is superfluous for all caches. This is confusing for users.
As a step toward pushing L0/L1 cache hit latency into the top-level cache controllers, move their latencies out of the RubyCache declarations and over to their Sequencers. Eventually, these Sequencer parameters should be exposed as parameters to the top-level cache controllers, which should assess the latency. NOTE: Assessing these latencies in the cache controllers will require modifying each to eliminate instantaneous Ruby hit callbacks in transitions that finish accesses, which is likely a large undertaking. |
10988:ede920fb4f66 |
03-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: correctly number the sequencer in MESI_Three_Level.py |
10976:c0a9bdc36e52 |
20-Jul-2015 |
David Hashe <david.hashe@amd.com> |
config: add base class for ruby controllers
The CntrlBase python class handles configuration parameters such as running counts of controllers and sequencers. |
10970:ea8bdb1d9f1e |
20-Jul-2015 |
David Hashe <david.hashe@amd.com> |
ruby: initialize replacement policies with their own simobjs
this is in preparation for other replacement policies that take additional parameters. |
10917:c38f28fad4c3 |
10-Jul-2015 |
Brandon Potter <brandon.potter@amd.com> |
ruby: remove extra whitespace and correct misspelled words |
10898:96c0fe4a09f0 |
04-Jul-2015 |
David Hashe <david.hashe@amd.com> |
config: Update location of ruby topologies in help
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
10720:67b3e74de9ae |
02-Mar-2015 |
Andreas Hansson <andreas.hansson@arm.com> |
mem: Move crossbar default latencies to subclasses
This patch introduces a few subclasses to the CoherentXBar and NoncoherentXBar to distinguish the different uses in the system. We use the crossbar in a wide range of places: interfacing cores to the L2, as a system interconnect, connecting I/O and peripherals, etc. Needless to say, these crossbars have very different performance, and the clock frequency alone is not enough to distinguish these scenarios.
Instead of trying to capture every possible case, this patch introduces dedicated subclasses for the three primary use-cases: L2XBar, SystemXBar and IOXbar. More can be added if needed, and the defaults can be overridden. |
10706:4206946d60fe |
26-Feb-2015 |
Jason Power <power.jg@gmail.com> |
Ruby: Update backing store option to propagate through to all RubyPorts
Previously, the user would have to manually set access_backing_store=True on all RubyPorts (Sequencers) in the config files. Now, instead there is one global option that each RubyPort checks on initialization.
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
10652:e5936c2d53a0 |
20-Jan-2015 |
Malek Musleh <malek.musleh@gmail.com> |
config, ruby: connect dma to network DMA Controller was not being connected to the network for the MESI_Three_Level protocol as was being done in the other protocol config files. Without this patch, this protocol segfaults during startup.
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
10630:64618b7c57b2 |
03-Jan-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
configs: ruby: removes bug introduced by 05b5a6cf3521 |
10591:fea29fc045ee |
04-Dec-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
config: ruby: mi protocol: correct master slave setting for dma In the MI protocol, the master slave connection between the dma controller and network was being set incorrectly. This patch corrects it. |
10551:d60a9bb99038 |
23-Nov-2014 |
Steve Reinhardt <steve.reinhardt@amd.com> |
Backed out prior changeset f9fb64a72259
Back out use of importlib to avoid implicitly creating dependency on Python 2.7. |
10550:f9fb64a72259 |
23-Nov-2014 |
Gabe Black <gabeblack@google.com> |
config: ruby: Get rid of an "eval" and an "exec" operating on generated code.
We can get the same result using importlib. |
10529:05b5a6cf3521 |
06-Nov-2014 |
Marc Orr <morr@cs.wisc.edu> |
x86 isa: This patch attempts an implementation at mwait.
Mwait works as follows: 1. A cpu monitors an address of interest (monitor instruction) 2. A cpu calls mwait - this loads the cache line into that cpu's cache. 3. The cpu goes to sleep. 4. When another processor requests write permission for the line, it is evicted from the sleeping cpu's cache. This eviction is forwarded to the sleeping cpu, which then wakes up.
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
10525:77787650cbbc |
06-Nov-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: provide a backing store Ruby's functional accesses are not guaranteed to succeed as of now. While this is not a problem for the protocols that are currently in the mainline repo, it seems that coherence protocols for gpus rely on a backing store to supply the correct data. The aim of this patch is to make this backing store configurable i.e. it comes into play only when a particular option: --access-backing-store is invoked.
The backing store has been there since M5 and GEMS were integrated. The only difference is that earlier the system used to maintain the backing store and ruby's copy was write-only. Sometime last year, we moved to data being supplied supplied by ruby in SE mode simulations. And now we have patches on the reviewboard, which remove ruby's copy of memory altogether and rely completely on the system's memory to supply data. This patch adds back a SimpleMemory member to RubySystem. This member is used only if the option: access-backing-store is set to true. By default, the memory would not be accessed. |
10524:fff17530cef6 |
06-Nov-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: interface with classic memory controller This patch is the final in the series. The whole series and this patch in particular were written with the aim of interfacing ruby's directory controller with the memory controller in the classic memory system. This is being done since ruby's memory controller has not being kept up to date with the changes going on in DRAMs. Classic's memory controller is more up to date and supports multiple different types of DRAM. This also brings classic and ruby ever more close. The patch also changes ruby's memory controller to expose the same interface. |
10519:7a3ad4b09ce4 |
06-Nov-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: single physical memory in fs mode Both ruby and the system used to maintain memory copies. With the changes carried for programmed io accesses, only one single memory is required for fs simulations. This patch sets the copy of memory that used to reside with the system to null, so that no space is allocated, but address checks can still be carried out. All the memory accesses now source and sink values to the memory maintained by ruby. |
10440:1e3497e20cd4 |
11-Oct-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: moesi hammer: correct typo in master-slave assignment |
10311:ad9c042dce54 |
01-Sep-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: message buffers: significant changes
This patch is the final patch in a series of patches. The aim of the series is to make ruby more configurable than it was. More specifically, the connections between controllers are not at all possible (unless one is ready to make significant changes to the coherence protocol). Moreover the buffers themselves are magically connected to the network inside the slicc code. These connections are not part of the configuration file.
This patch makes changes so that these connections will now be made in the python configuration files associated with the protocols. This requires each state machine to expose the message buffers it uses for input and output. So, the patch makes these buffers configurable members of the machines.
The patch drops the slicc code that usd to connect these buffers to the network. Now these buffers are exposed to the python configuration system as Master and Slave ports. In the configuration files, any master port can be connected any slave port. The file pyobject.cc has been modified to take care of allocating the actual message buffer. This is inline with how other port connections work. |
10300:ed3816dae6d5 |
01-Sep-2014 |
Emilio Castillo <castilloe@unican.es>, Nilay Vaish <nilay@cs.wisc.edu> |
ruby: Fixes clock domains in configuration files
This patch fixes scripts related to ruby by adding the ruby clock domain. Now the L1 controllers and the Sequencer shares the cpu clock domain, while the rest of the components use the ruby clock domain.
Before this patch, running simulations with the cpu clock set at 2GHz or 1GHz will output the same time results and could distort power measurements.
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
10162:43bc3665c52b |
19-Apr-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
config: ruby: remove memory controller from network test It is not in use and not required as such. |
10122:1268f1fd2714 |
20-Mar-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: garnet: convert network interfaces into clocked objects This helps in configuring the network interfaces from the python script and these objects no longer rely on the network object for the timing information. |
10120:f5ceb3c3edb6 |
20-Mar-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
config: ruby: rename _cpu_ruby_ports to _cpu_ports |
10118:5e1f04b4d5e4 |
20-Mar-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
config: remove ruby_fs.py
The patch removes the ruby_fs.py file. The functionality is being moved to fs.py. This would being ruby fs simulations in line with how ruby se simulations are started (using --ruby option). The alpha fs config functions are being combined for classing and ruby memory systems. This required renaming the piobus in ruby to iobus. So, we will have stats being renamed in the stats file for ruby fs regression. |
10116:d61a59beb670 |
17-Mar-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
config: ruby: remove piobus from protocols This patch removes the piobus from the protocol config files. The ports are now connected to the piobus in the Ruby.py file. |
10092:c0db268f811b |
24-Feb-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: correct errors in changeset 4eec7bdde5b0 Couple of errors were discovered in 4eec7bdde5b0 which necessitated this patch. Firstly, we create interrupt controllers in the se mode, but no piobus was being created. RubyPort, which earlier used to ignore range changes now forwards those to the piobus. The lack of piobus resulted in segmentation fault. This patch creates a piobus even in se mode. It is not created only when some tester is running. Secondly, I had missed out on modifying port connections for other coherence protocols. |
10090:4eec7bdde5b0 |
23-Feb-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: route all packets through ruby port Currently, the interrupt controller in x86 is connected to the io bus directly. Therefore the packets between the io devices and the interrupt controller do not go through ruby. This patch changes ruby port so that these packets arrive at the ruby port first, which then routes them to their destination. Note that the patch does not make these packets go through the ruby network. That would happen in a subsequent patch. |
10012:ec5a5bfb941d |
10-Jan-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: move all statistics to stats.txt, eliminate ruby.stats |
10008:5176f0a71e56 |
04-Jan-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: add a three level MESI protocol.
The first two levels (L0, L1) are private to the core, the third level (L2)is possibly shared. The protocol supports clustered designs. For example, one can have two sets of two cores. Each core has an L0 and L1 cache. There are two L2 controllers where each set accesses only one of the L2 controllers. |
10007:94d286db85c1 |
04-Jan-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: rename MESI_CMP_directory to MESI_Two_Level
This is because the next patch introduces a three level hierarchy. |
10006:8fa94dcfd545 |
04-Jan-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: remove cntrl_id from python config scripts. |
10004:5d8b72563869 |
04-Jan-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: some small changes |
9994:1aa497ac86b2 |
20-Dec-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: mesi: remove owner and sharer fields from directory tags
The directory controller should not have the sharer field since there is only one level 2 cache. Anyway the field was not in use. The owner field was being used to track the l2 cache version (in case of distributed l2) that has the cache block under consideration. The information is not required since the version of the level 2 cache can be obtained from a subset of the address bits. |
9862:54d6728d99cf |
06-Sep-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: correct naming of routers
The routers are created before the network class. This results in the routers becoming children of the first link they are connected to and they get generic names like int_node and node_b. This patch creates the network object first and passes it to the topology creation function. Now the routers are children of the network object and names are much more sensible. |
9841:69c158420c51 |
20-Aug-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: add option for number of transitions per cycle The number of transitions per cycle that a controller can carry out is a proxy for the number of ports that a controller has. This value is currently 32 which is way too high. The patch introduces an option for the number of ports and uses this option in the protocol files to set the number of transitions. The default value is being set to 4. None of the se regressions change. Ruby stats for the fs regression change and are being updated. |
9826:014ff1fbff6d |
19-Aug-2013 |
Andreas Hansson <andreas.hansson@arm.com> |
config: Move the memory instantiation outside FSConfig
This patch moves the instantiation of the memory controller outside FSConfig and instead relies on the mem_ranges to pass the information to the caller (e.g. fs.py or one of the regression scripts). The main motivation for this change is to expose the structural composition of the memory system and allow more tuning and configuration without adding a large number of options to the makeSystem functions.
The patch updates the relevant example scripts to maintain the current functionality. As the order that ports are connected to the memory bus changes (in certain regresisons), some bus stats are shuffled around. For example, what used to be layer 0 is now layer 1.
Going forward, options will be added to support the addition of multi-channel memory controllers. |
9798:52679402e09c |
28-Jun-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: check for compatibility between mem size and num dirs The configuration scripts provided for ruby assume that the available physical memory is equally distributed amongst the directory controllers. But there is no check to ensure this assumption has been adhered to. This patch adds the required check. |
9793:6e6cefc1db1f |
27-Jun-2013 |
Akash Bagdia <akash.bagdia@arm.com> |
sim: Add the notion of clock domains to all ClockedObjects
This patch adds the notion of source- and derived-clock domains to the ClockedObjects. As such, all clock information is moved to the clock domain, and the ClockedObjects are grouped into domains.
The clock domains are either source domains, with a specific clock period, or derived domains that have a parent domain and a divider (potentially chained). For piece of logic that runs at a derived clock (a ratio of the clock its parent is running at) the necessary derived clock domain is created from its corresponding parent clock domain. For now, the derived clock domain only supports a divider, thus ensuring a lower speed compared to its parent. Multiplier functionality implies a PLL logic that has not been modelled yet (create a separate clock instead).
The clock domains should be used as a mechanism to provide a controllable clock source that affects clock for every clocked object lying beneath it. The clock of the domain can (in a future patch) be controlled by a handler responsible for dynamic frequency scaling of the respective clock domains.
All the config scripts have been retro-fitted with clock domains. For the System a default SrcClockDomain is created. For CPUs that run at a different speed than the system, there is a seperate clock domain created. This domain incorporates the CPU and the associated caches. As before, Ruby runs under its own clock domain.
The clock period of all domains are pre-computed, such that no virtual functions or multiplications are needed when calling clockPeriod. Instead, the clock period is pre-computed when any changes occur. For this to be possible, each clock domain tracks its children. |
9791:39c75548bcd4 |
27-Jun-2013 |
Akash Bagdia <akash.bagdia@arm.com> |
config: Rename clock option to Ruby clock
This patch changes the 'clock' option to 'ruby-clock' as it is only used by Ruby. |
9697:f037e7b4a827 |
21-May-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: moesi hammer: cosmetic changes Updates copyright years, removes space at the end of lines, shortens variable names. |
9696:744fb905297c |
21-May-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: mesi cmp directory: cosmetic changes Updates copyright years, removes space at the end of lines, shortens variable names. |
9695:df1d9fee32a5 |
21-May-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: moesi cmp token: cosmetic changes Updates copyright years, removes space at the end of lines, shortens variable names. |
9694:692776126391 |
21-May-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: moesi cmp directory: cosmetic changes Updates copyright years, removes space at the end of lines, shortens variable names. |
9693:647f6624c46a |
21-May-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
configs: ruby: pass the option use_map to directory controller The option was not being passed to directory controllers for the protocols MOESI_CMP_token and MOESI_CMP_directory. This was resulting in an error while instantiating the directory controller as it tries to access the wrong type of memory. |
9638:a5f40a7aa41b |
17-Apr-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
config: ruby network test: remove piobus check |
9594:219ad5fe8c04 |
22-Mar-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: convert Topology to regular class The Topology class in Ruby does not need to inherit from SimObject class. This patch turns it into a regular class. The topology object is now created in the constructor of the Network class. All the parameters for the topology class have been moved to the network class. |
9593:9441ca79f3c8 |
22-Mar-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: move routers from topology to network |
9576:2c094ad4dc70 |
06-Mar-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: garnet: fixed: implement functional access |
9468:721718c62859 |
14-Jan-2013 |
Malek Musleh <malek.musleh@gmail.com> |
config: move ruby objects under ruby_system in obj hierarchy This patch moves the contollers to be children of the ruby_system instead of 'system' under the python object hierarchy. This is so that these objects can inherit some of the ruby_system's parameter values without resorting to calling a global system pointer during run-time.
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
9366:bf8eb26c7b7e |
11-Dec-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: add support for prefetching to MESI protocol |
9319:ab0a36d082bb |
27-Oct-2012 |
Malek Musleh <malek.musleh@gmail.com> |
ruby: set the is_icache param for caches This patch sets the is_icache param for the L1 caches used in the MESI and the MOESI CMP directory protocols. |
9318:dec0b284ded9 |
27-Oct-2012 |
Jason Power <power.jg@gmail.com>, Joel Hestness <hestness@cs.wisc.edu> |
Ruby: Use block size in configuring directory bits in address This patch replaces hard coded values used in Ruby's configuration files for setting directory bits with values based on the block size in use. |
9274:ba635023d4bb |
02-Oct-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: changes to simple network This patch makes the Switch structure inherit from BasicRouter, as is done in two other networks. |
9232:3bb99fab80d4 |
19-Sep-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
AddrRange: Simplify AddrRange params Python hierarchy
This patch simplifies the Range object hierarchy in preparation for an address range class that also allows striping (e.g. selecting a few bits as matching in addition to the range).
To extend the AddrRange class to an AddrRegion, the first step is to simplify the hierarchy such that we can make it as lean as possible before adding the new functionality. The only class using Range and MetaRange is AddrRange, and the three classes are now collapsed into one. |
9154:198352d722e4 |
17-Aug-2012 |
Jason Power <power.jg@gmail.com> |
Ruby: Add RubySystem parameter to MemoryControl This guarantees that RubySystem object is created before the MemoryController object is created. |
9148:a7a72f42919e |
10-Aug-2012 |
Jason Power <powerjg@cs.wisc.edu> |
Ruby: Clean up topology changes This patch moves instantiateTopology into Ruby.py and removes the mem/ruby/network/topologies directory. It also adds some extra inheritance to the topologies to clean up some issues in the existing topologies. |
9100:3caf131d7a95 |
11-Jul-2012 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: changes how Topologies are created
Instead of just passing a list of controllers to the makeTopology function in src/mem/ruby/network/topologies/<Topo>.py we pass in a function pointer which knows how to make the topology, possibly with some extra state set in the configs/ruby/<protocol>.py file. Thus, we can move all of the files from network/topologies to configs/topologies. A new class BaseTopology is added which all topologies in configs/topologies must inheirit from and follow its API. |
8939:4c84b2566d2f |
06-Apr-2012 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: set SimpleTiming as the default cpu |
8931:7a1dfb191e3f |
06-Apr-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
MEM: Enable multiple distributed generalized memories
This patch removes the assumption on having on single instance of PhysicalMemory, and enables a distributed memory where the individual memories in the system are each responsible for a single contiguous address range.
All memories inherit from an AbstractMemory that encompasses the basic behaviuor of a random access memory, and provides untimed access methods. What was previously called PhysicalMemory is now SimpleMemory, and a subclass of AbstractMemory. All future types of memory controllers should inherit from AbstractMemory.
To enable e.g. the atomic CPU and RubyPort to access the now distributed memory, the system has a wrapper class, called PhysicalMemory that is aware of all the memories in the system and their associated address ranges. This class thus acts as an infinitely-fast bus and performs address decoding for these "shortcut" accesses. Each memory can specify that it should not be part of the global address map (used e.g. by the functional memories by some testers). Moreover, each memory can be configured to be reported to the OS configuration table, useful for populating ATAG structures, and any potential ACPI tables.
Checkpointing support currently assumes that all memories have the same size and organisation when creating and resuming from the checkpoint. A future patch will enable a more flexible re-organisation. |
8929:4148f9af0b70 |
05-Apr-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Config: corrects the way Ruby attaches to the DMA ports With recent changes to the memory system, a port cannot be assigned a peer port twice. While making use of the Ruby memory system in FS mode, DMA ports were assigned peer twice, once for the classic memory system and once for the Ruby memory system. This patch removes this double assignment of peer ports. |
8923:820111f58fbb |
30-Mar-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
Ruby: Remove the physMemPort and instead access memory directly
This patch removes the physMemPort from the RubySequencer and instead uses the system pointer to access the physmem. The system already keeps track of the physmem and the valid memory address ranges, and with this patch we merely make use of that existing functionality. The memory is modified so that it is possible to call the access functions (atomic and functional) without going through the port, and the memory is allowed to be unconnected, i.e. have no ports (since Ruby does not attach it like the conventional memory system). |
8845:a230379caf65 |
14-Feb-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
MEM: Fix master/slave ports in Ruby and non-regression scripts
This patch brings the Ruby and other scripts up to date with the introduction of the master/slave ports. |
8839:eeb293859255 |
13-Feb-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
MEM: Introduce the master/slave port roles in the Python classes
This patch classifies all ports in Python as either Master or Slave and enforces a binding of master to slave. Conceptually, a master (such as a CPU or DMA port) issues requests, and receives responses, and conversely, a slave (such as a memory or a PIO device) receives requests and sends back responses. Currently there is no differentiation between coherent and non-coherent masters and slaves.
The classification as master/slave also involves splitting the dual role port of the bus into a master and slave port and updating all the system assembly scripts to use the appropriate port. Similarly, the interrupt devices have to have their int_port split into a master and slave port. The intdev and its children have minimal changes to facilitate the extra port.
Note that this patch does not enforce any port typing in the C++ world, it merely ensures that the Python objects have a notion of the port roles and are connected in an appropriate manner. This check is carried when two ports are connected, e.g. bus.master = memory.port. The following patches will make use of the classifications and specialise the C++ ports into masters and slaves. |
8803:f6c5785bc8fd |
28-Jan-2012 |
Gabe Black <gblack@eecs.umich.edu> |
SE/FS: Get rid of FULL_SYSTEM in the configs directory |
8732:fd510b6e124d |
30-Jan-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
Ruby: Connect system port in Ruby network test
This patch moves the connection of the system port to create_system in Ruby.py. Thereby it allows the failing Ruby test (and other Ruby systems) to run again. |
8718:062bf3879857 |
23-Jan-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Config: Enable using O3 CPU and Ruby in SE mode |
8717:5c253f1031d7 |
23-Jan-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
O3, Ruby: Forward invalidations from Ruby to O3 CPU This patch implements the functionality for forwarding invalidations and replacements from the L1 cache of the Ruby memory system to the O3 CPU. The implementation adds a list of ports to RubyPort. Whenever a replacement or an invalidation is performed, the L1 cache forwards this to all the ports, which is the LSQ in case of the O3 CPU. |
8706:b1838faf3bcc |
17-Jan-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
MEM: Add port proxies instead of non-structural ports
Port proxies are used to replace non-structural ports, and thus enable all ports in the system to correspond to a structural entity. This has the advantage of accessing memory through the normal memory subsystem and thus allowing any constellation of distributed memories, address maps, etc. Most accesses are done through the "system port" that is used for loading binaries, debugging etc. For the entities that belong to the CPU, e.g. threads and thread contexts, they wrap the CPU data port in a port proxy.
The following replacements are made: FunctionalPort > PortProxy TranslatingPort > SETranslatingPortProxy VirtualPort > FSTranslatingPortProxy |
8690:26998f7e3461 |
11-Jan-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: Use map option for selecting b/w sparse and memory vector |
8681:db978f3bcf51 |
10-Jan-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: remove the files related to the tracer The Ruby Tracer is out of date with the changes that are being carried out to support checkpointing. Hence, it needs to be removed. |
8653:15d4da9d2042 |
07-Jan-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby Cache: Add param for marking caches as instruction only |
8638:e8a093d1e131 |
01-Dec-2011 |
gloh |
config: command line option to specify ruby output file |
8612:df3b7a1e883f |
04-Nov-2011 |
Tushar Krishna <tushar@csail.mit.edu> |
GARNET: adding a fault model for resilient on-chip network research.
This patch adds a fault model, which provides the probability of a number of architectural faults in the interconnection network (e.g., data corruption, misrouting). These probabilities can be used to realistically inject faults in GARNET and faithfully evaluate the effectiveness of novel resilient NoC architectures. |
8477:4a6c166f61f7 |
26-Jul-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Fix instantiations of DMA controller and sequencer The patch on Ruby functional accesses made changes to the process of instantiating controllers and sequencers. The DMA controller and sequencer was not updated, hence this patch. |
8475:248a1a32e31b |
25-Jul-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Fix dma controller configs/ruby/MI_example.py The dma controller in configs/ruby/MI_example.py was not being set correctly. This patch fixes it. |
8446:be8f4157c8f4 |
03-Jul-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Network_test: Conform it with functional access changes in Ruby Addition of functional access support to Ruby necessitated some changes to the way coherence protocols are written. I had forgotten to update the Network_test protocol. This patch makes those updates. |
8436:5648986156db |
30-Jun-2011 |
Brad Beckmann <Brad.Beckmann@amd.com>, Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: Add support for functional accesses This patch rpovides functional access support in Ruby. Currently only the M5Port of RubyPort supports functional accesses. The support for functional through the PioPort will be added as a separate patch. |
8322:19949c6de823 |
23-May-2011 |
Steve Reinhardt <steve.reinhardt@amd.com> |
config: tweak ruby configs to clean up hierarchy
Re-enabling implicit parenting (see previous patch) causes current Ruby config scripts to create some strange hierarchies and generate several warnings. This patch makes three general changes to address these issues.
1. The order of object creation in the ruby config files makes the L1 caches children of the sequencer rather than the controller; these config ciles are rewritten to assign the L1 caches to the controller first.
2. The assignment of the sequencer list to system.ruby.cpu_ruby_ports causes the sequencers to be children of system.ruby, generating warnings because they are already parented to their respective controllers. Changing this attribute to _cpu_ruby_ports fixes this because the leading underscore means this is now treated as a plain Python attribute rather than a child assignment. As a result, the configuration hierarchy changes such that, e.g., system.ruby.cpu_ruby_ports0 becomes system.l1_cntrl0.sequencer.
3. In the topology classes, the routers become children of some random internal link node rather than direct children of the topology. The topology classes are rewritten to assign the routers to the topology object first. |
8258:7c377f5162f8 |
28-Apr-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
network: basic link bw for garnet and simple networks
This patch ensures that both Garnet and the simple networks use the bw value specified in the topology. To do so, the patch generalizes the specification of bw for basic links. This value is then translated to the specific value used by the simple and Garnet networks. Since Garent does not support non-uniformed link bandwidth, the patch also adds a check to ensure all bws are equal. |
8257:7226aebb77b4 |
28-Apr-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
network: convert links & switches to first class C++ SimObjects
This patch converts links and switches from second class simobjects that were virtually ignored by the networks (both simple and Garnet) to first class simobjects that directly correspond to c++ ojbects manipulated by the topology and network classes. This is especially true for Garnet, where the links and switches directly correspond to specific C++ objects.
By making this change, many aspects of the Topology class were simplified. |
8183:1333bd6cc2eb |
28-Mar-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Config: Import math in MI_example.py |
8180:d8587c913ccf |
25-Mar-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: fixed cache index setting |
8171:19444b1f092c |
21-Mar-2011 |
Tushar Krishna <tushar@csail.mit.edu> |
This patch adds the network tester for simple and garnet networks. The tester code is in testers/networktest. The tester can be invoked by configs/example/ruby_network_test.py. A dummy coherence protocol called Network_test is also addded for network-only simulations and testing. The protocol takes in messages from the tester and just pushes them into the network in the appropriate vnet, without storing any state. |
7917:d9afb18a5008 |
07-Feb-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: numa bit fix for sparse memory |
7904:6f5299ff8260 |
07-Feb-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
MOESI_hammer: Added full-bit directory support |
7832:de7601e6e19d |
10-Jan-2011 |
Nathan Binkert <nate@binkert.org> |
ruby: get rid of ruby's Debug.hh
Get rid of the Debug class Get rid of ASSERT and use assert Use DPRINTFR for ProtocolTrace |
7809:9d94b886c61b |
03-Jan-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Add option for random seed to Ruby.py This patch adds an option to the script Ruby.py for setting the parameter m_random_seed used for randomizing delays in the memory system. The option can be specified as "--random_seed <seed value>". |
7663:abb78217021f |
30-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: fixed numa high bit setting bug |
7662:b4d3a30575a1 |
30-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: minor fix to probe filter index setting |
7661:b03534522b91 |
29-Aug-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: None, not none |
7633:d8112aa18a1b |
24-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: fixed ruby dma device connections |
7632:acf43d6bbc18 |
24-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
testers: move testers to a new directory
This patch moves the testers to a new subdirectory under src/cpu and includes the necessary fixes to work with latest m5 initialization patches. |
7566:6919df046bba |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Recycle latency fix for hammer
Patch allows each individual message buffer to have different recycle latencies and allows the overall recycle latency to be specified at the cmd line. The patch also adds profiling info to make sure no one processor's requests are recycled too much. |
7564:3559d47839a1 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: added probe filter support to hammer |
7563:406e98960def |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: fixed DirectoryMemory's numa_high_bit configuration
This fix includes the off-by-one bit selection bug for numa mapping. |
7561:02a9a597fce4 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Disable migratory sharing for token and hammer
This patch allows one to disable migratory sharing for those cache blocks that are accessed by atomic requests. While the implementations are different between the token and hammer protocols, the motivation is the same. For Alpha, LLSC semantics expect that normal loads do not unlock cache blocks that have been locked by LL accesses. Therefore, locked blocks should not transfer write permissions when responding to these load requests. Instead, only they only transfer read permissions so that the subsequent SC access can possibly succeed. |
7557:bd48f4547e77 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Improved try except blocks in ruby creation
Replaced the sys.exit in the try-except blocks with raise so that the python call stack will be printed |
7555:ccd55d73c75d |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: added cmd options to control ruby debug |
7551:b10ee98aea91 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Reduced ruby latencies
The previous slower ruby latencies created a mismatch between the faster M5 cpu models and the much slower ruby memory system. Specifically smp interrupts were much slower and infrequent, as well as cpus moving in and out of spin locks. The result was many cpus were idle for large periods of time.
These changes fix the latency mismatch. |
7544:90c5eb6a5e66 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
memtest: Memtester support for DMA
This patch adds DMA testing to the Memtester and is inherits many changes from Polina's old tester_dma_extension patch. Since Ruby does not work in atomic mode, the atomic mode options are removed. |
7541:1e1f63dfd130 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: Improve ruby simobject names
This patch attaches ruby objects to the system before the topology is created so that their simobject names read their meaningful variable names instead of their topology name. |
7539:9ca6602c5345 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: added token broadcast config params to cmd options |
7538:5691b9dd51f4 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: reorganized how ruby specifies command-line options |
7535:7f8213cb2337 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
config: moved python protocol config files
Moved the python protocol config files back to their original location to avoid addToPath calls. |
7032:9f938aea1942 |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Reorganized Ruby topology and protocol files |
7031:3b9335a18b4c |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
added sparse memory support to hammer |
7025:9adf5b0ccc79 |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Ruby support for sparse memory
The patch includes direct support for the MI example protocol. |
7015:6c91d41dfc12 |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Python config files now sets a unique id for each sequencer |
7011:8b38d35e8ffc |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Added a mesh network with directories at the corners
The patch creates a specific mesh network where directories are at the corners. The patch is a good example of how to create an arbitrary network, similar to the old file specified network, while leveraging scripts and loops when possible. |
6923:1a46c5d58ede |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Removed if else statement in create_system
Based on Steve's suggestion, the ugly if-elif statement and multiple protocol module import calls are removed and replaced with exec statements using the protocol string. |
6918:9b57f0108bc8 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Converted Garnet to M5 configuration |
6916:a421f60f0e87 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Added a mesh topology |
6915:13e4df0df905 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: MESI_CMP_directory updated to the new config system |
6911:1fdbff869ff4 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: MOESI_CMP_directory updated to the new config system |
6908:0e1d7624e641 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: MOESI_CMP_token updates to use the new config system |
6906:35da51c349e2 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: MI_example updates to use the new config system |
6905:12390db623b4 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Memory size consistency check
Ruby's memory is now sized according to the size of M5 physical memory. |
6903:27f47cf65ab7 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: convert to M5 MemorySize Converted both ruby caches and directory memory to use the M5 MemorySize python type. |
6897:cfeb3d9563dd |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: cleaned up ruby profilers Cleaned up the ruby profilers by moving the memory controller profiling code out of the main profiler object and into a separate object similar to the current CacheProfiler. Both the CacheProfiler and MemCntrlProfiler are specific to a particular Ruby object, CacheMemory and MemoryControl respectively. Therefore, these profilers should not be SimObjects and created by the python configuration system, but instead private objects. This simplifies the creation of these profilers. |
6896:649e40aad897 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Removed RubySystem::getNumberOfSequencers removed the static function RubySystem::getNumberOfSequencers and replaced it with a python config variable |
6893:9cdf9b65d946 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: FS support using the new configuration system |
6892:6a2db6c8a9b1 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: reorganized ruby python configuration Reorganized ruby python configuration so that protocol and ruby memory system configuration code can be shared by multiple front-end configuration files (i.e. memory tester, full system, and hopefully the regression tester). This code works for memory tester, but have not tested fs mode. |