Korey Sewell [Sun, 31 Jan 2010 23:31:09 +0000 (18:31 -0500)]
inorder: update hello world alpha
Korey Sewell [Sun, 31 Jan 2010 23:30:59 +0000 (18:30 -0500)]
inorder: double delete inst bug
Make sure that instructions are dereferenced/deleted twice by marking they are
on the remove list
Korey Sewell [Sun, 31 Jan 2010 23:30:48 +0000 (18:30 -0500)]
inorder: inst count mgmt
Korey Sewell [Sun, 31 Jan 2010 23:30:43 +0000 (18:30 -0500)]
inorder: implement split stores
Korey Sewell [Sun, 31 Jan 2010 23:30:35 +0000 (18:30 -0500)]
inorder: implement split loads
Korey Sewell [Sun, 31 Jan 2010 23:30:24 +0000 (18:30 -0500)]
inorder: add activity stats
Korey Sewell [Sun, 31 Jan 2010 23:30:08 +0000 (18:30 -0500)]
inorder: object cleanup in destructors
Korey Sewell [Sun, 31 Jan 2010 23:29:59 +0000 (18:29 -0500)]
inorder: user per-thread dummy insts/reqs
Korey Sewell [Sun, 31 Jan 2010 23:29:49 +0000 (18:29 -0500)]
inorder: add execution unit stats
Korey Sewell [Sun, 31 Jan 2010 23:29:18 +0000 (18:29 -0500)]
inorder: recvRetry bug fix
- on certain retry requests you can get an assertion failure
- fix by allowing the request to literally "Retry" itself
if it wasnt successful before, and then block any requests
through cache port while waiting for the cache to be
made available for access
Korey Sewell [Sun, 31 Jan 2010 23:29:06 +0000 (18:29 -0500)]
inorder-stats: add prereq to basic stat
only show requests processed when the resource is actually in use
Korey Sewell [Sun, 31 Jan 2010 23:28:59 +0000 (18:28 -0500)]
inorder: ctxt switch stats
- m5 line enforcement on use_def.cc,hh
Korey Sewell [Sun, 31 Jan 2010 23:28:51 +0000 (18:28 -0500)]
inorder: pipeline stage stats
add idle/run/utilization stats for each pipeline stage
Korey Sewell [Sun, 31 Jan 2010 23:28:31 +0000 (18:28 -0500)]
inorder: enforce stage bandwidth
each stage keeps track of insts_processed on a per_thread basis but we should
be keeping that on a total basis inorder to enforce stage width limits
Korey Sewell [Sun, 31 Jan 2010 23:28:12 +0000 (18:28 -0500)]
inorder: set thread status'
set Active/Suspended/Halted status for threads. useful for system when determining
if/when to exit simulation
Korey Sewell [Sun, 31 Jan 2010 23:28:05 +0000 (18:28 -0500)]
inorder: add/remove halt/deallocate context respectively
Halt is called from the exit() system call while
deallocate is unused. So to clear up things, just
use halt and remove deallocate.
Korey Sewell [Sun, 31 Jan 2010 23:27:58 +0000 (18:27 -0500)]
inorder: track last branch committed
when threads are switching in/out the CPU, we need to keep
track of special cases like branches. Add appropriate
variables in ThreadState t track this and then use
these variables when updating pc after context switch
Korey Sewell [Sun, 31 Jan 2010 23:27:49 +0000 (18:27 -0500)]
inorder: add updatePC event to resPool
this will be used for when a thread comes back from a cache miss, it needs to update the PCs
because the inst might of been a branch or delayslot in which the next PC isnt always
a straight addition
Korey Sewell [Sun, 31 Jan 2010 23:27:38 +0000 (18:27 -0500)]
inorder: ready thread wakeup
allow a thread to wakeup and be activated after
it has been in suspended state and another
thread is switched out. Need to give
pipeline stages a "activateThread" function
so that can get to their suspended instruction
when the time is right.
Korey Sewell [Sun, 31 Jan 2010 23:27:25 +0000 (18:27 -0500)]
inorder: add threadmodel flag
this prints out messages relative to what
threading model is being used (smt, switch-on-miss, single, etc.)
Korey Sewell [Sun, 31 Jan 2010 23:27:12 +0000 (18:27 -0500)]
inorder: mem. mgmt. update
update address List and address Map to take
into account multiple threads
Korey Sewell [Sun, 31 Jan 2010 23:27:02 +0000 (18:27 -0500)]
inorder: suspend in respool
give resources their own specific
activity to do for a "suspend" event
instead of defaulting to deactivating the thread for a
suspend thread event. This really matters
for the fetch sequence unit which wants to remove the
thread from fetching while other units want to
ignore a thread suspension. If you deactivate a thread
in a resource then you may lose some of the allotted
bandwidth that the thread is taking up...
Korey Sewell [Sun, 31 Jan 2010 23:26:54 +0000 (18:26 -0500)]
inorder: fetch thread bug
dont check total # of threads but instead all
active threads
Korey Sewell [Sun, 31 Jan 2010 23:26:47 +0000 (18:26 -0500)]
inorder: ready/suspend status fns
update/add in the use of isThreadReady & isThreadSuspended
functions.Check in activateThread what list a thread is
on so it can be managed accordingly.
Korey Sewell [Sun, 31 Jan 2010 23:26:40 +0000 (18:26 -0500)]
inorder-cleanup: remove unused thread functions
Korey Sewell [Sun, 31 Jan 2010 23:26:32 +0000 (18:26 -0500)]
inorder: activate thread on cache miss
-Support ability to activate next ready thread after a cache miss
through the activateNextReadyContext/Thread() functions
-To support this a "readyList" of thread ids is added
-After a cache miss, thread will suspend and then call
activitynextreadythread
Korey Sewell [Sun, 31 Jan 2010 23:26:26 +0000 (18:26 -0500)]
inorder: add event priority offset
allow for events to schedule themselves later if desired. this is important
because of cases like where you need to activate a thread only after the previous
thread has been deactivated. The ordering there has to be enforced
Korey Sewell [Sun, 31 Jan 2010 23:26:13 +0000 (18:26 -0500)]
inorder: squash on memory stall
add code to recognize memory stalls in resources and the pipeline as well
as squash a thread if there is a stall and we are in the switch on cache miss
model
Korey Sewell [Sun, 31 Jan 2010 23:26:03 +0000 (18:26 -0500)]
inorder: add insts to cpu event
some events are going to need instruction data when they process, so just
include the instruction in the event construction
Korey Sewell [Sun, 31 Jan 2010 23:25:48 +0000 (18:25 -0500)]
inorder: switch out buffer
add buffer for instructions to switch out to in a pipeline stage
can't squash the instruction and remove the pipeline so we kind of need
to 'suspend' an instruction at the stage while the memory stall resolves
for the switch on cache miss model
Korey Sewell [Sun, 31 Jan 2010 23:25:27 +0000 (18:25 -0500)]
inorder: dont allow early loads
- loads were happening on same cycle as the address was generated which is slightly
unrealistic. Instead, force address generation to be on separate cycle from load
initiation
- also, mark the stages in a more traditional way (F-D-X-M-W)
Korey Sewell [Sun, 31 Jan 2010 23:25:13 +0000 (18:25 -0500)]
configs/inorder: add options for switch-on-miss to inorder cpu
Korey Sewell [Sun, 31 Jan 2010 22:18:15 +0000 (17:18 -0500)]
inorder: init internal debug cpu counters
- cpuEventNum
- resReqCount
Brad Beckmann [Sat, 30 Jan 2010 04:29:40 +0000 (20:29 -0800)]
m5: Regression Tester Update
This patch includes the necessary regression updates to test the new ruby
configuration system. The patch includes support for multiple ruby protocols
and adds the ruby random tester. The patch removes atomic mode test for
ruby since ruby does not support atomic mode acceses. These tests can be
added back in when ruby supports atomic mode for real.
--HG--
rename : tests/quick/50.memtest/test.py => tests/quick/60.rubytest/test.py
Brad Beckmann [Sat, 30 Jan 2010 04:29:34 +0000 (20:29 -0800)]
ruby: Replaced gems_common debug statements
Replaced Ruby debug statements with M5 statements.
Brad Beckmann [Sat, 30 Jan 2010 04:29:34 +0000 (20:29 -0800)]
ruby: removed last level cache support
Removed the last level cache support and MOESI_hammer's dependency on it.
Replaces the LLC support with the more generic MachineType count.
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
ruby: Added a Scons option to prevent HTML file creation
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
ruby: ruby_se.py updated to new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
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.
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
ruby: Removed static members in RubyPort including hitcallback
Removed static members in RubyPort and removed the ruby request unique id.
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
ruby: Removed the old config interface
Removed the old config interface from RubySystem and libruby.
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
ruby: Re-enabled orion power models
Removed the dummy power function implementations so that Orion can implement
them correctly. Since Orion lacks modular design, this patch simply enables
scons to compile it. There are no python configuration changes in this patch.
Brad Beckmann [Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)]
ruby: memtest-ruby updated to the new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:32 +0000 (20:29 -0800)]
ruby: Converted Garnet to M5 configuration
Steve Reinhardt [Sat, 30 Jan 2010 04:29:30 +0000 (20:29 -0800)]
Garnet: reorganize directory tree.
Rename the ruby/network/garnet-foo directories to garnet/foo.
Move the common NetworkHeader.hh file from garnet-fixed-pipeline
up to the common garnet directory.
Fix up include paths.
--HG--
rename : src/mem/ruby/network/garnet-fixed-pipeline/NetworkHeader.hh => src/mem/ruby/network/garnet/NetworkHeader.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/CreditLink_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/CreditLink_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/GarnetNetwork_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/GarnetNetwork_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/InputUnit_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/InputUnit_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/NetworkInterface_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/NetworkLink_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/NetworkLink_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/OutVcState_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/OutVcState_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/OutputUnit_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/OutputUnit_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/Router_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/Router_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/RoutingUnit_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/RoutingUnit_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/RoutingUnit_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/RoutingUnit_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/SConscript => src/mem/ruby/network/garnet/fixed-pipeline/SConscript
rename : src/mem/ruby/network/garnet-fixed-pipeline/SWallocator_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/SWallocator_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/Switch_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/Switch_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/VCallocator_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/VCallocator_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/VirtualChannel_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/VirtualChannel_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/flitBuffer_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/flitBuffer_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh
rename : src/mem/ruby/network/garnet-fixed-pipeline/flit_d.cc => src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc
rename : src/mem/ruby/network/garnet-fixed-pipeline/flit_d.hh => src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/FlexibleConsumer.hh => src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/GarnetNetwork.cc => src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/GarnetNetwork.hh => src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/InVcState.cc => src/mem/ruby/network/garnet/flexible-pipeline/InVcState.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/InVcState.hh => src/mem/ruby/network/garnet/flexible-pipeline/InVcState.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/NetworkConfig.hh => src/mem/ruby/network/garnet/flexible-pipeline/NetworkConfig.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.cc => src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/NetworkInterface.hh => src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/NetworkLink.cc => src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/NetworkLink.hh => src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/OutVcState.cc => src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/OutVcState.hh => src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/Router.cc => src/mem/ruby/network/garnet/flexible-pipeline/Router.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/Router.hh => src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/SConscript => src/mem/ruby/network/garnet/flexible-pipeline/SConscript
rename : src/mem/ruby/network/garnet-flexible-pipeline/VCarbiter.cc => src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/VCarbiter.hh => src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/flit.cc => src/mem/ruby/network/garnet/flexible-pipeline/flit.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/flit.hh => src/mem/ruby/network/garnet/flexible-pipeline/flit.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/flitBuffer.cc => src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc
rename : src/mem/ruby/network/garnet-flexible-pipeline/flitBuffer.hh => src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh
rename : src/mem/ruby/network/garnet-flexible-pipeline/netconfig.defaults => src/mem/ruby/network/garnet/flexible-pipeline/netconfig.defaults
Brad Beckmann [Sat, 30 Jan 2010 04:29:27 +0000 (20:29 -0800)]
ruby: Added a mesh topology
Brad Beckmann [Sat, 30 Jan 2010 04:29:27 +0000 (20:29 -0800)]
ruby: MESI_CMP_directory updated to the new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:26 +0000 (20:29 -0800)]
ruby: Sorted the file includes to maintain consistency
Brad Beckmann [Sat, 30 Jan 2010 04:29:26 +0000 (20:29 -0800)]
ruby: Renamed the MESI directory sm file
Renamed the MESI directory file to be consistent with all other protocols.
--HG--
rename : src/mem/protocol/MESI_CMP_directory-mem.sm => src/mem/protocol/MESI_CMP_directory-dir.sm
Brad Beckmann [Sat, 30 Jan 2010 04:29:26 +0000 (20:29 -0800)]
ruby: Removed the GPL header in MESI_CMP_directory-msg
I'm not sure how this got past our initial ruby code import, but this obviously
needed to be removed.
Brad Beckmann [Sat, 30 Jan 2010 04:29:26 +0000 (20:29 -0800)]
ruby: MOESI_CMP_directory updated to the new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:25 +0000 (20:29 -0800)]
ruby: Added atomic support to MOESI_CMP_token
Brad Beckmann [Sat, 30 Jan 2010 04:29:25 +0000 (20:29 -0800)]
ruby: fixed memory fetch bug for persistent requests
Brad Beckmann [Sat, 30 Jan 2010 04:29:25 +0000 (20:29 -0800)]
ruby: MOESI_CMP_token updates to use the new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:24 +0000 (20:29 -0800)]
ruby: Allows boolean and string defaults for StateMachine parameters
Brad Beckmann [Sat, 30 Jan 2010 04:29:24 +0000 (20:29 -0800)]
ruby: MI_example updates to use the new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:24 +0000 (20:29 -0800)]
ruby: Memory size consistency check
Ruby's memory is now sized according to the size of M5 physical memory.
Brad Beckmann [Sat, 30 Jan 2010 04:29:24 +0000 (20:29 -0800)]
ruby: fixed the memory total size variable to be 64-bits
Brad Beckmann [Sat, 30 Jan 2010 04:29:23 +0000 (20:29 -0800)]
ruby: convert to M5 MemorySize
Converted both ruby caches and directory memory to use the M5 MemorySize python
type.
Brad Beckmann [Sat, 30 Jan 2010 04:29:23 +0000 (20:29 -0800)]
ruby: Added Cache and MemCntrl profiler calls
Brad Beckmann [Sat, 30 Jan 2010 04:29:23 +0000 (20:29 -0800)]
ruby: added data print to ruby request
Brad Beckmann [Sat, 30 Jan 2010 04:29:23 +0000 (20:29 -0800)]
ruby: Added atomic support to MOESI_hammer
Brad Beckmann [Sat, 30 Jan 2010 04:29:23 +0000 (20:29 -0800)]
ruby: added the GEMS ruby tester
Brad Beckmann [Sat, 30 Jan 2010 04:29:22 +0000 (20:29 -0800)]
ruby: fixed MOESI_hammer data writebacks to the directory
Brad Beckmann [Sat, 30 Jan 2010 04:29:22 +0000 (20:29 -0800)]
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.
Brad Beckmann [Sat, 30 Jan 2010 04:29:21 +0000 (20:29 -0800)]
ruby: Removed RubySystem::getNumberOfSequencers
removed the static function RubySystem::getNumberOfSequencers and replaced
it with a python config variable
Brad Beckmann [Sat, 30 Jan 2010 04:29:21 +0000 (20:29 -0800)]
ruby: added ruby stats print
Moved the previous rubymem stats print feature to ruby System so that ruby
stats are printed on simulation exit.
Brad Beckmann [Sat, 30 Jan 2010 04:29:21 +0000 (20:29 -0800)]
ruby: fixed Set.cc bug to allow zero sized sets
This is necessary for example when no dma sequencers are necessary in the
simulated system.
Brad Beckmann [Sat, 30 Jan 2010 04:29:21 +0000 (20:29 -0800)]
ruby: FS support using the new configuration system
Brad Beckmann [Sat, 30 Jan 2010 04:29:20 +0000 (20:29 -0800)]
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.
Brad Beckmann [Sat, 30 Jan 2010 04:29:20 +0000 (20:29 -0800)]
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.
Brad Beckmann [Sat, 30 Jan 2010 04:29:20 +0000 (20:29 -0800)]
ruby: Convered ruby tracing support usage of sequencer
Modified ruby's tracing support to no longer rely on the RubySystem map
to convert a sequencer string name to a sequencer pointer. As a
temporary solution, the code uses the sim_object find function.
Eventually, we should develop a better fix.
Brad Beckmann [Sat, 30 Jan 2010 04:29:20 +0000 (20:29 -0800)]
ruby: Memory Controller Profiler with new config system
This patch includes a rather substantial change to the memory controller
profiler in order to work with the new configuration system. Most
noteably, the mem_cntrl_profiler no longer uses a string map, but instead
a vector. Eventually this support should be removed from the main
profiler and go into a separate object. Each memory controller should have
a pointer to that new mem_cntrl profile object.
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Converted MOESI_hammer dma cntrl to new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Added the cache profiler to the new config system
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Converted the sequencer deadlock event to m5 eventq
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Wrapped ruby events into m5 events
Wrapped ruby events using the m5 event object. Removed the prio_heap
from ruby's event queue and instead schedule ruby events on the m5 event
queue.
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Removed the tech_nm variable from RubySystem
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Added clock to ruby system
As a first step to migrate ruby to the M5 eventqueue, added a clock
variable to the ruby system.
Brad Beckmann [Sat, 30 Jan 2010 04:29:19 +0000 (20:29 -0800)]
ruby: Ruby changes required to use the python config system
This patch includes the necessary changes to connect ruby objects using
the python configuration system. Mainly it consists of removing
unnecessary ruby object pointers and connecting the necessary object
pointers using the generated param objects. This patch includes the
slicc changes necessary to connect generated ruby objects together using
the python configuraiton system.
Brad Beckmann [Sat, 30 Jan 2010 04:29:18 +0000 (20:29 -0800)]
ruby: connects sm queues to the network
Steve Reinhardt [Sat, 30 Jan 2010 04:29:18 +0000 (20:29 -0800)]
ruby: Calculate system total memory capacity in Python
rather than in RubySystem object.
Steve Reinhardt [Sat, 30 Jan 2010 04:29:17 +0000 (20:29 -0800)]
ruby: Add support for generating topologies in Python.
Steve Reinhardt [Sat, 30 Jan 2010 04:29:17 +0000 (20:29 -0800)]
scons: ignore blank lines in .slicc files
Steve Reinhardt [Sat, 30 Jan 2010 04:29:17 +0000 (20:29 -0800)]
ruby: Make SLICC-generated objects SimObjects.
Also add SLICC support for state-machine parameter defaults
(passed through to Python as SimObject Param defaults).
Steve Reinhardt [Sat, 30 Jan 2010 04:29:17 +0000 (20:29 -0800)]
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.
Steve Reinhardt [Sat, 30 Jan 2010 04:29:14 +0000 (20:29 -0800)]
ruby: get rid of obsolete, unused CustomTopology class.
Steve Reinhardt [Sat, 30 Jan 2010 04:29:14 +0000 (20:29 -0800)]
tests: added M5_TEST_PROGS environment variable
to allow override of global location for regression test binaries.
Brad Beckmann [Sat, 30 Jan 2010 04:29:14 +0000 (20:29 -0800)]
ruby: fix out_port declaration
Brad Beckmann [Sat, 30 Jan 2010 04:29:13 +0000 (20:29 -0800)]
ruby: Added message type check to OutPortDeclAST.py
Though OutPort's message type is not used to generate code, this fix checks
that the programmer's intent is correct. Eventually, we may want to
remove the message type from the OutPort declaration statement.
Derek Hower [Mon, 25 Jan 2010 17:53:06 +0000 (11:53 -0600)]
Automated merge with ssh://hg@m5sim.org/m5
Derek Hower [Mon, 25 Jan 2010 17:51:16 +0000 (11:51 -0600)]
config: changed default ruby config file for regression
Nathan Binkert [Sat, 23 Jan 2010 22:02:03 +0000 (14:02 -0800)]
build: need to include cstdio
Nathan Binkert [Sat, 23 Jan 2010 17:43:18 +0000 (09:43 -0800)]
style_hook: Fix the style hook
Re-enable it and update it for more modern versions of mercurial.
Derek Hower [Fri, 22 Jan 2010 23:23:21 +0000 (17:23 -0600)]
Automated merge with ssh://hg@m5sim.org/m5
Lisa Hsu [Thu, 21 Jan 2010 00:47:40 +0000 (16:47 -0800)]
copyrights: add copyright info to the files I added.
checkpoint-aggregator.py was written at UM so I added a UM copyright, agg_se.py was
written at AMD so I added the AMD copyright.
Lisa Hsu [Wed, 20 Jan 2010 06:03:44 +0000 (22:03 -0800)]
util: do checkpoint aggregation more cleanly, fix last changeset.
1) Move alpha-specific code out of page_table.cc:serialize().
2) Begin serializing M5_pid and unserializing it, but adding an function to do optional paramIn so that old checkpoints don't need to be fixed up.
3) Fix up alpha startup code so that the unserialized M5_pid value is properly written to DTB_IPR_ASN.
4) Fix the memory unserialize that I forgot somehow in the last changeset.
5) Add in an agg_se.py to handle aggregated checkpoints. --bench foo-bar plus positional arguments foo bar are the only changes in usage from se.py.
Note this aggregation stuff has only been tested for Alpha and nothing else, though it should take a very minimal amount of work to get it to work with another ISA.
Derek Hower [Tue, 19 Jan 2010 23:17:19 +0000 (17:17 -0600)]
memtest differences from Derek's changes
Derek Hower [Tue, 19 Jan 2010 23:11:36 +0000 (17:11 -0600)]
ruby: new atomics implementation
This patch changes the way that Ruby handles atomic RMW instructions. This implementation, unlike the prior one, is protocol independent. It works by locking an address from the sequencer immediately after the read portion of an RMW completes. When that address is locked, the coherence controller will only satisfy requests coming from one port (e.g., the mandatory queue) and will ignore all others. After the write portion completed, the line is unlocked. This should also work with multi-line atomics, as long as the blocks are always acquired in the same order.
Derek Hower [Tue, 19 Jan 2010 21:48:12 +0000 (15:48 -0600)]
merge