Commit graph

13 commits

Author SHA1 Message Date
Steve Reinhardt 777c1ebfab Stats & serialization tweaks & cleanup. Unserializing from
a checkpoint now gives identical results to running from scratch
and doing at switchover at the same cycle!
- CPUs start at cycle 0 again, not cycle 1.
- curTick is now serialized & unserialized.
- Stats get reset in main (before event loop).  Since this is done
after curTick is unserialized, simTicks gets set correctly for
running from a checkpoint.
- Simplify serialization to happen in a single pass.
- s/Serializeable/Serializable/

arch/alpha/isa_traits.hh:
dev/etherlink.hh:
sim/eventq.cc:
sim/eventq.hh:
    s/Serializeable/Serializable/
kern/tru64/tru64_system.cc:
sim/process.cc:
    Make initial CPU activation on cycle 0 again (not 1).
sim/main.cc:
    Reset stats before getting started.
    Make error message on falling out of event loop
    more meaningful.
sim/serialize.cc:
sim/serialize.hh:
    Get rid of now-useless initial pass; serialization is
    done in a single pass now.
    Serialize & unserialize curTick.
    Wrap curTick and mainEventQueue in a "globals" Serializable object.
    s/Serializeable/Serializable/
sim/sim_object.cc:
    Add static function to serialize all SimObjects.
sim/sim_object.hh:
    Add static function to serialize all SimObjects.
    s/Serializeable/Serializable/

--HG--
extra : convert_revision : 9dcc411d0009b54b8eb61c3a509680b81b9f6f68
2003-12-11 00:16:46 -08:00
Steve Reinhardt 4ce6118fda Factor ExecContext::setStatus(), BaseCPU::execCtxStatusChange(),
and SimpleCPU::setStatus() into separate functions.  For example,
setStatus(Active) is now activate().

--HG--
extra : convert_revision : 4392e07caf6c918db0b535f613175109681686fe
2003-12-10 17:47:28 -08:00
Lisa Hsu a03221b6ca track the idle_thread() function in the kernel, so that we can know if we are idle during a run.
kern/tru64/tru64_system.cc:
    autogen for new tracked function

    add to fn name map
kern/tru64/tru64_system.hh:
    autogen

--HG--
extra : convert_revision : 322d54df3070824a039085dc3742660c82cf750d
2003-11-07 00:14:38 -05:00
Lisa Hsu 3a99657c8f change the path that i track from two separate paths to one.
kern/tru64/tru64_system.cc:
    the automatic generated code...
    also, change the way i populate the map.  now, instead of tcp_ouput being
    the head of its own path, put it under tcp_sosend, which is under sosend.
kern/tru64/tru64_system.hh:
    automatically generatd changes

--HG--
extra : convert_revision : 005bac336a3088e32b3b5fcc5e72afd80f7f1934
2003-11-06 23:18:47 -05:00
Lisa Hsu 9020491833 add things to track read and soo_read for specweb.
kern/tru64/tru64_events.cc:
    don't need this - it was commented out anyway.
kern/tru64/tru64_system.cc:
    generated code from instrum_codegen.pl  also, populateMap with the correct orderings.
kern/tru64/tru64_system.hh:
    generated code from instrum_codegen.pl

--HG--
extra : convert_revision : 237366a4bae31a07dfc245d090a704afd2bd4833
2003-11-05 23:38:51 -05:00
Lisa Hsu 921b1ee87b Add the ability to track stats in user defined sets of function calls. code can be generated via the base/instrum_codegen.pl script to easily change the functions being tracked. the only thing the user needs to do is add code in tru64System to change how the callerMap is populated.
command line:

m5.* <config file> <args> --server.system:bin=true to track function calls in the server
m5.* <config file> <args> --client.system:bin=true to track function calls in the client

base/statistics.cc:
    make an adjustment to the way stats are printed for FS_MEASURE
base/statistics.hh:
    add a name() virtual function to GenBin.  add a debug printf for activate().
    add amake MainBin the default bin when FS_MEASURE.
cpu/exec_context.cc:
    initialize swCtx to null upon creation of an xc
cpu/exec_context.hh:
    add a SWContext pointer to every execution context.
cpu/simple_cpu/simple_cpu.cc:
    process calls and returns for FS_MEASURE
cpu/simple_cpu/simple_cpu.hh:
    add this so idleCycles will not be accessed before all stats are constructed
kern/tru64/tru64_events.cc:
    add a FnEvent that fires whenever a function we're tracking is called.  implement the process() virtual function for it.
kern/tru64/tru64_events.hh:
    add FnEvent
kern/tru64/tru64_system.cc:
    send bin parameter to System constructor.  add bin parameter to Tru64System object.  initialize all the FnEvent and MainBin members of Tru64system.  also, populate the calling map that indicates whether a function call is on the path we're tracking.
kern/tru64/tru64_system.hh:
    modify the Tru64System class to support FS_MEASURE
sim/system.cc:
    add a bin parameter to System class.  initialize a MainBin to hold the stats for nonPath.
sim/system.hh:
    add a map of to match bins to function names.  add a swCtx map to map pcb addresses to SWContext *s.  Add some supporting functions.

--HG--
extra : convert_revision : af3eadd798cb2d2aed9b54e1059dcedf244dd526
2003-11-04 15:15:12 -05:00
Steve Reinhardt 91cb532f9f Make FullCPU schedule its TickEvent when one of its contexts becomes active.
This fixes detailed-mpboot, which was broken as of my last change.
Also clean up some of the ExecContext status initialization.

cpu/base_cpu.hh:
    CPU::execCtxStatusChg() now takes thread_num as an arg so the CPU knows
    which execContext had the status change.
    BaseCPU::registerExecContexts() no longer needs to be virtual.
cpu/exec_context.cc:
    Initialize _status directly... don't use setStatus() as this will notify the CPU
    of the change before it is ready.
    CPU::execCtxStatusChg() now takes thread_num as an arg so the CPU knows
    which execContext had the status change.
cpu/exec_context.hh:
    Don't need initStatus() any more.
cpu/simple_cpu/simple_cpu.cc:
    Move execCtxStatusChg() from header to .cc file.
    No longer need specialized version of registerExecContexts to schedule TickEvent.
cpu/simple_cpu/simple_cpu.hh:
    Move execCtxStatusChg() from header to .cc file.
    CPU::execCtxStatusChg() now takes thread_num as arg (must be 0 for SimpleCPU).
    No longer need specialized version of registerExecContexts to schedule TickEvent.
kern/tru64/tru64_system.cc:
    Don't need initRegs; the PC etc. get initialized in the CPU constructor.
    ExecContexts start out as Unallocated, so no need to set them to Unallocated here.
kern/tru64/tru64_system.hh:
    Don't need initRegs; the PC etc. get initialized in the CPU constructor.
sim/prog.cc:
    ExecContexts start out as Unallocated, so no need to set them to Unallocated here.

--HG--
extra : convert_revision : e960ebbeb845960344633798e251b6c8bf1c0378
2003-10-24 23:02:36 -07:00
Steve Reinhardt cc9a838f4c Merge stever@zizzer:/bk/m5 into isabel.reinhardt.house:/z/stever/bk/m5
--HG--
extra : convert_revision : b0f93bd35d767fd3a520a9fed70a71d40b0056db
2003-10-23 19:09:18 -07:00
Steve Reinhardt f5da73b688 Initial support for CPU switching. New SamplingCPU object encompasses a set
of CPUs that get switched round-robin (though currently we're only shooting for
two CPUs and one switch event, and even that doesn't quite work yet).  Registration
of ExecContexts with System/Process object factored out so we can create two CPUs
but only register one of them at a time.  Also worked at making behavior and naming
in System and Process objects more consistent.

arch/alpha/ev5.cc:
    Rename ipr_init to initIPRs and get rid of unused mem arg.
arch/alpha/fake_syscall.cc:
    Process:numCpus is now a function (not a data member).
base/remote_gdb.hh:
    Support for ExecContext switching.
cpu/base_cpu.cc:
cpu/base_cpu.hh:
cpu/exec_context.cc:
cpu/exec_context.hh:
cpu/simple_cpu/simple_cpu.hh:
    Support for ExecContext switching.
    Renamed contexts array to execContexts to be consistent with Process.
    CPU ID now auto-assigned by system object.
cpu/simple_cpu/simple_cpu.cc:
    Support for ExecContext switching.
    Renamed contexts array to execContexts to be consistent with Process.
    CPU ID now auto-assigned by system object.
    Cleaned up MP full-system initialization a bit.
dev/alpha_console.cc:
    Renamed xcvec array to execContexts to be consistent with Process.
kern/tru64/tru64_system.cc:
kern/tru64/tru64_system.hh:
    Support for ExecContext switching.
    CPU ID now auto-assigned by system object.
sim/prog.cc:
sim/prog.hh:
    Support for ExecContext switching.
    Process:numCpus is now a function (not a data member).
sim/system.cc:
sim/system.hh:
    Support for ExecContext switching.
    Renamed xcvec array to execContexts to be consistent with Process.

--HG--
extra : convert_revision : 79649cffad5bf3e83de8df44236941907926d791
2003-10-23 19:07:52 -07:00
Andrew Schultz 98fd66ed0c Changed the init_param to a uint64_t from int
--HG--
extra : convert_revision : fbd3d3bbaa539661f63e4f7991b0a6275992d60a
2003-10-22 18:50:54 -04:00
Andrew Schultz f600cff5c2 Created new M5 instruction to allow an integer parameter (init_param) to be specified in the INI and then read inside the simulator.
arch/alpha/isa_desc:
    Added new M5FUNC instruction to put allow reading of init_param inside simulator
kern/tru64/tru64_system.cc:
kern/tru64/tru64_system.hh:
sim/system.cc:
sim/system.hh:
    Added support for init_param

--HG--
extra : convert_revision : 8253f0b4239b194d4f04665c9deec1fcdf665c8a
2003-10-21 17:18:17 -04:00
Nathan Binkert e0b065ff7c Separate the stuff for SimObject from SimObject builder.
This makes testing a bit easier.

arch/alpha/alpha_memory.cc:
cpu/intr_control.cc:
cpu/memtest/memtest.cc:
cpu/simple_cpu/simple_cpu.cc:
dev/alpha_console.cc:
dev/console.cc:
dev/disk_image.cc:
dev/etherbus.cc:
dev/etherdump.cc:
dev/etherlink.cc:
dev/ethertap.cc:
dev/simple_disk.cc:
kern/tru64/tru64_system.cc:
sim/main.cc:
sim/prog.cc:
    Need to include builder.hh
    sort #includes
sim/sim_object.cc:
sim/sim_object.hh:
    Separate the SimObjectBuilder stuff into its own file

--HG--
extra : convert_revision : e8395e0cc6ae1f180f9cd6f100795a1ac44aeed5
2003-10-20 20:17:01 -04:00
Nathan Binkert 4759c203c7 Remove all of the Tru64 specific stuff from the base System object
into its own Tru64System object.  Also remove the System builder
stuff and create a Tru64System builder.  This makes it much
simpler to support more operating systems.

arch/alpha/ev5.cc:
    Each system provides its own mechanism for doing a breakpoint.
base/remote_gdb.hh:
    #include <map>
cpu/pc_event.cc:
cpu/pc_event.hh:
    Separate out System specific PCEvents
cpu/simple_cpu/simple_cpu.cc:
    each system provides its own init script
kern/tru64/dump_mbuf.cc:
kern/tru64/printf.cc:
    Stick this in a namespace

--HG--
extra : convert_revision : 9f74527ed2ff8010431d9aff34357aaecc1fb3f6
2003-10-14 12:19:59 -04:00