diff options
-rw-r--r-- | configs/common/FSConfig.py | 2 | ||||
-rw-r--r-- | src/arch/alpha/tlb.cc | 8 | ||||
-rw-r--r-- | src/dev/uart8250.cc | 7 | ||||
-rw-r--r-- | src/kern/linux/events.cc | 11 | ||||
-rw-r--r-- | src/kern/linux/events.hh | 8 | ||||
-rw-r--r-- | src/kern/linux/printk.cc | 13 | ||||
-rw-r--r-- | src/kern/linux/printk.hh | 4 | ||||
-rw-r--r-- | src/mem/bridge.cc | 45 | ||||
-rw-r--r-- | src/mem/bridge.hh | 51 | ||||
-rw-r--r-- | src/mem/bus.cc | 73 | ||||
-rw-r--r-- | src/mem/bus.hh | 22 | ||||
-rw-r--r-- | src/mem/packet.cc | 2 | ||||
-rw-r--r-- | src/mem/port.hh | 6 | ||||
-rw-r--r-- | src/python/m5/objects/Bridge.py | 2 | ||||
-rw-r--r-- | src/python/m5/objects/Bus.py | 1 | ||||
-rw-r--r-- | tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt | 256 | ||||
-rw-r--r-- | tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt | 112 | ||||
-rw-r--r-- | tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt | 18 |
18 files changed, 377 insertions, 264 deletions
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index be3f5ff79..289a7a5f4 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -61,7 +61,7 @@ def makeLinuxAlphaSystem(mem_mode, mdesc = None): self.readfile = mdesc.script() self.iobus = Bus(bus_id=0) self.membus = Bus(bus_id=1) - self.bridge = Bridge() + self.bridge = Bridge(fix_partial_write_b=True) self.physmem = PhysicalMemory(range = AddrRange(mdesc.mem())) self.bridge.side_a = self.iobus.port self.bridge.side_b = self.membus.port diff --git a/src/arch/alpha/tlb.cc b/src/arch/alpha/tlb.cc index 3ab65e664..2dfff8c5f 100644 --- a/src/arch/alpha/tlb.cc +++ b/src/arch/alpha/tlb.cc @@ -213,7 +213,7 @@ TLB::flushAddr(Addr addr, uint8_t asn) if (i == lookupTable.end()) return; - while (i->first == vaddr.vpn()) { + while (i != lookupTable.end() && i->first == vaddr.vpn()) { int index = i->second; PTE *pte = &table[index]; assert(pte->valid); @@ -225,10 +225,10 @@ TLB::flushAddr(Addr addr, uint8_t asn) // invalidate this entry pte->valid = false; - lookupTable.erase(i); + lookupTable.erase(i++); + } else { + ++i; } - - ++i; } } diff --git a/src/dev/uart8250.cc b/src/dev/uart8250.cc index d178bd1af..50307aad4 100644 --- a/src/dev/uart8250.cc +++ b/src/dev/uart8250.cc @@ -101,14 +101,11 @@ Uart8250::IntrEvent::scheduleIntr() Uart8250::Uart8250(Params *p) - : Uart(p), txIntrEvent(this, TX_INT), rxIntrEvent(this, RX_INT) + : Uart(p), IER(0), DLAB(0), LCR(0), MCR(0), lastTxInt(0), + txIntrEvent(this, TX_INT), rxIntrEvent(this, RX_INT) { pioSize = 8; - IER = 0; - DLAB = 0; - LCR = 0; - MCR = 0; } Tick diff --git a/src/kern/linux/events.cc b/src/kern/linux/events.cc index 4a3fd9f47..42fa63a27 100644 --- a/src/kern/linux/events.cc +++ b/src/kern/linux/events.cc @@ -37,6 +37,7 @@ #include "kern/system_events.hh" #include "sim/system.hh" +#include <sstream> namespace Linux { @@ -44,13 +45,11 @@ void DebugPrintkEvent::process(ThreadContext *tc) { if (DTRACE(DebugPrintf)) { - if (!raw) { - StringWrap name(tc->getSystemPtr()->name() + ".dprintk"); - DPRINTFN(""); - } - + std::stringstream ss; TheISA::Arguments args(tc); - Printk(args); + Printk(ss, args); + StringWrap name(tc->getSystemPtr()->name() + ".dprintk"); + DPRINTFN("%s", ss.str()); } SkipFuncEvent::process(tc); } diff --git a/src/kern/linux/events.hh b/src/kern/linux/events.hh index b0510c18f..e36a72dde 100644 --- a/src/kern/linux/events.hh +++ b/src/kern/linux/events.hh @@ -38,13 +38,9 @@ namespace Linux { class DebugPrintkEvent : public SkipFuncEvent { - private: - bool raw; - public: - DebugPrintkEvent(PCEventQueue *q, const std::string &desc, Addr addr, - bool r = false) - : SkipFuncEvent(q, desc, addr), raw(r) {} + DebugPrintkEvent(PCEventQueue *q, const std::string &desc, Addr addr) + : SkipFuncEvent(q, desc, addr) {} virtual void process(ThreadContext *xc); }; diff --git a/src/kern/linux/printk.cc b/src/kern/linux/printk.cc index 0e9fd6620..866353e31 100644 --- a/src/kern/linux/printk.cc +++ b/src/kern/linux/printk.cc @@ -32,22 +32,18 @@ #include <sys/types.h> #include <algorithm> -#include "base/trace.hh" #include "arch/arguments.hh" +#include "base/trace.hh" +#include "kern/linux/printk.hh" using namespace std; void -Printk(TheISA::Arguments args) +Printk(stringstream &out, TheISA::Arguments args) { - std::ostream &out = Trace::output(); char *p = (char *)args++; - ios::fmtflags saved_flags = out.flags(); - char old_fill = out.fill(); - int old_precision = out.precision(); - while (*p) { switch (*p) { case '%': { @@ -258,8 +254,5 @@ Printk(TheISA::Arguments args) } } - out.flags(saved_flags); - out.fill(old_fill); - out.precision(old_precision); } diff --git a/src/kern/linux/printk.hh b/src/kern/linux/printk.hh index 17d59b765..20dfb430f 100644 --- a/src/kern/linux/printk.hh +++ b/src/kern/linux/printk.hh @@ -34,8 +34,10 @@ #include "arch/isa_specific.hh" +#include <sstream> + class TheISA::Arguments; -void Printk(TheISA::Arguments args); +void Printk(std::stringstream &out, TheISA::Arguments args); #endif // __PRINTK_HH__ diff --git a/src/mem/bridge.cc b/src/mem/bridge.cc index b787f79ca..b25d135e2 100644 --- a/src/mem/bridge.cc +++ b/src/mem/bridge.cc @@ -43,20 +43,24 @@ Bridge::BridgePort::BridgePort(const std::string &_name, Bridge *_bridge, BridgePort *_otherPort, - int _delay, int _queueLimit) + int _delay, int _queueLimit, + bool fix_partial_write) : Port(_name), bridge(_bridge), otherPort(_otherPort), - delay(_delay), outstandingResponses(0), - queueLimit(_queueLimit), sendEvent(this) + delay(_delay), fixPartialWrite(fix_partial_write), + outstandingResponses(0), queueLimit(_queueLimit), sendEvent(this) { } Bridge::Bridge(const std::string &n, int qsa, int qsb, - Tick _delay, int write_ack) + Tick _delay, int write_ack, bool fix_partial_write_a, + bool fix_partial_write_b) : MemObject(n), - portA(n + "-portA", this, &portB, _delay, qsa), - portB(n + "-portB", this, &portA, _delay, qsa), + portA(n + "-portA", this, &portB, _delay, qsa, fix_partial_write_a), + portB(n + "-portB", this, &portA, _delay, qsa, fix_partial_write_b), ackWrites(write_ack) { + if (ackWrites) + panic("No support for acknowledging writes\n"); } Port * @@ -82,7 +86,10 @@ Bridge::init() { // Make sure that both sides are connected to. if (portA.getPeer() == NULL || portB.getPeer() == NULL) - panic("Both ports of bus bridge are not connected to a bus.\n"); + fatal("Both ports of bus bridge are not connected to a bus.\n"); + + if (portA.peerBlockSize() != portB.peerBlockSize()) + fatal("Busses don't have the same block size... Not supported.\n"); } @@ -107,8 +114,10 @@ Bridge::BridgePort::recvTiming(PacketPtr pkt) bool Bridge::BridgePort::queueForSendTiming(PacketPtr pkt) { - if (queueFull()) + if (queueFull()) { + DPRINTF(BusBridge, "Queue full, returning false\n"); return false; + } if (pkt->isResponse()) { // This is a response for a request we forwarded earlier. The @@ -149,6 +158,7 @@ Bridge::BridgePort::trySend() assert(!sendQueue.empty()); bool was_full = queueFull(); + int pbs = peerBlockSize(); PacketBuffer *buf = sendQueue.front(); @@ -156,10 +166,18 @@ Bridge::BridgePort::trySend() PacketPtr pkt = buf->pkt; + pkt->flags &= ~SNOOP_COMMIT; //CLear it if it was set + + if (pkt->cmd == MemCmd::WriteInvalidateReq && fixPartialWrite && + pkt->getOffset(pbs) && pkt->getSize() != pbs) { + buf->partialWriteFix(this); + pkt = buf->pkt; + } + DPRINTF(BusBridge, "trySend: origSrc %d dest %d addr 0x%x\n", buf->origSrc, pkt->getDest(), pkt->getAddr()); - pkt->flags &= ~SNOOP_COMMIT; //CLear it if it was set + if (sendTiming(pkt)) { // send successful sendQueue.pop_front(); @@ -191,6 +209,7 @@ Bridge::BridgePort::trySend() } else { DPRINTF(BusBridge, " unsuccessful\n"); + buf->undoPartialWriteFix(); } } @@ -248,6 +267,8 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Bridge) Param<int> queue_size_b; Param<Tick> delay; Param<bool> write_ack; + Param<bool> fix_partial_write_a; + Param<bool> fix_partial_write_b; END_DECLARE_SIM_OBJECT_PARAMS(Bridge) @@ -256,14 +277,16 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Bridge) INIT_PARAM(queue_size_a, "The size of the queue for data coming into side a"), INIT_PARAM(queue_size_b, "The size of the queue for data coming into side b"), INIT_PARAM(delay, "The miminum delay to cross this bridge"), - INIT_PARAM(write_ack, "Acknowledge any writes that are received.") + INIT_PARAM(write_ack, "Acknowledge any writes that are received."), + INIT_PARAM(fix_partial_write_a, "Fixup any partial block writes that are received"), + INIT_PARAM(fix_partial_write_b, "Fixup any partial block writes that are received") END_INIT_SIM_OBJECT_PARAMS(Bridge) CREATE_SIM_OBJECT(Bridge) { return new Bridge(getInstanceName(), queue_size_a, queue_size_b, delay, - write_ack); + write_ack, fix_partial_write_a, fix_partial_write_b); } REGISTER_SIM_OBJECT("Bridge", Bridge) diff --git a/src/mem/bridge.hh b/src/mem/bridge.hh index f7d0d12d0..d1154eda0 100644 --- a/src/mem/bridge.hh +++ b/src/mem/bridge.hh @@ -66,6 +66,8 @@ class Bridge : public MemObject /** Minimum delay though this bridge. */ Tick delay; + bool fixPartialWrite; + class PacketBuffer : public Packet::SenderState { public: @@ -75,10 +77,13 @@ class Bridge : public MemObject short origSrc; bool expectResponse; + bool partialWriteFixed; + PacketPtr oldPkt; + PacketBuffer(PacketPtr _pkt, Tick t) : ready(t), pkt(_pkt), origSenderState(_pkt->senderState), origSrc(_pkt->getSrc()), - expectResponse(_pkt->needsResponse()) + expectResponse(_pkt->needsResponse()), partialWriteFixed(false) { if (!pkt->isResponse()) pkt->senderState = this; @@ -89,7 +94,46 @@ class Bridge : public MemObject assert(pkt->senderState == this); pkt->setDest(origSrc); pkt->senderState = origSenderState; + if (partialWriteFixed) + delete oldPkt; + } + + void partialWriteFix(Port *port) + { + assert(!partialWriteFixed); + assert(expectResponse); + + int pbs = port->peerBlockSize(); + partialWriteFixed = true; + PacketDataPtr data; + + data = new uint8_t[pbs]; + PacketPtr funcPkt = new Packet(pkt->req, MemCmd::ReadReq, + Packet::Broadcast, pbs); + + funcPkt->dataStatic(data); + port->sendFunctional(funcPkt); + assert(funcPkt->result == Packet::Success); + delete funcPkt; + + oldPkt = pkt; + memcpy(data + oldPkt->getOffset(pbs), pkt->getPtr<uint8_t>(), + pkt->getSize()); + pkt = new Packet(oldPkt->req, MemCmd::WriteInvalidateReq, + Packet::Broadcast, pbs); + pkt->dataDynamicArray(data); + pkt->senderState = oldPkt->senderState; } + + void undoPartialWriteFix() + { + if (!partialWriteFixed) + return; + delete pkt; + pkt = oldPkt; + partialWriteFixed = false; + } + }; /** @@ -140,7 +184,7 @@ class Bridge : public MemObject /** Constructor for the BusPort.*/ BridgePort(const std::string &_name, Bridge *_bridge, BridgePort *_otherPort, - int _delay, int _queueLimit); + int _delay, int _queueLimit, bool fix_partial_write); protected: @@ -182,7 +226,8 @@ class Bridge : public MemObject virtual void init(); - Bridge(const std::string &n, int qsa, int qsb, Tick _delay, int write_ack); + Bridge(const std::string &n, int qsa, int qsb, Tick _delay, int write_ack, + bool fix_partial_write_a, bool fix_partial_write_b); }; #endif //__MEM_BUS_HH__ diff --git a/src/mem/bus.cc b/src/mem/bus.cc index b0636ecc2..6682ade55 100644 --- a/src/mem/bus.cc +++ b/src/mem/bus.cc @@ -48,6 +48,7 @@ Bus::getPort(const std::string &if_name, int idx) if (defaultPort == NULL) { defaultPort = new BusPort(csprintf("%s-default",name()), this, defaultId); + cachedBlockSizeValid = false; return defaultPort; } else fatal("Default port already set\n"); @@ -68,6 +69,7 @@ Bus::getPort(const std::string &if_name, int idx) assert(maxId < std::numeric_limits<typeof(maxId)>::max()); BusPort *bp = new BusPort(csprintf("%s-p%d", name(), id), this, id); interfaces[id] = bp; + cachedBlockSizeValid = false; return bp; } @@ -182,6 +184,7 @@ Bus::recvTiming(PacketPtr pkt) if (tickNextIdle > curTick || (retryList.size() && (!inRetry || pktPort != retryList.front()))) { addToRetryList(pktPort); + DPRINTF(Bus, "recvTiming: Bus is busy, returning false\n"); return false; } @@ -207,11 +210,12 @@ Bus::recvTiming(PacketPtr pkt) inRetry = false; } occupyBus(pkt); + DPRINTF(Bus, "recvTiming: Packet sucessfully sent\n"); return true; } } else { //Snoop didn't succeed - DPRINTF(Bus, "Adding a retry to RETRY list %d\n", + DPRINTF(Bus, "Adding1 a retry to RETRY list %d\n", pktPort->getId()); addToRetryList(pktPort); return false; @@ -239,13 +243,14 @@ Bus::recvTiming(PacketPtr pkt) } // Packet not successfully sent. Leave or put it on the retry list. - DPRINTF(Bus, "Adding a retry to RETRY list %d\n", + DPRINTF(Bus, "Adding2 a retry to RETRY list %d\n", pktPort->getId()); addToRetryList(pktPort); return false; } else { //Forwarding up from responder, just return true; + DPRINTF(Bus, "recvTiming: can we be here?\n"); return true; } } @@ -253,12 +258,12 @@ Bus::recvTiming(PacketPtr pkt) void Bus::recvRetry(int id) { - DPRINTF(Bus, "Received a retry\n"); + DPRINTF(Bus, "Received a retry from %s\n", id == -1 ? "self" : interfaces[id]->getPeer()->name()); // If there's anything waiting, and the bus isn't busy... if (retryList.size() && curTick >= tickNextIdle) { //retryingPort = retryList.front(); inRetry = true; - DPRINTF(Bus, "Sending a retry\n"); + DPRINTF(Bus, "Sending a retry to %s\n", retryList.front()->getPeer()->name()); retryList.front()->sendRetry(); // If inRetry is still true, sendTiming wasn't called if (inRetry) @@ -267,18 +272,20 @@ Bus::recvRetry(int id) retryList.pop_front(); inRetry = false; - //Bring tickNextIdle up to the present - while (tickNextIdle < curTick) - tickNextIdle += clock; + if (id != -1) { + //Bring tickNextIdle up to the present + while (tickNextIdle < curTick) + tickNextIdle += clock; - //Burn a cycle for the missed grant. - tickNextIdle += clock; + //Burn a cycle for the missed grant. + tickNextIdle += clock; - if (!busIdle.scheduled()) { - busIdle.schedule(tickNextIdle); - } else { - busIdle.reschedule(tickNextIdle); - } + if (!busIdle.scheduled()) { + busIdle.schedule(tickNextIdle); + } else { + busIdle.reschedule(tickNextIdle); + } + } // id != -1 } } //If we weren't able to drain before, we might be able to now. @@ -598,6 +605,37 @@ Bus::addressRanges(AddrRangeList &resp, AddrRangeList &snoop, int id) } } +int +Bus::findBlockSize(int id) +{ + if (cachedBlockSizeValid) + return cachedBlockSize; + + int max_bs = -1, tmp_bs; + range_map<Addr,int>::iterator portIter; + std::vector<DevMap>::iterator snoopIter; + for (portIter = portMap.begin(); portIter != portMap.end(); portIter++) { + tmp_bs = interfaces[portIter->second]->peerBlockSize(); + if (tmp_bs > max_bs) + max_bs = tmp_bs; + } + for (snoopIter = portSnoopList.begin(); + snoopIter != portSnoopList.end(); snoopIter++) { + tmp_bs = interfaces[snoopIter->portId]->peerBlockSize(); + if (tmp_bs > max_bs) + max_bs = tmp_bs; + } + if (max_bs <= 0) + max_bs = defaultBlockSize; + + if (max_bs != 64) + warn_once("Blocksize found to not be 64... hmm... probably not.\n"); + cachedBlockSize = max_bs; + cachedBlockSizeValid = true; + return max_bs; +} + + unsigned int Bus::drain(Event * de) { @@ -618,6 +656,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Bus) Param<int> clock; Param<int> width; Param<bool> responder_set; + Param<int> block_size; END_DECLARE_SIM_OBJECT_PARAMS(Bus) @@ -625,12 +664,14 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Bus) INIT_PARAM(bus_id, "a globally unique bus id"), INIT_PARAM(clock, "bus clock speed"), INIT_PARAM(width, "width of the bus (bits)"), - INIT_PARAM(responder_set, "Is a default responder set by the user") + INIT_PARAM(responder_set, "Is a default responder set by the user"), + INIT_PARAM(block_size, "Default blocksize if no device has one") END_INIT_SIM_OBJECT_PARAMS(Bus) CREATE_SIM_OBJECT(Bus) { - return new Bus(getInstanceName(), bus_id, clock, width, responder_set); + return new Bus(getInstanceName(), bus_id, clock, width, responder_set, + block_size); } REGISTER_SIM_OBJECT("Bus", Bus) diff --git a/src/mem/bus.hh b/src/mem/bus.hh index 0dd7547c5..f0dc67b12 100644 --- a/src/mem/bus.hh +++ b/src/mem/bus.hh @@ -133,6 +133,12 @@ class Bus : public MemObject /** Occupy the bus with transmitting the packet pkt */ void occupyBus(PacketPtr pkt); + /** Ask everyone on the bus what their size is + * @param id id of the busport that made the request + * @return the max of all the sizes + */ + int findBlockSize(int id); + /** Declaration of the buses port type, one will be instantiated for each of the interfaces connecting to the bus. */ class BusPort : public Port @@ -195,8 +201,11 @@ class Bus : public MemObject AddrRangeList &snoop) { bus->addressRanges(resp, snoop, id); } - // Hack to make translating port work without changes - virtual int deviceBlockSize() { return 32; } + // Ask the bus to ask everyone on the bus what their block size is and + // take the max of it. This might need to be changed a bit if we ever + // support multiple block sizes. + virtual int deviceBlockSize() + { return bus->findBlockSize(id); } }; @@ -256,6 +265,10 @@ class Bus : public MemObject /** Has the user specified their own default responder? */ bool responderSet; + int defaultBlockSize; + int cachedBlockSize; + bool cachedBlockSizeValid; + public: /** A function used to return the port associated with this bus object. */ @@ -267,11 +280,12 @@ class Bus : public MemObject unsigned int drain(Event *de); Bus(const std::string &n, int bus_id, int _clock, int _width, - bool responder_set) + bool responder_set, int dflt_blk_size) : MemObject(n), busId(bus_id), clock(_clock), width(_width), tickNextIdle(0), drainEvent(NULL), busIdle(this), inRetry(false), maxId(0), defaultPort(NULL), funcPort(NULL), funcPortId(-4), - responderSet(responder_set) + responderSet(responder_set), defaultBlockSize(dflt_blk_size), + cachedBlockSize(0), cachedBlockSizeValid(false) { //Both the width and clock period must be positive if (width <= 0) diff --git a/src/mem/packet.cc b/src/mem/packet.cc index 14d08db1b..2463a19ba 100644 --- a/src/mem/packet.cc +++ b/src/mem/packet.cc @@ -85,7 +85,7 @@ MemCmd::commandInfo[] = { SET5(IsWrite, IsInvalidate, IsRequest, HasData, NeedsResponse), WriteInvalidateResp, "WriteInvalidateReq" }, /* WriteInvalidateResp */ - { SET5(IsWrite, IsInvalidate, IsRequest, NeedsResponse, IsResponse), + { SET3(IsWrite, IsInvalidate, IsResponse), InvalidCmd, "WriteInvalidateResp" }, /* UpgradeReq */ { SET3(IsInvalidate, IsRequest, IsUpgrade), InvalidCmd, "UpgradeReq" }, diff --git a/src/mem/port.hh b/src/mem/port.hh index 6296b42ca..877e00293 100644 --- a/src/mem/port.hh +++ b/src/mem/port.hh @@ -161,10 +161,10 @@ class Port /** Called by a peer port in order to determine the block size of the device connected to this port. It sometimes doesn't make sense for - this function to be called, a DMA interface doesn't really have a - block size, so it is defaulted to a panic. + this function to be called, so it just returns 0. Anytthing that is + concerned with the size should just ignore that. */ - virtual int deviceBlockSize() { panic("??"); M5_DUMMY_RETURN } + virtual int deviceBlockSize() { return 0; } /** The peer port is requesting us to reply with a list of the ranges we are responsible for. diff --git a/src/python/m5/objects/Bridge.py b/src/python/m5/objects/Bridge.py index ee8e76bff..e123c2891 100644 --- a/src/python/m5/objects/Bridge.py +++ b/src/python/m5/objects/Bridge.py @@ -9,3 +9,5 @@ class Bridge(MemObject): queue_size_b = Param.Int(16, "The number of requests to buffer") delay = Param.Latency('0ns', "The latency of this bridge") write_ack = Param.Bool(False, "Should this bridge ack writes") + fix_partial_write_a = Param.Bool(False, "Should this bridge fixup partial block writes") + fix_partial_write_b = Param.Bool(False, "Should this bridge fixup partial block writes") diff --git a/src/python/m5/objects/Bus.py b/src/python/m5/objects/Bus.py index 8226fe8d2..48dbbe307 100644 --- a/src/python/m5/objects/Bus.py +++ b/src/python/m5/objects/Bus.py @@ -11,6 +11,7 @@ class Bus(MemObject): clock = Param.Clock("1GHz", "bus clock speed") width = Param.Int(64, "bus width (bytes)") responder_set = Param.Bool(False, "Did the user specify a default responder.") + block_size = Param.Int(64, "The default block size if one isn't set by a device attached to the bus.") if build_env['FULL_SYSTEM']: responder = BadAddr(pio_addr=0x0, pio_latency="1ps") default = Port(Self.responder.pio, "Default port for requests that aren't handled by a device.") diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt index 24b2c4738..e0f0a0067 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt @@ -1,89 +1,89 @@ ---------- Begin Simulation Statistics ---------- -host_inst_rate 249273 # Simulator instruction rate (inst/s) -host_mem_usage 249952 # Number of bytes of host memory used -host_seconds 261.36 # Real time elapsed on the host -host_tick_rate 15217956 # Simulator tick rate (ticks/s) +host_inst_rate 176514 # Simulator instruction rate (inst/s) +host_mem_usage 193420 # Number of bytes of host memory used +host_seconds 369.13 # Real time elapsed on the host +host_tick_rate 10780504 # Simulator tick rate (ticks/s) sim_freq 2000000000 # Frequency of simulated ticks -sim_insts 65149861 # Number of instructions simulated -sim_seconds 1.988682 # Number of seconds simulated -sim_ticks 3977364868 # Number of ticks simulated -system.cpu0.dtb.accesses 676531 # DTB accesses +sim_insts 65155632 # Number of instructions simulated +sim_seconds 1.989678 # Number of seconds simulated +sim_ticks 3979356760 # Number of ticks simulated +system.cpu0.dtb.accesses 676537 # DTB accesses system.cpu0.dtb.acv 306 # DTB access violations -system.cpu0.dtb.hits 12726821 # DTB hits -system.cpu0.dtb.misses 8261 # DTB misses -system.cpu0.dtb.read_accesses 494241 # DTB read accesses +system.cpu0.dtb.hits 12789393 # DTB hits +system.cpu0.dtb.misses 8263 # DTB misses +system.cpu0.dtb.read_accesses 494246 # DTB read accesses system.cpu0.dtb.read_acv 184 # DTB read access violations -system.cpu0.dtb.read_hits 7906586 # DTB read hits -system.cpu0.dtb.read_misses 7534 # DTB read misses -system.cpu0.dtb.write_accesses 182290 # DTB write accesses +system.cpu0.dtb.read_hits 7941036 # DTB read hits +system.cpu0.dtb.read_misses 7535 # DTB read misses +system.cpu0.dtb.write_accesses 182291 # DTB write accesses system.cpu0.dtb.write_acv 122 # DTB write access violations -system.cpu0.dtb.write_hits 4820235 # DTB write hits -system.cpu0.dtb.write_misses 727 # DTB write misses -system.cpu0.idle_fraction 0.930925 # Percentage of idle cycles -system.cpu0.itb.accesses 3412128 # ITB accesses +system.cpu0.dtb.write_hits 4848357 # DTB write hits +system.cpu0.dtb.write_misses 728 # DTB write misses +system.cpu0.idle_fraction 0.930790 # Percentage of idle cycles +system.cpu0.itb.accesses 3420080 # ITB accesses system.cpu0.itb.acv 161 # ITB acv -system.cpu0.itb.hits 3408295 # ITB hits -system.cpu0.itb.misses 3833 # ITB misses -system.cpu0.kern.callpal 142543 # number of callpals executed +system.cpu0.itb.hits 3416243 # ITB hits +system.cpu0.itb.misses 3837 # ITB misses +system.cpu0.kern.callpal 143414 # number of callpals executed system.cpu0.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed -system.cpu0.kern.callpal_wripir 572 0.40% 0.40% # number of callpals executed +system.cpu0.kern.callpal_wripir 566 0.39% 0.40% # number of callpals executed system.cpu0.kern.callpal_wrmces 1 0.00% 0.40% # number of callpals executed system.cpu0.kern.callpal_wrfen 1 0.00% 0.40% # number of callpals executed system.cpu0.kern.callpal_wrvptptr 1 0.00% 0.40% # number of callpals executed -system.cpu0.kern.callpal_swpctx 2878 2.02% 2.42% # number of callpals executed -system.cpu0.kern.callpal_tbi 47 0.03% 2.46% # number of callpals executed -system.cpu0.kern.callpal_wrent 7 0.00% 2.46% # number of callpals executed -system.cpu0.kern.callpal_swpipl 127693 89.58% 92.04% # number of callpals executed -system.cpu0.kern.callpal_rdps 6611 4.64% 96.68% # number of callpals executed -system.cpu0.kern.callpal_wrkgp 1 0.00% 96.68% # number of callpals executed -system.cpu0.kern.callpal_wrusp 3 0.00% 96.68% # number of callpals executed -system.cpu0.kern.callpal_rdusp 8 0.01% 96.69% # number of callpals executed -system.cpu0.kern.callpal_whami 2 0.00% 96.69% # number of callpals executed -system.cpu0.kern.callpal_rti 4215 2.96% 99.65% # number of callpals executed +system.cpu0.kern.callpal_swpctx 2893 2.02% 2.41% # number of callpals executed +system.cpu0.kern.callpal_tbi 47 0.03% 2.45% # number of callpals executed +system.cpu0.kern.callpal_wrent 7 0.00% 2.45% # number of callpals executed +system.cpu0.kern.callpal_swpipl 128466 89.58% 92.03% # number of callpals executed +system.cpu0.kern.callpal_rdps 6699 4.67% 96.70% # number of callpals executed +system.cpu0.kern.callpal_wrkgp 1 0.00% 96.70% # number of callpals executed +system.cpu0.kern.callpal_wrusp 3 0.00% 96.70% # number of callpals executed +system.cpu0.kern.callpal_rdusp 8 0.01% 96.71% # number of callpals executed +system.cpu0.kern.callpal_whami 2 0.00% 96.71% # number of callpals executed +system.cpu0.kern.callpal_rti 4216 2.94% 99.65% # number of callpals executed system.cpu0.kern.callpal_callsys 355 0.25% 99.90% # number of callpals executed system.cpu0.kern.callpal_imb 147 0.10% 100.00% # number of callpals executed system.cpu0.kern.inst.arm 0 # number of arm instructions executed -system.cpu0.kern.inst.hwrei 157728 # number of hwrei instructions executed -system.cpu0.kern.inst.quiesce 6621 # number of quiesce instructions executed -system.cpu0.kern.ipl_count 134531 # number of times we switched to this ipl -system.cpu0.kern.ipl_count_0 53714 39.93% 39.93% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_21 131 0.10% 40.02% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_22 2009 1.49% 41.52% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_30 482 0.36% 41.88% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_31 78195 58.12% 100.00% # number of times we switched to this ipl -system.cpu0.kern.ipl_good 108736 # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_0 53298 49.02% 49.02% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.inst.hwrei 158606 # number of hwrei instructions executed +system.cpu0.kern.inst.quiesce 6630 # number of quiesce instructions executed +system.cpu0.kern.ipl_count 135306 # number of times we switched to this ipl +system.cpu0.kern.ipl_count_0 54074 39.96% 39.96% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_21 131 0.10% 40.06% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_22 2010 1.49% 41.55% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_30 482 0.36% 41.90% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_31 78609 58.10% 100.00% # number of times we switched to this ipl +system.cpu0.kern.ipl_good 109457 # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_0 53658 49.02% 49.02% # number of times we switched to this ipl from a different ipl system.cpu0.kern.ipl_good_21 131 0.12% 49.14% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_22 2009 1.85% 50.98% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_30 482 0.44% 51.43% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_31 52816 48.57% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_ticks 3976579702 # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_0 3843537444 96.65% 96.65% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_21 123584 0.00% 96.66% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_22 1875640 0.05% 96.70% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_30 1201752 0.03% 96.73% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_31 129841282 3.27% 100.00% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_used 0.808260 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.ipl_used_0 0.992255 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.ipl_good_22 2010 1.84% 50.98% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_30 482 0.44% 51.42% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_31 53176 48.58% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_ticks 3978541594 # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_0 3845416172 96.65% 96.65% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_21 119304 0.00% 96.66% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_22 1874808 0.05% 96.70% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_30 1202656 0.03% 96.73% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_31 129928654 3.27% 100.00% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_used 0.808959 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.ipl_used_0 0.992307 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_21 1 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_30 1 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.ipl_used_31 0.675440 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.mode_good_kernel 1191 -system.cpu0.kern.mode_good_user 1191 +system.cpu0.kern.ipl_used_31 0.676462 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.mode_good_kernel 1189 +system.cpu0.kern.mode_good_user 1189 system.cpu0.kern.mode_good_idle 0 -system.cpu0.kern.mode_switch_kernel 6700 # number of protection mode switches -system.cpu0.kern.mode_switch_user 1191 # number of protection mode switches +system.cpu0.kern.mode_switch_kernel 6717 # number of protection mode switches +system.cpu0.kern.mode_switch_user 1189 # number of protection mode switches system.cpu0.kern.mode_switch_idle 0 # number of protection mode switches -system.cpu0.kern.mode_switch_good 0.301863 # fraction of useful protection mode switches -system.cpu0.kern.mode_switch_good_kernel 0.177761 # fraction of useful protection mode switches +system.cpu0.kern.mode_switch_good 0.300784 # fraction of useful protection mode switches +system.cpu0.kern.mode_switch_good_kernel 0.177014 # fraction of useful protection mode switches system.cpu0.kern.mode_switch_good_user 1 # fraction of useful protection mode switches system.cpu0.kern.mode_switch_good_idle <err: div-0> # fraction of useful protection mode switches -system.cpu0.kern.mode_ticks_kernel 3965299112 99.76% 99.76% # number of ticks spent at the given mode -system.cpu0.kern.mode_ticks_user 9599258 0.24% 100.00% # number of ticks spent at the given mode +system.cpu0.kern.mode_ticks_kernel 3967314670 99.76% 99.76% # number of ticks spent at the given mode +system.cpu0.kern.mode_ticks_user 9570844 0.24% 100.00% # number of ticks spent at the given mode system.cpu0.kern.mode_ticks_idle 0 0.00% 100.00% # number of ticks spent at the given mode -system.cpu0.kern.swap_context 2879 # number of times the context was actually changed +system.cpu0.kern.swap_context 2894 # number of times the context was actually changed system.cpu0.kern.syscall 216 # number of syscalls executed system.cpu0.kern.syscall_2 7 3.24% 3.24% # number of syscalls executed system.cpu0.kern.syscall_3 18 8.33% 11.57% # number of syscalls executed @@ -115,82 +115,82 @@ system.cpu0.kern.syscall_98 2 0.93% 97.69% # nu system.cpu0.kern.syscall_132 2 0.93% 98.61% # number of syscalls executed system.cpu0.kern.syscall_144 1 0.46% 99.07% # number of syscalls executed system.cpu0.kern.syscall_147 2 0.93% 100.00% # number of syscalls executed -system.cpu0.not_idle_fraction 0.069075 # Percentage of non-idle cycles -system.cpu0.numCycles 3976579942 # number of cpu cycles simulated -system.cpu0.num_insts 50251391 # Number of instructions executed -system.cpu0.num_refs 12958546 # Number of memory references -system.cpu1.dtb.accesses 346252 # DTB accesses +system.cpu0.not_idle_fraction 0.069210 # Percentage of non-idle cycles +system.cpu0.numCycles 3978541834 # number of cpu cycles simulated +system.cpu0.num_insts 50446812 # Number of instructions executed +system.cpu0.num_refs 13021282 # Number of memory references +system.cpu1.dtb.accesses 346250 # DTB accesses system.cpu1.dtb.acv 67 # DTB access violations -system.cpu1.dtb.hits 4740978 # DTB hits -system.cpu1.dtb.misses 3345 # DTB misses -system.cpu1.dtb.read_accesses 235843 # DTB read accesses +system.cpu1.dtb.hits 4679272 # DTB hits +system.cpu1.dtb.misses 3343 # DTB misses +system.cpu1.dtb.read_accesses 235842 # DTB read accesses system.cpu1.dtb.read_acv 26 # DTB read access violations -system.cpu1.dtb.read_hits 2707473 # DTB read hits -system.cpu1.dtb.read_misses 2918 # DTB read misses -system.cpu1.dtb.write_accesses 110409 # DTB write accesses +system.cpu1.dtb.read_hits 2672655 # DTB read hits +system.cpu1.dtb.read_misses 2917 # DTB read misses +system.cpu1.dtb.write_accesses 110408 # DTB write accesses system.cpu1.dtb.write_acv 41 # DTB write access violations -system.cpu1.dtb.write_hits 2033505 # DTB write hits -system.cpu1.dtb.write_misses 427 # DTB write misses -system.cpu1.idle_fraction 0.974575 # Percentage of idle cycles -system.cpu1.itb.accesses 2097220 # ITB accesses +system.cpu1.dtb.write_hits 2006617 # DTB write hits +system.cpu1.dtb.write_misses 426 # DTB write misses +system.cpu1.idle_fraction 0.974905 # Percentage of idle cycles +system.cpu1.itb.accesses 2089153 # ITB accesses system.cpu1.itb.acv 23 # ITB acv -system.cpu1.itb.hits 2095948 # ITB hits +system.cpu1.itb.hits 2087881 # ITB hits system.cpu1.itb.misses 1272 # ITB misses -system.cpu1.kern.callpal 80965 # number of callpals executed +system.cpu1.kern.callpal 80102 # number of callpals executed system.cpu1.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed system.cpu1.kern.callpal_wripir 482 0.60% 0.60% # number of callpals executed system.cpu1.kern.callpal_wrmces 1 0.00% 0.60% # number of callpals executed -system.cpu1.kern.callpal_wrfen 1 0.00% 0.60% # number of callpals executed -system.cpu1.kern.callpal_swpctx 2289 2.83% 3.43% # number of callpals executed -system.cpu1.kern.callpal_tbi 7 0.01% 3.43% # number of callpals executed -system.cpu1.kern.callpal_wrent 7 0.01% 3.44% # number of callpals executed -system.cpu1.kern.callpal_swpipl 71577 88.40% 91.85% # number of callpals executed -system.cpu1.kern.callpal_rdps 2303 2.84% 94.69% # number of callpals executed -system.cpu1.kern.callpal_wrkgp 1 0.00% 94.69% # number of callpals executed -system.cpu1.kern.callpal_wrusp 4 0.00% 94.70% # number of callpals executed -system.cpu1.kern.callpal_rdusp 1 0.00% 94.70% # number of callpals executed -system.cpu1.kern.callpal_whami 3 0.00% 94.70% # number of callpals executed -system.cpu1.kern.callpal_rti 4092 5.05% 99.76% # number of callpals executed +system.cpu1.kern.callpal_wrfen 1 0.00% 0.61% # number of callpals executed +system.cpu1.kern.callpal_swpctx 2276 2.84% 3.45% # number of callpals executed +system.cpu1.kern.callpal_tbi 7 0.01% 3.46% # number of callpals executed +system.cpu1.kern.callpal_wrent 7 0.01% 3.46% # number of callpals executed +system.cpu1.kern.callpal_swpipl 70820 88.41% 91.88% # number of callpals executed +system.cpu1.kern.callpal_rdps 2215 2.77% 94.64% # number of callpals executed +system.cpu1.kern.callpal_wrkgp 1 0.00% 94.64% # number of callpals executed +system.cpu1.kern.callpal_wrusp 4 0.00% 94.65% # number of callpals executed +system.cpu1.kern.callpal_rdusp 1 0.00% 94.65% # number of callpals executed +system.cpu1.kern.callpal_whami 3 0.00% 94.65% # number of callpals executed +system.cpu1.kern.callpal_rti 4087 5.10% 99.76% # number of callpals executed system.cpu1.kern.callpal_callsys 162 0.20% 99.96% # number of callpals executed system.cpu1.kern.callpal_imb 33 0.04% 100.00% # number of callpals executed system.cpu1.kern.callpal_rdunique 1 0.00% 100.00% # number of callpals executed system.cpu1.kern.inst.arm 0 # number of arm instructions executed -system.cpu1.kern.inst.hwrei 88247 # number of hwrei instructions executed -system.cpu1.kern.inst.quiesce 2815 # number of quiesce instructions executed -system.cpu1.kern.ipl_count 78243 # number of times we switched to this ipl -system.cpu1.kern.ipl_count_0 30463 38.93% 38.93% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_22 2001 2.56% 41.49% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_30 572 0.73% 42.22% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_31 45207 57.78% 100.00% # number of times we switched to this ipl -system.cpu1.kern.ipl_good 61005 # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_0 29502 48.36% 48.36% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_22 2001 3.28% 51.64% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_30 572 0.94% 52.58% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_31 28930 47.42% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_ticks 3977363084 # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_0 3855395406 96.93% 96.93% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_22 1873360 0.05% 96.98% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_30 1461344 0.04% 97.02% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_31 118632974 2.98% 100.00% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_used 0.779686 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.ipl_used_0 0.968454 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.inst.hwrei 87377 # number of hwrei instructions executed +system.cpu1.kern.inst.quiesce 2792 # number of quiesce instructions executed +system.cpu1.kern.ipl_count 77476 # number of times we switched to this ipl +system.cpu1.kern.ipl_count_0 30110 38.86% 38.86% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_22 2002 2.58% 41.45% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_30 566 0.73% 42.18% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_31 44798 57.82% 100.00% # number of times we switched to this ipl +system.cpu1.kern.ipl_good 60300 # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_0 29149 48.34% 48.34% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_22 2002 3.32% 51.66% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_30 566 0.94% 52.60% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_31 28583 47.40% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_ticks 3979354976 # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_0 3857760682 96.94% 96.94% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_22 1872502 0.05% 96.99% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_30 1446416 0.04% 97.03% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_31 118275376 2.97% 100.00% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_used 0.778306 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.ipl_used_0 0.968084 # fraction of swpipl calls that actually changed the ipl system.cpu1.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl system.cpu1.kern.ipl_used_30 1 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.ipl_used_31 0.639945 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.mode_good_kernel 1058 -system.cpu1.kern.mode_good_user 562 -system.cpu1.kern.mode_good_idle 496 -system.cpu1.kern.mode_switch_kernel 2397 # number of protection mode switches -system.cpu1.kern.mode_switch_user 562 # number of protection mode switches -system.cpu1.kern.mode_switch_idle 3035 # number of protection mode switches -system.cpu1.kern.mode_switch_good 0.353020 # fraction of useful protection mode switches -system.cpu1.kern.mode_switch_good_kernel 0.441385 # fraction of useful protection mode switches +system.cpu1.kern.ipl_used_31 0.638042 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.mode_good_kernel 1051 +system.cpu1.kern.mode_good_user 561 +system.cpu1.kern.mode_good_idle 490 +system.cpu1.kern.mode_switch_kernel 2388 # number of protection mode switches +system.cpu1.kern.mode_switch_user 561 # number of protection mode switches +system.cpu1.kern.mode_switch_idle 3025 # number of protection mode switches +system.cpu1.kern.mode_switch_good 0.351858 # fraction of useful protection mode switches +system.cpu1.kern.mode_switch_good_kernel 0.440117 # fraction of useful protection mode switches system.cpu1.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu1.kern.mode_switch_good_idle 0.163427 # fraction of useful protection mode switches -system.cpu1.kern.mode_ticks_kernel 64042452 1.61% 1.61% # number of ticks spent at the given mode -system.cpu1.kern.mode_ticks_user 5753306 0.14% 1.75% # number of ticks spent at the given mode -system.cpu1.kern.mode_ticks_idle 3907567318 98.25% 100.00% # number of ticks spent at the given mode -system.cpu1.kern.swap_context 2290 # number of times the context was actually changed +system.cpu1.kern.mode_switch_good_idle 0.161983 # fraction of useful protection mode switches +system.cpu1.kern.mode_ticks_kernel 62784640 1.58% 1.58% # number of ticks spent at the given mode +system.cpu1.kern.mode_ticks_user 5748262 0.14% 1.72% # number of ticks spent at the given mode +system.cpu1.kern.mode_ticks_idle 3910822066 98.28% 100.00% # number of ticks spent at the given mode +system.cpu1.kern.swap_context 2277 # number of times the context was actually changed system.cpu1.kern.syscall 110 # number of syscalls executed system.cpu1.kern.syscall_2 1 0.91% 0.91% # number of syscalls executed system.cpu1.kern.syscall_3 12 10.91% 11.82% # number of syscalls executed @@ -213,10 +213,10 @@ system.cpu1.kern.syscall_90 1 0.91% 95.45% # nu system.cpu1.kern.syscall_92 2 1.82% 97.27% # number of syscalls executed system.cpu1.kern.syscall_132 2 1.82% 99.09% # number of syscalls executed system.cpu1.kern.syscall_144 1 0.91% 100.00% # number of syscalls executed -system.cpu1.not_idle_fraction 0.025425 # Percentage of non-idle cycles -system.cpu1.numCycles 3977364868 # number of cpu cycles simulated -system.cpu1.num_insts 14898470 # Number of instructions executed -system.cpu1.num_refs 4770918 # Number of memory references +system.cpu1.not_idle_fraction 0.025095 # Percentage of non-idle cycles +system.cpu1.numCycles 3979356760 # number of cpu cycles simulated +system.cpu1.num_insts 14708820 # Number of instructions executed +system.cpu1.num_refs 4709061 # Number of memory references system.disk0.dma_read_bytes 1024 # Number of bytes transfered via DMA reads (not PRD). system.disk0.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk0.dma_read_txs 1 # Number of DMA read transactions (not PRD). diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt index 7947c3d76..88a94edf5 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt @@ -1,84 +1,84 @@ ---------- Begin Simulation Statistics ---------- -host_inst_rate 374146 # Simulator instruction rate (inst/s) -host_mem_usage 249416 # Number of bytes of host memory used -host_seconds 160.59 # Real time elapsed on the host -host_tick_rate 24179677 # Simulator tick rate (ticks/s) +host_inst_rate 261150 # Simulator instruction rate (inst/s) +host_mem_usage 193084 # Number of bytes of host memory used +host_seconds 230.08 # Real time elapsed on the host +host_tick_rate 16884971 # Simulator tick rate (ticks/s) sim_freq 2000000000 # Frequency of simulated ticks -sim_insts 60085523 # Number of instructions simulated -sim_seconds 1.941556 # Number of seconds simulated -sim_ticks 3883112324 # Number of ticks simulated -system.cpu.dtb.accesses 1020793 # DTB accesses +sim_insts 60085806 # Number of instructions simulated +sim_seconds 1.942464 # Number of seconds simulated +sim_ticks 3884928812 # Number of ticks simulated +system.cpu.dtb.accesses 1020801 # DTB accesses system.cpu.dtb.acv 367 # DTB access violations -system.cpu.dtb.hits 16070719 # DTB hits -system.cpu.dtb.misses 11472 # DTB misses -system.cpu.dtb.read_accesses 728862 # DTB read accesses +system.cpu.dtb.hits 16070687 # DTB hits +system.cpu.dtb.misses 11476 # DTB misses +system.cpu.dtb.read_accesses 728869 # DTB read accesses system.cpu.dtb.read_acv 210 # DTB read access violations -system.cpu.dtb.read_hits 9714788 # DTB read hits -system.cpu.dtb.read_misses 10330 # DTB read misses -system.cpu.dtb.write_accesses 291931 # DTB write accesses +system.cpu.dtb.read_hits 9714773 # DTB read hits +system.cpu.dtb.read_misses 10333 # DTB read misses +system.cpu.dtb.write_accesses 291932 # DTB write accesses system.cpu.dtb.write_acv 157 # DTB write access violations -system.cpu.dtb.write_hits 6355931 # DTB write hits -system.cpu.dtb.write_misses 1142 # DTB write misses -system.cpu.idle_fraction 0.921464 # Percentage of idle cycles -system.cpu.itb.accesses 4985828 # ITB accesses +system.cpu.dtb.write_hits 6355914 # DTB write hits +system.cpu.dtb.write_misses 1143 # DTB write misses +system.cpu.idle_fraction 0.921526 # Percentage of idle cycles +system.cpu.itb.accesses 4986026 # ITB accesses system.cpu.itb.acv 184 # ITB acv -system.cpu.itb.hits 4980818 # ITB hits +system.cpu.itb.hits 4981016 # ITB hits system.cpu.itb.misses 5010 # ITB misses -system.cpu.kern.callpal 193475 # number of callpals executed +system.cpu.kern.callpal 193489 # number of callpals executed system.cpu.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrmces 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrfen 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrvptptr 1 0.00% 0.00% # number of callpals executed -system.cpu.kern.callpal_swpctx 4148 2.14% 2.15% # number of callpals executed +system.cpu.kern.callpal_swpctx 4146 2.14% 2.14% # number of callpals executed system.cpu.kern.callpal_tbi 54 0.03% 2.17% # number of callpals executed system.cpu.kern.callpal_wrent 7 0.00% 2.18% # number of callpals executed -system.cpu.kern.callpal_swpipl 176501 91.23% 93.40% # number of callpals executed -system.cpu.kern.callpal_rdps 6860 3.55% 96.95% # number of callpals executed +system.cpu.kern.callpal_swpipl 176515 91.23% 93.40% # number of callpals executed +system.cpu.kern.callpal_rdps 6861 3.55% 96.95% # number of callpals executed system.cpu.kern.callpal_wrkgp 1 0.00% 96.95% # number of callpals executed system.cpu.kern.callpal_wrusp 7 0.00% 96.95% # number of callpals executed system.cpu.kern.callpal_rdusp 9 0.00% 96.96% # number of callpals executed system.cpu.kern.callpal_whami 2 0.00% 96.96% # number of callpals executed -system.cpu.kern.callpal_rti 5186 2.68% 99.64% # number of callpals executed +system.cpu.kern.callpal_rti 5187 2.68% 99.64% # number of callpals executed system.cpu.kern.callpal_callsys 515 0.27% 99.91% # number of callpals executed system.cpu.kern.callpal_imb 181 0.09% 100.00% # number of callpals executed system.cpu.kern.inst.arm 0 # number of arm instructions executed -system.cpu.kern.inst.hwrei 212602 # number of hwrei instructions executed -system.cpu.kern.inst.quiesce 6154 # number of quiesce instructions executed -system.cpu.kern.ipl_count 183780 # number of times we switched to this ipl -system.cpu.kern.ipl_count_0 75067 40.85% 40.85% # number of times we switched to this ipl +system.cpu.kern.inst.hwrei 212621 # number of hwrei instructions executed +system.cpu.kern.inst.quiesce 6152 # number of quiesce instructions executed +system.cpu.kern.ipl_count 183796 # number of times we switched to this ipl +system.cpu.kern.ipl_count_0 75070 40.84% 40.84% # number of times we switched to this ipl system.cpu.kern.ipl_count_21 131 0.07% 40.92% # number of times we switched to this ipl -system.cpu.kern.ipl_count_22 1961 1.07% 41.98% # number of times we switched to this ipl -system.cpu.kern.ipl_count_31 106621 58.02% 100.00% # number of times we switched to this ipl -system.cpu.kern.ipl_good 149492 # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_0 73700 49.30% 49.30% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_count_22 1962 1.07% 41.98% # number of times we switched to this ipl +system.cpu.kern.ipl_count_31 106633 58.02% 100.00% # number of times we switched to this ipl +system.cpu.kern.ipl_good 149499 # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_0 73703 49.30% 49.30% # number of times we switched to this ipl from a different ipl system.cpu.kern.ipl_good_21 131 0.09% 49.39% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_22 1961 1.31% 50.70% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_31 73700 49.30% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_ticks 3883110540 # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_0 3755984220 96.73% 96.73% # number of cycles we spent at this ipl +system.cpu.kern.ipl_good_22 1962 1.31% 50.70% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_31 73703 49.30% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_ticks 3884927028 # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_0 3757862392 96.73% 96.73% # number of cycles we spent at this ipl system.cpu.kern.ipl_ticks_21 112456 0.00% 96.73% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_22 918754 0.02% 96.75% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_31 126095110 3.25% 100.00% # number of cycles we spent at this ipl -system.cpu.kern.ipl_used 0.813429 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.ipl_ticks_22 918216 0.02% 96.76% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_31 126033964 3.24% 100.00% # number of cycles we spent at this ipl +system.cpu.kern.ipl_used 0.813396 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_0 0.981790 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_21 1 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.ipl_used_31 0.691233 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.mode_good_kernel 1897 -system.cpu.kern.mode_good_user 1742 -system.cpu.kern.mode_good_idle 155 -system.cpu.kern.mode_switch_kernel 5935 # number of protection mode switches -system.cpu.kern.mode_switch_user 1742 # number of protection mode switches +system.cpu.kern.ipl_used_31 0.691184 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.mode_good_kernel 1898 +system.cpu.kern.mode_good_user 1744 +system.cpu.kern.mode_good_idle 154 +system.cpu.kern.mode_switch_kernel 5934 # number of protection mode switches +system.cpu.kern.mode_switch_user 1744 # number of protection mode switches system.cpu.kern.mode_switch_idle 2065 # number of protection mode switches -system.cpu.kern.mode_switch_good 0.389448 # fraction of useful protection mode switches -system.cpu.kern.mode_switch_good_kernel 0.319629 # fraction of useful protection mode switches +system.cpu.kern.mode_switch_good 0.389613 # fraction of useful protection mode switches +system.cpu.kern.mode_switch_good_kernel 0.319852 # fraction of useful protection mode switches system.cpu.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu.kern.mode_switch_good_idle 0.075061 # fraction of useful protection mode switches -system.cpu.kern.mode_ticks_kernel 112876118 2.91% 2.91% # number of ticks spent at the given mode -system.cpu.kern.mode_ticks_user 15210360 0.39% 3.30% # number of ticks spent at the given mode -system.cpu.kern.mode_ticks_idle 3755024054 96.70% 100.00% # number of ticks spent at the given mode -system.cpu.kern.swap_context 4149 # number of times the context was actually changed +system.cpu.kern.mode_switch_good_idle 0.074576 # fraction of useful protection mode switches +system.cpu.kern.mode_ticks_kernel 112858396 2.91% 2.91% # number of ticks spent at the given mode +system.cpu.kern.mode_ticks_user 15210848 0.39% 3.30% # number of ticks spent at the given mode +system.cpu.kern.mode_ticks_idle 3756857776 96.70% 100.00% # number of ticks spent at the given mode +system.cpu.kern.swap_context 4147 # number of times the context was actually changed system.cpu.kern.syscall 326 # number of syscalls executed system.cpu.kern.syscall_2 8 2.45% 2.45% # number of syscalls executed system.cpu.kern.syscall_3 30 9.20% 11.66% # number of syscalls executed @@ -110,10 +110,10 @@ system.cpu.kern.syscall_98 2 0.61% 97.55% # nu system.cpu.kern.syscall_132 4 1.23% 98.77% # number of syscalls executed system.cpu.kern.syscall_144 2 0.61% 99.39% # number of syscalls executed system.cpu.kern.syscall_147 2 0.61% 100.00% # number of syscalls executed -system.cpu.not_idle_fraction 0.078536 # Percentage of non-idle cycles -system.cpu.numCycles 3883112324 # number of cpu cycles simulated -system.cpu.num_insts 60085523 # Number of instructions executed -system.cpu.num_refs 16318655 # Number of memory references +system.cpu.not_idle_fraction 0.078474 # Percentage of non-idle cycles +system.cpu.numCycles 3884928812 # number of cpu cycles simulated +system.cpu.num_insts 60085806 # Number of instructions executed +system.cpu.num_refs 16318611 # Number of memory references system.disk0.dma_read_bytes 1024 # Number of bytes transfered via DMA reads (not PRD). system.disk0.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk0.dma_read_txs 1 # Number of DMA read transactions (not PRD). diff --git a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt index b190ca80a..8ef183435 100644 --- a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt +++ b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt @@ -140,12 +140,12 @@ drivesys.tsunami.ethernet.txPPS 25 # Pa drivesys.tsunami.ethernet.txPackets 5 # Number of Packets Transmitted drivesys.tsunami.ethernet.txTcpChecksums 2 # Number of tx TCP Checksums done by device drivesys.tsunami.ethernet.txUdpChecksums 0 # Number of tx UDP Checksums done by device -host_inst_rate 50427764 # Simulator instruction rate (inst/s) -host_mem_usage 465972 # Number of bytes of host memory used -host_seconds 5.44 # Real time elapsed on the host -host_tick_rate 36752487576 # Simulator tick rate (ticks/s) +host_inst_rate 36787265 # Simulator instruction rate (inst/s) +host_mem_usage 407784 # Number of bytes of host memory used +host_seconds 7.46 # Real time elapsed on the host +host_tick_rate 26810828297 # Simulator tick rate (ticks/s) sim_freq 1000000000000 # Frequency of simulated ticks -sim_insts 274409387 # Number of instructions simulated +sim_insts 274411697 # Number of instructions simulated sim_seconds 0.200001 # Number of seconds simulated sim_ticks 200000789468 # Number of ticks simulated testsys.cpu.dtb.accesses 335402 # DTB accesses @@ -383,12 +383,12 @@ drivesys.tsunami.ethernet.totalSwi 0 # to drivesys.tsunami.ethernet.totalTxDesc 0 # total number of TxDesc written to ISR drivesys.tsunami.ethernet.totalTxIdle 0 # total number of TxIdle written to ISR drivesys.tsunami.ethernet.totalTxOk 0 # total number of TxOk written to ISR -host_inst_rate 105949570270 # Simulator instruction rate (inst/s) -host_mem_usage 465972 # Number of bytes of host memory used +host_inst_rate 80923531996 # Simulator instruction rate (inst/s) +host_mem_usage 407784 # Number of bytes of host memory used host_seconds 0.00 # Real time elapsed on the host -host_tick_rate 285395062 # Simulator tick rate (ticks/s) +host_tick_rate 216582530 # Simulator tick rate (ticks/s) sim_freq 1000000000000 # Frequency of simulated ticks -sim_insts 274409387 # Number of instructions simulated +sim_insts 274411697 # Number of instructions simulated sim_seconds 0.000001 # Number of seconds simulated sim_ticks 785978 # Number of ticks simulated testsys.cpu.dtb.accesses 0 # DTB accesses |