14184:11ac1337c5e2 |
16-Aug-2019 |
Gabe Black <gabeblack@google.com> |
mem: Move ruby protocols into a directory called ruby_protocol.
Now that the gem5 protocols are split out, it would be nice to put them in their own protocol directory. It's also confusing to have files called *_protocol which are not in the protocol directory.
Change-Id: I7475ee111630050a2421816dfd290921baab9f71 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20230 Reviewed-by: Gabe Black <gabeblack@google.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Gabe Black <gabeblack@google.com> Tested-by: kokoro <noreply+kokoro@google.com> |
13709:dd6b7ac5801f |
26-Jan-2019 |
Andreas Sandberg <andreas.sandberg@arm.com> |
python: Make iterator handling Python 3 compatible
Many functions that used to return lists (e.g., dict.items()) now return iterators and their iterator counterparts (e.g., dict.iteritems()) have been removed. Switch calls to the Python 2.7 iterator methods to use the Python 3 equivalent and add explicit list conversions where necessary.
Change-Id: I0c18114955af8f4932d81fb689a0adb939dafaba Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/15992 Reviewed-by: Juha Jäykkä <juha.jaykka@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> |
13665:9c7fe3811b88 |
25-Jan-2019 |
Andreas Sandberg <andreas.sandberg@arm.com> |
python: Don't assume SimObjects live in the global namespace
The importer in Python 3 doesn't like the way we import SimObjects from the global namespace. Convert the existing SimObject declarations to import from m5.objects. As a side-effect, this makes these files consistent with configuration files.
Change-Id: I11153502b430822130722839e1fa767b82a027aa Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/15981 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> |
12492:4e76959883a6 |
05-Feb-2018 |
Daniel R. Carvalho <odanrc@yahoo.com.br> |
mem: Standardize mem folder header guards
Standardize all header guards in the mem directory according to the most frequent patterns. In general they have the form: mem: __FOLDER_TREE_FILE_NAME_HH__ ruby: __FOLDER_TREE_FILENAME_HH__
Change-Id: I983853e292deb302becf151bf0e970057dc24774 Reviewed-on: https://gem5-review.googlesource.com/7881 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com> |
11793:ef606668d247 |
09-Nov-2016 |
Brandon Potter <brandon.potter@amd.com> |
style: [patch 1/22] use /r/3648/ to reorganize includes |
11664:2365e9e396f7 |
06-Oct-2016 |
Tushar Krishna <tushar@ece.gatech.edu> |
config: add port directions and per-router delay in topology. This patch adds port direction names to the links during topology creation, which can be used for better printed names for the links or for users to code up their own adaptive routing algorithms. It also adds support for every router to have an independent latency value to support heterogeneous topologies with the subsequent garnet2.0 patch. |
11663:cf870cd20cfc |
06-Oct-2016 |
Tushar Krishna <tushar@ece.gatech.edu> |
config: make internal links in network topology unidirectional. This patch makes the internal links within the network topology unidirectional, thus allowing any deadlock-free routing algorithms to be specified from the topology itself using weights. This patch also renames Mesh.py and MeshDirCorners.py to Mesh_XY.py and MeshDirCorners_XY.py (Mesh with XY routing). It also adds a Mesh_westfirst.py and CrossbarGarnet.py topologies. |
11523:81332eb10367 |
06-Jun-2016 |
David Guillen Fandos <david.guillen@arm.com> |
stats: Fixing regStats function for some SimObjects
Fixing an issue with regStats not calling the parent class method for most SimObjects in Gem5. This causes issues if one adds new stats in the base class (since they are never initialized properly!).
Change-Id: Iebc5aa66f58816ef4295dc8e48a357558d76a77c Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> |
11430:bd1c6789c33f |
07-Apr-2016 |
Andreas Sandberg <andreas.sandberg@arm.com> |
Revert to 74c1e6513bd0 (sim: Thermal support for Linux) |
11422:4f749e00b667 |
18-Nov-2014 |
Akash Bagdia <akash.bagdia@ARM.com> |
power: Add power states to ClockedObject
Add 4 power states to the ClockedObject, provides necessary access functions to check and update the power state. Default power state is UNDEFINED, it is responsibility of the respective simulation model to provide the startup state and any other logic for state change.
Add number of transition stat. Add distribution of time spent in clock gated state. Add power state residency stat.
Add dump call back function to allow stats update of distribution and residency stats. |
11321:02e930db812d |
06-Feb-2016 |
Steve Reinhardt <steve.reinhardt@amd.com> |
style: fix missing spaces in control statements
Result of running 'hg m5style --skip-all --fix-control -a'. |
11320:42ecb523c64a |
06-Feb-2016 |
Steve Reinhardt <steve.reinhardt@amd.com> |
style: remove trailing whitespace
Result of running 'hg m5style --skip-all --fix-white -a'. |
11171:60d4dfa3241a |
14-Oct-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: remove unused functionalRead() function.
Not required since functional reads cannot rely on messages that are inflight. |
11124:5d38dc2f7d66 |
24-Sep-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: simple network: refactor code
Drops an unused variable and marks three variables as const. |
11113:5a2e1b1b5c43 |
16-Sep-2015 |
Joe Gross <joe.gross@amd.com> |
ruby: fix message buffer init order
The recent changes to make MessageBuffers SimObjects required them to be initialized in a particular order, which could break some protocols. Fix this by calling initNetQueues on the external nodes of each external link in the constructor of Network.
This patch also refactors the duplicated code for checking network allocation and setting net queues (which are called by initNetQueues) from the simple and garnet networks to be in Network. |
11111:6da33e720481 |
16-Sep-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: message buffer, timer table: significant changes
This patch changes MessageBuffer and TimerTable, two structures used for buffering messages by components in ruby. These structures would no longer maintain pointers to clock objects. Functions in these structures have been changed to take as input current time in Tick. Similarly, these structures will not operate on Cycle valued latencies for different operations. The corresponding functions would need to be provided with these latencies by components invoking the relevant functions. These latencies should also be in Ticks.
I felt the need for these changes while trying to speed up ruby. The ultimate aim is to eliminate Consumer class and replace it with an EventManager object in the MessageBuffer and TimerTable classes. This object would be used for scheduling events. The event itself would contain information on the object and function to be invoked.
In hindsight, it seems I should have done this while I was moving away from use of a single global clock in the memory system. That change led to introduction of clock objects that replaced the global clock object. It never crossed my mind that having clock object pointers is not a good design. And now I really don't like the fact that we have separate consumer, receiver and sender pointers in message buffers. |
11108:6342ddf6d733 |
16-Sep-2015 |
David Hashe <david.hashe@amd.com> |
ruby: rename System.{hh,cc} to RubySystem.{hh,cc}
The eventual aim of this change is to pass RubySystem pointers through to objects generated from the SLICC protocol code.
Because some of these objects need to dereference their RubySystem pointers, they need access to the System.hh header file.
In src/mem/ruby/SConscript, the MakeInclude function creates single-line header files in the build directory that do nothing except include the corresponding header file from the source tree.
However, SLICC also generates a list of header files from its symbol table, and writes it to mem/protocol/Types.hh in the build directory. This code assumes that the header file name is the same as the class name.
The end result of this is the many of the generated slicc files try to include RubySystem.hh, when the file they really need is System.hh. The path of least resistence is just to rename System.hh to RubySystem.hh. |
11093:8049ffff6d68 |
12-Sep-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: perfect switch: refactor code Refactored the code in operateVnet(), moved partly to a new function operateMessageBuffer(). This is required since a later patch moves to having a wakeup event per MessageBuffer instead of one event for the entire Switch. |
11092:a51ef09e3a78 |
12-Sep-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: simple network: store Switch* in PerfectSwitch and Throttle There are two reasons for doing so:
a. provide a source of clock to PerfectSwitch. A follow on patch removes sender and receiver pointers from MessageBuffer means that the object owning the buffer should have some way of providing timing info.
b. schedule events. A follow on patch removes the consumer class. So the PerfectSwitch needs some EventManager object to schedule events on its own. |
11064:386a5200e298 |
30-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: drop member m_in_use
This member indicates whether or not a particular virtual network is in use. Instead of having a default big value for the number of virtual networks and then checking whether a virtual network is in use, the next patch removes the default value and the protocol configuration file would now specify the number of virtual networks it requires.
Additionally, the patch also refactors some of the code used for computing the virtual channel next in the round robin order. |
11049:dfb0aa3f0649 |
19-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: reverts to changeset: bf82f1f7b040 |
11047:dcf729f0bbfa |
14-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: simple network: refactor code
Drops an unused variable and marks three variables as const. |
11037:91d6a2d95cf8 |
14-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: simple network: store Switch* in PerfectSwitch and Throttle |
11036:3de670f298b1 |
14-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: remove unused functionalRead() function. |
11035:690ecdba9324 |
14-Aug-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: perfect switch: refactor code
Refactored the code in operateVnet(), moved partly to a new function operateMessageBuffer(). |
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. |
10920:58fbfddff18d |
10-Jul-2015 |
Brandon Potter <brandon.potter@amd.com> |
ruby: replace global g_abs_controls with per-RubySystem var
This is another step in the process of removing global variables from Ruby to enable multiple RubySystem instances in a single simulation.
The list of abstract controllers is per-RubySystem and should be represented that way, rather than as a global.
Since this is the last remaining Ruby global variable, the src/mem/ruby/Common/Global.* files are also removed. |
10919:80069a602c83 |
10-Jul-2015 |
Brandon Potter <brandon.potter@amd.com> |
ruby: replace global g_system_ptr with per-object pointers
This is another step in the process of removing global variables from Ruby to enable multiple RubySystem instances in a single simulation.
With possibly multiple RubySystem objects, we can no longer use a global variable to find "the" RubySystem object. Instead, each Ruby component has to carry a pointer to the RubySystem object to which it belongs. |
10918:dd3ab1f109ad |
10-Jul-2015 |
Brandon Potter <brandon.potter@amd.com> |
ruby: replace g_ruby_start with per-RubySystem m_start_cycle
This patch begins the process of removing global variables from the Ruby source with the goal of eventually allowing users to create multiple Ruby instances in a single simulation. Currently, users cannot do so because several global variables and static members are referenced by the RubySystem object in a way that assumes that there will only ever be a single RubySystem. These need to be replaced with per-RubySystem equivalents.
This specific patch replaces the global var g_ruby_start, which is used to calculate throughput statistics for Throttles in simple networks and links in Garnet networks, with a RubySystem instance var m_start_cycle. |
10917:c38f28fad4c3 |
10-Jul-2015 |
Brandon Potter <brandon.potter@amd.com> |
ruby: remove extra whitespace and correct misspelled words |
10895:287285860dd6 |
04-Jul-2015 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: drop NetworkMessage class
This patch drops the NetworkMessage class. The relevant data members and functions have been moved to the Message class, which was the parent of NetworkMessage. |
10370:4466307b8a2a |
15-Sep-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: revert some of the changes from ad9c042dce54 The changeset ad9c042dce54 made changes to the structures under the network directory to use a map of buffers instead of vector of buffers. The reasoning was that not all vnets that are created are used and we needlessly allocate more buffers than required and then iterate over them while processing network messages. But the move to map resulted in a slow down which was pointed out by Andreas Hansson. This patch moves things back to using vector of message buffers. |
10348:c91b23c72d5e |
03-Sep-2014 |
Andreas Hansson <andreas.hansson@arm.com> |
base: Use the global Mersenne twister throughout
This patch tidies up random number generation to ensure that it is done consistently throughout the code base. In essence this involves a clean-up of Ruby, and some code simplifications in the traffic generator.
As part of this patch a bunch of skewed distributions (off-by-one etc) have been fixed.
Note that a single global random number generator is used, and that the object instantiation order will impact the behaviour (the sequence of numbers will be unaffected, but if module A calles random before module B then they would obviously see a different outcome). The dependency on the instantiation order is true in any case due to the execution-model of gem5, so we leave it as is. Also note that the global ranom generator is not thread safe at this point.
Regressions using the memtest, TrafficGen or any Ruby tester are affected and will be updated accordingly. |
10312:08f4deeb5b48 |
01-Sep-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: PerfectSwitch: moves code to a per vnet helper function This patch moves code from the wakeup() function to a operateVnet(). The aim is to improve the readiblity of the code. |
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. |
10303:71e0934af9f1 |
01-Sep-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: move getNumNodes() to base class All the implementations were doing the same things. |
10301:44839e8febbd |
01-Sep-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: move files from ruby/system to ruby/structures
The directory ruby/system is crowded and unorganized. Hence, the files the hold actual physical structures, are being moved to the directory ruby/structures. This includes Cache Memory, Directory Memory, Memory Controller, Wire Buffer, TBE Table, Perfect Cache Memory, Timer Table, Bank Array.
The directory ruby/systems has the glue code that holds these structures together. |
10226:056363356d15 |
23-May-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: message buffer: drop dequeue_getDelayCycles() The functionality of updating and returning the delay cycles would now be performed by the dequeue() function itself. |
10082:70f350b13ec0 |
21-Feb-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: move message buffers to base network class. |
10076:f81d94b53661 |
20-Feb-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: removes unused code. |
10074:0e013fa647ac |
20-Feb-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: message buffer: removes some unecessary functions. |
9866:94dac7d7bb88 |
11-Sep-2013 |
Joel Hestness <jthestness@gmail.com> |
ruby: Statically allocate stats in SimpleNetwork, Switch, Throttle
The previous changeset (9863:9483739f83ee) used STL vector containers to dynamically allocate stats in the Ruby SimpleNetwork, Switch and Throttle. For gcc versions before at least 4.6.3, this causes the standard vector allocator to call Stats copy constructors (a no-no, since stats should be allocated in the body of each SimObject instance). Since the size of these stats arrays is known at compile time (NOTE: after code generation), this patch changes their allocation to be static rather than using an STL vector. |
9863:9483739f83ee |
06-Sep-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: convert to gem5 style stats |
9859:1bd310386038 |
06-Sep-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: removes reset functionality |
9858:f2417ecf5cc9 |
06-Sep-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: shorten variable names |
9799:5aed42e54180 |
28-Jun-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: remove reconfiguration code This code seems not to be of any use now. There is no path in the simulator that allows for reconfiguring the network. A better approach would be to take a checkpoint and start the simulation from the checkpoint with the new configuration. |
9593:9441ca79f3c8 |
22-Mar-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: network: move routers from topology to network |
9554:406fbcf60223 |
19-Feb-2013 |
Andreas Hansson <andreas.hansson@arm.com> |
scons: Add warning for missing declarations
This patch enables warnings for missing declarations. To avoid issues with SWIG-generated code, the warning is only applied to non-SWIG code. |
9508:dde110931867 |
10-Feb-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: enable multiple clock domains This patch allows ruby to have multiple clock domains. As I understand with this patch, controllers can have different frequencies. The entire network needs to run at a single frequency.
The idea is that with in an object, time is treated in terms of cycles. But the messages that are passed from one entity to another should contain the time in Ticks. As of now, this is only true for the message buffers, but not for the links in the network. As I understand the code, all the entities in different networks (simple, garnet-fixed, garnet-flexible) should be clocked at the same frequency.
Another problem is that the directory controller has to operate at the same frequency as the ruby system. This is because the memory controller does not make use of the Message Buffer, and instead implements a buffer of its own. So, it has no idea of the frequency at which the directory controller is operating and uses ruby system's frequency for scheduling events. |
9506:f5335ac67f41 |
10-Feb-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: replace Time with Cycles in garnet fixed and flexible |
9499:b03b556a8fbb |
10-Feb-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: replaces Time with Cycles in many places The patch started of with replacing Time with Cycles in the Consumer class. But to get ruby to compile, the rest of the changes had to be carried out. Subsequent patches will further this process, till we completely replace Time with Cycles. |
9496:28d88a0fda74 |
10-Feb-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: record fully busy cycle with in the controller This patch does several things. First, the counter for fully busy cycles for a controller is now kept with in the controller, instead of being part of the profiler. Second, the topology class no longer keeps an array of controllers which was only used for printing stats. Instead, ruby system will now ask each controller to print the stats. Thirdly, the statistical variable for recording how many different types were created is being moved in to the controller from the profiler. Note that for printing, the profiler will collate results from different controllers. |
9465:4ae4f3f4b870 |
14-Jan-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: use ClockedObject in Consumer class Many Ruby structures inherit from the Consumer, which is used for scheduling events. The Consumer used to relay on an Event Manager for scheduling events and on g_system_ptr for time. With this patch, the Consumer will now use a ClockedObject to schedule events and to query for current time. This resulted in several structures being converted from SimObjects to ClockedObjects. Also, the MessageBuffer class now requires a pointer to a ClockedObject so as to query for time. |
9389:8f8c911ab5a7 |
07-Jan-2013 |
Andreas Hansson <andreas.hansson@arm.com> |
ruby: Fix missing cxx_header in Switch
This patch addresses a warning related to the swig interface generation for the Switch class. The cxx_header is now specified correctly, and the header in question has got a few includes added to make it all compile. |
9354:7691ec6b173b |
10-Nov-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: support functional accesses in garnet flexible network |
9338:97b4a2be1e5b |
02-Nov-2012 |
Andreas Sandberg <Andreas.Sandberg@arm.com> |
sim: Include object header files in SWIG interfaces
When casting objects in the generated SWIG interfaces, SWIG uses classical C-style casts ( (Foo *)bar; ). In some cases, this can degenerate into the equivalent of a reinterpret_cast (mainly if only a forward declaration of the type is available). This usually works for most compilers, but it is known to break if multiple inheritance is used anywhere in the object hierarchy.
This patch introduces the cxx_header attribute to Python SimObject definitions, which should be used to specify a header to include in the SWIG interface. The header should include the declaration of the wrapped object. We currently don't enforce header the use of the header attribute, but a warning will be generated for objects that do not use it. |
9302:c2e70a9bc340 |
15-Oct-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: improved support for functional accesses This patch adds support to different entities in the ruby memory system for more reliable functional read/write accesses. Only the simple network has been augmented as of now. Later on Garnet will also support functional accesses. The patch adds functional access code to all the different types of messages that protocols can send around. These messages are functionally accessed by going through the buffers maintained by the network entities. The patch also rectifies some of the bugs found in coherence protocols while testing the patch.
With this patch applied, functional writes always succeed. But functional reads can still fail. |
9275:ef43e69c837a |
02-Oct-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: makes some members non-static This patch makes some of the members (profiler, network, memory vector) of ruby system non-static. |
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. |
9230:33eb3c8a98b9 |
18-Sep-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: avoid using g_system_ptr for event scheduling This patch removes the use of g_system_ptr for event scheduling. Each consumer object now needs to specify upfront an EventManager object it would use for scheduling events. This makes the ruby memory system more amenable for a multi-threaded simulation. |
9171:ae88ecf37145 |
27-Aug-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: Remove RubyEventQueue This patch removes RubyEventQueue. Consumer objects now rely on RubySystem or themselves for scheduling events. |
9117:49116b947194 |
12-Jul-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: remove config information from ruby.stats This patch removes printConfig() functions from all structures in Ruby. Most of the information is already part of config.ini, and where ever it is not, it would become in due course. |
9116:9171e26543fa |
12-Jul-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
Ruby: remove some unused stuff from SLICC files |
8645:89929730804b |
31-Dec-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Shuffle some of the included files This patch adds and removes included files from some of the files so as to organize remove some false dependencies and include some files directly instead of transitively. |
8608:02d7ac5fb855 |
03-Nov-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Remove some unused typedefs This patch removes some of the unused typedefs. It also moves some of the typedefs from Global.hh to TypeDefines.hh. The patch also eliminates the file NodeID.hh. |
8530:3aaa99208a84 |
29-Aug-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Remove some unused code |
8492:1ad244a20877 |
08-Aug-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
BuildEnv: Eliminate RUBY as build environment variable This patch replaces RUBY with PROTOCOL in all the SConscript files as the environment variable that decides whether or not certain components of the simulator are compiled. |
8485:7a9a7f2a3d46 |
03-Aug-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Remove files and includes not in use |
8308:79cf09f5a234 |
18-May-2011 |
Tushar Krishna <tushar@csail.mit.edu> |
slicc: added vnet_type field to identify response vnets from others
Identifying response vnets versus other vnets will allow garnet to determine which vnets will carry data packets, and which will carry ctrl packets, and use appropriate buffer sizes (since data packets are larger than ctrl packets). This in turn allows the orion power model to accurately estimate buffer power. |
8266:66a3187a6714 |
02-May-2011 |
Korey Sewell <ksewell@umich.edu> |
ruby: dbg: use system ticks instead of cycles |
8261:39e42ccddd63 |
28-Apr-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
network: adjusted default endpoint bandwidth
The simple network's endpoint bandwidth value is used to adjust the overall bandwidth of the network. Specifically, the ration between endpoint bandwidth and the MESSAGE_SIZE_MULTIPLIER determines the increase. By setting the value to 1000, that means the bandwdith factor specified in the links translates to the link bandwidth in bytes. Previously, it was increasing that value by 10.
This patch will likely require a reset of the ruby regression tester stats. |
8259:36987780169e |
28-Apr-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
network: moved network config params
Moved the buffer_size, endpoint_bandwidth, and adaptive_routing params out of the top-level parent network object and to only those networks that actually use those parameters. |
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. |
8255:73089f793a0a |
28-Apr-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: moved topology to the top network directory
Moved the Topology class to the top network directory because it is shared by both the simple and Garnet networks. |
8254:779d775abc11 |
28-Apr-2011 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: removed dated comment in SimpleNetwork |
8232:b28d06a175be |
15-Apr-2011 |
Nathan Binkert <nate@binkert.org> |
trace: reimplement the DTRACE function so it doesn't use a vector At the same time, rename the trace flags to debug flags since they have broader usage than simply tracing. This means that --trace-flags is now --debug-flags and --trace-help is now --debug-help |
8229:78bf55f23338 |
15-Apr-2011 |
Nathan Binkert <nate@binkert.org> |
includes: sort all includes |
8101:2e1ee8ec6266 |
01-Mar-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Fix DPRINTF bugs in PerfectSwitch and MessageBuffer At a couple of places in PerfectSwitch.cc and MessageBuffer.cc, DPRINTF() has not been provided with correct number of arguments. The patch fixes these bugs. |
8054:9138d38eccd7 |
23-Feb-2011 |
Korey Sewell <ksewell@umich.edu> |
ruby: cleaning up RubyQueue and RubyNetwork dprintfs Overall, continue to progress Ruby debug messages to more of the normal M5 debug message style - add a name() to the Ruby Throttle & PerfectSwitch objects so that the debug output isn't littered w/"global:" everywhere. - clean up messages that print over multiple lines when possible - clean up duplicate prints in the message buffer |
7973:e5550966464a |
14-Feb-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
Ruby: Improve Change PerfectSwitch's wakeup function Currently the wakeup function for the PerfectSwitch contains three loops -
loop on number of virtual networks loop on number of incoming links loop till all messages for this (link, network) have been routed
With an 8 processor mesh network and Hammer protocol, about 11-12% of the was observed to have been spent in this function, which is the highest amongst all the functions. It was found that the innermost loop is executed about 45 times per invocation of the wakeup function, when each invocation of the wakeup function processes just about one message.
The patch tries to do away with the redundant executions of the innermost loop. Counters have been added for each virtual network that record the number of messages that need to be routed for that virtual network. The inner loops are only executed when the number of messages for that particular virtual network > 0. This does away with almost 80% of the executions of the innermost loop. The function now consumes about 5-6% of the total execution time. |
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 |
7780:42da07116e12 |
01-Dec-2010 |
Nilay Vaish <nilay@cs.wisc.edu> |
ruby: Converted old ruby debug calls to M5 debug calls
This patch developed by Nilay Vaish converts all the old GEMS-style ruby debug calls to the appropriate M5 debug calls. |
7547:a5ddcb2abfa1 |
20-Aug-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Added consolidated network msg stats |
7455:586f99bf0dc4 |
11-Jun-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: get rid of the Map class |
7454:3a3e8e8cce1b |
11-Jun-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: get rid of Vector and use STL add a couple of helper functions to base for deleteing all pointers in a container and outputting containers to a stream |
7453:1a5db3dd0f62 |
11-Jun-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: get rid of RefCnt and Allocator stuff use base/refcnt.hh
This was somewhat tricky because the RefCnt API was somewhat odd. The biggest confusion was that the the RefCnt object's constructor that took a TYPE& cloned the object. I created an explicit virtual clone() function for things that took advantage of this version of the constructor. I was conservative and used clone() when I was in doubt of whether or not it was necessary. I still think that there are probably too many instances of clone(), but hopefully not too many.
I converted several instances of const MsgPtr & to a simple MsgPtr. If the function wants to avoid the overhead of creating another reference, then it should just use a regular pointer instead of a ref counting ptr.
There were a couple of instances where refcounted objects were created on the stack. This seems pretty dangerous since if you ever accidentally make a reference to that object with a ref counting pointer, bad things are bound to happen. |
7056:b66b558578bd |
02-Apr-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: get rid of gems_common/util.hh and .cc and use stuff in src/base |
7055:4e24742201d7 |
02-Apr-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: get "using namespace" out of headers In addition to obvious changes, this required a slight change to the slicc grammar to allow types with :: in them. Otherwise slicc barfs on std::string which we need for the headers that slicc generates. |
7054:7d6862b80049 |
31-Mar-2010 |
Nathan Binkert <nate@binkert.org> |
style: another ruby style pass |
7024:30883414ad10 |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Finally removed bash code cira. 2001ish! |
7020:34a5bdcce1e6 |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Removed the obsolete file specified network files |
7019:a49fd5febdce |
22-Mar-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Added copyright to many Ruby *.py files |
7002:48a19d52d939 |
10-Mar-2010 |
Nathan Binkert <nate@binkert.org> |
ruby: get rid of std-includes.hh Do not use "using namespace std;" in headers Include header files as needed |
6895:5f3d2d3f977e |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: added ruby stats print Moved the previous rubymem stats print feature to ruby System so that ruby stats are printed on simulation exit. |
6891:77451885bb00 |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Removed out_link_vec from Consumer Removed the out_line_vec data structure from the Consumer. I'm not sure what this did before, but currently it has no usefulness. |
6881:5a61a8a9009a |
29-Jan-2010 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: connects sm queues to the network |
6879:c07cf29b5a33 |
29-Jan-2010 |
Steve Reinhardt <steve.reinhardt@amd.com> |
ruby: Add support for generating topologies in Python. |
6876:a658c315512c |
29-Jan-2010 |
Steve Reinhardt <steve.reinhardt@amd.com> |
ruby: Convert most Ruby objects to M5 SimObjects. The necessary companion conversion of Ruby objects generated by SLICC are converted to M5 SimObjects in the following patch, so this patch alone does not compile. Conversion of Garnet network models is also handled in a separate patch; that code is temporarily disabled from compiling to allow testing of interim code. |
6875:5eb6e323b595 |
29-Jan-2010 |
Steve Reinhardt <steve.reinhardt@amd.com> |
ruby: get rid of obsolete, unused CustomTopology class. |
6846:60e0df8086f0 |
17-Sep-2009 |
Polina Dudnik <pdudnik@cs.wisc.edu> |
Functionality migrated to sequencer. |
6838:829892ec644c |
14-Sep-2009 |
Derek Hower <drh5@cs.wisc.edu> |
ruby: removed stray printf |
6795:394bc95d417b |
18-Nov-2009 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: removed the chip pointer from MessageBuffer The Chip object no longer exists and thus is removed from the MessageBuffer constructor. |
6781:8da9d36fc14a |
18-Nov-2009 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Added default names to message buffers Added default names to message buffers created by the simple network. |
6762:a22a47e60c21 |
18-Nov-2009 |
Brad Beckmann <Brad.Beckmann@amd.com> |
ruby: Ruby destruction fix. |
6493:1fa51760a963 |
07-Aug-2009 |
Tushar Krishna <Tushar.Krishna@amd.com> |
bug fix for data_msg_size in network/Network.cc |
6372:f1a41ea3bbab |
18-Jul-2009 |
Derek Hower <drh5@cs.wisc.edu> |
ruby: removed all refs to old RubyConfig |
6371:a1768b396928 |
18-Jul-2009 |
Derek Hower <drh5@cs.wisc.edu> |
ruby: removed dead files |
6294:b42cea5e1625 |
08-Jul-2009 |
Derek Hower <drh5@cs.wisc.edu> |
removed stray debug print |
6288:083a6806dd96 |
06-Jul-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: apply some fixes that were overwritten by the recent ruby import. |
6286:40b142645016 |
06-Jul-2009 |
Nathan Binkert <nate@binkert.org> |
scons: update SCons files for changes in ruby. |
6285:ce086eca1ede |
06-Jul-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: Import the latest ruby changes from gems. This was done with an automated process, so there could be things that were done in this tree in the past that didn't make it. One known regression is that atomic memory operations do not seem to work properly anymore. |
6284:a63d1dc4c820 |
06-Jul-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: replace strings that were missed in original ruby import. |
6168:ba6fe02228db |
11-May-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: add RUBY sticky option that must be set to add ruby to the build Default is false |
6157:eaf2fd8f54c0 |
11-May-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: Migrate all of ruby and slicc to SCons. Add the PROTOCOL sticky option sets the coherence protocol that slicc will parse and therefore ruby will use. This whole process was made difficult by the fact that the set of files that are output by slicc are not easily known ahead of time. The easiest thing wound up being to write a parser for slicc that would tell me. Incidentally this means we now have a slicc grammar written in python. |
6156:76de2027b8ad |
11-May-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: clean up a few warnings |
6154:6bb54dcb940e |
11-May-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: Make ruby #includes use full paths to the files they're including. This basically means changing all #include statements and changing autogenerated code so that it generates the correct paths. Because slicc generates #includes, I had to hard code the include paths to mem/protocol. |
6153:0011560d49b0 |
11-May-2009 |
Dan Gibson <gibson@cs.wisc.edu> |
ruby: remove unnecessary code.
1) Removing files from the ruby build left some unresovled symbols. Those have been fixed.
2) Most of the dependencies on Simics data types and the simics interface files have been removed.
3) Almost all mention of opal is gone.
4) Huge chunks of LogTM are now gone.
5) Handling 1-4 left ~hundreds of unresolved references, which were fixed, yielding a snowball effect (and the massive size of this delta). |
6145:15cca6ab723a |
11-May-2009 |
Nathan Binkert <nate@binkert.org> |
ruby: Import ruby and slicc from GEMS
We eventually plan to replace the m5 cache hierarchy with the GEMS hierarchy, but for now we will make both live alongside eachother. |